@rockcarver/frodo-cli 0.24.6-2 → 1.0.0-1

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 (411) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/esm/app.js +1 -1
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/FrodoCommand.js +1 -1
  5. package/esm/cli/FrodoCommand.js.map +1 -1
  6. package/esm/cli/_template/something-delete.js +1 -1
  7. package/esm/cli/_template/something-delete.js.map +1 -1
  8. package/esm/cli/_template/something-describe.js +1 -1
  9. package/esm/cli/_template/something-describe.js.map +1 -1
  10. package/esm/cli/_template/something-else-delete.js +1 -1
  11. package/esm/cli/_template/something-else-delete.js.map +1 -1
  12. package/esm/cli/_template/something-else-describe.js +1 -1
  13. package/esm/cli/_template/something-else-describe.js.map +1 -1
  14. package/esm/cli/_template/something-else-export.js +1 -1
  15. package/esm/cli/_template/something-else-export.js.map +1 -1
  16. package/esm/cli/_template/something-else-import.js +1 -1
  17. package/esm/cli/_template/something-else-import.js.map +1 -1
  18. package/esm/cli/_template/something-else-list.js +1 -1
  19. package/esm/cli/_template/something-else-list.js.map +1 -1
  20. package/esm/cli/_template/something-else.js +1 -1
  21. package/esm/cli/_template/something-else.js.map +1 -1
  22. package/esm/cli/_template/something-export.js +1 -1
  23. package/esm/cli/_template/something-export.js.map +1 -1
  24. package/esm/cli/_template/something-import.js +1 -1
  25. package/esm/cli/_template/something-import.js.map +1 -1
  26. package/esm/cli/_template/something-list.js +1 -1
  27. package/esm/cli/_template/something-list.js.map +1 -1
  28. package/esm/cli/_template/something-other-delete.js +1 -1
  29. package/esm/cli/_template/something-other-delete.js.map +1 -1
  30. package/esm/cli/_template/something-other-describe.js +1 -1
  31. package/esm/cli/_template/something-other-describe.js.map +1 -1
  32. package/esm/cli/_template/something-other-export.js +1 -1
  33. package/esm/cli/_template/something-other-export.js.map +1 -1
  34. package/esm/cli/_template/something-other-import.js +1 -1
  35. package/esm/cli/_template/something-other-import.js.map +1 -1
  36. package/esm/cli/_template/something-other-list.js +1 -1
  37. package/esm/cli/_template/something-other-list.js.map +1 -1
  38. package/esm/cli/_template/something-other.js +1 -1
  39. package/esm/cli/_template/something-other.js.map +1 -1
  40. package/esm/cli/_template/something.js +1 -1
  41. package/esm/cli/_template/something.js.map +1 -1
  42. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +1 -1
  43. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
  44. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +1 -1
  45. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  46. package/esm/cli/admin/admin-federation-export.js +1 -1
  47. package/esm/cli/admin/admin-federation-export.js.map +1 -1
  48. package/esm/cli/admin/admin-federation-import.js +1 -1
  49. package/esm/cli/admin/admin-federation-import.js.map +1 -1
  50. package/esm/cli/admin/admin-federation-list.js +1 -1
  51. package/esm/cli/admin/admin-federation-list.js.map +1 -1
  52. package/esm/cli/admin/admin-federation.js +1 -1
  53. package/esm/cli/admin/admin-federation.js.map +1 -1
  54. package/esm/cli/admin/admin-get-access-token.js +1 -1
  55. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  56. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +1 -1
  57. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  58. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +1 -1
  59. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  60. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +1 -1
  61. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  62. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +1 -1
  63. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  64. package/esm/cli/admin/admin-list-static-user-mappings.js +1 -1
  65. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  66. package/esm/cli/admin/admin-remove-static-user-mapping.js +1 -1
  67. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  68. package/esm/cli/admin/admin-repair-org-model.js +1 -1
  69. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  70. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +1 -1
  71. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  72. package/esm/cli/admin/admin-show-generic-extension-attributes.js +1 -1
  73. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  74. package/esm/cli/admin/admin.js +1 -1
  75. package/esm/cli/admin/admin.js.map +1 -1
  76. package/esm/cli/agent/agent-delete.js +1 -1
  77. package/esm/cli/agent/agent-delete.js.map +1 -1
  78. package/esm/cli/agent/agent-describe.js +1 -1
  79. package/esm/cli/agent/agent-describe.js.map +1 -1
  80. package/esm/cli/agent/agent-export.js +1 -1
  81. package/esm/cli/agent/agent-export.js.map +1 -1
  82. package/esm/cli/agent/agent-gateway-delete.js +1 -1
  83. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  84. package/esm/cli/agent/agent-gateway-describe.js +1 -1
  85. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  86. package/esm/cli/agent/agent-gateway-export.js +1 -1
  87. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  88. package/esm/cli/agent/agent-gateway-import.js +1 -1
  89. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  90. package/esm/cli/agent/agent-gateway-list.js +1 -1
  91. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  92. package/esm/cli/agent/agent-gateway.js +1 -1
  93. package/esm/cli/agent/agent-gateway.js.map +1 -1
  94. package/esm/cli/agent/agent-import.js +1 -1
  95. package/esm/cli/agent/agent-import.js.map +1 -1
  96. package/esm/cli/agent/agent-java-delete.js +1 -1
  97. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  98. package/esm/cli/agent/agent-java-describe.js +1 -1
  99. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  100. package/esm/cli/agent/agent-java-export.js +1 -1
  101. package/esm/cli/agent/agent-java-export.js.map +1 -1
  102. package/esm/cli/agent/agent-java-import.js +1 -1
  103. package/esm/cli/agent/agent-java-import.js.map +1 -1
  104. package/esm/cli/agent/agent-java-list.js +1 -1
  105. package/esm/cli/agent/agent-java-list.js.map +1 -1
  106. package/esm/cli/agent/agent-java.js +1 -1
  107. package/esm/cli/agent/agent-java.js.map +1 -1
  108. package/esm/cli/agent/agent-list.js +1 -1
  109. package/esm/cli/agent/agent-list.js.map +1 -1
  110. package/esm/cli/agent/agent-web-delete.js +1 -1
  111. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  112. package/esm/cli/agent/agent-web-describe.js +1 -1
  113. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  114. package/esm/cli/agent/agent-web-export.js +1 -1
  115. package/esm/cli/agent/agent-web-export.js.map +1 -1
  116. package/esm/cli/agent/agent-web-import.js +1 -1
  117. package/esm/cli/agent/agent-web-import.js.map +1 -1
  118. package/esm/cli/agent/agent-web-list.js +1 -1
  119. package/esm/cli/agent/agent-web-list.js.map +1 -1
  120. package/esm/cli/agent/agent-web.js +1 -1
  121. package/esm/cli/agent/agent-web.js.map +1 -1
  122. package/esm/cli/agent/agent.js +1 -1
  123. package/esm/cli/agent/agent.js.map +1 -1
  124. package/esm/cli/app/app-delete.js +1 -1
  125. package/esm/cli/app/app-delete.js.map +1 -1
  126. package/esm/cli/app/app-describe.js +1 -1
  127. package/esm/cli/app/app-describe.js.map +1 -1
  128. package/esm/cli/app/app-export.js +1 -1
  129. package/esm/cli/app/app-export.js.map +1 -1
  130. package/esm/cli/app/app-import.js +1 -1
  131. package/esm/cli/app/app-import.js.map +1 -1
  132. package/esm/cli/app/app-list.js +1 -1
  133. package/esm/cli/app/app-list.js.map +1 -1
  134. package/esm/cli/app/app.js +1 -1
  135. package/esm/cli/app/app.js.map +1 -1
  136. package/esm/cli/authz/authz-policy-delete.js +1 -1
  137. package/esm/cli/authz/authz-policy-delete.js.map +1 -1
  138. package/esm/cli/authz/authz-policy-describe.js +1 -1
  139. package/esm/cli/authz/authz-policy-describe.js.map +1 -1
  140. package/esm/cli/authz/authz-policy-export.js +1 -1
  141. package/esm/cli/authz/authz-policy-export.js.map +1 -1
  142. package/esm/cli/authz/authz-policy-import.js +1 -1
  143. package/esm/cli/authz/authz-policy-import.js.map +1 -1
  144. package/esm/cli/authz/authz-policy-list.js +1 -1
  145. package/esm/cli/authz/authz-policy-list.js.map +1 -1
  146. package/esm/cli/authz/authz-policy.js +1 -1
  147. package/esm/cli/authz/authz-policy.js.map +1 -1
  148. package/esm/cli/authz/authz-set-delete.js +1 -1
  149. package/esm/cli/authz/authz-set-delete.js.map +1 -1
  150. package/esm/cli/authz/authz-set-describe.js +1 -1
  151. package/esm/cli/authz/authz-set-describe.js.map +1 -1
  152. package/esm/cli/authz/authz-set-export.js +1 -1
  153. package/esm/cli/authz/authz-set-export.js.map +1 -1
  154. package/esm/cli/authz/authz-set-import.js +1 -1
  155. package/esm/cli/authz/authz-set-import.js.map +1 -1
  156. package/esm/cli/authz/authz-set-list.js +1 -1
  157. package/esm/cli/authz/authz-set-list.js.map +1 -1
  158. package/esm/cli/authz/authz-set.js +1 -1
  159. package/esm/cli/authz/authz-set.js.map +1 -1
  160. package/esm/cli/authz/authz-type-delete.js +1 -1
  161. package/esm/cli/authz/authz-type-delete.js.map +1 -1
  162. package/esm/cli/authz/authz-type-describe.js +1 -1
  163. package/esm/cli/authz/authz-type-describe.js.map +1 -1
  164. package/esm/cli/authz/authz-type-export.js +1 -1
  165. package/esm/cli/authz/authz-type-export.js.map +1 -1
  166. package/esm/cli/authz/authz-type-import.js +1 -1
  167. package/esm/cli/authz/authz-type-import.js.map +1 -1
  168. package/esm/cli/authz/authz-type-list.js +1 -1
  169. package/esm/cli/authz/authz-type-list.js.map +1 -1
  170. package/esm/cli/authz/authz-type.js +1 -1
  171. package/esm/cli/authz/authz-type.js.map +1 -1
  172. package/esm/cli/authz/authz.js +1 -1
  173. package/esm/cli/authz/authz.js.map +1 -1
  174. package/esm/cli/conn/conn-delete.js +1 -1
  175. package/esm/cli/conn/conn-delete.js.map +1 -1
  176. package/esm/cli/conn/conn-describe.js +1 -1
  177. package/esm/cli/conn/conn-describe.js.map +1 -1
  178. package/esm/cli/conn/conn-list.js +1 -1
  179. package/esm/cli/conn/conn-list.js.map +1 -1
  180. package/esm/cli/conn/conn-save.js +1 -1
  181. package/esm/cli/conn/conn-save.js.map +1 -1
  182. package/esm/cli/conn/conn.js +1 -1
  183. package/esm/cli/conn/conn.js.map +1 -1
  184. package/esm/cli/email/email-template-export.js +1 -1
  185. package/esm/cli/email/email-template-export.js.map +1 -1
  186. package/esm/cli/email/email-template-import.js +1 -1
  187. package/esm/cli/email/email-template-import.js.map +1 -1
  188. package/esm/cli/email/email-template-list.js +1 -1
  189. package/esm/cli/email/email-template-list.js.map +1 -1
  190. package/esm/cli/email/email-template.js +1 -1
  191. package/esm/cli/email/email-template.js.map +1 -1
  192. package/esm/cli/email/email.js +1 -1
  193. package/esm/cli/email/email.js.map +1 -1
  194. package/esm/cli/esv/esv-apply.js +1 -1
  195. package/esm/cli/esv/esv-apply.js.map +1 -1
  196. package/esm/cli/esv/esv-secret-create.js +1 -1
  197. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  198. package/esm/cli/esv/esv-secret-delete.js +1 -1
  199. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  200. package/esm/cli/esv/esv-secret-describe.js +1 -1
  201. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  202. package/esm/cli/esv/esv-secret-export.js +1 -1
  203. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  204. package/esm/cli/esv/esv-secret-import.js +1 -1
  205. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  206. package/esm/cli/esv/esv-secret-list.js +1 -1
  207. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  208. package/esm/cli/esv/esv-secret-set.js +1 -1
  209. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  210. package/esm/cli/esv/esv-secret-version-activate.js +1 -1
  211. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  212. package/esm/cli/esv/esv-secret-version-create.js +1 -1
  213. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  214. package/esm/cli/esv/esv-secret-version-deactivate.js +1 -1
  215. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  216. package/esm/cli/esv/esv-secret-version-delete.js +1 -1
  217. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  218. package/esm/cli/esv/esv-secret-version-list.js +1 -1
  219. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  220. package/esm/cli/esv/esv-secret-version.js +1 -1
  221. package/esm/cli/esv/esv-secret-version.js.map +1 -1
  222. package/esm/cli/esv/esv-secret.js +1 -1
  223. package/esm/cli/esv/esv-secret.js.map +1 -1
  224. package/esm/cli/esv/esv-variable-create.js +1 -1
  225. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  226. package/esm/cli/esv/esv-variable-delete.js +1 -1
  227. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  228. package/esm/cli/esv/esv-variable-describe.js +1 -1
  229. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  230. package/esm/cli/esv/esv-variable-export.js +1 -1
  231. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  232. package/esm/cli/esv/esv-variable-import.js +1 -1
  233. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  234. package/esm/cli/esv/esv-variable-list.js +1 -1
  235. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  236. package/esm/cli/esv/esv-variable-set.js +1 -1
  237. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  238. package/esm/cli/esv/esv-variable.js +1 -1
  239. package/esm/cli/esv/esv-variable.js.map +1 -1
  240. package/esm/cli/esv/esv.js +1 -1
  241. package/esm/cli/esv/esv.js.map +1 -1
  242. package/esm/cli/idm/idm-count.js +1 -1
  243. package/esm/cli/idm/idm-count.js.map +1 -1
  244. package/esm/cli/idm/idm-export.js +1 -1
  245. package/esm/cli/idm/idm-export.js.map +1 -1
  246. package/esm/cli/idm/idm-import.js +1 -1
  247. package/esm/cli/idm/idm-import.js.map +1 -1
  248. package/esm/cli/idm/idm-list.js +1 -1
  249. package/esm/cli/idm/idm-list.js.map +1 -1
  250. package/esm/cli/idm/idm.js +1 -1
  251. package/esm/cli/idm/idm.js.map +1 -1
  252. package/esm/cli/idp/idp-export.js +1 -1
  253. package/esm/cli/idp/idp-export.js.map +1 -1
  254. package/esm/cli/idp/idp-import.js +1 -1
  255. package/esm/cli/idp/idp-import.js.map +1 -1
  256. package/esm/cli/idp/idp-list.js +1 -1
  257. package/esm/cli/idp/idp-list.js.map +1 -1
  258. package/esm/cli/idp/idp.js +1 -1
  259. package/esm/cli/idp/idp.js.map +1 -1
  260. package/esm/cli/info/info.js +1 -1
  261. package/esm/cli/info/info.js.map +1 -1
  262. package/esm/cli/journey/journey-delete.js +1 -1
  263. package/esm/cli/journey/journey-delete.js.map +1 -1
  264. package/esm/cli/journey/journey-describe.js +1 -1
  265. package/esm/cli/journey/journey-describe.js.map +1 -1
  266. package/esm/cli/journey/journey-disable.js +1 -1
  267. package/esm/cli/journey/journey-disable.js.map +1 -1
  268. package/esm/cli/journey/journey-enable.js +1 -1
  269. package/esm/cli/journey/journey-enable.js.map +1 -1
  270. package/esm/cli/journey/journey-export.js +1 -1
  271. package/esm/cli/journey/journey-export.js.map +1 -1
  272. package/esm/cli/journey/journey-import.js +1 -1
  273. package/esm/cli/journey/journey-import.js.map +1 -1
  274. package/esm/cli/journey/journey-list.js +1 -1
  275. package/esm/cli/journey/journey-list.js.map +1 -1
  276. package/esm/cli/journey/journey-prune.js +1 -1
  277. package/esm/cli/journey/journey-prune.js.map +1 -1
  278. package/esm/cli/journey/journey.js +1 -1
  279. package/esm/cli/journey/journey.js.map +1 -1
  280. package/esm/cli/logging/logs-fetch.js +1 -1
  281. package/esm/cli/logging/logs-fetch.js.map +1 -1
  282. package/esm/cli/logging/logs-list.js +1 -1
  283. package/esm/cli/logging/logs-list.js.map +1 -1
  284. package/esm/cli/logging/logs-tail.js +1 -1
  285. package/esm/cli/logging/logs-tail.js.map +1 -1
  286. package/esm/cli/logging/logs.js +1 -1
  287. package/esm/cli/logging/logs.js.map +1 -1
  288. package/esm/cli/realm/realm-add-custom-domain.js +1 -1
  289. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  290. package/esm/cli/realm/realm-describe.js +1 -1
  291. package/esm/cli/realm/realm-describe.js.map +1 -1
  292. package/esm/cli/realm/realm-list.js +1 -1
  293. package/esm/cli/realm/realm-list.js.map +1 -1
  294. package/esm/cli/realm/realm-remove-custom-domain.js +1 -1
  295. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  296. package/esm/cli/realm/realm.js +1 -1
  297. package/esm/cli/realm/realm.js.map +1 -1
  298. package/esm/cli/saml/saml-cot-export.js +1 -1
  299. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  300. package/esm/cli/saml/saml-cot-import.js +1 -1
  301. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  302. package/esm/cli/saml/saml-cot-list.js +1 -1
  303. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  304. package/esm/cli/saml/saml-cot.js +1 -1
  305. package/esm/cli/saml/saml-cot.js.map +1 -1
  306. package/esm/cli/saml/saml-delete.js +1 -1
  307. package/esm/cli/saml/saml-delete.js.map +1 -1
  308. package/esm/cli/saml/saml-describe.js +1 -1
  309. package/esm/cli/saml/saml-describe.js.map +1 -1
  310. package/esm/cli/saml/saml-export.js +1 -1
  311. package/esm/cli/saml/saml-export.js.map +1 -1
  312. package/esm/cli/saml/saml-import.js +1 -1
  313. package/esm/cli/saml/saml-import.js.map +1 -1
  314. package/esm/cli/saml/saml-list.js +1 -1
  315. package/esm/cli/saml/saml-list.js.map +1 -1
  316. package/esm/cli/saml/saml-metadata-export.js +1 -1
  317. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  318. package/esm/cli/saml/saml-metadata.js +1 -1
  319. package/esm/cli/saml/saml-metadata.js.map +1 -1
  320. package/esm/cli/saml/saml.js +1 -1
  321. package/esm/cli/saml/saml.js.map +1 -1
  322. package/esm/cli/script/script-delete.js +1 -1
  323. package/esm/cli/script/script-delete.js.map +1 -1
  324. package/esm/cli/script/script-describe.js +1 -1
  325. package/esm/cli/script/script-describe.js.map +1 -1
  326. package/esm/cli/script/script-export.js +1 -1
  327. package/esm/cli/script/script-export.js.map +1 -1
  328. package/esm/cli/script/script-import.js +1 -1
  329. package/esm/cli/script/script-import.js.map +1 -1
  330. package/esm/cli/script/script-list.js +1 -1
  331. package/esm/cli/script/script-list.js.map +1 -1
  332. package/esm/cli/script/script.js +1 -1
  333. package/esm/cli/script/script.js.map +1 -1
  334. package/esm/cli/service/service-delete.js +1 -1
  335. package/esm/cli/service/service-delete.js.map +1 -1
  336. package/esm/cli/service/service-export.js +1 -1
  337. package/esm/cli/service/service-export.js.map +1 -1
  338. package/esm/cli/service/service-import.js +1 -1
  339. package/esm/cli/service/service-import.js.map +1 -1
  340. package/esm/cli/service/service-list.js +1 -1
  341. package/esm/cli/service/service-list.js.map +1 -1
  342. package/esm/cli/service/service.js +1 -1
  343. package/esm/cli/service/service.js.map +1 -1
  344. package/esm/cli/theme/theme-delete.e2e.test_.js.map +1 -1
  345. package/esm/cli/theme/theme-delete.js +1 -1
  346. package/esm/cli/theme/theme-delete.js.map +1 -1
  347. package/esm/cli/theme/theme-export.js +1 -1
  348. package/esm/cli/theme/theme-export.js.map +1 -1
  349. package/esm/cli/theme/theme-import.js +1 -1
  350. package/esm/cli/theme/theme-import.js.map +1 -1
  351. package/esm/cli/theme/theme-list.e2e.test_.js.map +1 -1
  352. package/esm/cli/theme/theme-list.js +1 -1
  353. package/esm/cli/theme/theme-list.js.map +1 -1
  354. package/esm/cli/theme/theme.js +1 -1
  355. package/esm/cli/theme/theme.js.map +1 -1
  356. package/esm/launch.js +1 -1
  357. package/esm/launch.js.map +1 -1
  358. package/esm/loader.js +1 -1
  359. package/esm/loader.js.map +1 -1
  360. package/esm/ops/AdminFederationOps.js +1 -1
  361. package/esm/ops/AdminFederationOps.js.map +1 -1
  362. package/esm/ops/AgentOps.js +1 -1
  363. package/esm/ops/AgentOps.js.map +1 -1
  364. package/esm/ops/CirclesOfTrustOps.js +1 -1
  365. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  366. package/esm/ops/ConnectionProfileOps.js +1 -1
  367. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  368. package/esm/ops/EmailTemplateOps.js +1 -1
  369. package/esm/ops/EmailTemplateOps.js.map +1 -1
  370. package/esm/ops/IdmOps.js +1 -1
  371. package/esm/ops/IdmOps.js.map +1 -1
  372. package/esm/ops/IdpOps.js +1 -1
  373. package/esm/ops/IdpOps.js.map +1 -1
  374. package/esm/ops/JourneyOps.js +1 -1
  375. package/esm/ops/JourneyOps.js.map +1 -1
  376. package/esm/ops/LogOps.js +1 -1
  377. package/esm/ops/LogOps.js.map +1 -1
  378. package/esm/ops/NodeOps.js +1 -1
  379. package/esm/ops/NodeOps.js.map +1 -1
  380. package/esm/ops/OAuth2ClientOps.js +1 -1
  381. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  382. package/esm/ops/PolicyOps.js +1 -1
  383. package/esm/ops/PolicyOps.js.map +1 -1
  384. package/esm/ops/PolicySetOps.js +1 -1
  385. package/esm/ops/PolicySetOps.js.map +1 -1
  386. package/esm/ops/ResourceTypeOps.js +1 -1
  387. package/esm/ops/ResourceTypeOps.js.map +1 -1
  388. package/esm/ops/Saml2Ops.js +1 -1
  389. package/esm/ops/Saml2Ops.js.map +1 -1
  390. package/esm/ops/Saml2Ops.test_.js.map +1 -1
  391. package/esm/ops/ScriptOps.js +1 -1
  392. package/esm/ops/ScriptOps.js.map +1 -1
  393. package/esm/ops/ServiceOps.js +1 -1
  394. package/esm/ops/ServiceOps.js.map +1 -1
  395. package/esm/ops/ThemeOps.js +1 -1
  396. package/esm/ops/ThemeOps.js.map +1 -1
  397. package/esm/ops/utils/OpsUtils.js +1 -1
  398. package/esm/ops/utils/OpsUtils.js.map +1 -1
  399. package/esm/ops/utils/Wordwrap.js +1 -1
  400. package/esm/ops/utils/Wordwrap.js.map +1 -1
  401. package/esm/storage/StaticStorage.js +1 -1
  402. package/esm/storage/StaticStorage.js.map +1 -1
  403. package/esm/utils/Config.js +1 -1
  404. package/esm/utils/Config.js.map +1 -1
  405. package/esm/utils/Console.js +1 -1
  406. package/esm/utils/Console.js.map +1 -1
  407. package/esm/utils/ExportImportUtils.js +1 -1
  408. package/esm/utils/ExportImportUtils.js.map +1 -1
  409. package/esm/utils/Version.js +1 -1
  410. package/esm/utils/Version.js.map +1 -1
  411. package/package.json +22 -23
