@rockcarver/frodo-cli 2.0.0-3 → 2.0.0-31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/CHANGELOG.md +275 -4
  2. package/esm/app.js +20 -5
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/FrodoCommand.js +28 -6
  5. package/esm/cli/FrodoCommand.js.map +1 -1
  6. package/esm/cli/_template/something-delete.js +7 -4
  7. package/esm/cli/_template/something-delete.js.map +1 -1
  8. package/esm/cli/_template/something-describe.js +7 -4
  9. package/esm/cli/_template/something-describe.js.map +1 -1
  10. package/esm/cli/_template/something-else-delete.js +7 -4
  11. package/esm/cli/_template/something-else-delete.js.map +1 -1
  12. package/esm/cli/_template/something-else-describe.js +7 -4
  13. package/esm/cli/_template/something-else-describe.js.map +1 -1
  14. package/esm/cli/_template/something-else-export.js +7 -4
  15. package/esm/cli/_template/something-else-export.js.map +1 -1
  16. package/esm/cli/_template/something-else-import.js +7 -4
  17. package/esm/cli/_template/something-else-import.js.map +1 -1
  18. package/esm/cli/_template/something-else-list.js +7 -4
  19. package/esm/cli/_template/something-else-list.js.map +1 -1
  20. package/esm/cli/_template/something-else.js +1 -1
  21. package/esm/cli/_template/something-else.js.map +1 -1
  22. package/esm/cli/_template/something-export.js +7 -4
  23. package/esm/cli/_template/something-export.js.map +1 -1
  24. package/esm/cli/_template/something-import.js +7 -4
  25. package/esm/cli/_template/something-import.js.map +1 -1
  26. package/esm/cli/_template/something-list.js +7 -4
  27. package/esm/cli/_template/something-list.js.map +1 -1
  28. package/esm/cli/_template/something-other-delete.js +7 -4
  29. package/esm/cli/_template/something-other-delete.js.map +1 -1
  30. package/esm/cli/_template/something-other-describe.js +7 -4
  31. package/esm/cli/_template/something-other-describe.js.map +1 -1
  32. package/esm/cli/_template/something-other-export.js +7 -4
  33. package/esm/cli/_template/something-other-export.js.map +1 -1
  34. package/esm/cli/_template/something-other-import.js +7 -4
  35. package/esm/cli/_template/something-other-import.js.map +1 -1
  36. package/esm/cli/_template/something-other-list.js +7 -4
  37. package/esm/cli/_template/something-other-list.js.map +1 -1
  38. package/esm/cli/_template/something-other.js +1 -1
  39. package/esm/cli/_template/something-other.js.map +1 -1
  40. package/esm/cli/_template/something.js +2 -2
  41. package/esm/cli/_template/something.js.map +1 -1
  42. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +10 -4
  43. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
  44. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +14 -7
  45. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  46. package/esm/cli/admin/admin-federation-export.js +45 -0
  47. package/esm/cli/admin/admin-federation-export.js.map +1 -0
  48. package/esm/cli/admin/admin-federation-import.js +49 -0
  49. package/esm/cli/admin/admin-federation-import.js.map +1 -0
  50. package/esm/cli/admin/admin-federation-list.js +29 -0
  51. package/esm/cli/admin/admin-federation-list.js.map +1 -0
  52. package/esm/cli/admin/admin-federation.js +13 -0
  53. package/esm/cli/admin/admin-federation.js.map +1 -0
  54. package/esm/cli/admin/admin-get-access-token.js +12 -6
  55. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  56. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +13 -7
  57. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  58. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +11 -5
  59. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  60. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +11 -5
  61. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  62. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +11 -5
  63. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  64. package/esm/cli/admin/admin-list-static-user-mappings.js +12 -6
  65. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  66. package/esm/cli/admin/admin-remove-static-user-mapping.js +12 -5
  67. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  68. package/esm/cli/admin/admin-repair-org-model.js +11 -5
  69. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  70. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +12 -6
  71. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  72. package/esm/cli/admin/admin-show-generic-extension-attributes.js +11 -5
  73. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  74. package/esm/cli/admin/admin-train-auto-access-model.js +33 -0
  75. package/esm/cli/admin/admin-train-auto-access-model.js.map +1 -0
  76. package/esm/cli/admin/admin.js +6 -2
  77. package/esm/cli/admin/admin.js.map +1 -1
  78. package/esm/cli/agent/agent-delete.js +13 -6
  79. package/esm/cli/agent/agent-delete.js.map +1 -1
  80. package/esm/cli/agent/agent-describe.js +7 -4
  81. package/esm/cli/agent/agent-describe.js.map +1 -1
  82. package/esm/cli/agent/agent-export.js +8 -5
  83. package/esm/cli/agent/agent-export.js.map +1 -1
  84. package/esm/cli/agent/agent-gateway-delete.js +13 -6
  85. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  86. package/esm/cli/agent/agent-gateway-describe.js +7 -4
  87. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  88. package/esm/cli/agent/agent-gateway-export.js +8 -5
  89. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  90. package/esm/cli/agent/agent-gateway-import.js +8 -5
  91. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  92. package/esm/cli/agent/agent-gateway-list.js +7 -4
  93. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  94. package/esm/cli/agent/agent-gateway.js +1 -1
  95. package/esm/cli/agent/agent-gateway.js.map +1 -1
  96. package/esm/cli/agent/agent-import.js +8 -5
  97. package/esm/cli/agent/agent-import.js.map +1 -1
  98. package/esm/cli/agent/agent-java-delete.js +13 -6
  99. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  100. package/esm/cli/agent/agent-java-describe.js +7 -4
  101. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  102. package/esm/cli/agent/agent-java-export.js +8 -5
  103. package/esm/cli/agent/agent-java-export.js.map +1 -1
  104. package/esm/cli/agent/agent-java-import.js +8 -5
  105. package/esm/cli/agent/agent-java-import.js.map +1 -1
  106. package/esm/cli/agent/agent-java-list.js +7 -4
  107. package/esm/cli/agent/agent-java-list.js.map +1 -1
  108. package/esm/cli/agent/agent-java.js +1 -1
  109. package/esm/cli/agent/agent-java.js.map +1 -1
  110. package/esm/cli/agent/agent-list.js +7 -4
  111. package/esm/cli/agent/agent-list.js.map +1 -1
  112. package/esm/cli/agent/agent-web-delete.js +13 -6
  113. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  114. package/esm/cli/agent/agent-web-describe.js +7 -4
  115. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  116. package/esm/cli/agent/agent-web-export.js +8 -5
  117. package/esm/cli/agent/agent-web-export.js.map +1 -1
  118. package/esm/cli/agent/agent-web-import.js +8 -5
  119. package/esm/cli/agent/agent-web-import.js.map +1 -1
  120. package/esm/cli/agent/agent-web-list.js +7 -4
  121. package/esm/cli/agent/agent-web-list.js.map +1 -1
  122. package/esm/cli/agent/agent-web.js +3 -3
  123. package/esm/cli/agent/agent-web.js.map +1 -1
  124. package/esm/cli/agent/agent.js +2 -2
  125. package/esm/cli/agent/agent.js.map +1 -1
  126. package/esm/cli/app/app-delete.js +27 -8
  127. package/esm/cli/app/app-delete.js.map +1 -1
  128. package/esm/cli/app/app-describe.js +9 -5
  129. package/esm/cli/app/app-describe.js.map +1 -1
  130. package/esm/cli/app/app-export.js +17 -13
  131. package/esm/cli/app/app-export.js.map +1 -1
  132. package/esm/cli/app/app-import.js +21 -17
  133. package/esm/cli/app/app-import.js.map +1 -1
  134. package/esm/cli/app/app-list.js +12 -8
  135. package/esm/cli/app/app-list.js.map +1 -1
  136. package/esm/cli/app/app.js +8 -12
  137. package/esm/cli/app/app.js.map +1 -1
  138. package/esm/cli/authn/authn-describe.js +30 -0
  139. package/esm/cli/authn/authn-describe.js.map +1 -0
  140. package/esm/cli/authn/authn-export.js +26 -0
  141. package/esm/cli/authn/authn-export.js.map +1 -0
  142. package/esm/cli/authn/authn-import.js +26 -0
  143. package/esm/cli/authn/authn-import.js.map +1 -0
  144. package/esm/cli/authn/authn.js +12 -0
  145. package/esm/cli/authn/authn.js.map +1 -0
  146. package/esm/cli/authz/authz-policy-delete.js +11 -8
  147. package/esm/cli/authz/authz-policy-delete.js.map +1 -1
  148. package/esm/cli/authz/authz-policy-describe.js +8 -5
  149. package/esm/cli/authz/authz-policy-describe.js.map +1 -1
  150. package/esm/cli/authz/authz-policy-export.js +12 -9
  151. package/esm/cli/authz/authz-policy-export.js.map +1 -1
  152. package/esm/cli/authz/authz-policy-import.js +10 -7
  153. package/esm/cli/authz/authz-policy-import.js.map +1 -1
  154. package/esm/cli/authz/authz-policy-list.js +9 -6
  155. package/esm/cli/authz/authz-policy-list.js.map +1 -1
  156. package/esm/cli/authz/authz-policy.js +1 -1
  157. package/esm/cli/authz/authz-policy.js.map +1 -1
  158. package/esm/cli/authz/authz-set-delete.js +10 -7
  159. package/esm/cli/authz/authz-set-delete.js.map +1 -1
  160. package/esm/cli/authz/authz-set-describe.js +8 -5
  161. package/esm/cli/authz/authz-set-describe.js.map +1 -1
  162. package/esm/cli/authz/authz-set-export.js +10 -7
  163. package/esm/cli/authz/authz-set-export.js.map +1 -1
  164. package/esm/cli/authz/authz-set-import.js +10 -7
  165. package/esm/cli/authz/authz-set-import.js.map +1 -1
  166. package/esm/cli/authz/authz-set-list.js +7 -4
  167. package/esm/cli/authz/authz-set-list.js.map +1 -1
  168. package/esm/cli/authz/authz-set.js +1 -1
  169. package/esm/cli/authz/authz-set.js.map +1 -1
  170. package/esm/cli/authz/authz-type-delete.js +12 -9
  171. package/esm/cli/authz/authz-type-delete.js.map +1 -1
  172. package/esm/cli/authz/authz-type-describe.js +9 -6
  173. package/esm/cli/authz/authz-type-describe.js.map +1 -1
  174. package/esm/cli/authz/authz-type-export.js +11 -8
  175. package/esm/cli/authz/authz-type-export.js.map +1 -1
  176. package/esm/cli/authz/authz-type-import.js +12 -9
  177. package/esm/cli/authz/authz-type-import.js.map +1 -1
  178. package/esm/cli/authz/authz-type-list.js +8 -5
  179. package/esm/cli/authz/authz-type-list.js.map +1 -1
  180. package/esm/cli/authz/authz-type.js +1 -1
  181. package/esm/cli/authz/authz-type.js.map +1 -1
  182. package/esm/cli/authz/authz.js +2 -2
  183. package/esm/cli/authz/authz.js.map +1 -1
  184. package/esm/cli/conn/conn-delete.js +2 -2
  185. package/esm/cli/conn/conn-delete.js.map +1 -1
  186. package/esm/cli/conn/conn-describe.js +2 -2
  187. package/esm/cli/conn/conn-describe.js.map +1 -1
  188. package/esm/cli/conn/conn-list.js +2 -2
  189. package/esm/cli/conn/conn-list.js.map +1 -1
  190. package/esm/cli/conn/conn-save.js +31 -15
  191. package/esm/cli/conn/conn-save.js.map +1 -1
  192. package/esm/cli/conn/conn.js +2 -2
  193. package/esm/cli/conn/conn.js.map +1 -1
  194. package/esm/cli/email/email-template-export.js +10 -7
  195. package/esm/cli/email/email-template-export.js.map +1 -1
  196. package/esm/cli/email/email-template-import.js +11 -8
  197. package/esm/cli/email/email-template-import.js.map +1 -1
  198. package/esm/cli/email/email-template-list.js +8 -5
  199. package/esm/cli/email/email-template-list.js.map +1 -1
  200. package/esm/cli/email/email-template.js +1 -1
  201. package/esm/cli/email/email-template.js.map +1 -1
  202. package/esm/cli/email/email.js +2 -2
  203. package/esm/cli/email/email.js.map +1 -1
  204. package/esm/cli/esv/esv-apply.js +18 -8
  205. package/esm/cli/esv/esv-apply.js.map +1 -1
  206. package/esm/cli/esv/esv-secret-create.js +8 -5
  207. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  208. package/esm/cli/esv/esv-secret-delete.js +9 -6
  209. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  210. package/esm/cli/esv/esv-secret-describe.js +8 -5
  211. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  212. package/esm/cli/esv/esv-secret-export.js +19 -5
  213. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  214. package/esm/cli/esv/esv-secret-import.js +7 -4
  215. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  216. package/esm/cli/esv/esv-secret-list.js +8 -5
  217. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  218. package/esm/cli/esv/esv-secret-set.js +8 -5
  219. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  220. package/esm/cli/esv/esv-secret-version-activate.js +8 -5
  221. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  222. package/esm/cli/esv/esv-secret-version-create.js +9 -6
  223. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  224. package/esm/cli/esv/esv-secret-version-deactivate.js +8 -5
  225. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  226. package/esm/cli/esv/esv-secret-version-delete.js +9 -6
  227. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  228. package/esm/cli/esv/esv-secret-version-list.js +8 -5
  229. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  230. package/esm/cli/esv/esv-secret-version.js +1 -1
  231. package/esm/cli/esv/esv-secret-version.js.map +1 -1
  232. package/esm/cli/esv/esv-secret.js +2 -3
  233. package/esm/cli/esv/esv-secret.js.map +1 -1
  234. package/esm/cli/esv/esv-variable-create.js +10 -6
  235. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  236. package/esm/cli/esv/esv-variable-delete.js +10 -7
  237. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  238. package/esm/cli/esv/esv-variable-describe.js +10 -7
  239. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  240. package/esm/cli/esv/esv-variable-export.js +20 -6
  241. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  242. package/esm/cli/esv/esv-variable-import.js +7 -4
  243. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  244. package/esm/cli/esv/esv-variable-list.js +8 -5
  245. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  246. package/esm/cli/esv/esv-variable-set.js +8 -5
  247. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  248. package/esm/cli/esv/esv-variable.js +2 -3
  249. package/esm/cli/esv/esv-variable.js.map +1 -1
  250. package/esm/cli/esv/esv.js +2 -2
  251. package/esm/cli/esv/esv.js.map +1 -1
  252. package/esm/cli/idm/idm-count.js +9 -6
  253. package/esm/cli/idm/idm-count.js.map +1 -1
  254. package/esm/cli/idm/idm-export.js +21 -12
  255. package/esm/cli/idm/idm-export.js.map +1 -1
  256. package/esm/cli/idm/idm-import.js +22 -13
  257. package/esm/cli/idm/idm-import.js.map +1 -1
  258. package/esm/cli/idm/idm-list.js +7 -4
  259. package/esm/cli/idm/idm-list.js.map +1 -1
  260. package/esm/cli/idm/idm.js +2 -2
  261. package/esm/cli/idm/idm.js.map +1 -1
  262. package/esm/cli/idp/idp-export.js +11 -8
  263. package/esm/cli/idp/idp-export.js.map +1 -1
  264. package/esm/cli/idp/idp-import.js +15 -12
  265. package/esm/cli/idp/idp-import.js.map +1 -1
  266. package/esm/cli/idp/idp-list.js +7 -4
  267. package/esm/cli/idp/idp-list.js.map +1 -1
  268. package/esm/cli/idp/idp.js +2 -2
  269. package/esm/cli/idp/idp.js.map +1 -1
  270. package/esm/cli/info/info.js +16 -10
  271. package/esm/cli/info/info.js.map +1 -1
  272. package/esm/cli/journey/journey-delete.js +8 -5
  273. package/esm/cli/journey/journey-delete.js.map +1 -1
  274. package/esm/cli/journey/journey-describe.js +19 -10
  275. package/esm/cli/journey/journey-describe.js.map +1 -1
  276. package/esm/cli/journey/journey-disable.js +12 -6
  277. package/esm/cli/journey/journey-disable.js.map +1 -1
  278. package/esm/cli/journey/journey-enable.js +12 -6
  279. package/esm/cli/journey/journey-enable.js.map +1 -1
  280. package/esm/cli/journey/journey-export.js +21 -9
  281. package/esm/cli/journey/journey-export.js.map +1 -1
  282. package/esm/cli/journey/journey-import.js +11 -8
  283. package/esm/cli/journey/journey-import.js.map +1 -1
  284. package/esm/cli/journey/journey-list.js +6 -3
  285. package/esm/cli/journey/journey-list.js.map +1 -1
  286. package/esm/cli/journey/journey-prune.js +23 -12
  287. package/esm/cli/journey/journey-prune.js.map +1 -1
  288. package/esm/cli/journey/journey.js +2 -2
  289. package/esm/cli/journey/journey.js.map +1 -1
  290. package/esm/cli/{logging/logs-fetch.js → log/log-fetch.js} +68 -36
  291. package/esm/cli/log/log-fetch.js.map +1 -0
  292. package/esm/cli/log/log-key-delete.js +35 -0
  293. package/esm/cli/log/log-key-delete.js.map +1 -0
  294. package/esm/cli/log/log-key-describe.js +22 -0
  295. package/esm/cli/log/log-key-describe.js.map +1 -0
  296. package/esm/cli/log/log-key-list.js +26 -0
  297. package/esm/cli/log/log-key-list.js.map +1 -0
  298. package/esm/cli/log/log-key.js +8 -0
  299. package/esm/cli/log/log-key.js.map +1 -0
  300. package/esm/cli/log/log-list.js +80 -0
  301. package/esm/cli/log/log-list.js.map +1 -0
  302. package/esm/cli/log/log-tail.js +77 -0
  303. package/esm/cli/log/log-tail.js.map +1 -0
  304. package/esm/cli/{logging/logs.js → log/log.js} +6 -3
  305. package/esm/cli/log/log.js.map +1 -0
  306. package/esm/cli/oauth/oauth-client-delete.js +22 -0
  307. package/esm/cli/oauth/oauth-client-delete.js.map +1 -0
  308. package/esm/cli/oauth/oauth-client-describe.js +22 -0
  309. package/esm/cli/oauth/oauth-client-describe.js.map +1 -0
  310. package/esm/cli/oauth/oauth-client-export.js +52 -0
  311. package/esm/cli/oauth/oauth-client-export.js.map +1 -0
  312. package/esm/cli/oauth/oauth-client-import.js +57 -0
  313. package/esm/cli/oauth/oauth-client-import.js.map +1 -0
  314. package/esm/cli/oauth/oauth-client-list.js +25 -0
  315. package/esm/cli/oauth/oauth-client-list.js.map +1 -0
  316. package/esm/cli/oauth/oauth-client.js +14 -0
  317. package/esm/cli/oauth/oauth-client.js.map +1 -0
  318. package/esm/cli/oauth/oauth.js +13 -0
  319. package/esm/cli/oauth/oauth.js.map +1 -0
  320. package/esm/cli/realm/realm-add-custom-domain.js +8 -5
  321. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  322. package/esm/cli/realm/realm-describe.js +8 -5
  323. package/esm/cli/realm/realm-describe.js.map +1 -1
  324. package/esm/cli/realm/realm-list.js +8 -5
  325. package/esm/cli/realm/realm-list.js.map +1 -1
  326. package/esm/cli/realm/realm-remove-custom-domain.js +11 -5
  327. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  328. package/esm/cli/realm/realm.js +2 -2
  329. package/esm/cli/realm/realm.js.map +1 -1
  330. package/esm/cli/saml/saml-cot-export.js +10 -7
  331. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  332. package/esm/cli/saml/saml-cot-import.js +15 -12
  333. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  334. package/esm/cli/saml/saml-cot-list.js +8 -5
  335. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  336. package/esm/cli/saml/saml-cot.js +1 -1
  337. package/esm/cli/saml/saml-cot.js.map +1 -1
  338. package/esm/cli/saml/saml-delete.js +14 -7
  339. package/esm/cli/saml/saml-delete.js.map +1 -1
  340. package/esm/cli/saml/saml-describe.js +8 -5
  341. package/esm/cli/saml/saml-describe.js.map +1 -1
  342. package/esm/cli/saml/saml-export.js +10 -7
  343. package/esm/cli/saml/saml-export.js.map +1 -1
  344. package/esm/cli/saml/saml-import.js +11 -8
  345. package/esm/cli/saml/saml-import.js.map +1 -1
  346. package/esm/cli/saml/saml-list.js +8 -5
  347. package/esm/cli/saml/saml-list.js.map +1 -1
  348. package/esm/cli/saml/saml-metadata-export.js +9 -6
  349. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  350. package/esm/cli/saml/saml-metadata.js +1 -1
  351. package/esm/cli/saml/saml-metadata.js.map +1 -1
  352. package/esm/cli/saml/saml.js +2 -2
  353. package/esm/cli/saml/saml.js.map +1 -1
  354. package/esm/cli/script/script-delete.js +7 -4
  355. package/esm/cli/script/script-delete.js.map +1 -1
  356. package/esm/cli/script/script-describe.js +7 -4
  357. package/esm/cli/script/script-describe.js.map +1 -1
  358. package/esm/cli/script/script-export.js +8 -5
  359. package/esm/cli/script/script-export.js.map +1 -1
  360. package/esm/cli/script/script-import.js +9 -6
  361. package/esm/cli/script/script-import.js.map +1 -1
  362. package/esm/cli/script/script-list.js +8 -5
  363. package/esm/cli/script/script-list.js.map +1 -1
  364. package/esm/cli/script/script.js +2 -2
  365. package/esm/cli/script/script.js.map +1 -1
  366. package/esm/cli/service/service-delete.js +8 -5
  367. package/esm/cli/service/service-delete.js.map +1 -1
  368. package/esm/cli/service/service-export.js +9 -6
  369. package/esm/cli/service/service-export.js.map +1 -1
  370. package/esm/cli/service/service-import.js +11 -9
  371. package/esm/cli/service/service-import.js.map +1 -1
  372. package/esm/cli/service/service-list.js +7 -4
  373. package/esm/cli/service/service-list.js.map +1 -1
  374. package/esm/cli/service/service.js +2 -2
  375. package/esm/cli/service/service.js.map +1 -1
  376. package/esm/cli/shell/shell.js +57 -0
  377. package/esm/cli/shell/shell.js.map +1 -0
  378. package/esm/cli/theme/theme-delete.js +10 -7
  379. package/esm/cli/theme/theme-delete.js.map +1 -1
  380. package/esm/cli/theme/theme-export.js +11 -8
  381. package/esm/cli/theme/theme-export.js.map +1 -1
  382. package/esm/cli/theme/theme-import.js +12 -9
  383. package/esm/cli/theme/theme-import.js.map +1 -1
  384. package/esm/cli/theme/theme-list.js +7 -4
  385. package/esm/cli/theme/theme-list.js.map +1 -1
  386. package/esm/cli/theme/theme.js +2 -2
  387. package/esm/cli/theme/theme.js.map +1 -1
  388. package/esm/help/SampleData.js +7 -0
  389. package/esm/help/SampleData.js.map +1 -0
  390. package/esm/launch.js +1 -1
  391. package/esm/launch.js.map +1 -1
  392. package/esm/loader.js +2 -2
  393. package/esm/loader.js.map +1 -1
  394. package/esm/ops/AdminFederationOps.js +225 -0
  395. package/esm/ops/AdminFederationOps.js.map +1 -0
  396. package/esm/ops/AgentOps.js +128 -87
  397. package/esm/ops/AgentOps.js.map +1 -1
  398. package/esm/ops/ApplicationOps.js +315 -0
  399. package/esm/ops/ApplicationOps.js.map +1 -0
  400. package/esm/ops/AuthenticationSettingsOps.js +89 -0
  401. package/esm/ops/AuthenticationSettingsOps.js.map +1 -0
  402. package/esm/ops/CirclesOfTrustOps.js +72 -59
  403. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  404. package/esm/ops/ConnectionProfileOps.js +13 -6
  405. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  406. package/esm/ops/EmailTemplateOps.js +76 -64
  407. package/esm/ops/EmailTemplateOps.js.map +1 -1
  408. package/esm/ops/IdmOps.js +70 -84
  409. package/esm/ops/IdmOps.js.map +1 -1
  410. package/esm/ops/IdpOps.js +74 -43
  411. package/esm/ops/IdpOps.js.map +1 -1
  412. package/esm/ops/JourneyOps.js +99 -67
  413. package/esm/ops/JourneyOps.js.map +1 -1
  414. package/esm/ops/LogOps.js +92 -30
  415. package/esm/ops/LogOps.js.map +1 -1
  416. package/esm/ops/NodeOps.js +6 -3
  417. package/esm/ops/NodeOps.js.map +1 -1
  418. package/esm/ops/OAuth2ClientOps.js +51 -32
  419. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  420. package/esm/ops/OrganizationOps.js +14 -22
  421. package/esm/ops/OrganizationOps.js.map +1 -1
  422. package/esm/ops/PolicyOps.js +84 -55
  423. package/esm/ops/PolicyOps.js.map +1 -1
  424. package/esm/ops/PolicySetOps.js +67 -43
  425. package/esm/ops/PolicySetOps.js.map +1 -1
  426. package/esm/ops/RealmOps.js +18 -11
  427. package/esm/ops/RealmOps.js.map +1 -1
  428. package/esm/ops/ResourceTypeOps.js +75 -66
  429. package/esm/ops/ResourceTypeOps.js.map +1 -1
  430. package/esm/ops/Saml2Ops.js +76 -54
  431. package/esm/ops/Saml2Ops.js.map +1 -1
  432. package/esm/ops/Saml2Ops.test_.js.map +1 -1
  433. package/esm/ops/ScriptOps.js +92 -31
  434. package/esm/ops/ScriptOps.js.map +1 -1
  435. package/esm/ops/SecretsOps.js +106 -23
  436. package/esm/ops/SecretsOps.js.map +1 -1
  437. package/esm/ops/ServiceOps.js +67 -41
  438. package/esm/ops/ServiceOps.js.map +1 -1
  439. package/esm/ops/ThemeOps.js +62 -36
  440. package/esm/ops/ThemeOps.js.map +1 -1
  441. package/esm/ops/VariablesOps.js +132 -41
  442. package/esm/ops/VariablesOps.js.map +1 -1
  443. package/esm/ops/utils/OpsUtils.js +1 -1
  444. package/esm/ops/utils/OpsUtils.js.map +1 -1
  445. package/esm/ops/utils/Wordwrap.js +1 -1
  446. package/esm/ops/utils/Wordwrap.js.map +1 -1
  447. package/esm/storage/StaticStorage.js +1 -1
  448. package/esm/storage/StaticStorage.js.map +1 -1
  449. package/esm/utils/Config.js +7 -4
  450. package/esm/utils/Config.js.map +1 -1
  451. package/esm/utils/Console.js +9 -5
  452. package/esm/utils/Console.js.map +1 -1
  453. package/esm/utils/ExportImportUtils.js +32 -66
  454. package/esm/utils/ExportImportUtils.js.map +1 -1
  455. package/esm/utils/Version.js +19 -16
  456. package/esm/utils/Version.js.map +1 -1
  457. package/global-jest-setup.js +4 -0
  458. package/package.json +46 -35
  459. package/esm/cli/logging/logs-fetch.js.map +0 -1
  460. package/esm/cli/logging/logs-list.js +0 -49
  461. package/esm/cli/logging/logs-list.js.map +0 -1
  462. package/esm/cli/logging/logs-tail.js +0 -46
  463. package/esm/cli/logging/logs-tail.js.map +0 -1
  464. package/esm/cli/logging/logs.js.map +0 -1
  465. package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
  466. package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
