@rockcarver/frodo-cli 0.18.2-7 → 0.18.2-9

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 (334) hide show
  1. package/CHANGELOG.md +12 -1
  2. package/esm/app.js +2 -2
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/_template/something-delete.js +7 -4
  5. package/esm/cli/_template/something-delete.js.map +1 -1
  6. package/esm/cli/_template/something-describe.js +7 -4
  7. package/esm/cli/_template/something-describe.js.map +1 -1
  8. package/esm/cli/_template/something-else-delete.js +7 -4
  9. package/esm/cli/_template/something-else-delete.js.map +1 -1
  10. package/esm/cli/_template/something-else-describe.js +7 -4
  11. package/esm/cli/_template/something-else-describe.js.map +1 -1
  12. package/esm/cli/_template/something-else-export.js +7 -4
  13. package/esm/cli/_template/something-else-export.js.map +1 -1
  14. package/esm/cli/_template/something-else-import.js +7 -4
  15. package/esm/cli/_template/something-else-import.js.map +1 -1
  16. package/esm/cli/_template/something-else-list.js +7 -4
  17. package/esm/cli/_template/something-else-list.js.map +1 -1
  18. package/esm/cli/_template/something-else.js.map +1 -1
  19. package/esm/cli/_template/something-export.js +7 -4
  20. package/esm/cli/_template/something-export.js.map +1 -1
  21. package/esm/cli/_template/something-import.js +7 -4
  22. package/esm/cli/_template/something-import.js.map +1 -1
  23. package/esm/cli/_template/something-list.js +7 -4
  24. package/esm/cli/_template/something-list.js.map +1 -1
  25. package/esm/cli/_template/something-other-delete.js +7 -4
  26. package/esm/cli/_template/something-other-delete.js.map +1 -1
  27. package/esm/cli/_template/something-other-describe.js +7 -4
  28. package/esm/cli/_template/something-other-describe.js.map +1 -1
  29. package/esm/cli/_template/something-other-export.js +7 -4
  30. package/esm/cli/_template/something-other-export.js.map +1 -1
  31. package/esm/cli/_template/something-other-import.js +7 -4
  32. package/esm/cli/_template/something-other-import.js.map +1 -1
  33. package/esm/cli/_template/something-other-list.js +7 -4
  34. package/esm/cli/_template/something-other-list.js.map +1 -1
  35. package/esm/cli/_template/something-other.js.map +1 -1
  36. package/esm/cli/_template/something.js +0 -2
  37. package/esm/cli/_template/something.js.map +1 -1
  38. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +5 -3
  39. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
  40. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +7 -11
  41. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  42. package/esm/cli/admin/admin-get-access-token.js +5 -3
  43. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  44. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +5 -3
  45. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  46. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +5 -3
  47. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  48. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +5 -3
  49. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  50. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +5 -3
  51. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  52. package/esm/cli/admin/admin-list-static-user-mappings.js +5 -3
  53. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  54. package/esm/cli/admin/admin-remove-static-user-mapping.js +5 -3
  55. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  56. package/esm/cli/admin/admin-repair-org-model.js +5 -3
  57. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  58. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +5 -3
  59. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  60. package/esm/cli/admin/admin-show-generic-extension-attributes.js +5 -3
  61. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  62. package/esm/cli/admin/admin.js +0 -2
  63. package/esm/cli/admin/admin.js.map +1 -1
  64. package/esm/cli/agent/agent-delete.js +9 -7
  65. package/esm/cli/agent/agent-delete.js.map +1 -1
  66. package/esm/cli/agent/agent-describe.js +7 -4
  67. package/esm/cli/agent/agent-describe.js.map +1 -1
  68. package/esm/cli/agent/agent-export.js +11 -6
  69. package/esm/cli/agent/agent-export.js.map +1 -1
  70. package/esm/cli/agent/agent-gateway-delete.js +9 -7
  71. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  72. package/esm/cli/agent/agent-gateway-describe.js +7 -4
  73. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  74. package/esm/cli/agent/agent-gateway-export.js +11 -6
  75. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  76. package/esm/cli/agent/agent-gateway-import.js +13 -7
  77. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  78. package/esm/cli/agent/agent-gateway-list.js +5 -3
  79. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  80. package/esm/cli/agent/agent-gateway.js.map +1 -1
  81. package/esm/cli/agent/agent-import.js +13 -7
  82. package/esm/cli/agent/agent-import.js.map +1 -1
  83. package/esm/cli/agent/agent-java-delete.js +9 -7
  84. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  85. package/esm/cli/agent/agent-java-describe.js +7 -4
  86. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  87. package/esm/cli/agent/agent-java-export.js +11 -6
  88. package/esm/cli/agent/agent-java-export.js.map +1 -1
  89. package/esm/cli/agent/agent-java-import.js +13 -7
  90. package/esm/cli/agent/agent-java-import.js.map +1 -1
  91. package/esm/cli/agent/agent-java-list.js +5 -3
  92. package/esm/cli/agent/agent-java-list.js.map +1 -1
  93. package/esm/cli/agent/agent-java.js.map +1 -1
  94. package/esm/cli/agent/agent-list.js +5 -3
  95. package/esm/cli/agent/agent-list.js.map +1 -1
  96. package/esm/cli/agent/agent-web-delete.js +9 -7
  97. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  98. package/esm/cli/agent/agent-web-describe.js +7 -4
  99. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  100. package/esm/cli/agent/agent-web-export.js +11 -6
  101. package/esm/cli/agent/agent-web-export.js.map +1 -1
  102. package/esm/cli/agent/agent-web-import.js +13 -7
  103. package/esm/cli/agent/agent-web-import.js.map +1 -1
  104. package/esm/cli/agent/agent-web-list.js +5 -3
  105. package/esm/cli/agent/agent-web-list.js.map +1 -1
  106. package/esm/cli/agent/agent-web.js.map +1 -1
  107. package/esm/cli/agent/agent.js +0 -2
  108. package/esm/cli/agent/agent.js.map +1 -1
  109. package/esm/cli/app/app-delete.js +7 -4
  110. package/esm/cli/app/app-delete.js.map +1 -1
  111. package/esm/cli/app/app-describe.js +7 -4
  112. package/esm/cli/app/app-describe.js.map +1 -1
  113. package/esm/cli/app/app-export.js +11 -6
  114. package/esm/cli/app/app-export.js.map +1 -1
  115. package/esm/cli/app/app-import.js +9 -5
  116. package/esm/cli/app/app-import.js.map +1 -1
  117. package/esm/cli/app/app-list.js +5 -3
  118. package/esm/cli/app/app-list.js.map +1 -1
  119. package/esm/cli/app/app.js +8 -5
  120. package/esm/cli/app/app.js.map +1 -1
  121. package/esm/cli/cmd_common.js +2 -1
  122. package/esm/cli/cmd_common.js.map +1 -1
  123. package/esm/cli/conn/conn-add.js +5 -5
  124. package/esm/cli/conn/conn-add.js.map +1 -1
  125. package/esm/cli/conn/conn-delete.js +5 -2
  126. package/esm/cli/conn/conn-delete.js.map +1 -1
  127. package/esm/cli/conn/conn-describe.js +5 -2
  128. package/esm/cli/conn/conn-describe.js.map +1 -1
  129. package/esm/cli/conn/conn-list.js +7 -3
  130. package/esm/cli/conn/conn-list.js.map +1 -1
  131. package/esm/cli/conn/conn.js +2 -3
  132. package/esm/cli/conn/conn.js.map +1 -1
  133. package/esm/cli/email/email-template-export.js +13 -12
  134. package/esm/cli/email/email-template-export.js.map +1 -1
  135. package/esm/cli/email/email-template-import.js +15 -14
  136. package/esm/cli/email/email-template-import.js.map +1 -1
  137. package/esm/cli/email/email-template-list.js +7 -7
  138. package/esm/cli/email/email-template-list.js.map +1 -1
  139. package/esm/cli/email/email-template.js.map +1 -1
  140. package/esm/cli/email/email.js +0 -2
  141. package/esm/cli/email/email.js.map +1 -1
  142. package/esm/cli/esv/esv-apply.js +9 -11
  143. package/esm/cli/esv/esv-apply.js.map +1 -1
  144. package/esm/cli/esv/esv-secret-create.js +5 -3
  145. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  146. package/esm/cli/esv/esv-secret-delete.js +9 -5
  147. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  148. package/esm/cli/esv/esv-secret-describe.js +5 -3
  149. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  150. package/esm/cli/esv/esv-secret-export.js +7 -4
  151. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  152. package/esm/cli/esv/esv-secret-import.js +7 -4
  153. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  154. package/esm/cli/esv/esv-secret-list.js +5 -3
  155. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  156. package/esm/cli/esv/esv-secret-set.js +5 -3
  157. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  158. package/esm/cli/esv/esv-secret-version-activate.js +7 -4
  159. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  160. package/esm/cli/esv/esv-secret-version-create.js +5 -3
  161. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  162. package/esm/cli/esv/esv-secret-version-deactivate.js +7 -4
  163. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  164. package/esm/cli/esv/esv-secret-version-delete.js +7 -4
  165. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  166. package/esm/cli/esv/esv-secret-version-list.js +5 -3
  167. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  168. package/esm/cli/esv/esv-secret-version.js.map +1 -1
  169. package/esm/cli/esv/esv-secret.js +4 -1
  170. package/esm/cli/esv/esv-secret.js.map +1 -1
  171. package/esm/cli/esv/esv-variable-create.js +5 -3
  172. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  173. package/esm/cli/esv/esv-variable-delete.js +9 -5
  174. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  175. package/esm/cli/esv/esv-variable-describe.js +5 -3
  176. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  177. package/esm/cli/esv/esv-variable-export.js +7 -4
  178. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  179. package/esm/cli/esv/esv-variable-import.js +7 -4
  180. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  181. package/esm/cli/esv/esv-variable-list.js +5 -3
  182. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  183. package/esm/cli/esv/esv-variable-set.js +7 -4
  184. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  185. package/esm/cli/esv/esv-variable.js +4 -1
  186. package/esm/cli/esv/esv-variable.js.map +1 -1
  187. package/esm/cli/esv/esv.js +0 -2
  188. package/esm/cli/esv/esv.js.map +1 -1
  189. package/esm/cli/idm/idm-count.js +5 -3
  190. package/esm/cli/idm/idm-count.js.map +1 -1
  191. package/esm/cli/idm/idm-export.js +11 -6
  192. package/esm/cli/idm/idm-export.js.map +1 -1
  193. package/esm/cli/idm/idm-import.js +11 -6
  194. package/esm/cli/idm/idm-import.js.map +1 -1
  195. package/esm/cli/idm/idm-list.js +7 -4
  196. package/esm/cli/idm/idm-list.js.map +1 -1
  197. package/esm/cli/idm/idm.js +2 -3
  198. package/esm/cli/idm/idm.js.map +1 -1
  199. package/esm/cli/idp/idp-export.js +11 -6
  200. package/esm/cli/idp/idp-export.js.map +1 -1
  201. package/esm/cli/idp/idp-import.js +13 -7
  202. package/esm/cli/idp/idp-import.js.map +1 -1
  203. package/esm/cli/idp/idp-list.js +7 -4
  204. package/esm/cli/idp/idp-list.js.map +1 -1
  205. package/esm/cli/idp/idp.js +0 -2
  206. package/esm/cli/idp/idp.js.map +1 -1
  207. package/esm/cli/info/info.js +0 -5
  208. package/esm/cli/info/info.js.map +1 -1
  209. package/esm/cli/journey/journey-delete.e2e.test_.js.map +1 -1
  210. package/esm/cli/journey/journey-delete.js +9 -5
  211. package/esm/cli/journey/journey-delete.js.map +1 -1
  212. package/esm/cli/journey/journey-describe.js +31 -28
  213. package/esm/cli/journey/journey-describe.js.map +1 -1
  214. package/esm/cli/journey/journey-disable.js +9 -6
  215. package/esm/cli/journey/journey-disable.js.map +1 -1
  216. package/esm/cli/journey/journey-enable.js +9 -6
  217. package/esm/cli/journey/journey-enable.js.map +1 -1
  218. package/esm/cli/journey/journey-export.js +11 -6
  219. package/esm/cli/journey/journey-export.js.map +1 -1
  220. package/esm/cli/journey/journey-import.js +13 -7
  221. package/esm/cli/journey/journey-import.js.map +1 -1
  222. package/esm/cli/journey/journey-list.e2e.test_.js.map +1 -1
  223. package/esm/cli/journey/journey-list.js +5 -3
  224. package/esm/cli/journey/journey-list.js.map +1 -1
  225. package/esm/cli/journey/journey-prune.js +5 -5
  226. package/esm/cli/journey/journey-prune.js.map +1 -1
  227. package/esm/cli/journey/journey.js +0 -2
  228. package/esm/cli/journey/journey.js.map +1 -1
  229. package/esm/cli/logging/logs-fetch.js +2 -11
  230. package/esm/cli/logging/logs-fetch.js.map +1 -1
  231. package/esm/cli/logging/logs-list.js +0 -5
  232. package/esm/cli/logging/logs-list.js.map +1 -1
  233. package/esm/cli/logging/logs-tail.js +0 -4
  234. package/esm/cli/logging/logs-tail.js.map +1 -1
  235. package/esm/cli/logging/logs.js +2 -4
  236. package/esm/cli/logging/logs.js.map +1 -1
  237. package/esm/cli/realm/realm-add-custom-domain.js +5 -3
  238. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  239. package/esm/cli/realm/realm-describe.js +5 -3
  240. package/esm/cli/realm/realm-describe.js.map +1 -1
  241. package/esm/cli/realm/realm-list.js +5 -3
  242. package/esm/cli/realm/realm-list.js.map +1 -1
  243. package/esm/cli/realm/realm-remove-custom-domain.js +5 -3
  244. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  245. package/esm/cli/realm/realm.js +5 -4
  246. package/esm/cli/realm/realm.js.map +1 -1
  247. package/esm/cli/saml/saml-cot-export.js +11 -6
  248. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  249. package/esm/cli/saml/saml-cot-import.js +13 -7
  250. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  251. package/esm/cli/saml/saml-cot-list.js +5 -3
  252. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  253. package/esm/cli/saml/saml-cot.js.map +1 -1
  254. package/esm/cli/saml/saml-delete.js +11 -6
  255. package/esm/cli/saml/saml-delete.js.map +1 -1
  256. package/esm/cli/saml/saml-describe.js +5 -3
  257. package/esm/cli/saml/saml-describe.js.map +1 -1
  258. package/esm/cli/saml/saml-export.js +13 -7
  259. package/esm/cli/saml/saml-export.js.map +1 -1
  260. package/esm/cli/saml/saml-import.js +13 -7
  261. package/esm/cli/saml/saml-import.js.map +1 -1
  262. package/esm/cli/saml/saml-list.js +5 -3
  263. package/esm/cli/saml/saml-list.js.map +1 -1
  264. package/esm/cli/saml/saml-metadata-export.js +7 -4
  265. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  266. package/esm/cli/saml/saml-metadata.js.map +1 -1
  267. package/esm/cli/saml/saml.js +0 -2
  268. package/esm/cli/saml/saml.js.map +1 -1
  269. package/esm/cli/script/script-delete.js +7 -4
  270. package/esm/cli/script/script-delete.js.map +1 -1
  271. package/esm/cli/script/script-describe.js +7 -4
  272. package/esm/cli/script/script-describe.js.map +1 -1
  273. package/esm/cli/script/script-export.js +15 -8
  274. package/esm/cli/script/script-export.js.map +1 -1
  275. package/esm/cli/script/script-import.js +7 -4
  276. package/esm/cli/script/script-import.js.map +1 -1
  277. package/esm/cli/script/script-list.js +5 -3
  278. package/esm/cli/script/script-list.js.map +1 -1
  279. package/esm/cli/script/script.js +6 -4
  280. package/esm/cli/script/script.js.map +1 -1
  281. package/esm/cli/service/service-delete.js +0 -1
  282. package/esm/cli/service/service-delete.js.map +1 -1
  283. package/esm/cli/service/service-export.js +11 -6
  284. package/esm/cli/service/service-export.js.map +1 -1
  285. package/esm/cli/service/service-import.js +13 -6
  286. package/esm/cli/service/service-import.js.map +1 -1
  287. package/esm/cli/service/service-list.js +0 -1
  288. package/esm/cli/service/service-list.js.map +1 -1
  289. package/esm/cli/service/service.js +0 -2
  290. package/esm/cli/service/service.js.map +1 -1
  291. package/esm/cli/theme/theme-delete.e2e.test_.js.map +1 -1
  292. package/esm/cli/theme/theme-delete.js +16 -14
  293. package/esm/cli/theme/theme-delete.js.map +1 -1
  294. package/esm/cli/theme/theme-export.js +17 -15
  295. package/esm/cli/theme/theme-export.js.map +1 -1
  296. package/esm/cli/theme/theme-import.js +19 -17
  297. package/esm/cli/theme/theme-import.js.map +1 -1
  298. package/esm/cli/theme/theme-list.e2e.test_.js.map +1 -1
  299. package/esm/cli/theme/theme-list.js +7 -7
  300. package/esm/cli/theme/theme-list.js.map +1 -1
  301. package/esm/cli/theme/theme.js +0 -2
  302. package/esm/cli/theme/theme.js.map +1 -1
  303. package/esm/ops/AgentOps.js +48 -126
  304. package/esm/ops/AgentOps.js.map +1 -1
  305. package/esm/ops/CirclesOfTrustOps.js +2 -2
  306. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  307. package/esm/ops/EmailTemplateOps.js +270 -6
  308. package/esm/ops/EmailTemplateOps.js.map +1 -1
  309. package/esm/ops/IdpOps.js +2 -2
  310. package/esm/ops/IdpOps.js.map +1 -1
  311. package/esm/ops/JourneyOps.js +96 -152
  312. package/esm/ops/JourneyOps.js.map +1 -1
  313. package/esm/ops/NodeOps.js +6 -12
  314. package/esm/ops/NodeOps.js.map +1 -1
  315. package/esm/ops/Saml2Ops.js +25 -78
  316. package/esm/ops/Saml2Ops.js.map +1 -1
  317. package/esm/ops/Saml2Ops.test_.js.map +1 -1
  318. package/esm/ops/ScriptOps.js +3 -3
  319. package/esm/ops/ScriptOps.js.map +1 -1
  320. package/esm/ops/ServiceOps.js +10 -31
  321. package/esm/ops/ServiceOps.js.map +1 -1
  322. package/esm/ops/ThemeOps.js +331 -2
  323. package/esm/ops/ThemeOps.js.map +1 -1
  324. package/esm/ops/utils/Wordwrap.js.map +1 -1
  325. package/esm/storage/StaticStorage.js.map +1 -1
  326. package/esm/utils/Config.js +0 -9
  327. package/esm/utils/Config.js.map +1 -1
  328. package/esm/utils/Console.js +32 -79
  329. package/esm/utils/Console.js.map +1 -1
  330. package/esm/utils/ExportImportUtils.js +46 -0
  331. package/esm/utils/ExportImportUtils.js.map +1 -0
  332. package/esm/utils/Version.js +6 -24
  333. package/esm/utils/Version.js.map +1 -1
  334. package/package.json +18 -17