@@ -1 +1 @@
1
- {"version":3,"file":"IdmOps.js","names":["fs","fse","path","propertiesReader","replaceall","Idm","Utils","ValidationUtils","createProgressIndicator","printMessage","stopProgressIndicator","getTypedFilename","readFiles","unSubstituteEnvParams","validateScriptHooks","getAllConfigEntities","getConfigEntity","putConfigEntity","queryAllManagedObjectsByType","testConnectorServers","warnAboutOfflineConnectorServers","all","offline","filter","status","ok","map","name","length","join","error","message","listAllConfigEntities","configurations","configEntity","_id","getAllConfigEntitiesError","exportConfigEntity","id","file","fileName","writeFile","JSON","stringify","err","exportAllRawConfigEntities","directory","existsSync","mkdirSync","undefined","entityPromises","push","catch","getConfigEntityError","_getConfigEntityError","_getConfigEntityError2","_getConfigEntityError3","_getConfigEntityError4","_getConfigEntityError5","_getConfigEntityError6","_getConfigEntityError7","_getConfigEntityError8","_getConfigEntityError9","response","data","includes","reason","_getConfigEntityError10","results","Promise","item","outputFile","exportAllConfigEntities","entitiesFile","envFile","entriesToExport","readFile","entriesData","parse","idm","envParams","configEntityString","each","key","value","importConfigEntityByIdFromFile","entityId","validate","entityData","readFileSync","resolve","process","cwd","jsObject","isValid","putConfigEntityError","importConfigEntityFromFile","importData","importAllRawConfigEntities","baseDirectory","files","jsonFiles","toLowerCase","endsWith","content","substring","everyScriptValid","isScriptValid","allSettled","errors","result","importAllConfigEntities","entriesToImport","envReader","unsubstituted","countManagedObjects","type","count","resultCount","pagedResultsCookie","totalPagedResultsPolicy","totalPagedResults","remainingPagedResults"],"sources":["ops/IdmOps.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport fs from 'fs';\nimport fse from 'fs-extra';\nimport path from 'path';\nimport propertiesReader from 'properties-reader';\nimport replaceall from 'replaceall';\n\nimport { Idm, Utils, ValidationUtils } from '@rockcarver/frodo-lib';\nimport {\n createProgressIndicator,\n printMessage,\n stopProgressIndicator,\n} from '../utils/Console';\nimport { getTypedFilename } from '../utils/ExportImportUtils';\n\nconst { readFiles, unSubstituteEnvParams } = Utils;\nconst { validateScriptHooks } = ValidationUtils;\nconst {\n getAllConfigEntities,\n getConfigEntity,\n putConfigEntity,\n queryAllManagedObjectsByType,\n testConnectorServers,\n} = Idm;\n\n/**\n * Warn about and list offline remote connector servers\n */\nexport async function warnAboutOfflineConnectorServers() {\n try {\n const all = await testConnectorServers();\n const offline = all\n .filter((status) => !status.ok)\n .map((status) => status.name);\n if (offline.length) {\n printMessage(\n `\\nThe following connector server(s) are offline and their connectors and configuration unavailable:\\n${offline.join(\n '\\n'\n )}`,\n 'warn'\n );\n }\n } catch (error) {\n printMessage(error, 'error');\n printMessage(\n `Error getting offline connector servers: ${error.message}`,\n 'error'\n );\n }\n}\n\n/**\n * List all IDM configuration objects\n */\nexport async function listAllConfigEntities() {\n try {\n const { configurations } = await getAllConfigEntities();\n for (const configEntity of configurations) {\n printMessage(`${configEntity._id}`, 'data');\n }\n } catch (getAllConfigEntitiesError) {\n printMessage(getAllConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${getAllConfigEntitiesError}`,\n 'error'\n );\n }\n}\n\n/**\n * Export an IDM configuration object.\n * @param {String} id the desired configuration object\n * @param {String} file optional export file\n */\nexport async function exportConfigEntity(id, file) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`${id}`, 'idm');\n }\n const configEntity = await getConfigEntity(id);\n fs.writeFile(fileName, JSON.stringify(configEntity, null, 2), (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${id} export to file`, 'error');\n }\n return '';\n });\n}\n\n/**\n * Export all IDM configuration objects into separate JSON files in a directory specified by <directory>\n * @param {String} directory export directory\n */\nexport async function exportAllRawConfigEntities(directory) {\n try {\n const { configurations } = await getAllConfigEntities();\n if (!fs.existsSync(directory)) {\n fs.mkdirSync(directory);\n }\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Exporting config objects...'\n );\n const entityPromises = [];\n for (const configEntity of configurations) {\n entityPromises.push(\n getConfigEntity(configEntity._id).catch((getConfigEntityError) => {\n if (\n !(\n getConfigEntityError.response?.status === 403 &&\n getConfigEntityError.response?.data?.message ===\n 'This operation is not available in ForgeRock Identity Cloud.'\n ) &&\n !(\n // list of config entities, which do not exist by default or ever.\n (\n [\n 'script',\n 'notificationFactory',\n 'apiVersion',\n 'metrics',\n 'repo.init',\n 'endpoint/validateQueryFilter',\n 'endpoint/oauthproxy',\n 'external.rest',\n 'scheduler',\n 'org.apache.felix.fileinstall/openidm',\n 'cluster',\n 'endpoint/mappingDetails',\n 'fieldPolicy/teammember',\n ].includes(configEntity._id) &&\n getConfigEntityError.response?.status === 404 &&\n getConfigEntityError.response?.data?.reason === 'Not Found'\n )\n ) &&\n // https://bugster.forgerock.org/jira/browse/OPENIDM-18270\n !(\n getConfigEntityError.response?.status === 404 &&\n getConfigEntityError.response?.data?.message ===\n 'No configuration exists for id org.apache.felix.fileinstall/openidm'\n )\n ) {\n printMessage(getConfigEntityError.response?.data, 'error');\n printMessage(\n `Error getting config entity ${configEntity._id}: ${getConfigEntityError}`,\n 'error'\n );\n }\n })\n );\n }\n const results = await Promise.all(entityPromises);\n for (const item of results) {\n if (item != null) {\n fse.outputFile(\n `${directory}/${item._id}.json`,\n JSON.stringify(item, null, 2),\n (err) => {\n if (err) {\n return printMessage(\n `ERROR - can't save config ${item._id} to file - ${err}`,\n 'error'\n );\n }\n }\n );\n }\n }\n stopProgressIndicator('Exported config objects.', 'success');\n } catch (getAllConfigEntitiesError) {\n printMessage(getAllConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${getAllConfigEntitiesError}`,\n 'error'\n );\n }\n}\n\n/**\n * Export all IDM configuration objects\n * @param {String} directory export directory\n * @param {String} entitiesFile JSON file that specifies the config entities to export/import\n * @param {String} envFile File that defines environment specific variables for replacement during configuration export/import\n */\nexport async function exportAllConfigEntities(\n directory,\n entitiesFile,\n envFile\n) {\n let entriesToExport = [];\n // read list of entities to export\n fs.readFile(entitiesFile, 'utf8', async (err, data) => {\n if (err) throw err;\n const entriesData = JSON.parse(data);\n entriesToExport = entriesData.idm;\n // console.log(`entriesToExport ${entriesToExport}`);\n\n // read list of configs to parameterize for environment specific values\n const envParams = propertiesReader(envFile);\n\n try {\n const { configurations } = await getAllConfigEntities();\n // create export directory if not exist\n if (!fs.existsSync(directory)) {\n fs.mkdirSync(directory);\n }\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Exporting config objects...'\n );\n const entityPromises = [];\n for (const configEntity of configurations) {\n if (entriesToExport.includes(configEntity._id)) {\n entityPromises.push(getConfigEntity(configEntity._id));\n }\n }\n const results = await Promise.all(entityPromises);\n for (const item of results) {\n if (item != null) {\n let configEntityString = JSON.stringify(item, null, 2);\n envParams.each((key, value) => {\n configEntityString = replaceall(\n value,\n `\\${${key}}`,\n configEntityString\n );\n });\n fse.outputFile(\n `${directory}/${item._id}.json`,\n configEntityString,\n (error) => {\n if (err) {\n return printMessage(\n `ERROR - can't save config ${item._id} to file - ${error}`,\n 'error'\n );\n }\n }\n );\n }\n }\n stopProgressIndicator(null, 'success');\n } catch (getAllConfigEntitiesError) {\n printMessage(getAllConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${getAllConfigEntitiesError}`,\n 'error'\n );\n }\n });\n}\n\n/**\n * Import an IDM configuration object by id from file.\n * @param entityId the configuration object to import\n * @param file optional file to import\n * @param validate validate script hooks\n */\nexport async function importConfigEntityByIdFromFile(\n entityId: string,\n file?: string,\n validate?: boolean\n) {\n if (!file) {\n file = getTypedFilename(entityId, 'idm');\n }\n\n const entityData = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');\n\n const jsObject = JSON.parse(entityData);\n const isValid = validateScriptHooks(jsObject);\n if (validate && !isValid) {\n printMessage('Invalid IDM configuration object', 'error');\n return;\n }\n\n try {\n await putConfigEntity(entityId, entityData);\n } catch (putConfigEntityError) {\n printMessage(putConfigEntityError, 'error');\n printMessage(`Error: ${putConfigEntityError}`, 'error');\n }\n}\n\n/**\n * Import IDM configuration object from file.\n * @param file optional file to import\n * @param validate validate script hooks\n */\nexport async function importConfigEntityFromFile(\n file: string,\n validate?: boolean\n) {\n const importData = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');\n const jsObject = JSON.parse(importData);\n const entityId = jsObject._id;\n const isValid = validateScriptHooks(jsObject);\n if (validate && !isValid) {\n printMessage('Invalid IDM configuration object', 'error');\n return;\n }\n\n try {\n await putConfigEntity(entityId, importData);\n } catch (putConfigEntityError) {\n printMessage(putConfigEntityError, 'error');\n printMessage(`Error: ${putConfigEntityError}`, 'error');\n }\n}\n\n/**\n * Import all IDM configuration objects from separate JSON files in a directory specified by <directory>\n * @param baseDirectory export directory\n * @param validate validate script hooks\n */\nexport async function importAllRawConfigEntities(\n baseDirectory: string,\n validate?: boolean\n) {\n if (!fs.existsSync(baseDirectory)) {\n return;\n }\n const files = await readFiles(baseDirectory);\n const jsonFiles = files\n .filter(({ path }) => path.toLowerCase().endsWith('.json'))\n .map(({ path, content }) => ({\n // Remove .json extension\n entityId: path.substring(0, path.length - 5),\n content,\n path,\n }));\n\n let everyScriptValid = true;\n for (const file of jsonFiles) {\n const jsObject = JSON.parse(file.content);\n const isScriptValid = validateScriptHooks(jsObject);\n if (!isScriptValid) {\n printMessage(`Invalid script hook in ${file.path}`, 'error');\n everyScriptValid = false;\n }\n }\n\n if (validate && !everyScriptValid) {\n return;\n }\n\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Importing config objects...'\n );\n\n const entityPromises = jsonFiles.map((file) => {\n return putConfigEntity(file.entityId, file.content);\n });\n\n const results = await Promise.allSettled(entityPromises);\n const errors = results.filter(\n (result): result is PromiseRejectedResult => result.status === 'rejected'\n );\n\n if (errors.length > 0) {\n printMessage(`Failed to import ${errors.length} config objects:`, 'error');\n for (const error of errors) {\n printMessage(`- ${error.reason}`, 'error');\n }\n stopProgressIndicator(\n `Failed to import ${errors.length} config objects`,\n 'error'\n );\n return;\n }\n\n stopProgressIndicator(`Imported ${results.length} config objects`, 'success');\n}\n\n/**\n * Import all IDM configuration objects\n * @param baseDirectory import directory\n * @param entitiesFile JSON file that specifies the config entities to export/import\n * @param envFile File that defines environment specific variables for replacement during configuration export/import\n * @param validate validate script hooks\n */\nexport async function importAllConfigEntities(\n baseDirectory: string,\n entitiesFile: string,\n envFile: string,\n validate?: boolean\n) {\n if (!fs.existsSync(baseDirectory)) {\n return;\n }\n const entriesToImport = JSON.parse(fs.readFileSync(entitiesFile, 'utf8')).idm;\n\n const envReader = propertiesReader(envFile);\n\n const files = await readFiles(baseDirectory);\n const jsonFiles = files\n .filter(({ path }) => path.toLowerCase().endsWith('.json'))\n .map(({ content, path }) => ({\n // Remove .json extension\n entityId: path.substring(0, path.length - 5),\n content,\n path,\n }));\n\n let everyScriptValid = true;\n for (const file of jsonFiles) {\n const jsObject = JSON.parse(file.content);\n const isScriptValid = validateScriptHooks(jsObject);\n if (!isScriptValid) {\n printMessage(`Invalid script hook in ${file.path}`, 'error');\n everyScriptValid = false;\n }\n }\n\n if (validate && !everyScriptValid) {\n return;\n }\n\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Importing config objects...'\n );\n\n const entityPromises = jsonFiles\n .filter(({ entityId }) => {\n return entriesToImport.includes(entityId);\n })\n .map(({ entityId, content }) => {\n const unsubstituted = unSubstituteEnvParams(content, envReader);\n return putConfigEntity(entityId, unsubstituted);\n });\n\n const results = await Promise.allSettled(entityPromises);\n const errors = results.filter(\n (result): result is PromiseRejectedResult => result.status === 'rejected'\n );\n\n if (errors.length > 0) {\n printMessage(`Failed to import ${errors.length} config objects:`, 'error');\n for (const error of errors) {\n printMessage(`- ${error.reason}`, 'error');\n }\n stopProgressIndicator(\n `Failed to import ${errors.length} config objects`,\n 'error'\n );\n return;\n }\n\n stopProgressIndicator(`Imported ${results.length} config objects`, 'success');\n}\n\n/**\n * Count number of managed objects of a given type\n * @param {String} type managed object type, e.g. alpha_user\n */\nexport async function countManagedObjects(type) {\n let count = 0;\n let result = {\n result: [],\n resultCount: 0,\n pagedResultsCookie: null,\n totalPagedResultsPolicy: 'NONE',\n totalPagedResults: -1,\n remainingPagedResults: -1,\n };\n try {\n do {\n result = await queryAllManagedObjectsByType(\n type,\n [],\n result.pagedResultsCookie\n );\n count += result.resultCount;\n } while (result.pagedResultsCookie);\n printMessage(`${type}: ${count}`);\n } catch (error) {\n printMessage(error.response.data, 'error');\n printMessage(`Error querying managed objects by type: ${error}`, 'error');\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"IdmOps.js","names":["fs","fse","path","propertiesReader","replaceall","Idm","Utils","ValidationUtils","createProgressIndicator","printMessage","stopProgressIndicator","getTypedFilename","readFiles","unSubstituteEnvParams","validateScriptHooks","getAllConfigEntities","getConfigEntity","putConfigEntity","queryAllManagedObjectsByType","testConnectorServers","warnAboutOfflineConnectorServers","all","offline","filter","status","ok","map","name","length","join","error","message","listAllConfigEntities","configurations","configEntity","_id","getAllConfigEntitiesError","exportConfigEntity","id","file","fileName","writeFile","JSON","stringify","err","exportAllRawConfigEntities","directory","existsSync","mkdirSync","undefined","entityPromises","push","catch","getConfigEntityError","_getConfigEntityError","_getConfigEntityError2","_getConfigEntityError3","_getConfigEntityError4","_getConfigEntityError5","_getConfigEntityError6","_getConfigEntityError7","_getConfigEntityError8","_getConfigEntityError9","response","data","includes","reason","_getConfigEntityError10","results","Promise","item","outputFile","exportAllConfigEntities","entitiesFile","envFile","entriesToExport","readFile","entriesData","parse","idm","envParams","configEntityString","each","key","value","importConfigEntityByIdFromFile","entityId","validate","entityData","readFileSync","resolve","process","cwd","jsObject","isValid","putConfigEntityError","importConfigEntityFromFile","importData","importAllRawConfigEntities","baseDirectory","files","jsonFiles","toLowerCase","endsWith","content","substring","everyScriptValid","isScriptValid","allSettled","errors","result","importAllConfigEntities","entriesToImport","envReader","unsubstituted","countManagedObjects","type","count","resultCount","pagedResultsCookie","totalPagedResultsPolicy","totalPagedResults","remainingPagedResults"],"sources":["../../src/ops/IdmOps.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport fs from 'fs';\nimport fse from 'fs-extra';\nimport path from 'path';\nimport propertiesReader from 'properties-reader';\nimport replaceall from 'replaceall';\n\nimport { Idm, Utils, ValidationUtils } from '@rockcarver/frodo-lib';\nimport {\n createProgressIndicator,\n printMessage,\n stopProgressIndicator,\n} from '../utils/Console';\nimport { getTypedFilename } from '../utils/ExportImportUtils';\n\nconst { readFiles, unSubstituteEnvParams } = Utils;\nconst { validateScriptHooks } = ValidationUtils;\nconst {\n getAllConfigEntities,\n getConfigEntity,\n putConfigEntity,\n queryAllManagedObjectsByType,\n testConnectorServers,\n} = Idm;\n\n/**\n * Warn about and list offline remote connector servers\n */\nexport async function warnAboutOfflineConnectorServers() {\n try {\n const all = await testConnectorServers();\n const offline = all\n .filter((status) => !status.ok)\n .map((status) => status.name);\n if (offline.length) {\n printMessage(\n `\\nThe following connector server(s) are offline and their connectors and configuration unavailable:\\n${offline.join(\n '\\n'\n )}`,\n 'warn'\n );\n }\n } catch (error) {\n printMessage(error, 'error');\n printMessage(\n `Error getting offline connector servers: ${error.message}`,\n 'error'\n );\n }\n}\n\n/**\n * List all IDM configuration objects\n */\nexport async function listAllConfigEntities() {\n try {\n const { configurations } = await getAllConfigEntities();\n for (const configEntity of configurations) {\n printMessage(`${configEntity._id}`, 'data');\n }\n } catch (getAllConfigEntitiesError) {\n printMessage(getAllConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${getAllConfigEntitiesError}`,\n 'error'\n );\n }\n}\n\n/**\n * Export an IDM configuration object.\n * @param {String} id the desired configuration object\n * @param {String} file optional export file\n */\nexport async function exportConfigEntity(id, file) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`${id}`, 'idm');\n }\n const configEntity = await getConfigEntity(id);\n fs.writeFile(fileName, JSON.stringify(configEntity, null, 2), (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${id} export to file`, 'error');\n }\n return '';\n });\n}\n\n/**\n * Export all IDM configuration objects into separate JSON files in a directory specified by <directory>\n * @param {String} directory export directory\n */\nexport async function exportAllRawConfigEntities(directory) {\n try {\n const { configurations } = await getAllConfigEntities();\n if (!fs.existsSync(directory)) {\n fs.mkdirSync(directory);\n }\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Exporting config objects...'\n );\n const entityPromises = [];\n for (const configEntity of configurations) {\n entityPromises.push(\n getConfigEntity(configEntity._id).catch((getConfigEntityError) => {\n if (\n !(\n getConfigEntityError.response?.status === 403 &&\n getConfigEntityError.response?.data?.message ===\n 'This operation is not available in ForgeRock Identity Cloud.'\n ) &&\n !(\n // list of config entities, which do not exist by default or ever.\n (\n [\n 'script',\n 'notificationFactory',\n 'apiVersion',\n 'metrics',\n 'repo.init',\n 'endpoint/validateQueryFilter',\n 'endpoint/oauthproxy',\n 'external.rest',\n 'scheduler',\n 'org.apache.felix.fileinstall/openidm',\n 'cluster',\n 'endpoint/mappingDetails',\n 'fieldPolicy/teammember',\n ].includes(configEntity._id) &&\n getConfigEntityError.response?.status === 404 &&\n getConfigEntityError.response?.data?.reason === 'Not Found'\n )\n ) &&\n // https://bugster.forgerock.org/jira/browse/OPENIDM-18270\n !(\n getConfigEntityError.response?.status === 404 &&\n getConfigEntityError.response?.data?.message ===\n 'No configuration exists for id org.apache.felix.fileinstall/openidm'\n )\n ) {\n printMessage(getConfigEntityError.response?.data, 'error');\n printMessage(\n `Error getting config entity ${configEntity._id}: ${getConfigEntityError}`,\n 'error'\n );\n }\n })\n );\n }\n const results = await Promise.all(entityPromises);\n for (const item of results) {\n if (item != null) {\n fse.outputFile(\n `${directory}/${item._id}.json`,\n JSON.stringify(item, null, 2),\n (err) => {\n if (err) {\n return printMessage(\n `ERROR - can't save config ${item._id} to file - ${err}`,\n 'error'\n );\n }\n }\n );\n }\n }\n stopProgressIndicator('Exported config objects.', 'success');\n } catch (getAllConfigEntitiesError) {\n printMessage(getAllConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${getAllConfigEntitiesError}`,\n 'error'\n );\n }\n}\n\n/**\n * Export all IDM configuration objects\n * @param {String} directory export directory\n * @param {String} entitiesFile JSON file that specifies the config entities to export/import\n * @param {String} envFile File that defines environment specific variables for replacement during configuration export/import\n */\nexport async function exportAllConfigEntities(\n directory,\n entitiesFile,\n envFile\n) {\n let entriesToExport = [];\n // read list of entities to export\n fs.readFile(entitiesFile, 'utf8', async (err, data) => {\n if (err) throw err;\n const entriesData = JSON.parse(data);\n entriesToExport = entriesData.idm;\n // console.log(`entriesToExport ${entriesToExport}`);\n\n // read list of configs to parameterize for environment specific values\n const envParams = propertiesReader(envFile);\n\n try {\n const { configurations } = await getAllConfigEntities();\n // create export directory if not exist\n if (!fs.existsSync(directory)) {\n fs.mkdirSync(directory);\n }\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Exporting config objects...'\n );\n const entityPromises = [];\n for (const configEntity of configurations) {\n if (entriesToExport.includes(configEntity._id)) {\n entityPromises.push(getConfigEntity(configEntity._id));\n }\n }\n const results = await Promise.all(entityPromises);\n for (const item of results) {\n if (item != null) {\n let configEntityString = JSON.stringify(item, null, 2);\n envParams.each((key, value) => {\n configEntityString = replaceall(\n value,\n `\\${${key}}`,\n configEntityString\n );\n });\n fse.outputFile(\n `${directory}/${item._id}.json`,\n configEntityString,\n (error) => {\n if (err) {\n return printMessage(\n `ERROR - can't save config ${item._id} to file - ${error}`,\n 'error'\n );\n }\n }\n );\n }\n }\n stopProgressIndicator(null, 'success');\n } catch (getAllConfigEntitiesError) {\n printMessage(getAllConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${getAllConfigEntitiesError}`,\n 'error'\n );\n }\n });\n}\n\n/**\n * Import an IDM configuration object by id from file.\n * @param entityId the configuration object to import\n * @param file optional file to import\n * @param validate validate script hooks\n */\nexport async function importConfigEntityByIdFromFile(\n entityId: string,\n file?: string,\n validate?: boolean\n) {\n if (!file) {\n file = getTypedFilename(entityId, 'idm');\n }\n\n const entityData = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');\n\n const jsObject = JSON.parse(entityData);\n const isValid = validateScriptHooks(jsObject);\n if (validate && !isValid) {\n printMessage('Invalid IDM configuration object', 'error');\n return;\n }\n\n try {\n await putConfigEntity(entityId, entityData);\n } catch (putConfigEntityError) {\n printMessage(putConfigEntityError, 'error');\n printMessage(`Error: ${putConfigEntityError}`, 'error');\n }\n}\n\n/**\n * Import IDM configuration object from file.\n * @param file optional file to import\n * @param validate validate script hooks\n */\nexport async function importConfigEntityFromFile(\n file: string,\n validate?: boolean\n) {\n const importData = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');\n const jsObject = JSON.parse(importData);\n const entityId = jsObject._id;\n const isValid = validateScriptHooks(jsObject);\n if (validate && !isValid) {\n printMessage('Invalid IDM configuration object', 'error');\n return;\n }\n\n try {\n await putConfigEntity(entityId, importData);\n } catch (putConfigEntityError) {\n printMessage(putConfigEntityError, 'error');\n printMessage(`Error: ${putConfigEntityError}`, 'error');\n }\n}\n\n/**\n * Import all IDM configuration objects from separate JSON files in a directory specified by <directory>\n * @param baseDirectory export directory\n * @param validate validate script hooks\n */\nexport async function importAllRawConfigEntities(\n baseDirectory: string,\n validate?: boolean\n) {\n if (!fs.existsSync(baseDirectory)) {\n return;\n }\n const files = await readFiles(baseDirectory);\n const jsonFiles = files\n .filter(({ path }) => path.toLowerCase().endsWith('.json'))\n .map(({ path, content }) => ({\n // Remove .json extension\n entityId: path.substring(0, path.length - 5),\n content,\n path,\n }));\n\n let everyScriptValid = true;\n for (const file of jsonFiles) {\n const jsObject = JSON.parse(file.content);\n const isScriptValid = validateScriptHooks(jsObject);\n if (!isScriptValid) {\n printMessage(`Invalid script hook in ${file.path}`, 'error');\n everyScriptValid = false;\n }\n }\n\n if (validate && !everyScriptValid) {\n return;\n }\n\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Importing config objects...'\n );\n\n const entityPromises = jsonFiles.map((file) => {\n return putConfigEntity(file.entityId, file.content);\n });\n\n const results = await Promise.allSettled(entityPromises);\n const errors = results.filter(\n (result): result is PromiseRejectedResult => result.status === 'rejected'\n );\n\n if (errors.length > 0) {\n printMessage(`Failed to import ${errors.length} config objects:`, 'error');\n for (const error of errors) {\n printMessage(`- ${error.reason}`, 'error');\n }\n stopProgressIndicator(\n `Failed to import ${errors.length} config objects`,\n 'error'\n );\n return;\n }\n\n stopProgressIndicator(`Imported ${results.length} config objects`, 'success');\n}\n\n/**\n * Import all IDM configuration objects\n * @param baseDirectory import directory\n * @param entitiesFile JSON file that specifies the config entities to export/import\n * @param envFile File that defines environment specific variables for replacement during configuration export/import\n * @param validate validate script hooks\n */\nexport async function importAllConfigEntities(\n baseDirectory: string,\n entitiesFile: string,\n envFile: string,\n validate?: boolean\n) {\n if (!fs.existsSync(baseDirectory)) {\n return;\n }\n const entriesToImport = JSON.parse(fs.readFileSync(entitiesFile, 'utf8')).idm;\n\n const envReader = propertiesReader(envFile);\n\n const files = await readFiles(baseDirectory);\n const jsonFiles = files\n .filter(({ path }) => path.toLowerCase().endsWith('.json'))\n .map(({ content, path }) => ({\n // Remove .json extension\n entityId: path.substring(0, path.length - 5),\n content,\n path,\n }));\n\n let everyScriptValid = true;\n for (const file of jsonFiles) {\n const jsObject = JSON.parse(file.content);\n const isScriptValid = validateScriptHooks(jsObject);\n if (!isScriptValid) {\n printMessage(`Invalid script hook in ${file.path}`, 'error');\n everyScriptValid = false;\n }\n }\n\n if (validate && !everyScriptValid) {\n return;\n }\n\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Importing config objects...'\n );\n\n const entityPromises = jsonFiles\n .filter(({ entityId }) => {\n return entriesToImport.includes(entityId);\n })\n .map(({ entityId, content }) => {\n const unsubstituted = unSubstituteEnvParams(content, envReader);\n return putConfigEntity(entityId, unsubstituted);\n });\n\n const results = await Promise.allSettled(entityPromises);\n const errors = results.filter(\n (result): result is PromiseRejectedResult => result.status === 'rejected'\n );\n\n if (errors.length > 0) {\n printMessage(`Failed to import ${errors.length} config objects:`, 'error');\n for (const error of errors) {\n printMessage(`- ${error.reason}`, 'error');\n }\n stopProgressIndicator(\n `Failed to import ${errors.length} config objects`,\n 'error'\n );\n return;\n }\n\n stopProgressIndicator(`Imported ${results.length} config objects`, 'success');\n}\n\n/**\n * Count number of managed objects of a given type\n * @param {String} type managed object type, e.g. alpha_user\n */\nexport async function countManagedObjects(type) {\n let count = 0;\n let result = {\n result: [],\n resultCount: 0,\n pagedResultsCookie: null,\n totalPagedResultsPolicy: 'NONE',\n totalPagedResults: -1,\n remainingPagedResults: -1,\n };\n try {\n do {\n result = await queryAllManagedObjectsByType(\n type,\n [],\n result.pagedResultsCookie\n );\n count += result.resultCount;\n } while (result.pagedResultsCookie);\n printMessage(`${type}: ${count}`);\n } catch (error) {\n printMessage(error.response.data, 'error');\n printMessage(`Error querying managed objects by type: ${error}`, 'error');\n }\n}\n"],"mappings":"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"}
package/esm/ops/IdpOps.js CHANGED
@@ -197,4 +197,4 @@ export async function importSocialProvidersFromFiles() {
197
197
  }
198
198
  stopProgressBar(`Finished importing ${total} provider(s) from ${jsonFiles.length} file(s).`);
199
199
  }