package/esm/ops/IdmOps.js CHANGED
@@ -1,19 +1,32 @@
1
- /* eslint-disable no-await-in-loop */
1
+ import { frodo, state } from '@rockcarver/frodo-lib';
2
2
  import fs from 'fs';
3
3
  import fse from 'fs-extra';
4
4
  import path from 'path';
5
5
  import propertiesReader from 'properties-reader';
6
6
  import replaceall from 'replaceall';
7
- import { frodo } from '@rockcarver/frodo-lib';
8
7
  import { createProgressIndicator, printMessage, stopProgressIndicator } from '../utils/Console';
9
- import { getTypedFilename } from '../utils/ExportImportUtils';
8
+ import { getTypedFilename, readFiles } from '../utils/ExportImportUtils';
9
+ const {
10
+ unSubstituteEnvParams,
11
+ areScriptHooksValid,
12
+ getFilePath
13
+ } = frodo.utils;
14
+ const {
15
+ testConnectorServers,
16
+ readConfigEntities,
17
+ readConfigEntity,
18
+ updateConfigEntity
19
+ } = frodo.idm.config;
20
+ const {
21
+ queryManagedObjects
22
+ } = frodo.idm.managed;
10
23
 
11
24
  /**
12
25
  * Warn about and list offline remote connector servers
13
26
  */
