@rockcarver/frodo-cli 2.0.0-6 → 2.0.0-7

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 (340) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/esm/app.js +4 -1
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/_template/something-delete.js +4 -1
  5. package/esm/cli/_template/something-delete.js.map +1 -1
  6. package/esm/cli/_template/something-describe.js +4 -1
  7. package/esm/cli/_template/something-describe.js.map +1 -1
  8. package/esm/cli/_template/something-else-delete.js +4 -1
  9. package/esm/cli/_template/something-else-delete.js.map +1 -1
  10. package/esm/cli/_template/something-else-describe.js +4 -1
  11. package/esm/cli/_template/something-else-describe.js.map +1 -1
  12. package/esm/cli/_template/something-else-export.js +4 -1
  13. package/esm/cli/_template/something-else-export.js.map +1 -1
  14. package/esm/cli/_template/something-else-import.js +4 -1
  15. package/esm/cli/_template/something-else-import.js.map +1 -1
  16. package/esm/cli/_template/something-else-list.js +4 -1
  17. package/esm/cli/_template/something-else-list.js.map +1 -1
  18. package/esm/cli/_template/something-export.js +4 -1
  19. package/esm/cli/_template/something-export.js.map +1 -1
  20. package/esm/cli/_template/something-import.js +4 -1
  21. package/esm/cli/_template/something-import.js.map +1 -1
  22. package/esm/cli/_template/something-list.js +4 -1
  23. package/esm/cli/_template/something-list.js.map +1 -1
  24. package/esm/cli/_template/something-other-delete.js +4 -1
  25. package/esm/cli/_template/something-other-delete.js.map +1 -1
  26. package/esm/cli/_template/something-other-describe.js +4 -1
  27. package/esm/cli/_template/something-other-describe.js.map +1 -1
  28. package/esm/cli/_template/something-other-export.js +4 -1
  29. package/esm/cli/_template/something-other-export.js.map +1 -1
  30. package/esm/cli/_template/something-other-import.js +4 -1
  31. package/esm/cli/_template/something-other-import.js.map +1 -1
  32. package/esm/cli/_template/something-other-list.js +4 -1
  33. package/esm/cli/_template/something-other-list.js.map +1 -1
  34. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +8 -2
  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 +10 -3
  37. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  38. package/esm/cli/admin/admin-federation-export.js +4 -1
  39. package/esm/cli/admin/admin-federation-export.js.map +1 -1
  40. package/esm/cli/admin/admin-federation-import.js +7 -4
  41. package/esm/cli/admin/admin-federation-import.js.map +1 -1
  42. package/esm/cli/admin/admin-federation-list.js +4 -1
  43. package/esm/cli/admin/admin-federation-list.js.map +1 -1
  44. package/esm/cli/admin/admin-get-access-token.js +8 -2
  45. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  46. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +8 -2
  47. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  48. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +8 -2
  49. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  50. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +8 -2
  51. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  52. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +8 -2
  53. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  54. package/esm/cli/admin/admin-list-static-user-mappings.js +8 -2
  55. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  56. package/esm/cli/admin/admin-remove-static-user-mapping.js +8 -2
  57. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  58. package/esm/cli/admin/admin-repair-org-model.js +8 -2
  59. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  60. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +8 -2
  61. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  62. package/esm/cli/admin/admin-show-generic-extension-attributes.js +8 -2
  63. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  64. package/esm/cli/agent/agent-delete.js +10 -3
  65. package/esm/cli/agent/agent-delete.js.map +1 -1
  66. package/esm/cli/agent/agent-describe.js +4 -1
  67. package/esm/cli/agent/agent-describe.js.map +1 -1
  68. package/esm/cli/agent/agent-export.js +4 -1
  69. package/esm/cli/agent/agent-export.js.map +1 -1
  70. package/esm/cli/agent/agent-gateway-delete.js +10 -3
  71. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  72. package/esm/cli/agent/agent-gateway-describe.js +4 -1
  73. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  74. package/esm/cli/agent/agent-gateway-export.js +4 -1
  75. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  76. package/esm/cli/agent/agent-gateway-import.js +4 -1
  77. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  78. package/esm/cli/agent/agent-gateway-list.js +4 -1
  79. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  80. package/esm/cli/agent/agent-import.js +4 -1
  81. package/esm/cli/agent/agent-import.js.map +1 -1
  82. package/esm/cli/agent/agent-java-delete.js +10 -3
  83. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  84. package/esm/cli/agent/agent-java-describe.js +4 -1
  85. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  86. package/esm/cli/agent/agent-java-export.js +4 -1
  87. package/esm/cli/agent/agent-java-export.js.map +1 -1
  88. package/esm/cli/agent/agent-java-import.js +4 -1
  89. package/esm/cli/agent/agent-java-import.js.map +1 -1
  90. package/esm/cli/agent/agent-java-list.js +4 -1
  91. package/esm/cli/agent/agent-java-list.js.map +1 -1
  92. package/esm/cli/agent/agent-list.js +4 -1
  93. package/esm/cli/agent/agent-list.js.map +1 -1
  94. package/esm/cli/agent/agent-web-delete.js +10 -3
  95. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  96. package/esm/cli/agent/agent-web-describe.js +4 -1
  97. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  98. package/esm/cli/agent/agent-web-export.js +4 -1
  99. package/esm/cli/agent/agent-web-export.js.map +1 -1
  100. package/esm/cli/agent/agent-web-import.js +4 -1
  101. package/esm/cli/agent/agent-web-import.js.map +1 -1
  102. package/esm/cli/agent/agent-web-list.js +4 -1
  103. package/esm/cli/agent/agent-web-list.js.map +1 -1
  104. package/esm/cli/app/app-delete.js +4 -1
  105. package/esm/cli/app/app-delete.js.map +1 -1
  106. package/esm/cli/app/app-describe.js +4 -1
  107. package/esm/cli/app/app-describe.js.map +1 -1
  108. package/esm/cli/app/app-export.js +6 -3
  109. package/esm/cli/app/app-export.js.map +1 -1
  110. package/esm/cli/app/app-import.js +7 -4
  111. package/esm/cli/app/app-import.js.map +1 -1
  112. package/esm/cli/app/app-list.js +4 -1
  113. package/esm/cli/app/app-list.js.map +1 -1
  114. package/esm/cli/authz/authz-policy-delete.js +6 -3
  115. package/esm/cli/authz/authz-policy-delete.js.map +1 -1
  116. package/esm/cli/authz/authz-policy-describe.js +4 -1
  117. package/esm/cli/authz/authz-policy-describe.js.map +1 -1
  118. package/esm/cli/authz/authz-policy-export.js +8 -5
  119. package/esm/cli/authz/authz-policy-export.js.map +1 -1
  120. package/esm/cli/authz/authz-policy-import.js +7 -4
  121. package/esm/cli/authz/authz-policy-import.js.map +1 -1
  122. package/esm/cli/authz/authz-policy-list.js +5 -2
  123. package/esm/cli/authz/authz-policy-list.js.map +1 -1
  124. package/esm/cli/authz/authz-set-delete.js +5 -2
  125. package/esm/cli/authz/authz-set-delete.js.map +1 -1
  126. package/esm/cli/authz/authz-set-describe.js +4 -1
  127. package/esm/cli/authz/authz-set-describe.js.map +1 -1
  128. package/esm/cli/authz/authz-set-export.js +6 -3
  129. package/esm/cli/authz/authz-set-export.js.map +1 -1
  130. package/esm/cli/authz/authz-set-import.js +7 -4
  131. package/esm/cli/authz/authz-set-import.js.map +1 -1
  132. package/esm/cli/authz/authz-set-list.js +4 -1
  133. package/esm/cli/authz/authz-set-list.js.map +1 -1
  134. package/esm/cli/authz/authz-type-delete.js +6 -3
  135. package/esm/cli/authz/authz-type-delete.js.map +1 -1
  136. package/esm/cli/authz/authz-type-describe.js +5 -2
  137. package/esm/cli/authz/authz-type-describe.js.map +1 -1
  138. package/esm/cli/authz/authz-type-export.js +7 -4
  139. package/esm/cli/authz/authz-type-export.js.map +1 -1
  140. package/esm/cli/authz/authz-type-import.js +8 -5
  141. package/esm/cli/authz/authz-type-import.js.map +1 -1
  142. package/esm/cli/authz/authz-type-list.js +4 -1
  143. package/esm/cli/authz/authz-type-list.js.map +1 -1
  144. package/esm/cli/conn/conn-save.js +18 -5
  145. package/esm/cli/conn/conn-save.js.map +1 -1
  146. package/esm/cli/email/email-template-export.js +6 -3
  147. package/esm/cli/email/email-template-export.js.map +1 -1
  148. package/esm/cli/email/email-template-import.js +7 -4
  149. package/esm/cli/email/email-template-import.js.map +1 -1
  150. package/esm/cli/email/email-template-list.js +4 -1
  151. package/esm/cli/email/email-template-list.js.map +1 -1
  152. package/esm/cli/esv/esv-apply.js +15 -5
  153. package/esm/cli/esv/esv-apply.js.map +1 -1
  154. package/esm/cli/esv/esv-secret-create.js +4 -1
  155. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  156. package/esm/cli/esv/esv-secret-delete.js +5 -2
  157. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  158. package/esm/cli/esv/esv-secret-describe.js +4 -1
  159. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  160. package/esm/cli/esv/esv-secret-export.js +4 -1
  161. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  162. package/esm/cli/esv/esv-secret-import.js +4 -1
  163. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  164. package/esm/cli/esv/esv-secret-list.js +4 -1
  165. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  166. package/esm/cli/esv/esv-secret-set.js +4 -1
  167. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  168. package/esm/cli/esv/esv-secret-version-activate.js +4 -1
  169. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  170. package/esm/cli/esv/esv-secret-version-create.js +4 -1
  171. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  172. package/esm/cli/esv/esv-secret-version-deactivate.js +4 -1
  173. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  174. package/esm/cli/esv/esv-secret-version-delete.js +5 -2
  175. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  176. package/esm/cli/esv/esv-secret-version-list.js +4 -1
  177. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  178. package/esm/cli/esv/esv-variable-create.js +4 -1
  179. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  180. package/esm/cli/esv/esv-variable-delete.js +5 -2
  181. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  182. package/esm/cli/esv/esv-variable-describe.js +4 -1
  183. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  184. package/esm/cli/esv/esv-variable-export.js +4 -1
  185. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  186. package/esm/cli/esv/esv-variable-import.js +4 -1
  187. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  188. package/esm/cli/esv/esv-variable-list.js +4 -1
  189. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  190. package/esm/cli/esv/esv-variable-set.js +5 -2
  191. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  192. package/esm/cli/idm/idm-count.js +4 -1
  193. package/esm/cli/idm/idm-count.js.map +1 -1
  194. package/esm/cli/idm/idm-export.js +6 -3
  195. package/esm/cli/idm/idm-export.js.map +1 -1
  196. package/esm/cli/idm/idm-import.js +7 -4
  197. package/esm/cli/idm/idm-import.js.map +1 -1
  198. package/esm/cli/idm/idm-list.js +4 -1
  199. package/esm/cli/idm/idm-list.js.map +1 -1
  200. package/esm/cli/idp/idp-export.js +4 -1
  201. package/esm/cli/idp/idp-export.js.map +1 -1
  202. package/esm/cli/idp/idp-import.js +7 -4
  203. package/esm/cli/idp/idp-import.js.map +1 -1
  204. package/esm/cli/idp/idp-list.js +4 -1
  205. package/esm/cli/idp/idp-list.js.map +1 -1
  206. package/esm/cli/info/info.js +8 -2
  207. package/esm/cli/info/info.js.map +1 -1
  208. package/esm/cli/journey/journey-delete.js +5 -2
  209. package/esm/cli/journey/journey-delete.js.map +1 -1
  210. package/esm/cli/journey/journey-describe.js +14 -6
  211. package/esm/cli/journey/journey-describe.js.map +1 -1
  212. package/esm/cli/journey/journey-disable.js +8 -2
  213. package/esm/cli/journey/journey-disable.js.map +1 -1
  214. package/esm/cli/journey/journey-enable.js +8 -2
  215. package/esm/cli/journey/journey-enable.js.map +1 -1
  216. package/esm/cli/journey/journey-export.js +6 -3
  217. package/esm/cli/journey/journey-export.js.map +1 -1
  218. package/esm/cli/journey/journey-import.js +7 -4
  219. package/esm/cli/journey/journey-import.js.map +1 -1
  220. package/esm/cli/journey/journey-list.js +4 -1
  221. package/esm/cli/journey/journey-list.js.map +1 -1
  222. package/esm/cli/journey/journey-prune.js +10 -3
  223. package/esm/cli/journey/journey-prune.js.map +1 -1
  224. package/esm/cli/log/log-fetch.js +16 -6
  225. package/esm/cli/log/log-fetch.js.map +1 -1
  226. package/esm/cli/log/log-key-delete.js +5 -2
  227. package/esm/cli/log/log-key-delete.js.map +1 -1
  228. package/esm/cli/log/log-key-describe.js +4 -1
  229. package/esm/cli/log/log-key-describe.js.map +1 -1
  230. package/esm/cli/log/log-key-list.js +4 -1
  231. package/esm/cli/log/log-key-list.js.map +1 -1
  232. package/esm/cli/log/log-list.js +14 -4
  233. package/esm/cli/log/log-list.js.map +1 -1
  234. package/esm/cli/log/log-tail.js +16 -6
  235. package/esm/cli/log/log-tail.js.map +1 -1
  236. package/esm/cli/realm/realm-add-custom-domain.js +4 -1
  237. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  238. package/esm/cli/realm/realm-describe.js +4 -1
  239. package/esm/cli/realm/realm-describe.js.map +1 -1
  240. package/esm/cli/realm/realm-list.js +4 -1
  241. package/esm/cli/realm/realm-list.js.map +1 -1
  242. package/esm/cli/realm/realm-remove-custom-domain.js +8 -2
  243. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  244. package/esm/cli/saml/saml-cot-export.js +6 -3
  245. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  246. package/esm/cli/saml/saml-cot-import.js +7 -4
  247. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  248. package/esm/cli/saml/saml-cot-list.js +4 -1
  249. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  250. package/esm/cli/saml/saml-delete.js +11 -4
  251. package/esm/cli/saml/saml-delete.js.map +1 -1
  252. package/esm/cli/saml/saml-describe.js +4 -1
  253. package/esm/cli/saml/saml-describe.js.map +1 -1
  254. package/esm/cli/saml/saml-export.js +6 -3
  255. package/esm/cli/saml/saml-export.js.map +1 -1
  256. package/esm/cli/saml/saml-import.js +7 -4
  257. package/esm/cli/saml/saml-import.js.map +1 -1
  258. package/esm/cli/saml/saml-list.js +4 -1
  259. package/esm/cli/saml/saml-list.js.map +1 -1
  260. package/esm/cli/saml/saml-metadata-export.js +5 -2
  261. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  262. package/esm/cli/script/script-delete.js +4 -1
  263. package/esm/cli/script/script-delete.js.map +1 -1
  264. package/esm/cli/script/script-describe.js +4 -1
  265. package/esm/cli/script/script-describe.js.map +1 -1
  266. package/esm/cli/script/script-export.js +4 -1
  267. package/esm/cli/script/script-export.js.map +1 -1
  268. package/esm/cli/script/script-import.js +4 -1
  269. package/esm/cli/script/script-import.js.map +1 -1
  270. package/esm/cli/script/script-list.js +4 -1
  271. package/esm/cli/script/script-list.js.map +1 -1
  272. package/esm/cli/service/service-delete.js +5 -2
  273. package/esm/cli/service/service-delete.js.map +1 -1
  274. package/esm/cli/service/service-export.js +6 -3
  275. package/esm/cli/service/service-export.js.map +1 -1
  276. package/esm/cli/service/service-import.js +7 -4
  277. package/esm/cli/service/service-import.js.map +1 -1
  278. package/esm/cli/service/service-list.js +4 -1
  279. package/esm/cli/service/service-list.js.map +1 -1
  280. package/esm/cli/theme/theme-delete.js +6 -3
  281. package/esm/cli/theme/theme-delete.js.map +1 -1
  282. package/esm/cli/theme/theme-export.js +7 -4
  283. package/esm/cli/theme/theme-export.js.map +1 -1
  284. package/esm/cli/theme/theme-import.js +8 -5
  285. package/esm/cli/theme/theme-import.js.map +1 -1
  286. package/esm/cli/theme/theme-list.js +4 -1
  287. package/esm/cli/theme/theme-list.js.map +1 -1
  288. package/esm/ops/AdminFederationOps.js +17 -9
  289. package/esm/ops/AdminFederationOps.js.map +1 -1
  290. package/esm/ops/AgentOps.js +62 -36
  291. package/esm/ops/AgentOps.js.map +1 -1
  292. package/esm/ops/CirclesOfTrustOps.js +22 -10
  293. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  294. package/esm/ops/ConnectionProfileOps.js +10 -3
  295. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  296. package/esm/ops/EmailTemplateOps.js +23 -15
  297. package/esm/ops/EmailTemplateOps.js.map +1 -1
  298. package/esm/ops/IdmOps.js +34 -21
  299. package/esm/ops/IdmOps.js.map +1 -1
  300. package/esm/ops/IdpOps.js +17 -9
  301. package/esm/ops/IdpOps.js.map +1 -1
  302. package/esm/ops/JourneyOps.js +46 -30
  303. package/esm/ops/JourneyOps.js.map +1 -1
  304. package/esm/ops/LogOps.js +21 -11
  305. package/esm/ops/LogOps.js.map +1 -1
  306. package/esm/ops/NodeOps.js +5 -2
  307. package/esm/ops/NodeOps.js.map +1 -1
  308. package/esm/ops/OAuth2ClientOps.js +25 -12
  309. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  310. package/esm/ops/OrganizationOps.js +8 -2
  311. package/esm/ops/OrganizationOps.js.map +1 -1
  312. package/esm/ops/PolicyOps.js +36 -21
  313. package/esm/ops/PolicyOps.js.map +1 -1
  314. package/esm/ops/PolicySetOps.js +35 -18
  315. package/esm/ops/PolicySetOps.js.map +1 -1
  316. package/esm/ops/RealmOps.js +11 -6
  317. package/esm/ops/RealmOps.js.map +1 -1
  318. package/esm/ops/ResourceTypeOps.js +34 -18
  319. package/esm/ops/ResourceTypeOps.js.map +1 -1
  320. package/esm/ops/Saml2Ops.js +43 -23
  321. package/esm/ops/Saml2Ops.js.map +1 -1
  322. package/esm/ops/ScriptOps.js +18 -10
  323. package/esm/ops/ScriptOps.js.map +1 -1
  324. package/esm/ops/SecretsOps.js +28 -14
  325. package/esm/ops/SecretsOps.js.map +1 -1
  326. package/esm/ops/ServiceOps.js +38 -17
  327. package/esm/ops/ServiceOps.js.map +1 -1
  328. package/esm/ops/ThemeOps.js +35 -19
  329. package/esm/ops/ThemeOps.js.map +1 -1
  330. package/esm/ops/VariablesOps.js +23 -12
  331. package/esm/ops/VariablesOps.js.map +1 -1
  332. package/esm/utils/Config.js +6 -3
  333. package/esm/utils/Config.js.map +1 -1
  334. package/esm/utils/Console.js +5 -2
  335. package/esm/utils/Console.js.map +1 -1
  336. package/esm/utils/ExportImportUtils.js +6 -3
  337. package/esm/utils/ExportImportUtils.js.map +1 -1
  338. package/esm/utils/Version.js +7 -3
  339. package/esm/utils/Version.js.map +1 -1
  340. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"JourneyOps.js","names":["frodo","state","fs","printMessage","createProgressBar","updateProgressBar","stopProgressBar","showSpinner","succeedSpinner","failSpinner","createTable","debugMessage","CirclesOfTrust","EmailTemplate","Idp","Node","Saml2","Script","Theme","wordwrap","cloneDeep","listJourneys","long","analyze","journeys","authn","journey","getJourneys","journeyStub","table","_journeyStub$uiConfig","push","_id","enabled","uiConfig","categories","JSON","parse","join","toString","exportPromises","exportJourney","useStringArrays","deps","journeyExports","Promise","all","journeyExport","_journeyExport$tree$u","tree","getJourneyClassification","error","response","data","_error$response","exportJourneyToFile","journeyId","file","options","verbose","getDebug","utils","impex","getTypedFilename","getDirectory","dir","replace","existsSync","mkdirSync","recursive","fileData","saveJsonToFile","exportJourneysToFile","fileName","getRealmString","trees","createMultiTreeExportTemplate","length","exportData","meta","exportJourneysToFiles","importJourneyFromFile","readFile","err","journeyData","installedJourneys","map","x","unresolvedJourneys","resolvedJourneys","resolveDependencies","Object","keys","importJourney","then","catch","importError","importFirstJourneyFromFile","treeId","hasOwnProperty","call","importJourneysFromFile","importAllJourneys","importJourneysFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","allJourneysData","readFileSync","it","getJourneyClassificationMd","getOneLineDescription","treeObj","description","getOneLineDescriptionMd","describeTreeDescendents","descendents","depth","values","indent","Array","fill","descendent","describeTreeDescendentsMd","markdown","describeJourney","resolveTreeExport","onlineTreeExportResolver","_journeyData$meta","_journeyData$tree$uiC","_journeyData$themes","allNodes","nodes","innerNodes","nodeTypeMap","nodeData","_type","getAmVersion","originAmVersion","setAmVersion","getTreeDescendents","entries","nodeType","count","String","getNodeClassification","nodeObj","getNodeRef","themes","themeData","scripts","scriptData","emailTemplates","templateData","socialIdentityProviders","socialIdpData","saml2Entities","entityProviderData","circlesOfTrust","cotData","describeJourneyMd","_journeyData$meta2","_journeyData$tree$uiC2","_journeyData$themes2","getNodeClassificationMd","getTableHeaderMd","getTableRowMd"],"sources":["ops/JourneyOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport type {\n NodeSkeleton,\n TreeSkeleton,\n} from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport type {\n JourneyClassificationType,\n MultiTreeExportInterface,\n SingleTreeExportInterface,\n TreeDependencyMapInterface,\n TreeExportOptions,\n TreeExportResolverInterface,\n TreeImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/OpsTypes';\nimport {\n printMessage,\n createProgressBar,\n updateProgressBar,\n stopProgressBar,\n showSpinner,\n succeedSpinner,\n failSpinner,\n createTable,\n debugMessage,\n} from '../utils/Console';\nimport * as CirclesOfTrust from './CirclesOfTrustOps';\nimport * as EmailTemplate from './EmailTemplateOps';\nimport * as Idp from './IdpOps';\nimport * as Node from './NodeOps';\nimport * as Saml2 from './Saml2Ops';\nimport * as Script from './ScriptOps';\nimport * as Theme from './ThemeOps';\nimport wordwrap from './utils/Wordwrap';\nimport { cloneDeep } from './utils/OpsUtils';\n\n/**\n * List all the journeys/trees\n * @param {boolean} long Long version, all the fields\n * @param {boolean} analyze Analyze journeys/trees for custom nodes (expensive)\n * @returns {Promise<TreeSkeleton[]>} a promise that resolves to an array journey objects\n */\nexport async function listJourneys(\n long = false,\n analyze = false\n): Promise<TreeSkeleton[]> {\n let journeys = [];\n try {\n journeys = await frodo.authn.journey.getJourneys();\n if (!long && !analyze) {\n for (const journeyStub of journeys) {\n printMessage(`${journeyStub['_id']}`, 'data');\n }\n } else {\n if (!analyze) {\n const table = createTable(['Name', 'Status', 'Tags']);\n for (const journeyStub of journeys) {\n table.push([\n `${journeyStub._id}`,\n journeyStub.enabled === false\n ? 'disabled'['brightRed']\n : 'enabled'['brightGreen'],\n journeyStub.uiConfig?.categories\n ? wordwrap(\n JSON.parse(journeyStub.uiConfig.categories).join(', '),\n 60\n )\n : '',\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n showSpinner('Retrieving details of all journeys...');\n const exportPromises = [];\n try {\n for (const journeyStub of journeys) {\n exportPromises.push(\n frodo.authn.journey.exportJourney(journeyStub['_id'], {\n useStringArrays: false,\n deps: false,\n })\n );\n }\n const journeyExports = await Promise.all(exportPromises);\n succeedSpinner('Retrieved details of all journeys.');\n const table = createTable([\n 'Name',\n 'Status',\n 'Classification',\n 'Tags',\n ]);\n for (const journeyExport of journeyExports) {\n table.push([\n `${journeyExport.tree._id}`,\n journeyExport.tree.enabled === false\n ? 'disabled'['brightRed']\n : 'enabled'['brightGreen'],\n getJourneyClassification(journeyExport).join(', '),\n journeyExport.tree.uiConfig?.categories\n ? wordwrap(\n JSON.parse(journeyExport.tree.uiConfig.categories).join(\n ', '\n ),\n 60\n )\n : '',\n ]);\n }\n printMessage(table.toString(), 'data');\n } catch (error) {\n failSpinner('Error retrieving details of all journeys.');\n printMessage(error.response.data, 'error');\n }\n }\n }\n } catch (error) {\n printMessage(error.response?.data, 'error');\n }\n return journeys;\n}\n\n/**\n * Export journey by id/name to file\n * @param {string} journeyId journey id/name\n * @param {string} file optional export file name\n * @param {TreeExportOptions} options export options\n */\nexport async function exportJourneyToFile(\n journeyId: string,\n file: string,\n options: TreeExportOptions\n): Promise<void> {\n debugMessage(`exportJourneyToFile: start`);\n const verbose = state.getDebug();\n if (!file) {\n file = frodo.utils.impex.getTypedFilename(journeyId, 'journey');\n }\n if (state.getDirectory()) {\n const dir = state.getDirectory().replace(/\\/$/, '');\n debugMessage(`exportJourneyToFile: directory='${dir}'`);\n file = `${dir}/${file}`;\n // create directory if it doesn't exist\n if (!fs.existsSync(dir)) {\n debugMessage(`exportJourneyToFile: creating directory '${dir}'`);\n fs.mkdirSync(dir, { recursive: true });\n }\n }\n if (!verbose) showSpinner(`${journeyId}`);\n try {\n const fileData: SingleTreeExportInterface =\n await frodo.authn.journey.exportJourney(journeyId, options);\n if (verbose) showSpinner(`${journeyId}`);\n frodo.utils.impex.saveJsonToFile(fileData, file);\n succeedSpinner(\n `Exported ${journeyId['brightCyan']} to ${file['brightCyan']}.`\n );\n } catch (error) {\n if (verbose) showSpinner(`${journeyId}`);\n failSpinner(`Error exporting journey ${journeyId}: ${error}`);\n }\n}\n\n/**\n * Export all journeys to file\n * @param {string} file optional export file name\n * @param {TreeExportOptions} options export options\n */\nexport async function exportJourneysToFile(\n file: string,\n options: TreeExportOptions = {\n deps: false,\n useStringArrays: false,\n }\n): Promise<void> {\n let fileName = file;\n if (!fileName) {\n fileName = frodo.utils.impex.getTypedFilename(\n `all${frodo.utils.impex.getRealmString()}Journeys`,\n 'journeys'\n );\n }\n const trees = await frodo.authn.journey.getJourneys();\n const fileData: MultiTreeExportInterface =\n frodo.authn.journey.createMultiTreeExportTemplate();\n createProgressBar(trees.length, 'Exporting journeys...');\n for (const tree of trees) {\n updateProgressBar(`${tree._id}`);\n try {\n const exportData = await frodo.authn.journey.exportJourney(\n tree._id,\n options\n );\n delete exportData.meta;\n fileData.trees[tree._id] = exportData;\n } catch (error) {\n printMessage(`Error exporting journey ${tree._id}: ${error}`, 'error');\n }\n }\n frodo.utils.impex.saveJsonToFile(fileData, fileName);\n stopProgressBar(`Exported to ${fileName}`);\n}\n\n/**\n * Export all journeys to separate files\n * @param {TreeExportOptions} options export options\n */\nexport async function exportJourneysToFiles(\n options: TreeExportOptions\n): Promise<void> {\n const trees = await frodo.authn.journey.getJourneys();\n createProgressBar(trees.length, 'Exporting journeys...');\n for (const tree of trees) {\n updateProgressBar(`${tree._id}`);\n const fileName = frodo.utils.impex.getTypedFilename(\n `${tree._id}`,\n 'journey'\n );\n try {\n const exportData: SingleTreeExportInterface =\n await frodo.authn.journey.exportJourney(tree._id, options);\n frodo.utils.impex.saveJsonToFile(exportData, fileName);\n } catch (error) {\n // do we need to report status here?\n }\n }\n stopProgressBar('Done');\n}\n\n/**\n * Import a journey from file\n * @param {string} journeyId journey id/name\n * @param {string} file import file name\n * @param {TreeImportOptions} options import options\n */\nexport async function importJourneyFromFile(\n journeyId: string,\n file: string,\n options: TreeImportOptions\n) {\n const verbose = state.getDebug();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let journeyData = JSON.parse(data);\n // check if this is a file with multiple trees and get journey by id\n if (journeyData.trees && journeyData.trees[journeyId]) {\n journeyData = journeyData.trees[journeyId];\n } else if (journeyData.trees) {\n journeyData = null;\n }\n\n // if a journeyId was specified, only import the matching journey\n if (journeyData && journeyId === journeyData.tree._id) {\n // attempt dependency resolution for single tree import\n const installedJourneys = (await frodo.authn.journey.getJourneys()).map(\n (x) => x._id\n );\n const unresolvedJourneys = {};\n const resolvedJourneys = [];\n showSpinner('Resolving dependencies');\n await frodo.authn.journey.resolveDependencies(\n installedJourneys,\n { [journeyId]: journeyData },\n unresolvedJourneys,\n resolvedJourneys\n );\n if (Object.keys(unresolvedJourneys).length === 0) {\n succeedSpinner(`Resolved all dependencies.`);\n\n if (!verbose) showSpinner(`Importing ${journeyId}...`);\n frodo.authn.journey\n .importJourney(journeyData, options)\n .then(() => {\n if (verbose) showSpinner(`Importing ${journeyId}...`);\n succeedSpinner(`Imported ${journeyId}.`);\n })\n .catch((importError) => {\n if (verbose) showSpinner(`Importing ${journeyId}...`);\n failSpinner(`${importError}`);\n });\n } else {\n failSpinner(`Unresolved dependencies:`);\n for (const journey of Object.keys(unresolvedJourneys)) {\n printMessage(\n ` ${journey} requires ${unresolvedJourneys[journey]}`,\n 'error'\n );\n }\n }\n // end dependency resolution for single tree import\n } else {\n showSpinner(`Importing ${journeyId}...`);\n failSpinner(`${journeyId} not found!`);\n }\n });\n}\n\n/**\n * Import first journey from file\n * @param {string} file import file name\n * @param {TreeImportOptions} options import options\n */\nexport async function importFirstJourneyFromFile(\n file: string,\n options: TreeImportOptions\n) {\n const verbose = state.getDebug();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let journeyData = cloneDeep(JSON.parse(data));\n let journeyId = null;\n // single tree\n if (journeyData.tree) {\n journeyId = cloneDeep(journeyData.tree._id);\n }\n // multiple trees, so get the first tree\n else if (journeyData.trees) {\n for (const treeId in journeyData.trees) {\n if (Object.hasOwnProperty.call(journeyData.trees, treeId)) {\n journeyId = treeId;\n journeyData = journeyData.trees[treeId];\n break;\n }\n }\n }\n\n // if a journeyId was specified, only import the matching journey\n if (journeyData && journeyId) {\n // attempt dependency resolution for single tree import\n const installedJourneys = (await frodo.authn.journey.getJourneys()).map(\n (x) => x._id\n );\n const unresolvedJourneys = {};\n const resolvedJourneys = [];\n showSpinner('Resolving dependencies');\n await frodo.authn.journey.resolveDependencies(\n installedJourneys,\n { [journeyId]: journeyData },\n unresolvedJourneys,\n resolvedJourneys\n );\n if (Object.keys(unresolvedJourneys).length === 0) {\n succeedSpinner(`Resolved all dependencies.`);\n\n if (!verbose) showSpinner(`Importing ${journeyId}...`);\n frodo.authn.journey\n .importJourney(journeyData, options)\n .then(() => {\n if (verbose) showSpinner(`Importing ${journeyId}...`);\n succeedSpinner(`Imported ${journeyId}.`);\n })\n .catch((importError) => {\n if (verbose) showSpinner(`Importing ${journeyId}...`);\n failSpinner(`${importError}`);\n });\n } else {\n failSpinner(`Unresolved dependencies:`);\n for (const journey of Object.keys(unresolvedJourneys)) {\n printMessage(\n ` ${journey} requires ${unresolvedJourneys[journey]}`,\n 'error'\n );\n }\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No journeys found!`);\n }\n // end dependency resolution for single tree import\n });\n}\n\n/**\n * Import all journeys from file\n * @param {string} file import file name\n * @param {TreeImportOptions} options import options\n */\nexport async function importJourneysFromFile(\n file: string,\n options: TreeImportOptions\n) {\n fs.readFile(file, 'utf8', (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n frodo.authn.journey.importAllJourneys(fileData.trees, options);\n });\n}\n\n/**\n * Import all journeys from separate files\n * @param {TreeImportOptions} options import options\n */\nexport async function importJourneysFromFiles(options: TreeImportOptions) {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.journey.json')\n );\n const allJourneysData = { trees: {} };\n for (const file of jsonFiles) {\n const journeyData = JSON.parse(fs.readFileSync(file, 'utf8'));\n allJourneysData.trees[journeyData.tree._id] = journeyData;\n }\n frodo.authn.journey.importAllJourneys(\n allJourneysData.trees as MultiTreeExportInterface,\n options\n );\n}\n\n/**\n * Get journey classification\n * @param {SingleTreeExportInterface} journey journey export\n * @returns {string[]} Colored string array of classifications\n */\nexport function getJourneyClassification(\n journey: SingleTreeExportInterface\n): JourneyClassificationType[] {\n return frodo.authn.journey.getJourneyClassification(journey).map((it) => {\n switch (it) {\n case 'standard':\n return it['brightGreen'];\n\n case 'cloud':\n return it['brightMagenta'];\n\n case 'custom':\n return it['brightRed'];\n\n case 'premium':\n return it['brightYellow'];\n }\n });\n}\n\n/**\n * Get journey classification in markdown\n * @param {SingleTreeExportInterface} journey journey export\n * @returns {string[]} Colored string array of classifications\n */\nexport function getJourneyClassificationMd(\n journey: SingleTreeExportInterface\n): string[] {\n return frodo.authn.journey.getJourneyClassification(journey).map((it) => {\n switch (it) {\n case 'standard':\n return `:green_circle: \\`${it}\\``;\n\n case 'cloud':\n return `:purple_circle: \\`${it}\\``;\n\n case 'custom':\n return `:red_circle: \\`${it}\\``;\n\n case 'premium':\n return `:yellow_circle: \\`${it}\\``;\n }\n });\n}\n\n/**\n * Get a one-line description of the tree object\n * @param {TreeSkeleton} treeObj circle of trust object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(treeObj: TreeSkeleton): string {\n const description = `[${treeObj._id['brightCyan']}]`;\n return description;\n}\n\n/**\n * Get a one-line description of the tree object in markdown\n * @param {TreeSkeleton} treeObj circle of trust object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescriptionMd(treeObj: TreeSkeleton): string {\n const description = `${treeObj._id}`;\n return description;\n}\n\n/**\n * Helper function to render a nested list of dependent trees\n * @param {TreeDependencyMapInterface} descendents tree dependency map\n * @param {number} depth level of nesting\n */\nfunction describeTreeDescendents(\n descendents: TreeDependencyMapInterface,\n depth = 0\n) {\n if (depth || Object.values(descendents)[0].length) {\n // heading\n if (depth === 0) {\n printMessage(\n `\\nInner Tree Dependencies (${Object.values(descendents)[0].length}):`,\n 'data'\n );\n }\n const indent = Array(depth * 2)\n .fill(' ')\n .join('');\n const [tree] = Object.keys(descendents);\n printMessage(`${indent}- ${tree['brightCyan']}`, 'data');\n for (const descendent of descendents[tree]) {\n describeTreeDescendents(descendent, depth + 1);\n }\n }\n}\n\n/**\n * Helper function to render a nested list of dependent trees in markdown\n * @param {TreeDependencyMapInterface} descendents tree dependency map\n * @param {number} depth level of nesting\n */\nfunction describeTreeDescendentsMd(\n descendents: TreeDependencyMapInterface,\n depth = 0\n): string {\n let markdown = '';\n if (depth || Object.values(descendents)[0].length) {\n // heading\n if (depth === 0) {\n markdown += `## Inner Tree Dependencies (${\n Object.values(descendents)[0].length\n })\\n`;\n }\n const indent = Array(depth * 2)\n .fill(' ')\n .join('');\n const [tree] = Object.keys(descendents);\n markdown += `${indent}- ${tree}\\n`;\n for (const descendent of descendents[tree]) {\n markdown += describeTreeDescendentsMd(descendent, depth + 1);\n }\n return markdown;\n }\n return markdown;\n}\n\n/**\n * Describe a journey:\n * - Properties, tags, description, name, metadata\n * - Inner tree dependency tree\n * - Node type summary\n * - Nodes\n * - Themes\n * - Scripts\n * - Email templates\n * - Social identity providers\n * - SAML2 entity providers\n * - SAML2 circles of trust\n * @param {SingleTreeExportInterface} journeyData journey export object\n * @param {TreeExportResolverInterface} resolveTreeExport tree export resolver callback function\n */\nexport async function describeJourney(\n journeyData: SingleTreeExportInterface,\n resolveTreeExport: TreeExportResolverInterface = frodo.authn.journey\n .onlineTreeExportResolver\n): Promise<void> {\n const allNodes = {\n ...journeyData.nodes,\n ...journeyData.innerNodes,\n };\n const nodeTypeMap = {};\n\n for (const nodeData of Object.values(allNodes)) {\n if (nodeTypeMap[nodeData._type._id]) {\n nodeTypeMap[nodeData._type._id] += 1;\n } else {\n nodeTypeMap[nodeData._type._id] = 1;\n }\n }\n\n // initialize AM version from file\n if (!state.getAmVersion() && journeyData.meta?.originAmVersion) {\n state.setAmVersion(journeyData.meta.originAmVersion);\n }\n\n // Journey Name\n printMessage(`${getOneLineDescription(journeyData.tree)}`, 'data');\n printMessage(Array(`[${journeyData.tree._id}]`['length']).fill('=').join(''));\n\n // Description\n if (journeyData.tree.description) {\n printMessage(`\\n${journeyData.tree.description}`, 'data');\n }\n\n // Status\n printMessage(\n `\\nStatus\\n${\n journeyData.tree.enabled === false\n ? 'disabled'['brightRed']\n : 'enabled'['brightGreen']\n }`\n );\n\n // Classification\n if (state.getAmVersion()) {\n printMessage(\n `\\nClassification\\n${getJourneyClassification(journeyData).join(', ')}`,\n 'data'\n );\n }\n\n // Categories/Tags\n if (\n journeyData.tree.uiConfig?.categories &&\n journeyData.tree.uiConfig.categories != '[]'\n ) {\n printMessage('\\nCategories/Tags', 'data');\n printMessage(\n `${JSON.parse(journeyData.tree.uiConfig.categories).join(', ')}`,\n 'data'\n );\n }\n\n // Dependency Tree\n const descendents = await frodo.authn.journey.getTreeDescendents(\n journeyData,\n resolveTreeExport\n );\n describeTreeDescendents(descendents);\n\n // Node Types\n if (Object.entries(nodeTypeMap).length) {\n printMessage(\n `\\nNode Types (${Object.entries(nodeTypeMap).length}):`,\n 'data'\n );\n for (const [nodeType, count] of Object.entries(nodeTypeMap)) {\n printMessage(\n `- ${String(count)} [${\n nodeType['brightCyan']\n }] (${Node.getNodeClassification(nodeType).join(', ')})`,\n 'data'\n );\n }\n }\n\n // Nodes\n if (Object.entries(allNodes).length) {\n printMessage(`\\nNodes (${Object.entries(allNodes).length}):`, 'data');\n for (const nodeObj of Object.values<NodeSkeleton>(allNodes)) {\n printMessage(\n `- ${Node.getOneLineDescription(\n nodeObj,\n frodo.authn.journey.getNodeRef(nodeObj, journeyData)\n )}`,\n 'data'\n );\n }\n }\n\n // Themes\n if (journeyData.themes?.length) {\n printMessage(`\\nThemes (${journeyData.themes.length}):`, 'data');\n for (const themeData of journeyData.themes) {\n printMessage(`- ${Theme.getOneLineDescription(themeData)}`, 'data');\n }\n }\n\n // Scripts\n if (Object.entries(journeyData.scripts).length) {\n printMessage(\n `\\nScripts (${Object.entries(journeyData.scripts).length}):`,\n 'data'\n );\n for (const scriptData of Object.values(journeyData.scripts)) {\n printMessage(`- ${Script.getOneLineDescription(scriptData)}`, 'data');\n }\n }\n\n // Email Templates\n if (Object.entries(journeyData.emailTemplates).length) {\n printMessage(\n `\\nEmail Templates (${\n Object.entries(journeyData.emailTemplates).length\n }):`,\n 'data'\n );\n for (const templateData of Object.values(journeyData.emailTemplates)) {\n printMessage(\n `- ${EmailTemplate.getOneLineDescription(templateData)}`,\n 'data'\n );\n }\n }\n\n // Social Identity Providers\n if (Object.entries(journeyData.socialIdentityProviders).length) {\n printMessage(\n `\\nSocial Identity Providers (${\n Object.entries(journeyData.socialIdentityProviders).length\n }):`,\n 'data'\n );\n for (const socialIdpData of Object.values(\n journeyData.socialIdentityProviders\n )) {\n printMessage(`- ${Idp.getOneLineDescription(socialIdpData)}`, 'data');\n }\n }\n\n // SAML2 Entity Providers\n if (Object.entries(journeyData.saml2Entities).length) {\n printMessage(\n `\\nSAML2 Entity Providers (${\n Object.entries(journeyData.saml2Entities).length\n }):`,\n 'data'\n );\n for (const entityProviderData of Object.values(journeyData.saml2Entities)) {\n printMessage(\n `- ${Saml2.getOneLineDescription(entityProviderData)}`,\n 'data'\n );\n }\n }\n\n // SAML2 Circles Of Trust\n if (Object.entries(journeyData.circlesOfTrust).length) {\n printMessage(\n `\\nSAML2 Circles Of Trust (${\n Object.entries(journeyData.circlesOfTrust).length\n }):`,\n 'data'\n );\n for (const cotData of Object.values(journeyData.circlesOfTrust)) {\n printMessage(\n `- ${CirclesOfTrust.getOneLineDescription(cotData)}`,\n 'data'\n );\n }\n }\n}\n\n/**\n * Describe a journey in markdown:\n * - Properties, tags, description, name, metadata\n * - Inner tree dependency tree\n * - Node type summary\n * - Nodes\n * - Themes\n * - Scripts\n * - Email templates\n * - Social identity providers\n * - SAML2 entity providers\n * - SAML2 circles of trust\n * @param {SingleTreeExportInterface} journeyData journey export object\n * @param {TreeExportResolverInterface} resolveTreeExport tree export resolver callback function\n */\nexport async function describeJourneyMd(\n journeyData: SingleTreeExportInterface,\n resolveTreeExport: TreeExportResolverInterface = frodo.authn.journey\n .onlineTreeExportResolver\n) {\n const allNodes = {\n ...journeyData.nodes,\n ...journeyData.innerNodes,\n };\n const nodeTypeMap = {};\n\n for (const nodeData of Object.values(allNodes)) {\n if (nodeTypeMap[nodeData._type._id]) {\n nodeTypeMap[nodeData._type._id] += 1;\n } else {\n nodeTypeMap[nodeData._type._id] = 1;\n }\n }\n\n // initialize AM version from file\n if (!state.getAmVersion() && journeyData.meta?.originAmVersion) {\n state.setAmVersion(journeyData.meta.originAmVersion);\n }\n\n // Journey Name\n printMessage(\n `# ${getOneLineDescriptionMd(journeyData.tree)} - ${\n journeyData.tree.enabled === false\n ? ':o: `disabled`'\n : ':white_check_mark: `enabled`'\n }, ${getJourneyClassificationMd(journeyData).join(', ')}`,\n 'data'\n );\n\n // Categories/Tags\n if (\n journeyData.tree.uiConfig?.categories &&\n journeyData.tree.uiConfig.categories != '[]'\n ) {\n printMessage(\n `\\`${JSON.parse(journeyData.tree.uiConfig.categories).join('`, `')}\\``,\n 'data'\n );\n }\n\n // Description\n if (journeyData.tree.description) {\n printMessage(`\\n${journeyData.tree.description}`, 'data');\n }\n\n // Journey image\n printMessage(`\\n[![](./${journeyData.tree._id}.png)]()\\n`, 'data');\n\n // Dependency Tree\n const descendents = await frodo.authn.journey.getTreeDescendents(\n journeyData,\n resolveTreeExport\n );\n printMessage(describeTreeDescendentsMd(descendents), 'data');\n\n // Node Types\n if (Object.entries(nodeTypeMap).length) {\n printMessage(\n `## Node Types (${Object.entries(nodeTypeMap).length})`,\n 'data'\n );\n printMessage('| Count | Type | Classification |', 'data');\n printMessage('| -----:| ---- | -------------- |', 'data');\n for (const [nodeType, count] of Object.entries(nodeTypeMap)) {\n printMessage(\n `| ${String(count)} | ${nodeType} | ${Node.getNodeClassificationMd(\n nodeType\n ).join('<br>')} |`,\n 'data'\n );\n }\n }\n\n // Nodes\n if (Object.entries(allNodes).length) {\n printMessage(`## Nodes (${Object.entries(allNodes).length})`, 'data');\n printMessage(Node.getTableHeaderMd(), 'data');\n for (const nodeObj of Object.values<NodeSkeleton>(allNodes)) {\n printMessage(\n `${Node.getTableRowMd(\n nodeObj,\n frodo.authn.journey.getNodeRef(nodeObj, journeyData)\n )}`,\n 'data'\n );\n }\n }\n\n // Themes\n if (journeyData.themes?.length) {\n printMessage(`## Themes (${journeyData.themes.length})`, 'data');\n printMessage(Theme.getTableHeaderMd(), 'data');\n for (const themeData of journeyData.themes) {\n printMessage(`${Theme.getTableRowMd(themeData)}`, 'data');\n }\n }\n\n // Scripts\n if (Object.entries(journeyData.scripts).length) {\n printMessage(\n `## Scripts (${Object.entries(journeyData.scripts).length})`,\n 'data'\n );\n printMessage(Script.getTableHeaderMd(), 'data');\n for (const scriptData of Object.values(journeyData.scripts)) {\n printMessage(`${Script.getTableRowMd(scriptData)}`, 'data');\n }\n }\n\n // Email Templates\n if (Object.entries(journeyData.emailTemplates).length) {\n printMessage(\n `## Email Templates (${\n Object.entries(journeyData.emailTemplates).length\n })`,\n 'data'\n );\n printMessage(EmailTemplate.getTableHeaderMd(), 'data');\n for (const templateData of Object.values(journeyData.emailTemplates)) {\n printMessage(`${EmailTemplate.getTableRowMd(templateData)}`, 'data');\n }\n }\n\n // Social Identity Providers\n if (Object.entries(journeyData.socialIdentityProviders).length) {\n printMessage(\n `## Social Identity Providers (${\n Object.entries(journeyData.socialIdentityProviders).length\n })`,\n 'data'\n );\n printMessage(Idp.getTableHeaderMd(), 'data');\n for (const socialIdpData of Object.values(\n journeyData.socialIdentityProviders\n )) {\n printMessage(`${Idp.getTableRowMd(socialIdpData)}`, 'data');\n }\n }\n\n // SAML2 Entity Providers\n if (Object.entries(journeyData.saml2Entities).length) {\n printMessage(\n `## SAML2 Entity Providers (${\n Object.entries(journeyData.saml2Entities).length\n })`,\n 'data'\n );\n printMessage(Saml2.getTableHeaderMd(), 'data');\n for (const entityProviderData of Object.values(journeyData.saml2Entities)) {\n printMessage(`${Saml2.getTableRowMd(entityProviderData)}`, 'data');\n }\n }\n\n // SAML2 Circles Of Trust\n if (Object.entries(journeyData.circlesOfTrust).length) {\n printMessage(\n `## SAML2 Circles Of Trust (${\n Object.entries(journeyData.circlesOfTrust).length\n })`,\n 'data'\n );\n printMessage(CirclesOfTrust.getTableHeaderMd(), 'data');\n for (const cotData of Object.values(journeyData.circlesOfTrust)) {\n printMessage(`${CirclesOfTrust.getTableRowMd(cotData)}`, 'data');\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"JourneyOps.js","names":["frodo","state","fs","printMessage","createProgressBar","updateProgressBar","stopProgressBar","showSpinner","succeedSpinner","failSpinner","createTable","debugMessage","CirclesOfTrust","EmailTemplate","Idp","Node","Saml2","Script","Theme","wordwrap","cloneDeep","getTypedFilename","saveJsonToFile","getRealmString","utils","impex","getJourneys","exportJourney","createMultiTreeExportTemplate","resolveDependencies","importAllJourneys","importJourney","getTreeDescendents","getNodeRef","onlineTreeExportResolver","authn","journey","listJourneys","long","analyze","journeys","journeyStub","table","_journeyStub$uiConfig","push","_id","enabled","uiConfig","categories","JSON","parse","join","toString","exportPromises","useStringArrays","deps","journeyExports","Promise","all","journeyExport","_journeyExport$tree$u","tree","getJourneyClassification","error","response","data","_error$response","exportJourneyToFile","journeyId","file","options","verbose","getDebug","getDirectory","dir","replace","existsSync","mkdirSync","recursive","fileData","exportJourneysToFile","fileName","trees","length","exportData","meta","exportJourneysToFiles","importJourneyFromFile","readFile","err","journeyData","installedJourneys","map","x","unresolvedJourneys","resolvedJourneys","Object","keys","then","catch","importError","importFirstJourneyFromFile","treeId","hasOwnProperty","call","importJourneysFromFile","importJourneysFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","allJourneysData","readFileSync","it","getJourneyClassificationMd","getOneLineDescription","treeObj","description","getOneLineDescriptionMd","describeTreeDescendents","descendents","depth","values","indent","Array","fill","descendent","describeTreeDescendentsMd","markdown","describeJourney","resolveTreeExport","_journeyData$meta","_journeyData$tree$uiC","_journeyData$themes","allNodes","nodes","innerNodes","nodeTypeMap","nodeData","_type","getAmVersion","originAmVersion","setAmVersion","entries","nodeType","count","String","getNodeClassification","nodeObj","themes","themeData","scripts","scriptData","emailTemplates","templateData","socialIdentityProviders","socialIdpData","saml2Entities","entityProviderData","circlesOfTrust","cotData","describeJourneyMd","_journeyData$meta2","_journeyData$tree$uiC2","_journeyData$themes2","getNodeClassificationMd","getTableHeaderMd","getTableRowMd"],"sources":["ops/JourneyOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport type {\n NodeSkeleton,\n TreeSkeleton,\n} from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport type {\n JourneyClassificationType,\n MultiTreeExportInterface,\n SingleTreeExportInterface,\n TreeDependencyMapInterface,\n TreeExportOptions,\n TreeExportResolverInterface,\n TreeImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/OpsTypes';\nimport {\n printMessage,\n createProgressBar,\n updateProgressBar,\n stopProgressBar,\n showSpinner,\n succeedSpinner,\n failSpinner,\n createTable,\n debugMessage,\n} from '../utils/Console';\nimport * as CirclesOfTrust from './CirclesOfTrustOps';\nimport * as EmailTemplate from './EmailTemplateOps';\nimport * as Idp from './IdpOps';\nimport * as Node from './NodeOps';\nimport * as Saml2 from './Saml2Ops';\nimport * as Script from './ScriptOps';\nimport * as Theme from './ThemeOps';\nimport wordwrap from './utils/Wordwrap';\nimport { cloneDeep } from './utils/OpsUtils';\n\nconst { getTypedFilename, saveJsonToFile, getRealmString } = frodo.utils.impex;\nconst {\n getJourneys,\n exportJourney,\n createMultiTreeExportTemplate,\n resolveDependencies,\n importAllJourneys,\n importJourney,\n getTreeDescendents,\n getNodeRef,\n onlineTreeExportResolver,\n} = frodo.authn.journey;\n\n/**\n * List all the journeys/trees\n * @param {boolean} long Long version, all the fields\n * @param {boolean} analyze Analyze journeys/trees for custom nodes (expensive)\n * @returns {Promise<TreeSkeleton[]>} a promise that resolves to an array journey objects\n */\nexport async function listJourneys(\n long = false,\n analyze = false\n): Promise<TreeSkeleton[]> {\n let journeys = [];\n try {\n journeys = await getJourneys();\n if (!long && !analyze) {\n for (const journeyStub of journeys) {\n printMessage(`${journeyStub['_id']}`, 'data');\n }\n } else {\n if (!analyze) {\n const table = createTable(['Name', 'Status', 'Tags']);\n for (const journeyStub of journeys) {\n table.push([\n `${journeyStub._id}`,\n journeyStub.enabled === false\n ? 'disabled'['brightRed']\n : 'enabled'['brightGreen'],\n journeyStub.uiConfig?.categories\n ? wordwrap(\n JSON.parse(journeyStub.uiConfig.categories).join(', '),\n 60\n )\n : '',\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n showSpinner('Retrieving details of all journeys...');\n const exportPromises = [];\n try {\n for (const journeyStub of journeys) {\n exportPromises.push(\n exportJourney(journeyStub['_id'], {\n useStringArrays: false,\n deps: false,\n })\n );\n }\n const journeyExports = await Promise.all(exportPromises);\n succeedSpinner('Retrieved details of all journeys.');\n const table = createTable([\n 'Name',\n 'Status',\n 'Classification',\n 'Tags',\n ]);\n for (const journeyExport of journeyExports) {\n table.push([\n `${journeyExport.tree._id}`,\n journeyExport.tree.enabled === false\n ? 'disabled'['brightRed']\n : 'enabled'['brightGreen'],\n getJourneyClassification(journeyExport).join(', '),\n journeyExport.tree.uiConfig?.categories\n ? wordwrap(\n JSON.parse(journeyExport.tree.uiConfig.categories).join(\n ', '\n ),\n 60\n )\n : '',\n ]);\n }\n printMessage(table.toString(), 'data');\n } catch (error) {\n failSpinner('Error retrieving details of all journeys.');\n printMessage(error.response.data, 'error');\n }\n }\n }\n } catch (error) {\n printMessage(error.response?.data, 'error');\n }\n return journeys;\n}\n\n/**\n * Export journey by id/name to file\n * @param {string} journeyId journey id/name\n * @param {string} file optional export file name\n * @param {TreeExportOptions} options export options\n */\nexport async function exportJourneyToFile(\n journeyId: string,\n file: string,\n options: TreeExportOptions\n): Promise<void> {\n debugMessage(`exportJourneyToFile: start`);\n const verbose = state.getDebug();\n if (!file) {\n file = getTypedFilename(journeyId, 'journey');\n }\n if (state.getDirectory()) {\n const dir = state.getDirectory().replace(/\\/$/, '');\n debugMessage(`exportJourneyToFile: directory='${dir}'`);\n file = `${dir}/${file}`;\n // create directory if it doesn't exist\n if (!fs.existsSync(dir)) {\n debugMessage(`exportJourneyToFile: creating directory '${dir}'`);\n fs.mkdirSync(dir, { recursive: true });\n }\n }\n if (!verbose) showSpinner(`${journeyId}`);\n try {\n const fileData: SingleTreeExportInterface = await exportJourney(\n journeyId,\n options\n );\n if (verbose) showSpinner(`${journeyId}`);\n saveJsonToFile(fileData, file);\n succeedSpinner(\n `Exported ${journeyId['brightCyan']} to ${file['brightCyan']}.`\n );\n } catch (error) {\n if (verbose) showSpinner(`${journeyId}`);\n failSpinner(`Error exporting journey ${journeyId}: ${error}`);\n }\n}\n\n/**\n * Export all journeys to file\n * @param {string} file optional export file name\n * @param {TreeExportOptions} options export options\n */\nexport async function exportJourneysToFile(\n file: string,\n options: TreeExportOptions = {\n deps: false,\n useStringArrays: false,\n }\n): Promise<void> {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`all${getRealmString()}Journeys`, 'journeys');\n }\n const trees = await getJourneys();\n const fileData: MultiTreeExportInterface = createMultiTreeExportTemplate();\n createProgressBar(trees.length, 'Exporting journeys...');\n for (const tree of trees) {\n updateProgressBar(`${tree._id}`);\n try {\n const exportData = await exportJourney(tree._id, options);\n delete exportData.meta;\n fileData.trees[tree._id] = exportData;\n } catch (error) {\n printMessage(`Error exporting journey ${tree._id}: ${error}`, 'error');\n }\n }\n saveJsonToFile(fileData, fileName);\n stopProgressBar(`Exported to ${fileName}`);\n}\n\n/**\n * Export all journeys to separate files\n * @param {TreeExportOptions} options export options\n */\nexport async function exportJourneysToFiles(\n options: TreeExportOptions\n): Promise<void> {\n const trees = await getJourneys();\n createProgressBar(trees.length, 'Exporting journeys...');\n for (const tree of trees) {\n updateProgressBar(`${tree._id}`);\n const fileName = getTypedFilename(`${tree._id}`, 'journey');\n try {\n const exportData: SingleTreeExportInterface = await exportJourney(\n tree._id,\n options\n );\n saveJsonToFile(exportData, fileName);\n } catch (error) {\n // do we need to report status here?\n }\n }\n stopProgressBar('Done');\n}\n\n/**\n * Import a journey from file\n * @param {string} journeyId journey id/name\n * @param {string} file import file name\n * @param {TreeImportOptions} options import options\n */\nexport async function importJourneyFromFile(\n journeyId: string,\n file: string,\n options: TreeImportOptions\n) {\n const verbose = state.getDebug();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let journeyData = JSON.parse(data);\n // check if this is a file with multiple trees and get journey by id\n if (journeyData.trees && journeyData.trees[journeyId]) {\n journeyData = journeyData.trees[journeyId];\n } else if (journeyData.trees) {\n journeyData = null;\n }\n\n // if a journeyId was specified, only import the matching journey\n if (journeyData && journeyId === journeyData.tree._id) {\n // attempt dependency resolution for single tree import\n const installedJourneys = (await getJourneys()).map((x) => x._id);\n const unresolvedJourneys = {};\n const resolvedJourneys = [];\n showSpinner('Resolving dependencies');\n await resolveDependencies(\n installedJourneys,\n { [journeyId]: journeyData },\n unresolvedJourneys,\n resolvedJourneys\n );\n if (Object.keys(unresolvedJourneys).length === 0) {\n succeedSpinner(`Resolved all dependencies.`);\n\n if (!verbose) showSpinner(`Importing ${journeyId}...`);\n importJourney(journeyData, options)\n .then(() => {\n if (verbose) showSpinner(`Importing ${journeyId}...`);\n succeedSpinner(`Imported ${journeyId}.`);\n })\n .catch((importError) => {\n if (verbose) showSpinner(`Importing ${journeyId}...`);\n failSpinner(`${importError}`);\n });\n } else {\n failSpinner(`Unresolved dependencies:`);\n for (const journey of Object.keys(unresolvedJourneys)) {\n printMessage(\n ` ${journey} requires ${unresolvedJourneys[journey]}`,\n 'error'\n );\n }\n }\n // end dependency resolution for single tree import\n } else {\n showSpinner(`Importing ${journeyId}...`);\n failSpinner(`${journeyId} not found!`);\n }\n });\n}\n\n/**\n * Import first journey from file\n * @param {string} file import file name\n * @param {TreeImportOptions} options import options\n */\nexport async function importFirstJourneyFromFile(\n file: string,\n options: TreeImportOptions\n) {\n const verbose = state.getDebug();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let journeyData = cloneDeep(JSON.parse(data));\n let journeyId = null;\n // single tree\n if (journeyData.tree) {\n journeyId = cloneDeep(journeyData.tree._id);\n }\n // multiple trees, so get the first tree\n else if (journeyData.trees) {\n for (const treeId in journeyData.trees) {\n if (Object.hasOwnProperty.call(journeyData.trees, treeId)) {\n journeyId = treeId;\n journeyData = journeyData.trees[treeId];\n break;\n }\n }\n }\n\n // if a journeyId was specified, only import the matching journey\n if (journeyData && journeyId) {\n // attempt dependency resolution for single tree import\n const installedJourneys = (await getJourneys()).map((x) => x._id);\n const unresolvedJourneys = {};\n const resolvedJourneys = [];\n showSpinner('Resolving dependencies');\n await resolveDependencies(\n installedJourneys,\n { [journeyId]: journeyData },\n unresolvedJourneys,\n resolvedJourneys\n );\n if (Object.keys(unresolvedJourneys).length === 0) {\n succeedSpinner(`Resolved all dependencies.`);\n\n if (!verbose) showSpinner(`Importing ${journeyId}...`);\n importJourney(journeyData, options)\n .then(() => {\n if (verbose) showSpinner(`Importing ${journeyId}...`);\n succeedSpinner(`Imported ${journeyId}.`);\n })\n .catch((importError) => {\n if (verbose) showSpinner(`Importing ${journeyId}...`);\n failSpinner(`${importError}`);\n });\n } else {\n failSpinner(`Unresolved dependencies:`);\n for (const journey of Object.keys(unresolvedJourneys)) {\n printMessage(\n ` ${journey} requires ${unresolvedJourneys[journey]}`,\n 'error'\n );\n }\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No journeys found!`);\n }\n // end dependency resolution for single tree import\n });\n}\n\n/**\n * Import all journeys from file\n * @param {string} file import file name\n * @param {TreeImportOptions} options import options\n */\nexport async function importJourneysFromFile(\n file: string,\n options: TreeImportOptions\n) {\n fs.readFile(file, 'utf8', (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n importAllJourneys(fileData.trees, options);\n });\n}\n\n/**\n * Import all journeys from separate files\n * @param {TreeImportOptions} options import options\n */\nexport async function importJourneysFromFiles(options: TreeImportOptions) {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.journey.json')\n );\n const allJourneysData = { trees: {} };\n for (const file of jsonFiles) {\n const journeyData = JSON.parse(fs.readFileSync(file, 'utf8'));\n allJourneysData.trees[journeyData.tree._id] = journeyData;\n }\n importAllJourneys(allJourneysData.trees as MultiTreeExportInterface, options);\n}\n\n/**\n * Get journey classification\n * @param {SingleTreeExportInterface} journey journey export\n * @returns {string[]} Colored string array of classifications\n */\nexport function getJourneyClassification(\n journey: SingleTreeExportInterface\n): JourneyClassificationType[] {\n return getJourneyClassification(journey).map((it) => {\n switch (it) {\n case 'standard':\n return it['brightGreen'];\n\n case 'cloud':\n return it['brightMagenta'];\n\n case 'custom':\n return it['brightRed'];\n\n case 'premium':\n return it['brightYellow'];\n }\n });\n}\n\n/**\n * Get journey classification in markdown\n * @param {SingleTreeExportInterface} journey journey export\n * @returns {string[]} Colored string array of classifications\n */\nexport function getJourneyClassificationMd(\n journey: SingleTreeExportInterface\n): string[] {\n return getJourneyClassification(journey).map((it) => {\n switch (it) {\n case 'standard':\n return `:green_circle: \\`${it}\\``;\n\n case 'cloud':\n return `:purple_circle: \\`${it}\\``;\n\n case 'custom':\n return `:red_circle: \\`${it}\\``;\n\n case 'premium':\n return `:yellow_circle: \\`${it}\\``;\n }\n });\n}\n\n/**\n * Get a one-line description of the tree object\n * @param {TreeSkeleton} treeObj circle of trust object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(treeObj: TreeSkeleton): string {\n const description = `[${treeObj._id['brightCyan']}]`;\n return description;\n}\n\n/**\n * Get a one-line description of the tree object in markdown\n * @param {TreeSkeleton} treeObj circle of trust object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescriptionMd(treeObj: TreeSkeleton): string {\n const description = `${treeObj._id}`;\n return description;\n}\n\n/**\n * Helper function to render a nested list of dependent trees\n * @param {TreeDependencyMapInterface} descendents tree dependency map\n * @param {number} depth level of nesting\n */\nfunction describeTreeDescendents(\n descendents: TreeDependencyMapInterface,\n depth = 0\n) {\n if (depth || Object.values(descendents)[0].length) {\n // heading\n if (depth === 0) {\n printMessage(\n `\\nInner Tree Dependencies (${Object.values(descendents)[0].length}):`,\n 'data'\n );\n }\n const indent = Array(depth * 2)\n .fill(' ')\n .join('');\n const [tree] = Object.keys(descendents);\n printMessage(`${indent}- ${tree['brightCyan']}`, 'data');\n for (const descendent of descendents[tree]) {\n describeTreeDescendents(descendent, depth + 1);\n }\n }\n}\n\n/**\n * Helper function to render a nested list of dependent trees in markdown\n * @param {TreeDependencyMapInterface} descendents tree dependency map\n * @param {number} depth level of nesting\n */\nfunction describeTreeDescendentsMd(\n descendents: TreeDependencyMapInterface,\n depth = 0\n): string {\n let markdown = '';\n if (depth || Object.values(descendents)[0].length) {\n // heading\n if (depth === 0) {\n markdown += `## Inner Tree Dependencies (${\n Object.values(descendents)[0].length\n })\\n`;\n }\n const indent = Array(depth * 2)\n .fill(' ')\n .join('');\n const [tree] = Object.keys(descendents);\n markdown += `${indent}- ${tree}\\n`;\n for (const descendent of descendents[tree]) {\n markdown += describeTreeDescendentsMd(descendent, depth + 1);\n }\n return markdown;\n }\n return markdown;\n}\n\n/**\n * Describe a journey:\n * - Properties, tags, description, name, metadata\n * - Inner tree dependency tree\n * - Node type summary\n * - Nodes\n * - Themes\n * - Scripts\n * - Email templates\n * - Social identity providers\n * - SAML2 entity providers\n * - SAML2 circles of trust\n * @param {SingleTreeExportInterface} journeyData journey export object\n * @param {TreeExportResolverInterface} resolveTreeExport tree export resolver callback function\n */\nexport async function describeJourney(\n journeyData: SingleTreeExportInterface,\n resolveTreeExport: TreeExportResolverInterface = onlineTreeExportResolver\n): Promise<void> {\n const allNodes = {\n ...journeyData.nodes,\n ...journeyData.innerNodes,\n };\n const nodeTypeMap = {};\n\n for (const nodeData of Object.values(allNodes)) {\n if (nodeTypeMap[nodeData._type._id]) {\n nodeTypeMap[nodeData._type._id] += 1;\n } else {\n nodeTypeMap[nodeData._type._id] = 1;\n }\n }\n\n // initialize AM version from file\n if (!state.getAmVersion() && journeyData.meta?.originAmVersion) {\n state.setAmVersion(journeyData.meta.originAmVersion);\n }\n\n // Journey Name\n printMessage(`${getOneLineDescription(journeyData.tree)}`, 'data');\n printMessage(Array(`[${journeyData.tree._id}]`['length']).fill('=').join(''));\n\n // Description\n if (journeyData.tree.description) {\n printMessage(`\\n${journeyData.tree.description}`, 'data');\n }\n\n // Status\n printMessage(\n `\\nStatus\\n${\n journeyData.tree.enabled === false\n ? 'disabled'['brightRed']\n : 'enabled'['brightGreen']\n }`\n );\n\n // Classification\n if (state.getAmVersion()) {\n printMessage(\n `\\nClassification\\n${getJourneyClassification(journeyData).join(', ')}`,\n 'data'\n );\n }\n\n // Categories/Tags\n if (\n journeyData.tree.uiConfig?.categories &&\n journeyData.tree.uiConfig.categories != '[]'\n ) {\n printMessage('\\nCategories/Tags', 'data');\n printMessage(\n `${JSON.parse(journeyData.tree.uiConfig.categories).join(', ')}`,\n 'data'\n );\n }\n\n // Dependency Tree\n const descendents = await getTreeDescendents(journeyData, resolveTreeExport);\n describeTreeDescendents(descendents);\n\n // Node Types\n if (Object.entries(nodeTypeMap).length) {\n printMessage(\n `\\nNode Types (${Object.entries(nodeTypeMap).length}):`,\n 'data'\n );\n for (const [nodeType, count] of Object.entries(nodeTypeMap)) {\n printMessage(\n `- ${String(count)} [${\n nodeType['brightCyan']\n }] (${Node.getNodeClassification(nodeType).join(', ')})`,\n 'data'\n );\n }\n }\n\n // Nodes\n if (Object.entries(allNodes).length) {\n printMessage(`\\nNodes (${Object.entries(allNodes).length}):`, 'data');\n for (const nodeObj of Object.values<NodeSkeleton>(allNodes)) {\n printMessage(\n `- ${Node.getOneLineDescription(\n nodeObj,\n getNodeRef(nodeObj, journeyData)\n )}`,\n 'data'\n );\n }\n }\n\n // Themes\n if (journeyData.themes?.length) {\n printMessage(`\\nThemes (${journeyData.themes.length}):`, 'data');\n for (const themeData of journeyData.themes) {\n printMessage(`- ${Theme.getOneLineDescription(themeData)}`, 'data');\n }\n }\n\n // Scripts\n if (Object.entries(journeyData.scripts).length) {\n printMessage(\n `\\nScripts (${Object.entries(journeyData.scripts).length}):`,\n 'data'\n );\n for (const scriptData of Object.values(journeyData.scripts)) {\n printMessage(`- ${Script.getOneLineDescription(scriptData)}`, 'data');\n }\n }\n\n // Email Templates\n if (Object.entries(journeyData.emailTemplates).length) {\n printMessage(\n `\\nEmail Templates (${\n Object.entries(journeyData.emailTemplates).length\n }):`,\n 'data'\n );\n for (const templateData of Object.values(journeyData.emailTemplates)) {\n printMessage(\n `- ${EmailTemplate.getOneLineDescription(templateData)}`,\n 'data'\n );\n }\n }\n\n // Social Identity Providers\n if (Object.entries(journeyData.socialIdentityProviders).length) {\n printMessage(\n `\\nSocial Identity Providers (${\n Object.entries(journeyData.socialIdentityProviders).length\n }):`,\n 'data'\n );\n for (const socialIdpData of Object.values(\n journeyData.socialIdentityProviders\n )) {\n printMessage(`- ${Idp.getOneLineDescription(socialIdpData)}`, 'data');\n }\n }\n\n // SAML2 Entity Providers\n if (Object.entries(journeyData.saml2Entities).length) {\n printMessage(\n `\\nSAML2 Entity Providers (${\n Object.entries(journeyData.saml2Entities).length\n }):`,\n 'data'\n );\n for (const entityProviderData of Object.values(journeyData.saml2Entities)) {\n printMessage(\n `- ${Saml2.getOneLineDescription(entityProviderData)}`,\n 'data'\n );\n }\n }\n\n // SAML2 Circles Of Trust\n if (Object.entries(journeyData.circlesOfTrust).length) {\n printMessage(\n `\\nSAML2 Circles Of Trust (${\n Object.entries(journeyData.circlesOfTrust).length\n }):`,\n 'data'\n );\n for (const cotData of Object.values(journeyData.circlesOfTrust)) {\n printMessage(\n `- ${CirclesOfTrust.getOneLineDescription(cotData)}`,\n 'data'\n );\n }\n }\n}\n\n/**\n * Describe a journey in markdown:\n * - Properties, tags, description, name, metadata\n * - Inner tree dependency tree\n * - Node type summary\n * - Nodes\n * - Themes\n * - Scripts\n * - Email templates\n * - Social identity providers\n * - SAML2 entity providers\n * - SAML2 circles of trust\n * @param {SingleTreeExportInterface} journeyData journey export object\n * @param {TreeExportResolverInterface} resolveTreeExport tree export resolver callback function\n */\nexport async function describeJourneyMd(\n journeyData: SingleTreeExportInterface,\n resolveTreeExport: TreeExportResolverInterface = onlineTreeExportResolver\n) {\n const allNodes = {\n ...journeyData.nodes,\n ...journeyData.innerNodes,\n };\n const nodeTypeMap = {};\n\n for (const nodeData of Object.values(allNodes)) {\n if (nodeTypeMap[nodeData._type._id]) {\n nodeTypeMap[nodeData._type._id] += 1;\n } else {\n nodeTypeMap[nodeData._type._id] = 1;\n }\n }\n\n // initialize AM version from file\n if (!state.getAmVersion() && journeyData.meta?.originAmVersion) {\n state.setAmVersion(journeyData.meta.originAmVersion);\n }\n\n // Journey Name\n printMessage(\n `# ${getOneLineDescriptionMd(journeyData.tree)} - ${\n journeyData.tree.enabled === false\n ? ':o: `disabled`'\n : ':white_check_mark: `enabled`'\n }, ${getJourneyClassificationMd(journeyData).join(', ')}`,\n 'data'\n );\n\n // Categories/Tags\n if (\n journeyData.tree.uiConfig?.categories &&\n journeyData.tree.uiConfig.categories != '[]'\n ) {\n printMessage(\n `\\`${JSON.parse(journeyData.tree.uiConfig.categories).join('`, `')}\\``,\n 'data'\n );\n }\n\n // Description\n if (journeyData.tree.description) {\n printMessage(`\\n${journeyData.tree.description}`, 'data');\n }\n\n // Journey image\n printMessage(`\\n[![](./${journeyData.tree._id}.png)]()\\n`, 'data');\n\n // Dependency Tree\n const descendents = await getTreeDescendents(journeyData, resolveTreeExport);\n printMessage(describeTreeDescendentsMd(descendents), 'data');\n\n // Node Types\n if (Object.entries(nodeTypeMap).length) {\n printMessage(\n `## Node Types (${Object.entries(nodeTypeMap).length})`,\n 'data'\n );\n printMessage('| Count | Type | Classification |', 'data');\n printMessage('| -----:| ---- | -------------- |', 'data');\n for (const [nodeType, count] of Object.entries(nodeTypeMap)) {\n printMessage(\n `| ${String(count)} | ${nodeType} | ${Node.getNodeClassificationMd(\n nodeType\n ).join('<br>')} |`,\n 'data'\n );\n }\n }\n\n // Nodes\n if (Object.entries(allNodes).length) {\n printMessage(`## Nodes (${Object.entries(allNodes).length})`, 'data');\n printMessage(Node.getTableHeaderMd(), 'data');\n for (const nodeObj of Object.values<NodeSkeleton>(allNodes)) {\n printMessage(\n `${Node.getTableRowMd(nodeObj, getNodeRef(nodeObj, journeyData))}`,\n 'data'\n );\n }\n }\n\n // Themes\n if (journeyData.themes?.length) {\n printMessage(`## Themes (${journeyData.themes.length})`, 'data');\n printMessage(Theme.getTableHeaderMd(), 'data');\n for (const themeData of journeyData.themes) {\n printMessage(`${Theme.getTableRowMd(themeData)}`, 'data');\n }\n }\n\n // Scripts\n if (Object.entries(journeyData.scripts).length) {\n printMessage(\n `## Scripts (${Object.entries(journeyData.scripts).length})`,\n 'data'\n );\n printMessage(Script.getTableHeaderMd(), 'data');\n for (const scriptData of Object.values(journeyData.scripts)) {\n printMessage(`${Script.getTableRowMd(scriptData)}`, 'data');\n }\n }\n\n // Email Templates\n if (Object.entries(journeyData.emailTemplates).length) {\n printMessage(\n `## Email Templates (${\n Object.entries(journeyData.emailTemplates).length\n })`,\n 'data'\n );\n printMessage(EmailTemplate.getTableHeaderMd(), 'data');\n for (const templateData of Object.values(journeyData.emailTemplates)) {\n printMessage(`${EmailTemplate.getTableRowMd(templateData)}`, 'data');\n }\n }\n\n // Social Identity Providers\n if (Object.entries(journeyData.socialIdentityProviders).length) {\n printMessage(\n `## Social Identity Providers (${\n Object.entries(journeyData.socialIdentityProviders).length\n })`,\n 'data'\n );\n printMessage(Idp.getTableHeaderMd(), 'data');\n for (const socialIdpData of Object.values(\n journeyData.socialIdentityProviders\n )) {\n printMessage(`${Idp.getTableRowMd(socialIdpData)}`, 'data');\n }\n }\n\n // SAML2 Entity Providers\n if (Object.entries(journeyData.saml2Entities).length) {\n printMessage(\n `## SAML2 Entity Providers (${\n Object.entries(journeyData.saml2Entities).length\n })`,\n 'data'\n );\n printMessage(Saml2.getTableHeaderMd(), 'data');\n for (const entityProviderData of Object.values(journeyData.saml2Entities)) {\n printMessage(`${Saml2.getTableRowMd(entityProviderData)}`, 'data');\n }\n }\n\n // SAML2 Circles Of Trust\n if (Object.entries(journeyData.circlesOfTrust).length) {\n printMessage(\n `## SAML2 Circles Of Trust (${\n Object.entries(journeyData.circlesOfTrust).length\n })`,\n 'data'\n );\n printMessage(CirclesOfTrust.getTableHeaderMd(), 'data');\n for (const cotData of Object.values(journeyData.circlesOfTrust)) {\n printMessage(`${CirclesOfTrust.getTableRowMd(cotData)}`, 'data');\n }\n }\n}\n"],"mappings":"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"}
package/esm/ops/LogOps.js CHANGED
@@ -1,9 +1,19 @@
1
1
  import { frodo, state } from '@rockcarver/frodo-lib';
2
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;
3
13
  export async function listLogApiKeys(long = false) {
4
14
  let outcome = false;
5
15
  try {
6
- const keys = await frodo.cloud.log.getLogApiKeys();
16
+ const keys = await getLogApiKeys();
7
17
  if (long) {
8
18
  const table = createTable(['Key Id', 'Name', 'Created at']);
9
19
  for (const key of keys) {
@@ -25,7 +35,7 @@ export async function provisionCreds() {
25
35
  try {
26
36
  let keyName = `frodo-${state.getUsername()}`;
27
37
  try {
28
- const keys = await frodo.cloud.log.getLogApiKeys();
38
+ const keys = await getLogApiKeys();
29
39
  for (const key of keys) {
30
40
  if (key.name === keyName) {
31
41
  // append current timestamp to name if the named key already exists
@@ -33,7 +43,7 @@ export async function provisionCreds() {
33
43
  }
34
44
  }
35
45
  try {
36
- const resp = await frodo.cloud.log.createLogApiKey(keyName);
46
+ const resp = await createLogApiKey(keyName);
37
47
  // if (resp.name !== keyName) {
38
48
  // printMessage(
39
49
  // `create keys ERROR: could not create log API key ${keyName} [new key name: ${resp.name}]`,
@@ -60,7 +70,7 @@ export async function deleteLogApiKey(keyId) {
60
70
  debugMessage(`cli.LogOps.deleteKey: start`);
61
71
  showSpinner(`Deleting ${keyId}...`);
62
72
  try {
63
- await frodo.cloud.log.deleteLogApiKey(keyId);
73
+ await _deleteLogApiKey(keyId);
64
74
  succeedSpinner(`Deleted ${keyId}.`);
65
75
  outcome = true;
66
76
  } catch (error) {
@@ -74,7 +84,7 @@ export async function deleteLogApiKeys() {
74
84
  debugMessage(`cli.LogOps.deleteKeys: start`);
75
85
  showSpinner(`Deleting all keys...`);
76
86
  try {
77
- const response = await frodo.cloud.log.deleteLogApiKeys();
87
+ const response = await _deleteLogApiKeys();
78
88
  succeedSpinner(`Deleted ${response.length} keys.`);
79
89
  outcome = true;
80
90
  } catch (error) {
@@ -85,13 +95,13 @@ export async function deleteLogApiKeys() {
85
95
  }
86
96
  export async function tailLogs(source, levels, txid, cookie, nf) {
87
97
  try {
88
- const logsObject = await frodo.cloud.log.tail(source, cookie);
98
+ const logsObject = await tail(source, cookie);
89
99
  let filteredLogs = [];
90
- const noiseFilter = nf == null ? frodo.cloud.log.getDefaultNoiseFilter() : nf;
100
+ const noiseFilter = nf == null ? getDefaultNoiseFilter() : nf;
91
101
  if (Array.isArray(logsObject.result)) {
92
102
  filteredLogs = logsObject.result.filter(el => {
93
103
  var _transactionId;
94
- 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)));
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)));
95
105
  });
96
106
  }
97
107
  filteredLogs.forEach(e => {
@@ -108,13 +118,13 @@ export async function tailLogs(source, levels, txid, cookie, nf) {
108
118
  }
109
119
  export async function fetchLogs(source, startTs, endTs, levels, txid, ffString, cookie, nf) {
110
120
  try {
111
- const logsObject = await frodo.cloud.log.fetch(source, startTs, endTs, cookie);
121
+ const logsObject = await fetch(source, startTs, endTs, cookie);
112
122
  let filteredLogs = [];
113
- const noiseFilter = nf == null ? frodo.cloud.log.getDefaultNoiseFilter() : nf;
123
+ const noiseFilter = nf == null ? getDefaultNoiseFilter() : nf;
114
124
  if (Array.isArray(logsObject.result)) {
115
125
  filteredLogs = logsObject.result.filter(el => {
116
126
  var _transactionId2;
117
- 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)));
118
128
  });
119
129
  }
120
130
  filteredLogs.forEach(e => {
@@ -1 +1 @@
1
- {"version":3,"file":"LogOps.js","names":["frodo","state","createTable","debugMessage","failSpinner","printMessage","showSpinner","succeedSpinner","verboseMessage","listLogApiKeys","long","outcome","keys","cloud","log","getLogApiKeys","table","key","push","api_key_id","name","created_at","toString","error","provisionCreds","keyName","getUsername","Date","toISOString","resp","createLogApiKey","getHost","e","deleteLogApiKey","keyId","message","deleteLogApiKeys","response","length","tailLogs","source","levels","txid","cookie","nf","logsObject","tail","filteredLogs","noiseFilter","getDefaultNoiseFilter","Array","isArray","result","filter","el","_transactionId","includes","payload","logger","type","resolvePayloadLevel","transactionId","forEach","JSON","stringify","setTimeout","pagedResultsCookie","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 {\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n succeedSpinner,\n verboseMessage,\n} from '../utils/Console';\n\nexport async function listLogApiKeys(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const keys = await frodo.cloud.log.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 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.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 frodo.cloud.log.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 frodo.cloud.log.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 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 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":["ops/LogOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport type { LogEventPayloadSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\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()}\``;
@@ -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":["ops/NodeOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport type {\n InnerNodeRefSkeletonInterface,\n NodeRefSkeletonInterface,\n NodeSkeleton,\n} from '@rockcarver/frodo-lib/types/api/ApiTypes';\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":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAO7C,MAAM;EAAEC,qBAAqB,EAAEC;AAAuB,CAAC,GAAGF,KAAK,CAACG,KAAK,CAACC,IAAI;;AAE1E;AACA;AACA;AACA;AACA;AACA,OAAO,SAASH,qBAAqBA,CAACI,QAAgB,EAAY;EAChE,OAAOH,sBAAsB,CAACG,QAAQ,CAAC,CAACC,GAAG,CAAEC,EAAE,IAAK;IAClD,QAAQA,EAAE;MACR,KAAK,UAAU;QACb,OAAOA,EAAE,CAACC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;MAErC,KAAK,OAAO;QACV,OAAOD,EAAE,CAACC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC;MAEvC,KAAK,QAAQ;QACX,OAAOD,EAAE,CAACC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;MAEnC,KAAK,SAAS;QACZ,OAAOD,EAAE,CAACC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC;IACxC;EACF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAACJ,QAAgB,EAAY;EAClE,OAAOH,sBAAsB,CAACG,QAAQ,CAAC,CAACC,GAAG,CAAEC,EAAE,IAAK;IAClD,QAAQA,EAAE;MACR,KAAK,UAAU;QACb,OAAQ,oBAAmBA,EAAE,CAACC,QAAQ,CAAC,CAAE,IAAG;MAE9C,KAAK,OAAO;QACV,OAAQ,qBAAoBD,EAAE,CAACC,QAAQ,CAAC,CAAE,IAAG;MAE/C,KAAK,QAAQ;QACX,OAAQ,kBAAiBD,EAAE,CAACC,QAAQ,CAAC,CAAE,IAAG;MAE5C,KAAK,SAAS;QACZ,OAAQ,qBAAoBD,EAAE,CAACC,QAAQ,CAAC,CAAE,IAAG;IACjD;EACF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,qBAAqBA,CACnCC,OAAqB,EACrBC,OAAkE,EAC1D;EACR,MAAMC,WAAW,GAAI,IAAGF,OAAO,CAACG,GAAG,CAAC,YAAY,CAAE,MAAKb,qBAAqB,CAC1EU,OAAO,CAACI,KAAK,CAACD,GAChB,CAAC,CAACE,IAAI,CAAC,IAAI,CAAE,KAAIL,OAAO,CAACI,KAAK,CAACD,GAAI,GACjCF,OAAO,GAAG,KAAK,IAAGA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,WAAW,IAAG,EAC1C,EAAC;EACF,OAAOJ,WAAW;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASK,uBAAuBA,CACrCP,OAAqB,EACrBC,OAAkE,EAC1D;EACR,MAAMC,WAAW,GAAI,GAAEF,OAAO,CAACG,GAAI,KAAIL,uBAAuB,CAC5DE,OAAO,CAACI,KAAK,CAACD,GAChB,CAAC,CAACE,IAAI,CAAC,IAAI,CAAE,KAAIL,OAAO,CAACI,KAAK,CAACD,GAAI,GACjCF,OAAO,GAAG,KAAK,IAAGA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,WAAW,IAAG,EAC1C,EAAC;EACF,OAAOJ,WAAW;AACpB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASM,gBAAgBA,CAAA,EAAW;EACzC,IAAIC,QAAQ,GAAG,EAAE;EACjBA,QAAQ,IAAI,iDAAiD;EAC7DA,QAAQ,IAAI,+CAA+C;EAC3D,OAAOA,QAAQ;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAC3BV,OAAqB,EACrBC,OAAkE,EAC1D;EACR,MAAMU,GAAG,GAAI,KAAIV,OAAO,GAAGA,OAAO,CAACK,WAAW,GAAG,EAAG,MAClDN,OAAO,CAACI,KAAK,CAACD,GACf,MAAKL,uBAAuB,CAACE,OAAO,CAACI,KAAK,CAACD,GAAG,CAAC,CAACE,IAAI,CAAC,MAAM,CAAE,QAC5DL,OAAO,CAACG,GACT,MAAK;EACN,OAAOQ,GAAG;AACZ"}
@@ -2,12 +2,25 @@ 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
+ } = frodo.utils.impex;
9
+ const {
10
+ getOAuth2Clients,
11
+ exportOAuth2Client,
12
+ exportOAuth2Clients,
13
+ importOAuth2Client,
14
+ importFirstOAuth2Client,
15
+ importOAuth2Clients
16
+ } = frodo.oauth2oidc.client;
17
+
5
18
  /**
6
19
  * List OAuth2 clients
7
20
  */
8
21
  export async function listOAuth2Clients(long = false) {
9
22
  try {
10
- const clients = await frodo.oauth2oidc.client.getOAuth2Clients();
23
+ const clients = await getOAuth2Clients();
11
24
  clients.sort((a, b) => a._id.localeCompare(b._id));
12
25
  if (long) {
13
26
  const table = createTable(['Client Id', 'Status', 'Client Type', 'Grant Types', 'Scopes', 'Redirect URIs'
@@ -59,11 +72,11 @@ export async function exportOAuth2ClientToFile(clientId, file, options = {
59
72
  debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);
60
73
  showSpinner(`Exporting ${clientId}...`);
61
74
  try {
62
- let fileName = frodo.utils.impex.getTypedFilename(clientId, 'oauth2.app');
75
+ let fileName = getTypedFilename(clientId, 'oauth2.app');
63
76
  if (file) {
64
77
  fileName = file;
65
78
  }
66
- const exportData = await frodo.oauth2oidc.client.exportOAuth2Client(clientId, options);
79
+ const exportData = await exportOAuth2Client(clientId, options);
67
80
  saveJsonToFile(exportData, fileName);
68
81
  succeedSpinner(`Exported ${clientId} to ${fileName}.`);
69
82
  outcome = true;
@@ -88,11 +101,11 @@ export async function exportOAuth2ClientsToFile(file, options = {
88
101
  debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);
89
102
  showSpinner(`Exporting all clients...`);
90
103
  try {
91
- let fileName = frodo.utils.impex.getTypedFilename(`all${frodo.utils.impex.titleCase(frodo.helper.utils.getRealmName(state.getRealm()))}Applications`, 'oauth2.app');
104
+ let fileName = getTypedFilename(`all${titleCase(frodo.helper.utils.getRealmName(state.getRealm()))}Applications`, 'oauth2.app');
92
105
  if (file) {
93
106
  fileName = file;
94
107
  }
95
- const exportData = await frodo.oauth2oidc.client.exportOAuth2Clients(options);
108
+ const exportData = await exportOAuth2Clients(options);
96
109
  saveJsonToFile(exportData, fileName);
97
110
  succeedSpinner(`Exported all clients to ${fileName}.`);
98
111
  outcome = true;
@@ -116,12 +129,12 @@ export async function exportOAuth2ClientsToFiles(options = {
116
129
  debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: begin`);
117
130
  const errors = [];
118
131
  try {
119
- const clients = await frodo.oauth2oidc.client.getOAuth2Clients();
132
+ const clients = await getOAuth2Clients();
120
133
  createProgressBar(clients.length, 'Exporting clients...');
121
134
  for (const client of clients) {
122
- const file = frodo.utils.impex.getTypedFilename(client._id, 'oauth2.app');
135
+ const file = getTypedFilename(client._id, 'oauth2.app');
123
136
  try {
124
- const exportData = await frodo.oauth2oidc.client.exportOAuth2Client(client._id, options);
137
+ const exportData = await exportOAuth2Client(client._id, options);
125
138
  saveJsonToFile(exportData, file);
126
139
  updateProgressBar(`Exported ${client._id}.`);
127
140
  } catch (error) {
@@ -154,7 +167,7 @@ export async function importOAuth2ClientFromFile(clientId, file, options = {
154
167
  try {
155
168
  const data = fs.readFileSync(file, 'utf8');
156
169
  const fileData = JSON.parse(data);
157
- await frodo.oauth2oidc.client.importOAuth2Client(clientId, fileData, options);
170
+ await importOAuth2Client(clientId, fileData, options);
158
171
  outcome = true;
159
172
  succeedSpinner(`Imported ${clientId}.`);
160
173
  } catch (error) {
@@ -180,7 +193,7 @@ export async function importFirstOAuth2ClientFromFile(file, options = {
180
193
  try {
181
194
  const data = fs.readFileSync(file, 'utf8');
182
195
  const fileData = JSON.parse(data);
183
- await frodo.oauth2oidc.client.importFirstOAuth2Client(fileData, options);
196
+ await importFirstOAuth2Client(fileData, options);
184
197
  outcome = true;
185
198
  succeedSpinner(`Imported ${file}.`);
186
199
  } catch (error) {
@@ -206,7 +219,7 @@ export async function importOAuth2ClientsFromFile(file, options = {
206
219
  try {
207
220
  const data = fs.readFileSync(file, 'utf8');
208
221
  const applicationData = JSON.parse(data);
209
- await frodo.oauth2oidc.client.importOAuth2Clients(applicationData, options);
222
+ await importOAuth2Clients(applicationData, options);
210
223
  outcome = true;
211
224
  succeedSpinner(`Imported ${file}.`);
212
225
  } catch (error) {
@@ -238,7 +251,7 @@ export async function importOAuth2ClientsFromFiles(options = {
238
251
  const fileData = JSON.parse(data);
239
252
  const count = Object.keys(fileData.application).length;
240
253
  total += count;
241
- await frodo.oauth2oidc.client.importOAuth2Clients(fileData, options);
254
+ await importOAuth2Clients(fileData, options);
242
255
  updateProgressBar(`Imported ${count} client(s) from ${file}`);
243
256
  } catch (error) {
244
257
  errors.push(error);