200
- //# sourceMappingURL=IdpOps.js.map
200
+ //# sourceMappingURL=IdpOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IdpOps.js","names":["fs","Idp","createProgressBar","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getRealmString","getTypedFilename","saveJsonToFile","getSocialIdentityProviders","exportSocialProvider","exportSocialProviders","importSocialProvider","importFirstSocialProvider","importSocialProviders","getOneLineDescription","socialIdpObj","description","_id","_type","getTableHeaderMd","markdown","getTableRowMd","row","enabled","name","listSocialProviders","providers","sort","a","b","localeCompare","forEach","socialIdentityProvider","err","message","exportSocialProviderToFile","providerId","file","fileName","fileData","exportSocialProvidersToFile","exportSocialProvidersToFiles","allIdpsData","length","idpData","importSocialProviderFromFile","outcome","readFile","data","JSON","parse","error","_error$response","response","importFirstSocialProviderFromFile","_error$response2","importSocialProvidersFromFile","_error$response3","importSocialProvidersFromFiles","names","readdirSync","jsonFiles","filter","toLowerCase","endsWith","total","readFileSync","count","Object","keys","idp"],"sources":["ops/IdpOps.ts"],"sourcesContent":["import fs from 'fs';\nimport { SocialIdpSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport { Idp } from '@rockcarver/frodo-lib';\nimport {\n createProgressBar,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getRealmString,\n getTypedFilename,\n saveJsonToFile,\n} from '../utils/ExportImportUtils';\n\nconst {\n getSocialIdentityProviders,\n exportSocialProvider,\n exportSocialProviders,\n importSocialProvider,\n importFirstSocialProvider,\n importSocialProviders,\n} = Idp;\n\n/**\n * Get a one-line description of the social idp object\n * @param {SocialIdpSkeleton} socialIdpObj social idp object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(socialIdpObj: SocialIdpSkeleton): string {\n const description = `[${socialIdpObj._id['brightCyan']}] ${socialIdpObj._type._id}`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Name/Id | Status | Type |\\n';\n markdown += '| ------- | ------ | ---- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the social idp in markdown\n * @param {SocialIdpSkeleton} socialIdpObj social idp object to describe\n * @returns {string} a table-row of the social idp in markdown\n */\nexport function getTableRowMd(socialIdpObj: SocialIdpSkeleton): string {\n const row = `| ${socialIdpObj._id} | ${\n socialIdpObj.enabled === false\n ? ':o: `disabled`'\n : ':white_check_mark: `enabled`'\n } | ${socialIdpObj._type.name} |`;\n return row;\n}\n\n/**\n * List providers\n */\nexport async function listSocialProviders() {\n try {\n const providers = await getSocialIdentityProviders();\n providers.sort((a, b) => a._id.localeCompare(b._id));\n providers.forEach((socialIdentityProvider) => {\n printMessage(`${socialIdentityProvider._id}`, 'data');\n });\n } catch (err) {\n printMessage(`listSocialProviders ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n}\n\n/**\n * Export provider by id\n * @param {string} providerId provider id/name\n * @param {string} file optional export file name\n */\nexport async function exportSocialProviderToFile(\n providerId: string,\n file = ''\n) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(providerId, 'idp');\n }\n createProgressBar(1, `Exporting ${providerId}`);\n try {\n updateProgressBar(`Writing file ${fileName}`);\n const fileData = await exportSocialProvider(providerId);\n saveJsonToFile(fileData, fileName);\n stopProgressBar(\n `Exported ${providerId['brightCyan']} to ${fileName['brightCyan']}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(`${err}`, 'error');\n }\n}\n\n/**\n * Export all providers\n * @param {string} file optional export file name\n */\nexport async function exportSocialProvidersToFile(file = '') {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`all${getRealmString()}Providers`, 'idp');\n }\n const fileData = await exportSocialProviders();\n saveJsonToFile(fileData, fileName);\n}\n\n/**\n * Export all providers to individual files\n */\nexport async function exportSocialProvidersToFiles() {\n const allIdpsData = await getSocialIdentityProviders();\n // printMessage(allIdpsData, 'data');\n createProgressBar(allIdpsData.length, 'Exporting providers');\n for (const idpData of allIdpsData) {\n updateProgressBar(`Writing provider ${idpData._id}`);\n const fileName = getTypedFilename(idpData._id, 'idp');\n const fileData = await exportSocialProvider(idpData._id);\n saveJsonToFile(fileData, fileName);\n }\n stopProgressBar(`${allIdpsData.length} providers exported.`);\n}\n\n/**\n * Import provider by id/name\n * @param {string} providerId provider id/name\n * @param {string} file import file name\n * @returns {Promise<boolean>} true if provider was imported successfully, false otherwise\n */\nexport async function importSocialProviderFromFile(\n providerId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing provider ${providerId} from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n outcome = await importSocialProvider(providerId, fileData);\n succeedSpinner(\n `Successfully imported provider ${providerId} from ${file}.`\n );\n } catch (error) {\n failSpinner(`Error importing provider ${providerId} from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import first provider from file\n * @param {String} file import file name\n * @returns {Promise<boolean>} true if first provider was imported successfully, false otherwise\n */\nexport async function importFirstSocialProviderFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing first provider from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n outcome = await importFirstSocialProvider(fileData);\n succeedSpinner(`Successfully imported first provider from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing first provider from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import all providers from file\n * @param {string} file import file name\n * @returns {Promise<boolean>} true if all providers were imported successfully, false otherwise\n */\nexport async function importSocialProvidersFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing providers from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n outcome = await importSocialProviders(fileData);\n succeedSpinner(`Successfully imported providers from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing providers from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import providers from *.idp.json files in current working directory\n */\nexport async function importSocialProvidersFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.idp.json')\n );\n\n createProgressBar(jsonFiles.length, 'Importing providers...');\n let total = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n const count = Object.keys(fileData.idp).length;\n total += count;\n await importSocialProviders(fileData);\n updateProgressBar(`Imported ${count} provider(s) from ${file}`);\n }\n stopProgressBar(\n `Finished importing ${total} provider(s) from ${jsonFiles.length} file(s).`\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"IdpOps.js","names":["fs","Idp","createProgressBar","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getRealmString","getTypedFilename","saveJsonToFile","getSocialIdentityProviders","exportSocialProvider","exportSocialProviders","importSocialProvider","importFirstSocialProvider","importSocialProviders","getOneLineDescription","socialIdpObj","description","_id","_type","getTableHeaderMd","markdown","getTableRowMd","row","enabled","name","listSocialProviders","providers","sort","a","b","localeCompare","forEach","socialIdentityProvider","err","message","exportSocialProviderToFile","providerId","file","fileName","fileData","exportSocialProvidersToFile","exportSocialProvidersToFiles","allIdpsData","length","idpData","importSocialProviderFromFile","outcome","readFile","data","JSON","parse","error","_error$response","response","importFirstSocialProviderFromFile","_error$response2","importSocialProvidersFromFile","_error$response3","importSocialProvidersFromFiles","names","readdirSync","jsonFiles","filter","toLowerCase","endsWith","total","readFileSync","count","Object","keys","idp"],"sources":["../../src/ops/IdpOps.ts"],"sourcesContent":["import fs from 'fs';\nimport { SocialIdpSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport { Idp } from '@rockcarver/frodo-lib';\nimport {\n createProgressBar,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getRealmString,\n getTypedFilename,\n saveJsonToFile,\n} from '../utils/ExportImportUtils';\n\nconst {\n getSocialIdentityProviders,\n exportSocialProvider,\n exportSocialProviders,\n importSocialProvider,\n importFirstSocialProvider,\n importSocialProviders,\n} = Idp;\n\n/**\n * Get a one-line description of the social idp object\n * @param {SocialIdpSkeleton} socialIdpObj social idp object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(socialIdpObj: SocialIdpSkeleton): string {\n const description = `[${socialIdpObj._id['brightCyan']}] ${socialIdpObj._type._id}`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Name/Id | Status | Type |\\n';\n markdown += '| ------- | ------ | ---- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the social idp in markdown\n * @param {SocialIdpSkeleton} socialIdpObj social idp object to describe\n * @returns {string} a table-row of the social idp in markdown\n */\nexport function getTableRowMd(socialIdpObj: SocialIdpSkeleton): string {\n const row = `| ${socialIdpObj._id} | ${\n socialIdpObj.enabled === false\n ? ':o: `disabled`'\n : ':white_check_mark: `enabled`'\n } | ${socialIdpObj._type.name} |`;\n return row;\n}\n\n/**\n * List providers\n */\nexport async function listSocialProviders() {\n try {\n const providers = await getSocialIdentityProviders();\n providers.sort((a, b) => a._id.localeCompare(b._id));\n providers.forEach((socialIdentityProvider) => {\n printMessage(`${socialIdentityProvider._id}`, 'data');\n });\n } catch (err) {\n printMessage(`listSocialProviders ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n}\n\n/**\n * Export provider by id\n * @param {string} providerId provider id/name\n * @param {string} file optional export file name\n */\nexport async function exportSocialProviderToFile(\n providerId: string,\n file = ''\n) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(providerId, 'idp');\n }\n createProgressBar(1, `Exporting ${providerId}`);\n try {\n updateProgressBar(`Writing file ${fileName}`);\n const fileData = await exportSocialProvider(providerId);\n saveJsonToFile(fileData, fileName);\n stopProgressBar(\n `Exported ${providerId['brightCyan']} to ${fileName['brightCyan']}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(`${err}`, 'error');\n }\n}\n\n/**\n * Export all providers\n * @param {string} file optional export file name\n */\nexport async function exportSocialProvidersToFile(file = '') {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`all${getRealmString()}Providers`, 'idp');\n }\n const fileData = await exportSocialProviders();\n saveJsonToFile(fileData, fileName);\n}\n\n/**\n * Export all providers to individual files\n */\nexport async function exportSocialProvidersToFiles() {\n const allIdpsData = await getSocialIdentityProviders();\n // printMessage(allIdpsData, 'data');\n createProgressBar(allIdpsData.length, 'Exporting providers');\n for (const idpData of allIdpsData) {\n updateProgressBar(`Writing provider ${idpData._id}`);\n const fileName = getTypedFilename(idpData._id, 'idp');\n const fileData = await exportSocialProvider(idpData._id);\n saveJsonToFile(fileData, fileName);\n }\n stopProgressBar(`${allIdpsData.length} providers exported.`);\n}\n\n/**\n * Import provider by id/name\n * @param {string} providerId provider id/name\n * @param {string} file import file name\n * @returns {Promise<boolean>} true if provider was imported successfully, false otherwise\n */\nexport async function importSocialProviderFromFile(\n providerId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing provider ${providerId} from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n outcome = await importSocialProvider(providerId, fileData);\n succeedSpinner(\n `Successfully imported provider ${providerId} from ${file}.`\n );\n } catch (error) {\n failSpinner(`Error importing provider ${providerId} from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import first provider from file\n * @param {String} file import file name\n * @returns {Promise<boolean>} true if first provider was imported successfully, false otherwise\n */\nexport async function importFirstSocialProviderFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing first provider from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n outcome = await importFirstSocialProvider(fileData);\n succeedSpinner(`Successfully imported first provider from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing first provider from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import all providers from file\n * @param {string} file import file name\n * @returns {Promise<boolean>} true if all providers were imported successfully, false otherwise\n */\nexport async function importSocialProvidersFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing providers from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n outcome = await importSocialProviders(fileData);\n succeedSpinner(`Successfully imported providers from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing providers from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import providers from *.idp.json files in current working directory\n */\nexport async function importSocialProvidersFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.idp.json')\n );\n\n createProgressBar(jsonFiles.length, 'Importing providers...');\n let total = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n const count = Object.keys(fileData.idp).length;\n total += count;\n await importSocialProviders(fileData);\n updateProgressBar(`Imported ${count} provider(s) from ${file}`);\n }\n stopProgressBar(\n `Finished importing ${total} provider(s) from ${jsonFiles.length} file(s).`\n );\n}\n"],"mappings":"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"}
@@ -666,4 +666,4 @@ export async function describeJourneyMd(journeyData, resolveTreeExport = onlineT
666
666
  }