14
27
  export async function warnAboutOfflineConnectorServers() {
15
28
  try {
16
- const all = await frodo.idm.config.testConnectorServers();
29
+ const all = await testConnectorServers();
17
30
  const offline = all.filter(status => !status.ok).map(status => status.name);
18
31
  if (offline.length) {
19
32
  printMessage(`\nThe following connector server(s) are offline and their connectors and configuration unavailable:\n${offline.join('\n')}`, 'warn');
@@ -29,15 +42,13 @@ export async function warnAboutOfflineConnectorServers() {
29
42
  */
30
43
  export async function listAllConfigEntities() {
31
44
  try {
32
- const {
33
- configurations
34
- } = await frodo.idm.config.getAllConfigEntities();
45
+ const configurations = await readConfigEntities();
35
46
  for (const configEntity of configurations) {
36
47
  printMessage(`${configEntity._id}`, 'data');
37
48
  }
38
- } catch (getAllConfigEntitiesError) {
39
- printMessage(getAllConfigEntitiesError, 'error');
40
- printMessage(`Error getting config entities: ${getAllConfigEntitiesError}`, 'error');
49
+ } catch (readConfigEntitiesError) {
50
+ printMessage(readConfigEntitiesError, 'error');
51
+ printMessage(`Error getting config entities: ${readConfigEntitiesError}`, 'error');
41
52
  }
42
53
  }
43
54
 
@@ -51,8 +62,8 @@ export async function exportConfigEntity(id, file) {
51
62
  if (!fileName) {
52
63
  fileName = getTypedFilename(`${id}`, 'idm');
53
64
  }
54
- const configEntity = await frodo.idm.config.getConfigEntity(id);
55
- fs.writeFile(fileName, JSON.stringify(configEntity, null, 2), err => {
65
+ const configEntity = await readConfigEntity(id);
66
+ fs.writeFile(getFilePath(fileName, true), JSON.stringify(configEntity, null, 2), err => {
56
67
  if (err) {
57
68
  return printMessage(`ERROR - can't save ${id} export to file`, 'error');
58
69
  }
@@ -62,37 +73,31 @@ export async function exportConfigEntity(id, file) {
62
73
 
63
74
  /**
64
75
  * Export all IDM configuration objects into separate JSON files in a directory specified by <directory>
65
- * @param {String} directory export directory
66
76
  */
67
- export async function exportAllRawConfigEntities(directory) {
77
+ export async function exportAllRawConfigEntities() {
68
78
  try {
69
- const {
70
- configurations
71
- } = await frodo.idm.config.getAllConfigEntities();
72
- if (!fs.existsSync(directory)) {
73
- fs.mkdirSync(directory);
74
- }
79
+ const configurations = await readConfigEntities();
75
80
  createProgressIndicator('indeterminate', undefined, 'Exporting config objects...');
76
81
  const entityPromises = [];
77
82
  for (const configEntity of configurations) {
78
- entityPromises.push(frodo.idm.config.getConfigEntity(configEntity._id).catch(getConfigEntityError => {
79
- var _getConfigEntityError, _getConfigEntityError2, _getConfigEntityError3, _getConfigEntityError4, _getConfigEntityError5, _getConfigEntityError6, _getConfigEntityError7, _getConfigEntityError8, _getConfigEntityError9;
80
- if (!(((_getConfigEntityError = getConfigEntityError.response) === null || _getConfigEntityError === void 0 ? void 0 : _getConfigEntityError.status) === 403 && ((_getConfigEntityError2 = getConfigEntityError.response) === null || _getConfigEntityError2 === void 0 ? void 0 : (_getConfigEntityError3 = _getConfigEntityError2.data) === null || _getConfigEntityError3 === void 0 ? void 0 : _getConfigEntityError3.message) === 'This operation is not available in ForgeRock Identity Cloud.') && !(
83
+ entityPromises.push(readConfigEntity(configEntity._id).catch(readConfigEntityError => {
84
+ var _readConfigEntityErro, _readConfigEntityErro2, _readConfigEntityErro3, _readConfigEntityErro4, _readConfigEntityErro5, _readConfigEntityErro6;
85
+ if (!(((_readConfigEntityErro = readConfigEntityError.response) === null || _readConfigEntityErro === void 0 ? void 0 : _readConfigEntityErro.status) === 403 && ((_readConfigEntityErro2 = readConfigEntityError.response) === null || _readConfigEntityErro2 === void 0 || (_readConfigEntityErro2 = _readConfigEntityErro2.data) === null || _readConfigEntityErro2 === void 0 ? void 0 : _readConfigEntityErro2.message) === 'This operation is not available in ForgeRock Identity Cloud.') && !(
81
86
  // list of config entities, which do not exist by default or ever.
82
87
 
83
- ['script', 'notificationFactory', 'apiVersion', 'metrics', 'repo.init', 'endpoint/validateQueryFilter', 'endpoint/oauthproxy', 'external.rest', 'scheduler', 'org.apache.felix.fileinstall/openidm', 'cluster', 'endpoint/mappingDetails', 'fieldPolicy/teammember'].includes(configEntity._id) && ((_getConfigEntityError4 = getConfigEntityError.response) === null || _getConfigEntityError4 === void 0 ? void 0 : _getConfigEntityError4.status) === 404 && ((_getConfigEntityError5 = getConfigEntityError.response) === null || _getConfigEntityError5 === void 0 ? void 0 : (_getConfigEntityError6 = _getConfigEntityError5.data) === null || _getConfigEntityError6 === void 0 ? void 0 : _getConfigEntityError6.reason) === 'Not Found') &&
88
+ ['script', 'notificationFactory', 'apiVersion', 'metrics', 'repo.init', 'endpoint/validateQueryFilter', 'endpoint/oauthproxy', 'external.rest', 'scheduler', 'org.apache.felix.fileinstall/openidm', 'cluster', 'endpoint/mappingDetails', 'fieldPolicy/teammember'].includes(configEntity._id) && ((_readConfigEntityErro3 = readConfigEntityError.response) === null || _readConfigEntityErro3 === void 0 ? void 0 : _readConfigEntityErro3.status) === 404 && ((_readConfigEntityErro4 = readConfigEntityError.response) === null || _readConfigEntityErro4 === void 0 || (_readConfigEntityErro4 = _readConfigEntityErro4.data) === null || _readConfigEntityErro4 === void 0 ? void 0 : _readConfigEntityErro4.reason) === 'Not Found') &&
84
89
  // https://bugster.forgerock.org/jira/browse/OPENIDM-18270
85
- !(((_getConfigEntityError7 = getConfigEntityError.response) === null || _getConfigEntityError7 === void 0 ? void 0 : _getConfigEntityError7.status) === 404 && ((_getConfigEntityError8 = getConfigEntityError.response) === null || _getConfigEntityError8 === void 0 ? void 0 : (_getConfigEntityError9 = _getConfigEntityError8.data) === null || _getConfigEntityError9 === void 0 ? void 0 : _getConfigEntityError9.message) === 'No configuration exists for id org.apache.felix.fileinstall/openidm')) {
86
- var _getConfigEntityError10;
87
- printMessage((_getConfigEntityError10 = getConfigEntityError.response) === null || _getConfigEntityError10 === void 0 ? void 0 : _getConfigEntityError10.data, 'error');
88
- printMessage(`Error getting config entity ${configEntity._id}: ${getConfigEntityError}`, 'error');
90
+ !(((_readConfigEntityErro5 = readConfigEntityError.response) === null || _readConfigEntityErro5 === void 0 ? void 0 : _readConfigEntityErro5.status) === 404 && ((_readConfigEntityErro6 = readConfigEntityError.response) === null || _readConfigEntityErro6 === void 0 || (_readConfigEntityErro6 = _readConfigEntityErro6.data) === null || _readConfigEntityErro6 === void 0 ? void 0 : _readConfigEntityErro6.message) === 'No configuration exists for id org.apache.felix.fileinstall/openidm')) {
91
+ var _readConfigEntityErro7;
92
+ printMessage((_readConfigEntityErro7 = readConfigEntityError.response) === null || _readConfigEntityErro7 === void 0 ? void 0 : _readConfigEntityErro7.data, 'error');
93
+ printMessage(`Error getting config entity ${configEntity._id}: ${readConfigEntityError}`, 'error');
89
94
  }
90
95
  }));
91
96
  }
92
97
  const results = await Promise.all(entityPromises);
93
98
  for (const item of results) {
94
99
  if (item != null) {
95
- fse.outputFile(`${directory}/${item._id}.json`, JSON.stringify(item, null, 2), err => {
100
+ fse.outputFile(getFilePath(`${item._id}.json`, true), JSON.stringify(item, null, 2), err => {
96
101
  if (err) {
97
102
  return printMessage(`ERROR - can't save config ${item._id} to file - ${err}`, 'error');
98
103
  }
@@ -100,19 +105,18 @@ export async function exportAllRawConfigEntities(directory) {
100
105
  }
101
106
  }
102
107
  stopProgressIndicator('Exported config objects.', 'success');
103
- } catch (getAllConfigEntitiesError) {
104
- printMessage(getAllConfigEntitiesError, 'error');
105
- printMessage(`Error getting config entities: ${getAllConfigEntitiesError}`, 'error');
108
+ } catch (readConfigEntitiesError) {
109
+ printMessage(readConfigEntitiesError, 'error');
110
+ printMessage(`Error getting config entities: ${readConfigEntitiesError}`, 'error');
106
111
  }
107
112
  }
108
113
 
109
114
  /**
110
115
  * Export all IDM configuration objects
111
- * @param {String} directory export directory
112
116
  * @param {String} entitiesFile JSON file that specifies the config entities to export/import
113
117
  * @param {String} envFile File that defines environment specific variables for replacement during configuration export/import
114
118
  */
115
- export async function exportAllConfigEntities(directory, entitiesFile, envFile) {
119
+ export async function exportAllConfigEntities(entitiesFile, envFile) {
116
120
  let entriesToExport = [];
117
121
  // read list of entities to export
118
122
  fs.readFile(entitiesFile, 'utf8', async (err, data) => {
@@ -124,18 +128,12 @@ export async function exportAllConfigEntities(directory, entitiesFile, envFile)
124
128
  // read list of configs to parameterize for environment specific values
125
129
  const envParams = propertiesReader(envFile);
126
130
  try {
127
- const {
128
- configurations
129
- } = await frodo.idm.config.getAllConfigEntities();
130
- // create export directory if not exist
131
- if (!fs.existsSync(directory)) {
132
- fs.mkdirSync(directory);
133
- }
131
+ const configurations = await readConfigEntities();
134
132
  createProgressIndicator('indeterminate', undefined, 'Exporting config objects...');
135
133
  const entityPromises = [];
136
134
  for (const configEntity of configurations) {
137
135
  if (entriesToExport.includes(configEntity._id)) {
138
- entityPromises.push(frodo.idm.config.getConfigEntity(configEntity._id));
136
+ entityPromises.push(readConfigEntity(configEntity._id));
139
137
  }
140
138
  }
141
139
  const results = await Promise.all(entityPromises);
@@ -145,7 +143,7 @@ export async function exportAllConfigEntities(directory, entitiesFile, envFile)
145
143
  envParams.each((key, value) => {
146
144
  configEntityString = replaceall(value, `\${${key}}`, configEntityString);
147
145
  });
148
- fse.outputFile(`${directory}/${item._id}.json`, configEntityString, error => {
146
+ fse.outputFile(getFilePath(`${item._id}.json`, true), configEntityString, error => {
149
147
  if (err) {
150
148
  return printMessage(`ERROR - can't save config ${item._id} to file - ${error}`, 'error');
151
149
  }
@@ -153,9 +151,9 @@ export async function exportAllConfigEntities(directory, entitiesFile, envFile)
153
151
  }
154
152
  }
155
153
  stopProgressIndicator(null, 'success');
156
- } catch (getAllConfigEntitiesError) {
157
- printMessage(getAllConfigEntitiesError, 'error');
158
- printMessage(`Error getting config entities: ${getAllConfigEntitiesError}`, 'error');
154
+ } catch (readConfigEntitiesError) {
155
+ printMessage(readConfigEntitiesError, 'error');
156
+ printMessage(`Error getting config entities: ${readConfigEntitiesError}`, 'error');
159
157
  }
160
158
  });
161
159
  }
@@ -170,18 +168,18 @@ export async function importConfigEntityByIdFromFile(entityId, file, validate) {
170
168
  if (!file) {
171
169
  file = getTypedFilename(entityId, 'idm');
172
170
  }
173
- const fileData = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');
171
+ const fileData = fs.readFileSync(path.resolve(process.cwd(), getFilePath(file)), 'utf8');
174
172
  const entityData = JSON.parse(fileData);
175
- const isValid = frodo.helper.script.validateScriptHooks(entityData);
173
+ const isValid = areScriptHooksValid(entityData);
176
174
  if (validate && !isValid) {
177
175
  printMessage('Invalid IDM configuration object', 'error');
178
176
  return;
179
177
  }
180
178
  try {
181
- await frodo.idm.config.putConfigEntity(entityId, entityData);
182
- } catch (putConfigEntityError) {
183
- printMessage(putConfigEntityError, 'error');
184
- printMessage(`Error: ${putConfigEntityError}`, 'error');
179
+ await updateConfigEntity(entityId, entityData);
180
+ } catch (updateConfigEntityError) {
181
+ printMessage(updateConfigEntityError, 'error');
182
+ printMessage(`Error: ${updateConfigEntityError}`, 'error');
185
183
  }
186
184
  }
187
185
 
@@ -191,32 +189,32 @@ export async function importConfigEntityByIdFromFile(entityId, file, validate) {
191
189
  * @param validate validate script hooks
192
190
  */
193
191
  export async function importConfigEntityFromFile(file, validate) {
194
- const fileData = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');
192
+ const fileData = fs.readFileSync(path.resolve(process.cwd(), getFilePath(file)), 'utf8');
195
193
  const entityData = JSON.parse(fileData);
196
194
  const entityId = entityData._id;
197
- const isValid = frodo.helper.script.validateScriptHooks(entityData);
195
+ const isValid = areScriptHooksValid(entityData);
198
196
  if (validate && !isValid) {
199
197
  printMessage('Invalid IDM configuration object', 'error');
200
198
  return;
201
199
  }
202
200
  try {
203
- await frodo.idm.config.putConfigEntity(entityId, entityData);
204
- } catch (putConfigEntityError) {
205
- printMessage(putConfigEntityError, 'error');
206
- printMessage(`Error: ${putConfigEntityError}`, 'error');
201
+ await updateConfigEntity(entityId, entityData);
202
+ } catch (updateConfigEntityError) {
203
+ printMessage(updateConfigEntityError, 'error');
204
+ printMessage(`Error: ${updateConfigEntityError}`, 'error');
207
205
  }
208
206
  }
209
207
 
210
208
  /**
211
209
  * Import all IDM configuration objects from separate JSON files in a directory specified by <directory>
212
- * @param baseDirectory export directory
213
210
  * @param validate validate script hooks
214
211
  */
215
- export async function importAllRawConfigEntities(baseDirectory, validate) {
212
+ export async function importAllRawConfigEntities(validate) {
213
+ const baseDirectory = state.getDirectory();
216
214
  if (!fs.existsSync(baseDirectory)) {
217
215
  return;
218
216
  }
219
- const files = await frodo.helper.utils.readFiles(baseDirectory);
217
+ const files = await readFiles(baseDirectory);
220
218
  const jsonFiles = files.filter(({
221
219
  path
222
220
  }) => path.toLowerCase().endsWith('.json')).map(({
@@ -231,7 +229,7 @@ export async function importAllRawConfigEntities(baseDirectory, validate) {
231
229
  let everyScriptValid = true;
232
230
  for (const file of jsonFiles) {
233
231
  const jsObject = JSON.parse(file.content);
234
- const isScriptValid = frodo.helper.script.validateScriptHooks(jsObject);
232
+ const isScriptValid = areScriptHooksValid(jsObject);
235
233
  if (!isScriptValid) {
236
234
  printMessage(`Invalid script hook in ${file.path}`, 'error');
237
235
  everyScriptValid = false;
@@ -242,7 +240,7 @@ export async function importAllRawConfigEntities(baseDirectory, validate) {
242
240
  }
243
241
  createProgressIndicator('indeterminate', undefined, 'Importing config objects...');
244
242
  const entityPromises = jsonFiles.map(file => {
245
- return frodo.idm.config.putConfigEntity(file.entityId, file.content);
243
+ return updateConfigEntity(file.entityId, JSON.parse(file.content));
246
244
  });
247
245
  const results = await Promise.allSettled(entityPromises);
248
246
  const errors = results.filter(result => result.status === 'rejected');
@@ -259,18 +257,18 @@ export async function importAllRawConfigEntities(baseDirectory, validate) {
259
257
 
260
258
  /**
261
259
  * Import all IDM configuration objects
262
- * @param baseDirectory import directory
263
260
  * @param entitiesFile JSON file that specifies the config entities to export/import
264
261
  * @param envFile File that defines environment specific variables for replacement during configuration export/import
265
262
  * @param validate validate script hooks
266
263
  */
267
- export async function importAllConfigEntities(baseDirectory, entitiesFile, envFile, validate) {
264
+ export async function importAllConfigEntities(entitiesFile, envFile, validate) {
265
+ const baseDirectory = state.getDirectory();
268
266
  if (!fs.existsSync(baseDirectory)) {
269
267
  return;
270
268
  }
271
269
  const entriesToImport = JSON.parse(fs.readFileSync(entitiesFile, 'utf8')).idm;
272
270
  const envReader = propertiesReader(envFile);
273
- const files = await frodo.helper.utils.readFiles(baseDirectory);
271
+ const files = await readFiles(baseDirectory);
274
272
  const jsonFiles = files.filter(({
275
273
  path
276
274
  }) => path.toLowerCase().endsWith('.json')).map(({
@@ -285,7 +283,7 @@ export async function importAllConfigEntities(baseDirectory, entitiesFile, envFi
285
283
  let everyScriptValid = true;
286
284
  for (const file of jsonFiles) {
287
285
  const jsObject = JSON.parse(file.content);
288
- const isScriptValid = frodo.helper.script.validateScriptHooks(jsObject);
286
+ const isScriptValid = areScriptHooksValid(jsObject);
289
287
  if (!isScriptValid) {
290
288
  printMessage(`Invalid script hook in ${file.path}`, 'error');
291
289
  everyScriptValid = false;
@@ -303,8 +301,8 @@ export async function importAllConfigEntities(baseDirectory, entitiesFile, envFi
303
301
  entityId,
304
302
  content
305
303
  }) => {
306
- const unsubstituted = frodo.helper.utils.unSubstituteEnvParams(content, envReader);
307
- return frodo.idm.config.putConfigEntity(entityId, unsubstituted);
304
+ const unsubstituted = unSubstituteEnvParams(content, envReader);
305
+ return updateConfigEntity(entityId, JSON.parse(unsubstituted));
308
306
  });
309
307
  const results = await Promise.allSettled(entityPromises);
310
308
  const errors = results.filter(result => result.status === 'rejected');
@@ -324,24 +322,12 @@ export async function importAllConfigEntities(baseDirectory, entitiesFile, envFi
324
322
  * @param {String} type managed object type, e.g. alpha_user
325
323
  */
326
324
  export async function countManagedObjects(type) {
327
- let count = 0;
328
- let result = {
329
- result: [],
330
- resultCount: 0,
331
- pagedResultsCookie: null,
332
- totalPagedResultsPolicy: 'NONE',
333
- totalPagedResults: -1,
334
- remainingPagedResults: -1
335
- };
336
325
  try {
337
- do {
338
- result = await frodo.idm.config.queryAllManagedObjectsByType(type, [], result.pagedResultsCookie);
339
- count += result.resultCount;
340
- } while (result.pagedResultsCookie);
341
- printMessage(`${type}: ${count}`);
326
+ const result = await queryManagedObjects(type);
327
+ printMessage(`${type}: ${result.length}`, 'data');
342
328
  } catch (error) {
343
329
  printMessage(error.response.data, 'error');
344
330
  printMessage(`Error querying managed objects by type: ${error}`, 'error');
345
331
  }
346
332
  }
347
- //# sourceMappingURL=IdmOps.js.map
333
+ //# sourceMappingURL=IdmOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IdmOps.js","names":["fs","fse","path","propertiesReader","replaceall","frodo","createProgressIndicator","printMessage","stopProgressIndicator","getTypedFilename","warnAboutOfflineConnectorServers","all","idm","config","testConnectorServers","offline","filter","status","ok","map","name","length","join","error","message","listAllConfigEntities","configurations","getAllConfigEntities","configEntity","_id","getAllConfigEntitiesError","exportConfigEntity","id","file","fileName","getConfigEntity","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","envParams","configEntityString","each","key","value","importConfigEntityByIdFromFile","entityId","validate","fileData","readFileSync","resolve","process","cwd","entityData","isValid","helper","script","validateScriptHooks","putConfigEntity","putConfigEntityError","importConfigEntityFromFile","importAllRawConfigEntities","baseDirectory","files","utils","readFiles","jsonFiles","toLowerCase","endsWith","content","substring","everyScriptValid","jsObject","isScriptValid","allSettled","errors","result","importAllConfigEntities","entriesToImport","envReader","unsubstituted","unSubstituteEnvParams","countManagedObjects","type","count","resultCount","pagedResultsCookie","totalPagedResultsPolicy","totalPagedResults","remainingPagedResults","queryAllManagedObjectsByType"],"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 { frodo } from '@rockcarver/frodo-lib';\nimport {\n createProgressIndicator,\n printMessage,\n stopProgressIndicator,\n} from '../utils/Console';\nimport { getTypedFilename } from '../utils/ExportImportUtils';\n\n/**\n * Warn about and list offline remote connector servers\n */\nexport async function warnAboutOfflineConnectorServers() {\n try {\n const all = await frodo.idm.config.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 frodo.idm.config.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 frodo.idm.config.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 frodo.idm.config.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 frodo.idm.config\n .getConfigEntity(configEntity._id)\n .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 frodo.idm.config.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(\n frodo.idm.config.getConfigEntity(configEntity._id)\n );\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 fileData = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');\n\n const entityData = JSON.parse(fileData);\n const isValid = frodo.helper.script.validateScriptHooks(entityData);\n if (validate && !isValid) {\n printMessage('Invalid IDM configuration object', 'error');\n return;\n }\n\n try {\n await frodo.idm.config.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 fileData = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');\n const entityData = JSON.parse(fileData);\n const entityId = entityData._id;\n const isValid = frodo.helper.script.validateScriptHooks(entityData);\n if (validate && !isValid) {\n printMessage('Invalid IDM configuration object', 'error');\n return;\n }\n\n try {\n await frodo.idm.config.putConfigEntity(entityId, entityData);\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 frodo.helper.utils.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 = frodo.helper.script.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 frodo.idm.config.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 frodo.helper.utils.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 = frodo.helper.script.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 = frodo.helper.utils.unSubstituteEnvParams(\n content,\n envReader\n );\n return frodo.idm.config.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 frodo.idm.config.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":["frodo","state","fs","fse","path","propertiesReader","replaceall","createProgressIndicator","printMessage","stopProgressIndicator","getTypedFilename","readFiles","unSubstituteEnvParams","areScriptHooksValid","getFilePath","utils","testConnectorServers","readConfigEntities","readConfigEntity","updateConfigEntity","idm","config","queryManagedObjects","managed","warnAboutOfflineConnectorServers","all","offline","filter","status","ok","map","name","length","join","error","message","listAllConfigEntities","configurations","configEntity","_id","readConfigEntitiesError","exportConfigEntity","id","file","fileName","writeFile","JSON","stringify","err","exportAllRawConfigEntities","undefined","entityPromises","push","catch","readConfigEntityError","_readConfigEntityErro","_readConfigEntityErro2","_readConfigEntityErro3","_readConfigEntityErro4","_readConfigEntityErro5","_readConfigEntityErro6","response","data","includes","reason","_readConfigEntityErro7","results","Promise","item","outputFile","exportAllConfigEntities","entitiesFile","envFile","entriesToExport","readFile","entriesData","parse","envParams","configEntityString","each","key","value","importConfigEntityByIdFromFile","entityId","validate","fileData","readFileSync","resolve","process","cwd","entityData","isValid","updateConfigEntityError","importConfigEntityFromFile","importAllRawConfigEntities","baseDirectory","getDirectory","existsSync","files","jsonFiles","toLowerCase","endsWith","content","substring","everyScriptValid","jsObject","isScriptValid","allSettled","errors","result","importAllConfigEntities","entriesToImport","envReader","unsubstituted","countManagedObjects","type"],"sources":["../../src/ops/IdmOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport fse from 'fs-extra';\nimport path from 'path';\nimport propertiesReader from 'properties-reader';\nimport replaceall from 'replaceall';\n\nimport {\n createProgressIndicator,\n printMessage,\n stopProgressIndicator,\n} from '../utils/Console';\nimport { getTypedFilename, readFiles } from '../utils/ExportImportUtils';\n\nconst { unSubstituteEnvParams, areScriptHooksValid, getFilePath } = frodo.utils;\nconst {\n testConnectorServers,\n readConfigEntities,\n readConfigEntity,\n updateConfigEntity,\n} = frodo.idm.config;\nconst { queryManagedObjects } = frodo.idm.managed;\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 readConfigEntities();\n for (const configEntity of configurations) {\n printMessage(`${configEntity._id}`, 'data');\n }\n } catch (readConfigEntitiesError) {\n printMessage(readConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${readConfigEntitiesError}`,\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 readConfigEntity(id);\n fs.writeFile(\n getFilePath(fileName, true),\n JSON.stringify(configEntity, null, 2),\n (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${id} export to file`, 'error');\n }\n return '';\n }\n );\n}\n\n/**\n * Export all IDM configuration objects into separate JSON files in a directory specified by <directory>\n */\nexport async function exportAllRawConfigEntities() {\n try {\n const configurations = await readConfigEntities();\n createProgressIndicator(\n 'indeterminate',\n undefined,\n 'Exporting config objects...'\n );\n const entityPromises = [];\n for (const configEntity of configurations) {\n entityPromises.push(\n readConfigEntity(configEntity._id).catch((readConfigEntityError) => {\n if (\n !(\n readConfigEntityError.response?.status === 403 &&\n readConfigEntityError.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 readConfigEntityError.response?.status === 404 &&\n readConfigEntityError.response?.data?.reason === 'Not Found'\n )\n ) &&\n // https://bugster.forgerock.org/jira/browse/OPENIDM-18270\n !(\n readConfigEntityError.response?.status === 404 &&\n readConfigEntityError.response?.data?.message ===\n 'No configuration exists for id org.apache.felix.fileinstall/openidm'\n )\n ) {\n printMessage(readConfigEntityError.response?.data, 'error');\n printMessage(\n `Error getting config entity ${configEntity._id}: ${readConfigEntityError}`,\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 getFilePath(`${item._id}.json`, true),\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 (readConfigEntitiesError) {\n printMessage(readConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${readConfigEntitiesError}`,\n 'error'\n );\n }\n}\n\n/**\n * Export all IDM configuration objects\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(entitiesFile, envFile) {\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 readConfigEntities();\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(readConfigEntity(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 getFilePath(`${item._id}.json`, true),\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 (readConfigEntitiesError) {\n printMessage(readConfigEntitiesError, 'error');\n printMessage(\n `Error getting config entities: ${readConfigEntitiesError}`,\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 fileData = fs.readFileSync(\n path.resolve(process.cwd(), getFilePath(file)),\n 'utf8'\n );\n\n const entityData = JSON.parse(fileData);\n const isValid = areScriptHooksValid(entityData);\n if (validate && !isValid) {\n printMessage('Invalid IDM configuration object', 'error');\n return;\n }\n\n try {\n await updateConfigEntity(entityId, entityData);\n } catch (updateConfigEntityError) {\n printMessage(updateConfigEntityError, 'error');\n printMessage(`Error: ${updateConfigEntityError}`, '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 fileData = fs.readFileSync(\n path.resolve(process.cwd(), getFilePath(file)),\n 'utf8'\n );\n const entityData = JSON.parse(fileData);\n const entityId = entityData._id;\n const isValid = areScriptHooksValid(entityData);\n if (validate && !isValid) {\n printMessage('Invalid IDM configuration object', 'error');\n return;\n }\n\n try {\n await updateConfigEntity(entityId, entityData);\n } catch (updateConfigEntityError) {\n printMessage(updateConfigEntityError, 'error');\n printMessage(`Error: ${updateConfigEntityError}`, 'error');\n }\n}\n\n/**\n * Import all IDM configuration objects from separate JSON files in a directory specified by <directory>\n * @param validate validate script hooks\n */\nexport async function importAllRawConfigEntities(validate?: boolean) {\n const baseDirectory = state.getDirectory();\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 = areScriptHooksValid(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 updateConfigEntity(file.entityId, JSON.parse(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 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 entitiesFile: string,\n envFile: string,\n validate?: boolean\n) {\n const baseDirectory = state.getDirectory();\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 = areScriptHooksValid(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 updateConfigEntity(entityId, JSON.parse(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: string) {\n try {\n const result = await queryManagedObjects(type);\n printMessage(`${type}: ${result.length}`, 'data');\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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"}