@@ -1 +1 @@
1
- {"version":3,"file":"AgentOps.js","names":["fs","printMessage","createTable","debugMessage","showSpinner","succeedSpinner","failSpinner","ExportImportUtils","Agent","Utils","state","AGENT_TYPE_IG","AGENT_TYPE_JAVA","AGENT_TYPE_WEB","createAgentExportTemplate","getAgents","getIdentityGatewayAgents","getJavaAgents","getWebAgents","exportAgents","exportIdentityGatewayAgents","exportJavaAgents","exportWebAgents","exportAgent","exportIdentityGatewayAgent","exportJavaAgent","exportWebAgent","importAgents","importIdentityGatewayAgents","importJavaAgents","importWebAgents","importAgent","importIdentityGatewayAgent","importJavaAgent","importWebAgent","getTypedFilename","saveJsonToFile","titleCase","getRealmName","agentTypeToFileIdMap","listAgents","long","agents","table","agent","status","_type","_id","push","name","toString","forEach","error","stack","listIdentityGatewayAgents","listJavaAgents","listWebAgents","exportAgentsToFile","file","exportData","fileName","default","session","getRealm","exportIdentityGatewayAgentsToFile","exportJavaAgentsToFile","exportWebAgentsToFile","exportAgentToFile","agentId","exportIdentityGatewayAgentToFile","exportJavaAgentToFile","exportWebAgentToFile","exportAgentsToFiles","length","exportIdentityGatewayAgentsToFiles","exportJavaAgentsToFiles","exportWebAgentsToFiles","importAgentFromFile","verbose","getVerbose","readFile","err","data","importData","JSON","parse","importError","importFirstAgentFromFile","Object","keys","values","importAgentsFromFile","message","response","importAgentsFromFiles","names","readdirSync","agentFiles","filter","toLowerCase","endsWith","importIdentityGatewayAgentFromFile","importFirstIdentityGatewayAgentFromFile","importIdentityGatewayAgentsFromFile","importIdentityGatewayAgentsFromFiles","importJavaAgentFromFile","importFirstJavaAgentFromFile","importJavaAgentsFromFile","importJavaAgentsFromFiles","importWebAgentFromFile","importFirstWebAgentFromFile","importWebAgentsFromFile","importWebAgentsFromFiles"],"sources":["ops/AgentOps.ts"],"sourcesContent":["import fs from 'fs';\nimport {\n printMessage,\n createTable,\n debugMessage,\n showSpinner,\n succeedSpinner,\n failSpinner,\n} from '../utils/Console';\nimport { ExportImportUtils, Agent, Utils, state } from '@rockcarver/frodo-lib';\nimport { AgentExportInterface } from '@rockcarver/frodo-lib/types/ops/OpsTypes';\n\nconst {\n AGENT_TYPE_IG,\n AGENT_TYPE_JAVA,\n AGENT_TYPE_WEB,\n createAgentExportTemplate,\n getAgents,\n getIdentityGatewayAgents,\n getJavaAgents,\n getWebAgents,\n exportAgents,\n exportIdentityGatewayAgents,\n exportJavaAgents,\n exportWebAgents,\n exportAgent,\n exportIdentityGatewayAgent,\n exportJavaAgent,\n exportWebAgent,\n importAgents,\n importIdentityGatewayAgents,\n importJavaAgents,\n importWebAgents,\n importAgent,\n importIdentityGatewayAgent,\n importJavaAgent,\n importWebAgent,\n} = Agent;\nconst { getTypedFilename, saveJsonToFile, titleCase } = ExportImportUtils;\nconst { getRealmName } = Utils;\n\nconst agentTypeToFileIdMap = {\n [AGENT_TYPE_IG]: 'gateway.agent',\n [AGENT_TYPE_JAVA]: 'java.agent',\n [AGENT_TYPE_WEB]: 'web.agent',\n};\n\n/**\n * List agents\n */\nexport async function listAgents(long = false) {\n try {\n const agents = await getAgents();\n if (long) {\n const table = createTable(['Agent Id', 'Status', 'Agent Type']);\n for (const agent of agents) {\n let status = 'Unknown';\n switch (agent._type._id) {\n case 'J2EEAgent':\n status = agent['globalJ2EEAgentConfig']['status'];\n break;\n case 'WebAgent':\n status = agent['globalWebAgentConfig']['status'];\n break;\n default:\n status = agent.status as string;\n break;\n }\n table.push([\n agent._id,\n status === 'Active' ? 'Active'['brightGreen'] : status['brightRed'],\n agent._type.name,\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List identity gateway agents\n */\nexport async function listIdentityGatewayAgents(long = false) {\n try {\n const agents = await getIdentityGatewayAgents();\n if (long) {\n const table = createTable(['Gateway Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent.status === 'Active'\n ? 'Active'['brightGreen']\n : agent.status['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing gateway agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List java agents\n */\nexport async function listJavaAgents(long = false) {\n try {\n const agents = await getJavaAgents();\n if (long) {\n const table = createTable(['Java Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent['globalJ2EEAgentConfig']['status'] === 'Active'\n ? 'Active'['brightGreen']\n : agent['globalJ2EEAgentConfig']['status']['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing java agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List web agents\n */\nexport async function listWebAgents(long = false) {\n try {\n const agents = await getWebAgents();\n if (long) {\n const table = createTable(['Web Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent['globalWebAgentConfig']['status'] === 'Active'\n ? 'Active'['brightGreen']\n : agent['globalWebAgentConfig']['status']['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing web agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * Export all agents to file\n * @param {string} file file name\n */\nexport async function exportAgentsToFile(file) {\n const exportData = await exportAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.default.session.getRealm()))}Agents`,\n 'agent'\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all identity gateway agents to file\n * @param {string} file file name\n */\nexport async function exportIdentityGatewayAgentsToFile(file) {\n const exportData = await exportIdentityGatewayAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.default.session.getRealm()))}Agents`,\n agentTypeToFileIdMap[AGENT_TYPE_IG]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all java agents to file\n * @param {string} file file name\n */\nexport async function exportJavaAgentsToFile(file) {\n const exportData = await exportJavaAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.default.session.getRealm()))}Agents`,\n agentTypeToFileIdMap[AGENT_TYPE_JAVA]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all web agents to file\n * @param {string} file file name\n */\nexport async function exportWebAgentsToFile(file) {\n const exportData = await exportWebAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.default.session.getRealm()))}Agents`,\n agentTypeToFileIdMap[AGENT_TYPE_WEB]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportAgentToFile(agentId, file) {\n const exportData = await exportAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export identity gateway agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportIdentityGatewayAgentToFile(agentId, file) {\n const exportData = await exportIdentityGatewayAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export java agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportJavaAgentToFile(agentId, file) {\n const exportData = await exportJavaAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export web agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportWebAgentToFile(agentId, file) {\n const exportData = await exportWebAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all agents to separate files\n */\nexport async function exportAgentsToFiles() {\n const agents = await getAgents();\n debugMessage(`exportAgentsToFiles: ${agents.length} agents`);\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n debugMessage(`exportAgentsToFiles: exporting ${agent._id} to ${fileName}`);\n saveJsonToFile(exportData, fileName);\n }\n debugMessage(`exportAgentsToFiles: done.`);\n}\n\n/**\n * Export all identity gateway agents to separate files\n */\nexport async function exportIdentityGatewayAgentsToFiles() {\n const agents = await getIdentityGatewayAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, fileName);\n }\n}\n\n/**\n * Export all java agents to separate files\n */\nexport async function exportJavaAgentsToFiles() {\n const agents = await getJavaAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, fileName);\n }\n}\n\n/**\n * Export all web agents to separate files\n */\nexport async function exportWebAgentsToFiles() {\n const agents = await getWebAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, fileName);\n }\n}\n\n/**\n * Import an agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importAgentFromFile(agentId: string, file: string) {\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n importData = importData.agents[agentId];\n } else if (importData.agents) {\n importData = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData && agentId === importData.agents._id) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n });\n}\n\n/**\n * Import first agent from file\n * @param {string} file import file name\n */\nexport async function importFirstAgentFromFile(file: string) {\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n });\n}\n\n/**\n * Import agents from file\n * @param {String} file file name\n */\nexport async function importAgentsFromFile(file) {\n debugMessage(`importAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`importAgentsFromFile: importing ${file}`);\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`importAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all agents from separate files\n */\nexport async function importAgentsFromFiles() {\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importAgentsFromFile(file);\n }\n}\n\n/**\n * Import an identity gateway agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importIdentityGatewayAgentFromFile(\n agentId: string,\n file: string\n) {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentFromFile: start`);\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n importData = importData.agents[agentId];\n } else if (importData.agents) {\n importData = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData && agentId === importData.agents._id) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importIdentityGatewayAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentFromFile: end`);\n });\n}\n\n/**\n * Import first identity gateway agent from file\n * @param {string} file import file name\n */\nexport async function importFirstIdentityGatewayAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstIdentityGatewayAgentFromFile: start`);\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importIdentityGatewayAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstIdentityGatewayAgentFromFile: end`);\n });\n}\n\n/**\n * Import identity gateway agents from file\n * @param {String} file file name\n */\nexport async function importIdentityGatewayAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(\n `cli.AgentOps.importIdentityGatewayAgentsFromFile: importing ${file}`\n );\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importIdentityGatewayAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all identity gateway agents from separate files\n */\nexport async function importIdentityGatewayAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFiles: start`);\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importIdentityGatewayAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFiles: end`);\n}\n\n/**\n * Import an java agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importJavaAgentFromFile(agentId: string, file: string) {\n debugMessage(`cli.AgentOps.importJavaAgentFromFile: start`);\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n importData = importData.agents[agentId];\n } else if (importData.agents) {\n importData = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData && agentId === importData.agents._id) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importJavaAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importJavaAgentFromFile: end`);\n });\n}\n\n/**\n * Import first java agent from file\n * @param {string} file import file name\n */\nexport async function importFirstJavaAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstJavaAgentFromFile: start`);\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importJavaAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstJavaAgentFromFile: end`);\n });\n}\n\n/**\n * Import java agents from file\n * @param {String} file file name\n */\nexport async function importJavaAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importJavaAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`cli.AgentOps.importJavaAgentsFromFile: importing ${file}`);\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importJavaAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importJavaAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all java agents from separate files\n */\nexport async function importJavaAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importJavaAgentsFromFiles: start`);\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importJavaAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importJavaAgentsFromFiles: end`);\n}\n\n/**\n * Import an web agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importWebAgentFromFile(agentId: string, file: string) {\n debugMessage(`cli.AgentOps.importWebAgentFromFile: start`);\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n importData = importData.agents[agentId];\n } else if (importData.agents) {\n importData = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData && agentId === importData.agents._id) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importWebAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importWebAgentFromFile: end`);\n });\n}\n\n/**\n * Import web gateway agent from file\n * @param {string} file import file name\n */\nexport async function importFirstWebAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstWebAgentFromFile: start`);\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importWebAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`caught it here ${importError}`);\n }\n break;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstWebAgentFromFile: end`);\n });\n}\n\n/**\n * Import web agents from file\n * @param {String} file file name\n */\nexport async function importWebAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: importing ${file}`);\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importWebAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all web agents from separate files\n */\nexport async function importWebAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importWebAgentsFromFiles: start`);\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importWebAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importWebAgentsFromFiles: end`);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AgentOps.js","names":["fs","printMessage","createTable","debugMessage","showSpinner","succeedSpinner","failSpinner","ExportImportUtils","Agent","Utils","state","AGENT_TYPE_IG","AGENT_TYPE_JAVA","AGENT_TYPE_WEB","createAgentExportTemplate","getAgents","getIdentityGatewayAgents","getJavaAgents","getWebAgents","exportAgents","exportIdentityGatewayAgents","exportJavaAgents","exportWebAgents","exportAgent","exportIdentityGatewayAgent","exportJavaAgent","exportWebAgent","importAgents","importIdentityGatewayAgents","importJavaAgents","importWebAgents","importAgent","importIdentityGatewayAgent","importJavaAgent","importWebAgent","getTypedFilename","saveJsonToFile","titleCase","getRealmName","agentTypeToFileIdMap","listAgents","long","agents","table","agent","status","_type","_id","push","name","toString","forEach","error","stack","listIdentityGatewayAgents","listJavaAgents","listWebAgents","exportAgentsToFile","file","exportData","fileName","default","session","getRealm","exportIdentityGatewayAgentsToFile","exportJavaAgentsToFile","exportWebAgentsToFile","exportAgentToFile","agentId","exportIdentityGatewayAgentToFile","exportJavaAgentToFile","exportWebAgentToFile","exportAgentsToFiles","length","exportIdentityGatewayAgentsToFiles","exportJavaAgentsToFiles","exportWebAgentsToFiles","importAgentFromFile","verbose","getVerbose","readFile","err","data","importData","JSON","parse","importError","importFirstAgentFromFile","Object","keys","values","importAgentsFromFile","message","response","importAgentsFromFiles","names","readdirSync","agentFiles","filter","toLowerCase","endsWith","importIdentityGatewayAgentFromFile","importFirstIdentityGatewayAgentFromFile","importIdentityGatewayAgentsFromFile","importIdentityGatewayAgentsFromFiles","importJavaAgentFromFile","importFirstJavaAgentFromFile","importJavaAgentsFromFile","importJavaAgentsFromFiles","importWebAgentFromFile","importFirstWebAgentFromFile","importWebAgentsFromFile","importWebAgentsFromFiles"],"sources":["ops/AgentOps.ts"],"sourcesContent":["import fs from 'fs';\nimport {\n printMessage,\n createTable,\n debugMessage,\n showSpinner,\n succeedSpinner,\n failSpinner,\n} from '../utils/Console';\nimport { ExportImportUtils, Agent, Utils, state } from '@rockcarver/frodo-lib';\nimport { AgentExportInterface } from '@rockcarver/frodo-lib/types/ops/OpsTypes';\n\nconst {\n AGENT_TYPE_IG,\n AGENT_TYPE_JAVA,\n AGENT_TYPE_WEB,\n createAgentExportTemplate,\n getAgents,\n getIdentityGatewayAgents,\n getJavaAgents,\n getWebAgents,\n exportAgents,\n exportIdentityGatewayAgents,\n exportJavaAgents,\n exportWebAgents,\n exportAgent,\n exportIdentityGatewayAgent,\n exportJavaAgent,\n exportWebAgent,\n importAgents,\n importIdentityGatewayAgents,\n importJavaAgents,\n importWebAgents,\n importAgent,\n importIdentityGatewayAgent,\n importJavaAgent,\n importWebAgent,\n} = Agent;\nconst { getTypedFilename, saveJsonToFile, titleCase } = ExportImportUtils;\nconst { getRealmName } = Utils;\n\nconst agentTypeToFileIdMap = {\n [AGENT_TYPE_IG]: 'gateway.agent',\n [AGENT_TYPE_JAVA]: 'java.agent',\n [AGENT_TYPE_WEB]: 'web.agent',\n};\n\n/**\n * List agents\n */\nexport async function listAgents(long = false) {\n try {\n const agents = await getAgents();\n if (long) {\n const table = createTable(['Agent Id', 'Status', 'Agent Type']);\n for (const agent of agents) {\n let status = 'Unknown';\n switch (agent._type._id) {\n case 'J2EEAgent':\n status = agent['globalJ2EEAgentConfig']['status'];\n break;\n case 'WebAgent':\n status = agent['globalWebAgentConfig']['status'];\n break;\n default:\n status = agent.status as string;\n break;\n }\n table.push([\n agent._id,\n status === 'Active' ? 'Active'['brightGreen'] : status['brightRed'],\n agent._type.name,\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List identity gateway agents\n */\nexport async function listIdentityGatewayAgents(long = false) {\n try {\n const agents = await getIdentityGatewayAgents();\n if (long) {\n const table = createTable(['Gateway Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent.status === 'Active'\n ? 'Active'['brightGreen']\n : agent.status['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing gateway agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List java agents\n */\nexport async function listJavaAgents(long = false) {\n try {\n const agents = await getJavaAgents();\n if (long) {\n const table = createTable(['Java Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent['globalJ2EEAgentConfig']['status'] === 'Active'\n ? 'Active'['brightGreen']\n : agent['globalJ2EEAgentConfig']['status']['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing java agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * List web agents\n */\nexport async function listWebAgents(long = false) {\n try {\n const agents = await getWebAgents();\n if (long) {\n const table = createTable(['Web Agent Id', 'Status']);\n for (const agent of agents) {\n table.push([\n agent._id,\n agent['globalWebAgentConfig']['status'] === 'Active'\n ? 'Active'['brightGreen']\n : agent['globalWebAgentConfig']['status']['brightRed'],\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n agents.forEach((agent) => {\n printMessage(`${agent._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing web agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * Export all agents to file\n * @param {string} file file name\n */\nexport async function exportAgentsToFile(file) {\n const exportData = await exportAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.default.session.getRealm()))}Agents`,\n 'agent'\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all identity gateway agents to file\n * @param {string} file file name\n */\nexport async function exportIdentityGatewayAgentsToFile(file) {\n const exportData = await exportIdentityGatewayAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.default.session.getRealm()))}Agents`,\n agentTypeToFileIdMap[AGENT_TYPE_IG]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all java agents to file\n * @param {string} file file name\n */\nexport async function exportJavaAgentsToFile(file) {\n const exportData = await exportJavaAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.default.session.getRealm()))}Agents`,\n agentTypeToFileIdMap[AGENT_TYPE_JAVA]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all web agents to file\n * @param {string} file file name\n */\nexport async function exportWebAgentsToFile(file) {\n const exportData = await exportWebAgents();\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.default.session.getRealm()))}Agents`,\n agentTypeToFileIdMap[AGENT_TYPE_WEB]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportAgentToFile(agentId, file) {\n const exportData = await exportAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export identity gateway agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportIdentityGatewayAgentToFile(agentId, file) {\n const exportData = await exportIdentityGatewayAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export java agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportJavaAgentToFile(agentId, file) {\n const exportData = await exportJavaAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export web agent to file\n * @param {string} agentId agent id\n * @param {string} file file name\n */\nexport async function exportWebAgentToFile(agentId, file) {\n const exportData = await exportWebAgent(agentId);\n let fileName = getTypedFilename(\n agentId,\n agentTypeToFileIdMap[exportData.agents[agentId]._type._id]\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all agents to separate files\n */\nexport async function exportAgentsToFiles() {\n const agents = await getAgents();\n debugMessage(`exportAgentsToFiles: ${agents.length} agents`);\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n debugMessage(`exportAgentsToFiles: exporting ${agent._id} to ${fileName}`);\n saveJsonToFile(exportData, fileName);\n }\n debugMessage(`exportAgentsToFiles: done.`);\n}\n\n/**\n * Export all identity gateway agents to separate files\n */\nexport async function exportIdentityGatewayAgentsToFiles() {\n const agents = await getIdentityGatewayAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, fileName);\n }\n}\n\n/**\n * Export all java agents to separate files\n */\nexport async function exportJavaAgentsToFiles() {\n const agents = await getJavaAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, fileName);\n }\n}\n\n/**\n * Export all web agents to separate files\n */\nexport async function exportWebAgentsToFiles() {\n const agents = await getWebAgents();\n for (const agent of agents) {\n const fileName = getTypedFilename(\n agent._id,\n agentTypeToFileIdMap[agent._type._id]\n );\n const exportData = createAgentExportTemplate();\n exportData.agents[agent._id] = agent;\n saveJsonToFile(exportData, fileName);\n }\n}\n\n/**\n * Import an agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importAgentFromFile(agentId: string, file: string) {\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n importData = importData.agents[agentId];\n } else if (importData.agents) {\n importData = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData && agentId === importData.agents._id) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n });\n}\n\n/**\n * Import first agent from file\n * @param {string} file import file name\n */\nexport async function importFirstAgentFromFile(file: string) {\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n });\n}\n\n/**\n * Import agents from file\n * @param {String} file file name\n */\nexport async function importAgentsFromFile(file) {\n debugMessage(`importAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`importAgentsFromFile: importing ${file}`);\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`importAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all agents from separate files\n */\nexport async function importAgentsFromFiles() {\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importAgentsFromFile(file);\n }\n}\n\n/**\n * Import an identity gateway agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importIdentityGatewayAgentFromFile(\n agentId: string,\n file: string\n) {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentFromFile: start`);\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n importData = importData.agents[agentId];\n } else if (importData.agents) {\n importData = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData && agentId === importData.agents._id) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importIdentityGatewayAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentFromFile: end`);\n });\n}\n\n/**\n * Import first identity gateway agent from file\n * @param {string} file import file name\n */\nexport async function importFirstIdentityGatewayAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstIdentityGatewayAgentFromFile: start`);\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importIdentityGatewayAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstIdentityGatewayAgentFromFile: end`);\n });\n}\n\n/**\n * Import identity gateway agents from file\n * @param {String} file file name\n */\nexport async function importIdentityGatewayAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(\n `cli.AgentOps.importIdentityGatewayAgentsFromFile: importing ${file}`\n );\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importIdentityGatewayAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all identity gateway agents from separate files\n */\nexport async function importIdentityGatewayAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFiles: start`);\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importIdentityGatewayAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importIdentityGatewayAgentsFromFiles: end`);\n}\n\n/**\n * Import an java agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importJavaAgentFromFile(agentId: string, file: string) {\n debugMessage(`cli.AgentOps.importJavaAgentFromFile: start`);\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n importData = importData.agents[agentId];\n } else if (importData.agents) {\n importData = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData && agentId === importData.agents._id) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importJavaAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importJavaAgentFromFile: end`);\n });\n}\n\n/**\n * Import first java agent from file\n * @param {string} file import file name\n */\nexport async function importFirstJavaAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstJavaAgentFromFile: start`);\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importJavaAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n return;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstJavaAgentFromFile: end`);\n });\n}\n\n/**\n * Import java agents from file\n * @param {String} file file name\n */\nexport async function importJavaAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importJavaAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`cli.AgentOps.importJavaAgentsFromFile: importing ${file}`);\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importJavaAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importJavaAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all java agents from separate files\n */\nexport async function importJavaAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importJavaAgentsFromFiles: start`);\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importJavaAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importJavaAgentsFromFiles: end`);\n}\n\n/**\n * Import an web agent from file\n * @param {string} agentId agent id/name\n * @param {string} file import file name\n */\nexport async function importWebAgentFromFile(agentId: string, file: string) {\n debugMessage(`cli.AgentOps.importWebAgentFromFile: start`);\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n let importData = JSON.parse(data);\n // check if this is a file with multiple agents and get agent by id\n if (importData.agents && importData.agents[agentId]) {\n importData = importData.agents[agentId];\n } else if (importData.agents) {\n importData = null;\n }\n // if an agentId was specified, only import the matching agent\n if (importData && agentId === importData.agents._id) {\n if (!verbose) showSpinner(`Importing ${agentId}...`);\n try {\n if (verbose) showSpinner(`Importing ${agentId}...`);\n await importWebAgent(agentId, importData);\n succeedSpinner(`Imported ${agentId}.`);\n } catch (importError) {\n failSpinner(`${importError}`);\n }\n } else {\n showSpinner(`Importing ${agentId}...`);\n failSpinner(`${agentId} not found!`);\n }\n debugMessage(`cli.AgentOps.importWebAgentFromFile: end`);\n });\n}\n\n/**\n * Import web gateway agent from file\n * @param {string} file import file name\n */\nexport async function importFirstWebAgentFromFile(file: string) {\n debugMessage(`cli.AgentOps.importFirstWebAgentFromFile: start`);\n const verbose = state.default.session.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (Object.keys(importData.agents).length > 0) {\n for (const agent of Object.values(importData.agents)) {\n if (!verbose) showSpinner(`Importing ${agent['_id']}...`);\n try {\n if (verbose) showSpinner(`Importing ${agent['_id']}...`);\n await importWebAgent(agent['_id'], importData);\n succeedSpinner(`Imported ${agent['_id']}.`);\n } catch (importError) {\n failSpinner(`caught it here ${importError}`);\n }\n break;\n }\n } else {\n showSpinner(`Importing...`);\n failSpinner(`No agents found!`);\n }\n debugMessage(`cli.AgentOps.importFirstWebAgentFromFile: end`);\n });\n}\n\n/**\n * Import web agents from file\n * @param {String} file file name\n */\nexport async function importWebAgentsFromFile(file) {\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: start`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: importing ${file}`);\n const importData = JSON.parse(data) as AgentExportInterface;\n try {\n await importWebAgents(importData);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.AgentOps.importWebAgentsFromFile: end`);\n });\n}\n\n/**\n * Import all web agents from separate files\n */\nexport async function importWebAgentsFromFiles() {\n debugMessage(`cli.AgentOps.importWebAgentsFromFiles: start`);\n const names = fs.readdirSync('.');\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.agent.json')\n );\n for (const file of agentFiles) {\n await importWebAgentsFromFile(file);\n }\n debugMessage(`cli.AgentOps.importWebAgentsFromFiles: end`);\n}\n"],"mappings":"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"}
@@ -9,23 +9,23 @@ export function getOneLineDescription(cotObj) {
9
9
  const description = `[${cotObj._id['brightCyan']}]`;
10
10
  return description;
11
11
  }
12
+
12
13
  /**
13
14
  * Get markdown table header
14
15
  * @returns {string} markdown table header
15
16
  */
16
-
17
17
  export function getTableHeaderMd() {
18
18
  let markdown = '';
19
19
  markdown += '| Name/Id | Status | Trusted Providers |\n';
20
20
  markdown += '| ------- | ------ | ----------------- |';
21
21
  return markdown;
22
22
  }
23
+
23
24
  /**
24
25
  * Get a table-row of the circle of trust in markdown
25
26
  * @param {SocialIdpSkeleton} cotObj circle of trust object to describe
26
27
  * @returns {string} a table-row of the circle of trust in markdown
27
28
  */
28
-
29
29
  export function getTableRowMd(cotObj) {
30
30
  const row = `| ${cotObj._id} | ${cotObj.status === 'active' ? ':white_check_mark: `active`' : ':o: `inactive`'} | ${cotObj.trustedProviders.map(provider => provider.split('|')[0]).join('<br>')} |`;
31
31
  return row;
@@ -1 +1 @@
1
- {"version":3,"file":"CirclesOfTrustOps.js","names":["getOneLineDescription","cotObj","description","_id","getTableHeaderMd","markdown","getTableRowMd","row","status","trustedProviders","map","provider","split","join"],"sources":["ops/CirclesOfTrustOps.ts"],"sourcesContent":["// import { CircleOfTrustSkeleton } from \"@rockcarver/frodo-lib/types/api/ApiTypes\";\nimport { TypesRaw } from '@rockcarver/frodo-lib';\n\n/**\n * Get a one-line description of the circle of trust object\n * @param {CircleOfTrustSkeleton} cotObj circle of trust object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(\n cotObj: TypesRaw.CircleOfTrustSkeleton\n): string {\n const description = `[${cotObj._id['brightCyan']}]`;\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 | Trusted Providers |\\n';\n markdown += '| ------- | ------ | ----------------- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the circle of trust in markdown\n * @param {SocialIdpSkeleton} cotObj circle of trust object to describe\n * @returns {string} a table-row of the circle of trust in markdown\n */\nexport function getTableRowMd(cotObj: TypesRaw.CircleOfTrustSkeleton): string {\n const row = `| ${cotObj._id} | ${\n cotObj.status === 'active'\n ? ':white_check_mark: `active`'\n : ':o: `inactive`'\n } | ${cotObj.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('<br>')} |`;\n return row;\n}\n"],"mappings":"AAAA;;AAGA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,qBAAT,CACLC,MADK,EAEG;EACR,MAAMC,WAAW,GAAI,IAAGD,MAAM,CAACE,GAAP,CAAW,YAAX,CAAyB,GAAjD;EACA,OAAOD,WAAP;AACD;AAED;AACA;AACA;AACA;;AACA,OAAO,SAASE,gBAAT,GAAoC;EACzC,IAAIC,QAAQ,GAAG,EAAf;EACAA,QAAQ,IAAI,4CAAZ;EACAA,QAAQ,IAAI,0CAAZ;EACA,OAAOA,QAAP;AACD;AAED;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,aAAT,CAAuBL,MAAvB,EAAuE;EAC5E,MAAMM,GAAG,GAAI,KAAIN,MAAM,CAACE,GAAI,MAC1BF,MAAM,CAACO,MAAP,KAAkB,QAAlB,GACI,6BADJ,GAEI,gBACL,MAAKP,MAAM,CAACQ,gBAAP,CACHC,GADG,CACEC,QAAD,IAAcA,QAAQ,CAACC,KAAT,CAAe,GAAf,EAAoB,CAApB,CADf,EAEHC,IAFG,CAEE,MAFF,CAEU,IANhB;EAOA,OAAON,GAAP;AACD"}
1
+ {"version":3,"file":"CirclesOfTrustOps.js","names":["getOneLineDescription","cotObj","description","_id","getTableHeaderMd","markdown","getTableRowMd","row","status","trustedProviders","map","provider","split","join"],"sources":["ops/CirclesOfTrustOps.ts"],"sourcesContent":["// import { CircleOfTrustSkeleton } from \"@rockcarver/frodo-lib/types/api/ApiTypes\";\nimport { TypesRaw } from '@rockcarver/frodo-lib';\n\n/**\n * Get a one-line description of the circle of trust object\n * @param {CircleOfTrustSkeleton} cotObj circle of trust object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(\n cotObj: TypesRaw.CircleOfTrustSkeleton\n): string {\n const description = `[${cotObj._id['brightCyan']}]`;\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 | Trusted Providers |\\n';\n markdown += '| ------- | ------ | ----------------- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the circle of trust in markdown\n * @param {SocialIdpSkeleton} cotObj circle of trust object to describe\n * @returns {string} a table-row of the circle of trust in markdown\n */\nexport function getTableRowMd(cotObj: TypesRaw.CircleOfTrustSkeleton): string {\n const row = `| ${cotObj._id} | ${\n cotObj.status === 'active'\n ? ':white_check_mark: `active`'\n : ':o: `inactive`'\n } | ${cotObj.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('<br>')} |`;\n return row;\n}\n"],"mappings":"AAAA;;AAGA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,qBAAqB,CACnCC,MAAsC,EAC9B;EACR,MAAMC,WAAW,GAAI,IAAGD,MAAM,CAACE,GAAG,CAAC,YAAY,CAAE,GAAE;EACnD,OAAOD,WAAW;AACpB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASE,gBAAgB,GAAW;EACzC,IAAIC,QAAQ,GAAG,EAAE;EACjBA,QAAQ,IAAI,4CAA4C;EACxDA,QAAQ,IAAI,0CAA0C;EACtD,OAAOA,QAAQ;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAa,CAACL,MAAsC,EAAU;EAC5E,MAAMM,GAAG,GAAI,KAAIN,MAAM,CAACE,GAAI,MAC1BF,MAAM,CAACO,MAAM,KAAK,QAAQ,GACtB,6BAA6B,GAC7B,gBACL,MAAKP,MAAM,CAACQ,gBAAgB,CAC1BC,GAAG,CAAEC,QAAQ,IAAKA,QAAQ,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CACzCC,IAAI,CAAC,MAAM,CAAE,IAAG;EACnB,OAAON,GAAG;AACZ"}
@@ -1,36 +1,300 @@
1
- import { EmailTemplateRaw } from '@rockcarver/frodo-lib';
1
+ import fs from 'fs';
2
+ import { EmailTemplate, ExportImportUtils } from '@rockcarver/frodo-lib';
3
+ import { getTypedFilename, saveJsonToFile } from '../utils/ExportImportUtils';
4
+ import { createProgressIndicator, updateProgressIndicator, stopProgressIndicator, printMessage, createTable } from '../utils/Console';
5
+ import wordwrap from './utils/Wordwrap';
6
+ const EMAIL_TEMPLATE_FILE_TYPE = 'template.email';
7
+ const {
8
+ EMAIL_TEMPLATE_TYPE,
9
+ getEmailTemplate,
10
+ getEmailTemplates,
11
+ putEmailTemplate
12
+ } = EmailTemplate;
13
+ const {
14
+ validateImport
15
+ } = ExportImportUtils;
16
+ const regexEmailTemplateType = new RegExp(`${EMAIL_TEMPLATE_TYPE}/`, 'g');
17
+
18
+ // use a function vs a template variable to avoid problems in loops
19
+ function getFileDataTemplate() {
20
+ return {
21
+ meta: {},
22
+ emailTemplate: {}
23
+ };
24
+ }
25
+
2
26
  /**
3
27
  * Get a one-line description of the email template
4
28
  * @param {EmailTemplateSkeleton} templateObj email template object to describe
5
29
  * @returns {string} a one-line description
6
30
  */
7
-
8
31
  export function getOneLineDescription(templateObj) {
9
32
  const description = `[${templateObj._id.split('/')[1]['brightCyan']}] ${templateObj.displayName ? templateObj.displayName : ''} - ${templateObj.defaultLocale ? templateObj.subject[templateObj.defaultLocale] : Object.values(templateObj.subject)[0]}`;
10
33
  return description;
11
34
  }
35
+
12
36
  /**
13
37
  * Get markdown table header
14
38
  * @returns {string} markdown table header
15
39
  */
16
-
17
40
  export function getTableHeaderMd() {
18
41
  let markdown = '';
19
42
  markdown += '| Display Name | Locale(s) | Subject | Id |\n';
20
43
  markdown += '| ------------ | --------- | ------- | ---|';
21
44
  return markdown;
22
45
  }
46
+
23
47
  /**
24
48
  * Get a table-row of the email template in markdown
25
49
  * @param {EmailTemplateSkeleton} templateObj email template object to describe
26
50
  * @returns {string} a table-row of the email template in markdown
27
51
  */
28
-
29
52
  export function getTableRowMd(templateObj) {
30
- const templateId = templateObj._id.replace(`${EmailTemplateRaw.EMAIL_TEMPLATE_TYPE}/`, '');
31
-
53
+ const templateId = templateObj._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');
32
54
  const locales = `${templateObj.defaultLocale}${Object.keys(templateObj.subject).length > 1 ? ` (${Object.keys(templateObj.subject).filter(locale => locale !== templateObj.defaultLocale).join(',')})` : ''}`;
33
55
  const row = `| ${templateObj.name ? templateObj.name : templateId} | ${locales} | ${templateObj.subject[templateObj.defaultLocale]} | \`${templateId}\` |`;
34
56
  return row;
35
57
  }
58
+
59
+ /**
60
+ * List email templates
61
+ * @param {boolean} long Long list format with details
62
+ * @return {Promise<unknown[]>} a promise that resolves to an array of email template objects
63
+ */
64
+ export async function listEmailTemplates(long = false) {
65
+ let emailTemplates = [];
66
+ try {
67
+ emailTemplates = (await getEmailTemplates()).result;
68
+ } catch (error) {
69
+ printMessage(`Error retrieving email templates: ${error.message}`, 'error');
70
+ }
71
+ emailTemplates.sort((a, b) => a._id.localeCompare(b._id));
72
+ if (!long) {
73
+ for (const [, emailTemplate] of emailTemplates.entries()) {
74
+ printMessage(`${emailTemplate._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '')}`, 'data');
75
+ }
76
+ } else {
77
+ const table = createTable(['Id'['brightCyan'], 'Name'['brightCyan'], 'Status'['brightCyan'], 'Locale(s)'['brightCyan'], 'From'['brightCyan'], 'Subject'['brightCyan']]);
78
+ for (const emailTemplate of emailTemplates) {
79
+ table.push([
80
+ // Id
81
+ `${emailTemplate._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '')}`,
82
+ // Name
83
+ `${emailTemplate.displayName ? emailTemplate.displayName : ''}`,
84
+ // Status
85
+ emailTemplate.enabled === false ? 'disabled'['brightRed'] : 'enabled'['brightGreen'],
86
+ // Locale(s)
87
+ `${emailTemplate.defaultLocale}${Object.keys(emailTemplate.subject).length > 1 ? ` (${Object.keys(emailTemplate.subject).filter(locale => locale !== emailTemplate.defaultLocale).join(',')})` : ''}`,
88
+ // From
89
+ `${emailTemplate.from ? emailTemplate.from : ''}`,
90
+ // Subject
91
+ wordwrap(emailTemplate.subject[emailTemplate.defaultLocale], 40)]);
92
+ }
93
+ printMessage(table.toString(), 'data');
94
+ }
95
+ return emailTemplates;
96
+ }
97
+
98
+ /**
99
+ * Export single email template to a file
100
+ * @param {string} templateId email template id to export
101
+ * @param {string} file filename where to export the template data
102
+ */
103
+ export async function exportEmailTemplateToFile(templateId, file) {
104
+ let fileName = file;
105
+ if (!fileName) {
106
+ fileName = getTypedFilename(templateId, EMAIL_TEMPLATE_FILE_TYPE);
107
+ }
108
+ createProgressIndicator('determinate', 1, `Exporting ${templateId}`);
109
+ try {
110
+ const templateData = await getEmailTemplate(templateId);
111
+ updateProgressIndicator(`Writing file ${fileName}`);
112
+ const fileData = getFileDataTemplate();
113
+ fileData.emailTemplate[templateId] = templateData;
114
+ saveJsonToFile(fileData, fileName);
115
+ stopProgressIndicator(`Exported ${templateId['brightCyan']} to ${fileName['brightCyan']}.`);
116
+ } catch (err) {
117
+ stopProgressIndicator(`${err}`);
118
+ printMessage(err, 'error');
119
+ }
120
+ }
121
+
122
+ /**
123
+ * Export all email templates to file
124
+ * @param {String} file optional filename
125
+ */
126
+ export async function exportEmailTemplatesToFile(file) {
127
+ let fileName = file;
128
+ if (!fileName) {
129
+ fileName = getTypedFilename(`allEmailTemplates`, EMAIL_TEMPLATE_FILE_TYPE);
130
+ }
131
+ try {
132
+ const fileData = getFileDataTemplate();
133
+ const response = await getEmailTemplates();
134
+ const templates = response.result;
135
+ createProgressIndicator('determinate', response.resultCount, 'Exporting email templates');
136
+ for (const template of templates) {
137
+ const templateId = template._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');
138
+ updateProgressIndicator(`Exporting ${templateId}`);
139
+ fileData.emailTemplate[templateId] = template;
140
+ }
141
+ saveJsonToFile(fileData, fileName);
142
+ stopProgressIndicator(`${response.resultCount} templates exported to ${fileName}.`);
143
+ } catch (err) {
144
+ stopProgressIndicator(`${err}`);
145
+ printMessage(err, 'error');
146
+ }
147
+ }
148
+
149
+ /**
150
+ * Export all email templates to separate files
151
+ */
152
+ export async function exportEmailTemplatesToFiles() {
153
+ try {
154
+ const response = await getEmailTemplates();
155
+ const templates = response.result;
156
+ createProgressIndicator('determinate', response.resultCount, 'Exporting email templates');
157
+ for (const template of templates) {
158
+ const templateId = template._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');
159
+ const fileName = getTypedFilename(templateId, EMAIL_TEMPLATE_FILE_TYPE);
160
+ const fileData = getFileDataTemplate();
161
+ updateProgressIndicator(`Exporting ${templateId}`);
162
+ fileData.emailTemplate[templateId] = template;
163
+ saveJsonToFile(fileData, fileName);
164
+ }
165
+ stopProgressIndicator(`${response.resultCount} templates exported.`);
166
+ } catch (err) {
167
+ stopProgressIndicator(`${err}`);
168
+ printMessage(err, 'error');
169
+ }
170
+ }
171
+
172
+ /**
173
+ * Import email template by id from file
174
+ * @param {String} templateId email template id
175
+ * @param {String} file optional filename
176
+ */
177
+ export async function importEmailTemplateFromFile(templateId, file) {
178
+ // eslint-disable-next-line no-param-reassign
179
+ templateId = templateId.replaceAll(`${EMAIL_TEMPLATE_TYPE}/`, '');
180
+ fs.readFile(file, 'utf8', async (err, data) => {
181
+ if (err) throw err;
182
+ const fileData = JSON.parse(data);
183
+ if (validateImport(fileData.meta)) {
184
+ createProgressIndicator('determinate', 1, `Importing ${templateId}`);
185
+ if (fileData.emailTemplate[templateId]) {
186
+ try {
187
+ await putEmailTemplate(templateId, fileData.emailTemplate[templateId]);
188
+ updateProgressIndicator(`Importing ${templateId}`);
189
+ stopProgressIndicator(`Imported ${templateId}`);
190
+ } catch (putEmailTemplateError) {
191
+ stopProgressIndicator(`${putEmailTemplateError}`);
192
+ printMessage(putEmailTemplateError, 'error');
193
+ }
194
+ } else {
195
+ stopProgressIndicator(`Email template ${templateId.brightCyan} not found in ${file.brightCyan}!`);
196
+ printMessage(`Email template ${templateId.brightCyan} not found in ${file.brightCyan}!`, 'error');
197
+ }
198
+ } else {
199
+ printMessage('Import validation failed...', 'error');
200
+ }
201
+ });
202
+ }
203
+
204
+ /**
205
+ * Import all email templates from file
206
+ * @param {String} file optional filename
207
+ */
208
+ export async function importEmailTemplatesFromFile(file) {
209
+ fs.readFile(file, 'utf8', async (err, data) => {
210
+ if (err) throw err;
211
+ const fileData = JSON.parse(data);
212
+ if (validateImport(fileData.meta)) {
213
+ createProgressIndicator('determinate', Object.keys(fileData.emailTemplate).length, `Importing email templates`);
214
+ for (const id in fileData.emailTemplate) {
215
+ if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
216
+ const templateId = id.replace(regexEmailTemplateType, '');
217
+ try {
218
+ // eslint-disable-next-line no-await-in-loop
219
+ await putEmailTemplate(templateId, fileData.emailTemplate[templateId]);
220
+ updateProgressIndicator(`Imported ${templateId}`);
221
+ } catch (putEmailTemplateError) {
222
+ printMessage(`\nError importing ${templateId}`, 'error');
223
+ printMessage(putEmailTemplateError.response.data, 'error');
224
+ }
225
+ }
226
+ }
227
+ stopProgressIndicator(`Done.`);
228
+ } else {
229
+ printMessage('Import validation failed...', 'error');
230
+ }
231
+ });
232
+ }
233
+
234
+ /**
235
+ * Import all email templates from separate files
236
+ */
237
+ export async function importEmailTemplatesFromFiles() {
238
+ const names = fs.readdirSync('.');
239
+ const jsonFiles = names.filter(name => name.toLowerCase().endsWith(`${EMAIL_TEMPLATE_FILE_TYPE}.json`));
240
+ createProgressIndicator('determinate', jsonFiles.length, 'Importing email templates...');
241
+ let total = 0;
242
+ let totalErrors = 0;
243
+ for (const file of jsonFiles) {
244
+ const data = fs.readFileSync(file, 'utf8');
245
+ const fileData = JSON.parse(data);
246
+ if (validateImport(fileData.meta)) {
247
+ total += Object.keys(fileData.emailTemplate).length;
248
+ let errors = 0;
249
+ for (const id in fileData.emailTemplate) {
250
+ if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
251
+ const templateId = id.replace(regexEmailTemplateType, '');
252
+ try {
253
+ // eslint-disable-next-line no-await-in-loop
254
+ await putEmailTemplate(templateId, fileData.emailTemplate[templateId]);
255
+ } catch (putEmailTemplateError) {
256
+ errors += 1;
257
+ printMessage(`\nError importing ${templateId}`, 'error');
258
+ printMessage(putEmailTemplateError.response.data, 'error');
259
+ }
260
+ }
261
+ }
262
+ totalErrors += errors;
263
+ updateProgressIndicator(`Imported ${file}`);
264
+ } else {
265
+ printMessage(`Validation of ${file} failed!`, 'error');
266
+ }
267
+ }
268
+ stopProgressIndicator(`Imported ${total - totalErrors} of ${total} email template(s) from ${jsonFiles.length} file(s).`);
269
+ }
270
+
271
+ /**
272
+ * Import first email template from file
273
+ * @param {String} file optional filename
274
+ */
275
+ export async function importFirstEmailTemplateFromFile(file) {
276
+ fs.readFile(file, 'utf8', async (err, data) => {
277
+ if (err) throw err;
278
+ const fileData = JSON.parse(data);
279
+ if (validateImport(fileData.meta)) {
280
+ createProgressIndicator('determinate', 1, `Importing first email template`);
281
+ for (const id in fileData.emailTemplate) {
282
+ if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
283
+ try {
284
+ await putEmailTemplate(id.replace(regexEmailTemplateType, ''), fileData.emailTemplate[id]);
285
+ updateProgressIndicator(`Imported ${id}`);
286
+ stopProgressIndicator(`Imported ${id}`);
287
+ } catch (putEmailTemplateError) {
288
+ stopProgressIndicator(`Error importing email template ${id}`);
289
+ printMessage(`\nError importing email template ${id}`, 'error');
290
+ printMessage(putEmailTemplateError.response.data, 'error');
291
+ }
292
+ break;
293
+ }
294
+ }
295
+ } else {
296
+ printMessage('Import validation failed...', 'error');
297
+ }
298
+ });
299
+ }
36
300
  //# sourceMappingURL=EmailTemplateOps.js.map