667
667
  }
668
668
  }
669
- //# sourceMappingURL=JourneyOps.js.map
669
+ //# sourceMappingURL=JourneyOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JourneyOps.js","names":["fs","printMessage","createProgressBar","updateProgressBar","stopProgressBar","showSpinner","succeedSpinner","failSpinner","createTable","debugMessage","ExportImportUtils","Journey","Types","state","CirclesOfTrust","EmailTemplate","Idp","Node","Saml2","Script","Theme","wordwrap","cloneDeep","getJourneys","importAllJourneys","importJourney","resolveDependencies","createMultiTreeExportTemplate","exportJourney","onlineTreeExportResolver","getTreeDescendents","getNodeRef","getTypedFilename","saveJsonToFile","getRealmString","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","default","session","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","journey","importFirstJourneyFromFile","treeId","hasOwnProperty","call","importJourneysFromFile","importJourneysFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","allJourneysData","readFileSync","it","JourneyClassification","STANDARD","CLOUD","CUSTOM","PREMIUM","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 fs from 'fs';\nimport {\n NodeSkeleton,\n TreeSkeleton,\n} from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\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 {\n ExportImportUtils,\n Journey,\n Types,\n state,\n} from '@rockcarver/frodo-lib';\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 {\n getJourneys,\n importAllJourneys,\n importJourney,\n resolveDependencies,\n createMultiTreeExportTemplate,\n exportJourney,\n onlineTreeExportResolver,\n getTreeDescendents,\n getNodeRef,\n} = Journey;\nconst { getTypedFilename, saveJsonToFile, getRealmString } = ExportImportUtils;\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.default.session.getDebug();\n if (!file) {\n file = getTypedFilename(journeyId, 'journey');\n }\n if (state.default.session.getDirectory()) {\n const dir = state.default.session.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.default.session.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.default.session.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): string[] {\n return Journey.getJourneyClassification(journey).map((it) => {\n switch (it) {\n case Types.JourneyClassification.STANDARD:\n return it.toString()['brightGreen'];\n\n case Types.JourneyClassification.CLOUD:\n return it.toString()['brightMagenta'];\n\n case Types.JourneyClassification.CUSTOM:\n return it.toString()['brightRed'];\n\n case Types.JourneyClassification.PREMIUM:\n return it.toString()['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 Journey.getJourneyClassification(journey).map((it) => {\n switch (it) {\n case Types.JourneyClassification.STANDARD:\n return `:green_circle: \\`${it.toString()}\\``;\n\n case Types.JourneyClassification.CLOUD:\n return `:purple_circle: \\`${it.toString()}\\``;\n\n case Types.JourneyClassification.CUSTOM:\n return `:red_circle: \\`${it.toString()}\\``;\n\n case Types.JourneyClassification.PREMIUM:\n return `:yellow_circle: \\`${it.toString()}\\``;\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 (\n !state.default.session.getAmVersion() &&\n journeyData.meta?.originAmVersion\n ) {\n state.default.session.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.default.session.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 (\n !state.default.session.getAmVersion() &&\n journeyData.meta?.originAmVersion\n ) {\n state.default.session.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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"}
1
+ {"version":3,"file":"JourneyOps.js","names":["fs","printMessage","createProgressBar","updateProgressBar","stopProgressBar","showSpinner","succeedSpinner","failSpinner","createTable","debugMessage","ExportImportUtils","Journey","Types","state","CirclesOfTrust","EmailTemplate","Idp","Node","Saml2","Script","Theme","wordwrap","cloneDeep","getJourneys","importAllJourneys","importJourney","resolveDependencies","createMultiTreeExportTemplate","exportJourney","onlineTreeExportResolver","getTreeDescendents","getNodeRef","getTypedFilename","saveJsonToFile","getRealmString","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","default","session","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","journey","importFirstJourneyFromFile","treeId","hasOwnProperty","call","importJourneysFromFile","importJourneysFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","allJourneysData","readFileSync","it","JourneyClassification","STANDARD","CLOUD","CUSTOM","PREMIUM","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":["../../src/ops/JourneyOps.ts"],"sourcesContent":["import fs from 'fs';\nimport {\n NodeSkeleton,\n TreeSkeleton,\n} from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\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 {\n ExportImportUtils,\n Journey,\n Types,\n state,\n} from '@rockcarver/frodo-lib';\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 {\n getJourneys,\n importAllJourneys,\n importJourney,\n resolveDependencies,\n createMultiTreeExportTemplate,\n exportJourney,\n onlineTreeExportResolver,\n getTreeDescendents,\n getNodeRef,\n} = Journey;\nconst { getTypedFilename, saveJsonToFile, getRealmString } = ExportImportUtils;\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.default.session.getDebug();\n if (!file) {\n file = getTypedFilename(journeyId, 'journey');\n }\n if (state.default.session.getDirectory()) {\n const dir = state.default.session.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.default.session.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.default.session.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): string[] {\n return Journey.getJourneyClassification(journey).map((it) => {\n switch (it) {\n case Types.JourneyClassification.STANDARD:\n return it.toString()['brightGreen'];\n\n case Types.JourneyClassification.CLOUD:\n return it.toString()['brightMagenta'];\n\n case Types.JourneyClassification.CUSTOM:\n return it.toString()['brightRed'];\n\n case Types.JourneyClassification.PREMIUM:\n return it.toString()['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 Journey.getJourneyClassification(journey).map((it) => {\n switch (it) {\n case Types.JourneyClassification.STANDARD:\n return `:green_circle: \\`${it.toString()}\\``;\n\n case Types.JourneyClassification.CLOUD:\n return `:purple_circle: \\`${it.toString()}\\``;\n\n case Types.JourneyClassification.CUSTOM:\n return `:red_circle: \\`${it.toString()}\\``;\n\n case Types.JourneyClassification.PREMIUM:\n return `:yellow_circle: \\`${it.toString()}\\``;\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 (\n !state.default.session.getAmVersion() &&\n journeyData.meta?.originAmVersion\n ) {\n state.default.session.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.default.session.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 (\n !state.default.session.getAmVersion() &&\n journeyData.meta?.originAmVersion\n ) {\n state.default.session.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
@@ -92,4 +92,4 @@ export async function fetchLogs(source, startTs, endTs, levels, txid, ffString,
92
92
  return `fetch ERROR: fetch data error - ${e}`;
93
93
  }
94
94
  }
95
- //# sourceMappingURL=LogOps.js.map
95
+ //# sourceMappingURL=LogOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LogOps.js","names":["printMessage","verboseMessage","Log","state","getDefaultNoiseFilter","tail","fetch","getLogApiKeys","resolvePayloadLevel","createAPIKeyAndSecret","tailLogs","source","levels","txid","cookie","nf","logsObject","filteredLogs","noiseFilter","Array","isArray","result","filter","el","_transactionId","includes","payload","logger","type","transactionId","forEach","e","JSON","stringify","setTimeout","pagedResultsCookie","provisionCreds","keyName","getUsername","keys","key","name","Date","toISOString","resp","getHost","error","fetchLogs","startTs","endTs","ffString","_transactionId2","log"],"sources":["ops/LogOps.ts"],"sourcesContent":["import { LogEventPayloadSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport { printMessage, verboseMessage } from '../utils/Console';\nimport { Log, state } from '@rockcarver/frodo-lib';\n\nconst {\n getDefaultNoiseFilter,\n tail,\n fetch,\n getLogApiKeys,\n resolvePayloadLevel,\n createAPIKeyAndSecret,\n} = Log;\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 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 createAPIKeyAndSecret(keyName);\n if (resp.name !== keyName) {\n printMessage(\n `create keys ERROR: could not create log API key ${keyName}`,\n 'error'\n );\n return null;\n }\n verboseMessage(\n `Created a new log API key [${keyName}] in ${state.getHost()}`\n );\n return resp;\n } catch (error) {\n printMessage(\n `create keys ERROR: create keys call returned ${error}`,\n 'error'\n );\n return null;\n }\n } catch (error) {\n printMessage(`get keys ERROR: get keys call returned ${error}`, 'error');\n }\n } catch (e) {\n printMessage(`create keys ERROR: create keys data error - ${e}`, 'error');\n return null;\n }\n}\n\nexport async function fetchLogs(\n source: string,\n startTs: string,\n endTs: string,\n levels: string[],\n txid: string,\n ffString: string,\n cookie: string,\n nf: string[]\n) {\n try {\n const logsObject = await 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":"AACA,SAASA,YAAY,EAAEC,cAAc,QAAQ,kBAAkB;AAC/D,SAASC,GAAG,EAAEC,KAAK,QAAQ,uBAAuB;AAElD,MAAM;EACJC,qBAAqB;EACrBC,IAAI;EACJC,KAAK;EACLC,aAAa;EACbC,mBAAmB;EACnBC;AACF,CAAC,GAAGP,GAAG;AAEP,OAAO,eAAeQ,QAAQA,CAC5BC,MAAc,EACdC,MAAgB,EAChBC,IAAY,EACZC,MAAc,EACdC,EAAY,EACZ;EACA,IAAI;IACF,MAAMC,UAAU,GAAG,MAAMX,IAAI,CAACM,MAAM,EAAEG,MAAM,CAAC;IAC7C,IAAIG,YAAY,GAAG,EAAE;IACrB,MAAMC,WAAW,GAAGH,EAAE,IAAI,IAAI,GAAGX,qBAAqB,CAAC,CAAC,GAAGW,EAAE;IAC7D,IAAII,KAAK,CAACC,OAAO,CAACJ,UAAU,CAACK,MAAM,CAAC,EAAE;MACpCJ,YAAY,GAAGD,UAAU,CAACK,MAAM,CAACC,MAAM,CACpCC,EAAE;QAAA,IAAAC,cAAA;QAAA,OACD,CAACN,WAAW,CAACO,QAAQ,CAClBF,EAAE,CAACG,OAAO,CAA6BC,MAC1C,CAAC,IACD,CAACT,WAAW,CAACO,QAAQ,CAACF,EAAE,CAACK,IAAI,CAAC,KAC7BhB,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,IAAIA,MAAM,CAACa,QAAQ,CAACjB,mBAAmB,CAACe,EAAE,CAAC,CAAC,CAAC,KAChE,OAAOV,IAAI,KAAK,WAAW,IAC1BA,IAAI,KAAK,IAAI,MAAAW,cAAA,GACZD,EAAE,CAACG,OAAO,CAA6BG,aAAa,cAAAL,cAAA,uBAArDA,cAAA,CAAuDC,QAAQ,CAC7DZ,IACF,CAAC,EAAC;MAAA,CACR,CAAC;IACH;IAEAI,YAAY,CAACa,OAAO,CAAEC,CAAC,IAAK;MAC1B/B,YAAY,CAACgC,IAAI,CAACC,SAAS,CAACF,CAAC,CAAC,EAAE,MAAM,CAAC;IACzC,CAAC,CAAC;IAEFG,UAAU,CAAC,MAAM;MACfxB,QAAQ,CAACC,MAAM,EAAEC,MAAM,EAAEC,IAAI,EAAEG,UAAU,CAACmB,kBAAkB,EAAEpB,EAAE,CAAC;IACnE,CAAC,EAAE,IAAI,CAAC;IACR,OAAO,IAAI;EACb,CAAC,CAAC,OAAOgB,CAAC,EAAE;IACV/B,YAAY,CAAE,iCAAgC+B,CAAE,EAAC,EAAE,OAAO,CAAC;IAC3D,OAAQ,iCAAgCA,CAAE,EAAC;EAC7C;AACF;AAEA,OAAO,eAAeK,cAAcA,CAAA,EAAG;EACrC,IAAI;IACF,IAAIC,OAAO,GAAI,SAAQlC,KAAK,CAACmC,WAAW,CAAC,CAAE,EAAC;IAC5C,IAAI;MACF,MAAMC,IAAI,GAAG,MAAMhC,aAAa,CAAC,CAAC;MAClC,KAAK,MAAMiC,GAAG,IAAID,IAAI,EAAE;QACtB,IAAIC,GAAG,CAACC,IAAI,KAAKJ,OAAO,EAAE;UACxB;UACAA,OAAO,GAAI,GAAEA,OAAQ,IAAG,IAAIK,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAE,EAAC;QACpD;MACF;MACA,IAAI;QACF,MAAMC,IAAI,GAAG,MAAMnC,qBAAqB,CAAC4B,OAAO,CAAC;QACjD,IAAIO,IAAI,CAACH,IAAI,KAAKJ,OAAO,EAAE;UACzBrC,YAAY,CACT,mDAAkDqC,OAAQ,EAAC,EAC5D,OACF,CAAC;UACD,OAAO,IAAI;QACb;QACApC,cAAc,CACX,8BAA6BoC,OAAQ,QAAOlC,KAAK,CAAC0C,OAAO,CAAC,CAAE,EAC/D,CAAC;QACD,OAAOD,IAAI;MACb,CAAC,CAAC,OAAOE,KAAK,EAAE;QACd9C,YAAY,CACT,gDAA+C8C,KAAM,EAAC,EACvD,OACF,CAAC;QACD,OAAO,IAAI;MACb;IACF,CAAC,CAAC,OAAOA,KAAK,EAAE;MACd9C,YAAY,CAAE,0CAAyC8C,KAAM,EAAC,EAAE,OAAO,CAAC;IAC1E;EACF,CAAC,CAAC,OAAOf,CAAC,EAAE;IACV/B,YAAY,CAAE,+CAA8C+B,CAAE,EAAC,EAAE,OAAO,CAAC;IACzE,OAAO,IAAI;EACb;AACF;AAEA,OAAO,eAAegB,SAASA,CAC7BpC,MAAc,EACdqC,OAAe,EACfC,KAAa,EACbrC,MAAgB,EAChBC,IAAY,EACZqC,QAAgB,EAChBpC,MAAc,EACdC,EAAY,EACZ;EACA,IAAI;IACF,MAAMC,UAAU,GAAG,MAAMV,KAAK,CAACK,MAAM,EAAEqC,OAAO,EAAEC,KAAK,EAAEnC,MAAM,CAAC;IAC9D,IAAIG,YAAY,GAAG,EAAE;IACrB,MAAMC,WAAW,GAAGH,EAAE,IAAI,IAAI,GAAGX,qBAAqB,CAAC,CAAC,GAAGW,EAAE;IAC7D,IAAII,KAAK,CAACC,OAAO,CAACJ,UAAU,CAACK,MAAM,CAAC,EAAE;MACpCJ,YAAY,GAAGD,UAAU,CAACK,MAAM,CAACC,MAAM,CACpCC,EAAE;QAAA,IAAA4B,eAAA;QAAA,OACD,CAACjC,WAAW,CAACO,QAAQ,CAClBF,EAAE,CAACG,OAAO,CAA6BC,MAC1C,CAAC,IACD,CAACT,WAAW,CAACO,QAAQ,CAACF,EAAE,CAACK,IAAI,CAAC,KAC7BhB,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,IAAIA,MAAM,CAACa,QAAQ,CAACjB,mBAAmB,CAACe,EAAE,CAAC,CAAC,CAAC,KAChE,OAAOV,IAAI,KAAK,WAAW,IAC1BA,IAAI,KAAK,IAAI,MAAAsC,eAAA,GACZ5B,EAAE,CAACG,OAAO,CAA6BG,aAAa,cAAAsB,eAAA,uBAArDA,eAAA,CAAuD1B,QAAQ,CAC7DZ,IACF,CAAC,EAAC;MAAA,CACR,CAAC;IACH;IAEAI,YAAY,CAACa,OAAO,CAAEC,CAAC,IAAK;MAC1B,MAAMqB,GAAG,GAAGpB,IAAI,CAACC,SAAS,CAACF,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;MACtC,IAAImB,QAAQ,EAAE;QACZ,IAAIE,GAAG,CAAC3B,QAAQ,CAACyB,QAAQ,CAAC,EAAE;UAC1BlD,YAAY,CAACoD,GAAG,EAAE,MAAM,CAAC;QAC3B;MACF,CAAC,MAAM;QACLpD,YAAY,CAACoD,GAAG,EAAE,MAAM,CAAC;MAC3B;IACF,CAAC,CAAC;IACF,IAAIpC,UAAU,CAACmB,kBAAkB,IAAI,IAAI,EAAE;MACzC,MAAMY,SAAS,CACbpC,MAAM,EACNqC,OAAO,EACPC,KAAK,EACLrC,MAAM,EACNC,IAAI,EACJqC,QAAQ,EACRlC,UAAU,CAACmB,kBAAkB,EAC7BpB,EACF,CAAC;IACH;IACA,OAAO,IAAI;EACb,CAAC,CAAC,OAAOgB,CAAC,EAAE;IACV/B,YAAY,CAAE,mCAAkC+B,CAAE,EAAC,EAAE,OAAO,CAAC;IAC7D,OAAQ,mCAAkCA,CAAE,EAAC;EAC/C;AACF"}
1
+ {"version":3,"file":"LogOps.js","names":["printMessage","verboseMessage","Log","state","getDefaultNoiseFilter","tail","fetch","getLogApiKeys","resolvePayloadLevel","createAPIKeyAndSecret","tailLogs","source","levels","txid","cookie","nf","logsObject","filteredLogs","noiseFilter","Array","isArray","result","filter","el","_transactionId","includes","payload","logger","type","transactionId","forEach","e","JSON","stringify","setTimeout","pagedResultsCookie","provisionCreds","keyName","getUsername","keys","key","name","Date","toISOString","resp","getHost","error","fetchLogs","startTs","endTs","ffString","_transactionId2","log"],"sources":["../../src/ops/LogOps.ts"],"sourcesContent":["import { LogEventPayloadSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport { printMessage, verboseMessage } from '../utils/Console';\nimport { Log, state } from '@rockcarver/frodo-lib';\n\nconst {\n getDefaultNoiseFilter,\n tail,\n fetch,\n getLogApiKeys,\n resolvePayloadLevel,\n createAPIKeyAndSecret,\n} = Log;\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 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 createAPIKeyAndSecret(keyName);\n if (resp.name !== keyName) {\n printMessage(\n `create keys ERROR: could not create log API key ${keyName}`,\n 'error'\n );\n return null;\n }\n verboseMessage(\n `Created a new log API key [${keyName}] in ${state.getHost()}`\n );\n return resp;\n } catch (error) {\n printMessage(\n `create keys ERROR: create keys call returned ${error}`,\n 'error'\n );\n return null;\n }\n } catch (error) {\n printMessage(`get keys ERROR: get keys call returned ${error}`, 'error');\n }\n } catch (e) {\n printMessage(`create keys ERROR: create keys data error - ${e}`, 'error');\n return null;\n }\n}\n\nexport async function fetchLogs(\n source: string,\n startTs: string,\n endTs: string,\n levels: string[],\n txid: string,\n ffString: string,\n cookie: string,\n nf: string[]\n) {\n try {\n const logsObject = await 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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"}
@@ -83,4 +83,4 @@ export function getTableRowMd(nodeObj, nodeRef) {
83
83
  const row = `| ${nodeRef ? nodeRef.displayName : ''} | ${nodeObj._type._id} | ${getNodeClassificationMd(nodeObj._type._id).join('<br>')} | \`${nodeObj._id}\` |`;
84
84
  return row;
85
85
  }
86
- //# sourceMappingURL=NodeOps.js.map
86
+ //# sourceMappingURL=NodeOps.js.map