@rockcarver/frodo-cli 2.0.0-13 → 2.0.0-14

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 (383) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/esm/app.js +1 -1
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/FrodoCommand.js +3 -3
  5. package/esm/cli/FrodoCommand.js.map +1 -1
  6. package/esm/cli/_template/something-delete.js +2 -2
  7. package/esm/cli/_template/something-delete.js.map +1 -1
  8. package/esm/cli/_template/something-describe.js +2 -2
  9. package/esm/cli/_template/something-describe.js.map +1 -1
  10. package/esm/cli/_template/something-else-delete.js +2 -2
  11. package/esm/cli/_template/something-else-delete.js.map +1 -1
  12. package/esm/cli/_template/something-else-describe.js +2 -2
  13. package/esm/cli/_template/something-else-describe.js.map +1 -1
  14. package/esm/cli/_template/something-else-export.js +2 -2
  15. package/esm/cli/_template/something-else-export.js.map +1 -1
  16. package/esm/cli/_template/something-else-import.js +2 -2
  17. package/esm/cli/_template/something-else-import.js.map +1 -1
  18. package/esm/cli/_template/something-else-list.js +2 -2
  19. package/esm/cli/_template/something-else-list.js.map +1 -1
  20. package/esm/cli/_template/something-export.js +2 -2
  21. package/esm/cli/_template/something-export.js.map +1 -1
  22. package/esm/cli/_template/something-import.js +2 -2
  23. package/esm/cli/_template/something-import.js.map +1 -1
  24. package/esm/cli/_template/something-list.js +2 -2
  25. package/esm/cli/_template/something-list.js.map +1 -1
  26. package/esm/cli/_template/something-other-delete.js +2 -2
  27. package/esm/cli/_template/something-other-delete.js.map +1 -1
  28. package/esm/cli/_template/something-other-describe.js +2 -2
  29. package/esm/cli/_template/something-other-describe.js.map +1 -1
  30. package/esm/cli/_template/something-other-export.js +2 -2
  31. package/esm/cli/_template/something-other-export.js.map +1 -1
  32. package/esm/cli/_template/something-other-import.js +2 -2
  33. package/esm/cli/_template/something-other-import.js.map +1 -1
  34. package/esm/cli/_template/something-other-list.js +2 -2
  35. package/esm/cli/_template/something-other-list.js.map +1 -1
  36. package/esm/cli/_template/something.js +1 -1
  37. package/esm/cli/_template/something.js.map +1 -1
  38. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +1 -1
  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 +3 -3
  41. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  42. package/esm/cli/admin/admin-federation-export.js +2 -2
  43. package/esm/cli/admin/admin-federation-export.js.map +1 -1
  44. package/esm/cli/admin/admin-federation-import.js +2 -2
  45. package/esm/cli/admin/admin-federation-import.js.map +1 -1
  46. package/esm/cli/admin/admin-federation-list.js +2 -2
  47. package/esm/cli/admin/admin-federation-list.js.map +1 -1
  48. package/esm/cli/admin/admin-get-access-token.js +2 -2
  49. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  50. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +2 -2
  51. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  52. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +2 -2
  53. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  54. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +1 -1
  55. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  56. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +1 -1
  57. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  58. package/esm/cli/admin/admin-list-static-user-mappings.js +2 -2
  59. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  60. package/esm/cli/admin/admin-remove-static-user-mapping.js +1 -1
  61. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  62. package/esm/cli/admin/admin-repair-org-model.js +2 -2
  63. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  64. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +2 -2
  65. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  66. package/esm/cli/admin/admin-show-generic-extension-attributes.js +2 -2
  67. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  68. package/esm/cli/admin/admin.js +1 -1
  69. package/esm/cli/admin/admin.js.map +1 -1
  70. package/esm/cli/agent/agent-delete.js +2 -2
  71. package/esm/cli/agent/agent-delete.js.map +1 -1
  72. package/esm/cli/agent/agent-describe.js +2 -2
  73. package/esm/cli/agent/agent-describe.js.map +1 -1
  74. package/esm/cli/agent/agent-export.js +3 -3
  75. package/esm/cli/agent/agent-export.js.map +1 -1
  76. package/esm/cli/agent/agent-gateway-delete.js +2 -2
  77. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  78. package/esm/cli/agent/agent-gateway-describe.js +2 -2
  79. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  80. package/esm/cli/agent/agent-gateway-export.js +3 -3
  81. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  82. package/esm/cli/agent/agent-gateway-import.js +3 -3
  83. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  84. package/esm/cli/agent/agent-gateway-list.js +2 -2
  85. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  86. package/esm/cli/agent/agent-import.js +3 -3
  87. package/esm/cli/agent/agent-import.js.map +1 -1
  88. package/esm/cli/agent/agent-java-delete.js +2 -2
  89. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  90. package/esm/cli/agent/agent-java-describe.js +2 -2
  91. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  92. package/esm/cli/agent/agent-java-export.js +3 -3
  93. package/esm/cli/agent/agent-java-export.js.map +1 -1
  94. package/esm/cli/agent/agent-java-import.js +3 -3
  95. package/esm/cli/agent/agent-java-import.js.map +1 -1
  96. package/esm/cli/agent/agent-java-list.js +2 -2
  97. package/esm/cli/agent/agent-java-list.js.map +1 -1
  98. package/esm/cli/agent/agent-list.js +2 -2
  99. package/esm/cli/agent/agent-list.js.map +1 -1
  100. package/esm/cli/agent/agent-web-delete.js +2 -2
  101. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  102. package/esm/cli/agent/agent-web-describe.js +2 -2
  103. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  104. package/esm/cli/agent/agent-web-export.js +3 -3
  105. package/esm/cli/agent/agent-web-export.js.map +1 -1
  106. package/esm/cli/agent/agent-web-import.js +3 -3
  107. package/esm/cli/agent/agent-web-import.js.map +1 -1
  108. package/esm/cli/agent/agent-web-list.js +2 -2
  109. package/esm/cli/agent/agent-web-list.js.map +1 -1
  110. package/esm/cli/agent/agent.js +1 -1
  111. package/esm/cli/agent/agent.js.map +1 -1
  112. package/esm/cli/app/app-delete.js +2 -2
  113. package/esm/cli/app/app-delete.js.map +1 -1
  114. package/esm/cli/app/app-describe.js +2 -2
  115. package/esm/cli/app/app-describe.js.map +1 -1
  116. package/esm/cli/app/app-export.js +3 -3
  117. package/esm/cli/app/app-export.js.map +1 -1
  118. package/esm/cli/app/app-import.js +3 -3
  119. package/esm/cli/app/app-import.js.map +1 -1
  120. package/esm/cli/app/app-list.js +3 -3
  121. package/esm/cli/app/app-list.js.map +1 -1
  122. package/esm/cli/app/app.js +1 -1
  123. package/esm/cli/app/app.js.map +1 -1
  124. package/esm/cli/authz/authz-policy-delete.js +3 -3
  125. package/esm/cli/authz/authz-policy-delete.js.map +1 -1
  126. package/esm/cli/authz/authz-policy-describe.js +3 -3
  127. package/esm/cli/authz/authz-policy-describe.js.map +1 -1
  128. package/esm/cli/authz/authz-policy-export.js +3 -3
  129. package/esm/cli/authz/authz-policy-export.js.map +1 -1
  130. package/esm/cli/authz/authz-policy-import.js +2 -2
  131. package/esm/cli/authz/authz-policy-import.js.map +1 -1
  132. package/esm/cli/authz/authz-policy-list.js +3 -3
  133. package/esm/cli/authz/authz-policy-list.js.map +1 -1
  134. package/esm/cli/authz/authz-set-delete.js +3 -3
  135. package/esm/cli/authz/authz-set-delete.js.map +1 -1
  136. package/esm/cli/authz/authz-set-describe.js +3 -3
  137. package/esm/cli/authz/authz-set-describe.js.map +1 -1
  138. package/esm/cli/authz/authz-set-export.js +3 -3
  139. package/esm/cli/authz/authz-set-export.js.map +1 -1
  140. package/esm/cli/authz/authz-set-import.js +2 -2
  141. package/esm/cli/authz/authz-set-import.js.map +1 -1
  142. package/esm/cli/authz/authz-set-list.js +2 -2
  143. package/esm/cli/authz/authz-set-list.js.map +1 -1
  144. package/esm/cli/authz/authz-type-delete.js +3 -3
  145. package/esm/cli/authz/authz-type-delete.js.map +1 -1
  146. package/esm/cli/authz/authz-type-describe.js +3 -3
  147. package/esm/cli/authz/authz-type-describe.js.map +1 -1
  148. package/esm/cli/authz/authz-type-export.js +3 -3
  149. package/esm/cli/authz/authz-type-export.js.map +1 -1
  150. package/esm/cli/authz/authz-type-import.js +3 -3
  151. package/esm/cli/authz/authz-type-import.js.map +1 -1
  152. package/esm/cli/authz/authz-type-list.js +3 -3
  153. package/esm/cli/authz/authz-type-list.js.map +1 -1
  154. package/esm/cli/authz/authz.js +1 -1
  155. package/esm/cli/authz/authz.js.map +1 -1
  156. package/esm/cli/conn/conn-delete.js +1 -1
  157. package/esm/cli/conn/conn-delete.js.map +1 -1
  158. package/esm/cli/conn/conn-describe.js +1 -1
  159. package/esm/cli/conn/conn-describe.js.map +1 -1
  160. package/esm/cli/conn/conn-list.js +1 -1
  161. package/esm/cli/conn/conn-list.js.map +1 -1
  162. package/esm/cli/conn/conn-save.js +4 -4
  163. package/esm/cli/conn/conn-save.js.map +1 -1
  164. package/esm/cli/conn/conn.js +1 -1
  165. package/esm/cli/conn/conn.js.map +1 -1
  166. package/esm/cli/email/email-template-export.js +3 -3
  167. package/esm/cli/email/email-template-export.js.map +1 -1
  168. package/esm/cli/email/email-template-import.js +3 -3
  169. package/esm/cli/email/email-template-import.js.map +1 -1
  170. package/esm/cli/email/email-template-list.js +3 -3
  171. package/esm/cli/email/email-template-list.js.map +1 -1
  172. package/esm/cli/email/email.js +1 -1
  173. package/esm/cli/email/email.js.map +1 -1
  174. package/esm/cli/esv/esv-apply.js +2 -2
  175. package/esm/cli/esv/esv-apply.js.map +1 -1
  176. package/esm/cli/esv/esv-secret-create.js +3 -3
  177. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  178. package/esm/cli/esv/esv-secret-delete.js +3 -3
  179. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  180. package/esm/cli/esv/esv-secret-describe.js +3 -3
  181. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  182. package/esm/cli/esv/esv-secret-export.js +2 -2
  183. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  184. package/esm/cli/esv/esv-secret-import.js +2 -2
  185. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  186. package/esm/cli/esv/esv-secret-list.js +3 -3
  187. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  188. package/esm/cli/esv/esv-secret-set.js +3 -3
  189. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  190. package/esm/cli/esv/esv-secret-version-activate.js +3 -3
  191. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  192. package/esm/cli/esv/esv-secret-version-create.js +4 -4
  193. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  194. package/esm/cli/esv/esv-secret-version-deactivate.js +3 -3
  195. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  196. package/esm/cli/esv/esv-secret-version-delete.js +3 -3
  197. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  198. package/esm/cli/esv/esv-secret-version-list.js +3 -3
  199. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  200. package/esm/cli/esv/esv-variable-create.js +3 -3
  201. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  202. package/esm/cli/esv/esv-variable-delete.js +3 -3
  203. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  204. package/esm/cli/esv/esv-variable-describe.js +3 -3
  205. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  206. package/esm/cli/esv/esv-variable-export.js +2 -2
  207. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  208. package/esm/cli/esv/esv-variable-import.js +2 -2
  209. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  210. package/esm/cli/esv/esv-variable-list.js +3 -3
  211. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  212. package/esm/cli/esv/esv-variable-set.js +2 -2
  213. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  214. package/esm/cli/esv/esv.js +1 -1
  215. package/esm/cli/esv/esv.js.map +1 -1
  216. package/esm/cli/idm/idm-count.js +3 -3
  217. package/esm/cli/idm/idm-count.js.map +1 -1
  218. package/esm/cli/idm/idm-export.js +3 -3
  219. package/esm/cli/idm/idm-export.js.map +1 -1
  220. package/esm/cli/idm/idm-import.js +3 -3
  221. package/esm/cli/idm/idm-import.js.map +1 -1
  222. package/esm/cli/idm/idm-list.js +2 -2
  223. package/esm/cli/idm/idm-list.js.map +1 -1
  224. package/esm/cli/idm/idm.js +1 -1
  225. package/esm/cli/idm/idm.js.map +1 -1
  226. package/esm/cli/idp/idp-export.js +6 -6
  227. package/esm/cli/idp/idp-export.js.map +1 -1
  228. package/esm/cli/idp/idp-import.js +7 -7
  229. package/esm/cli/idp/idp-import.js.map +1 -1
  230. package/esm/cli/idp/idp-list.js +2 -2
  231. package/esm/cli/idp/idp-list.js.map +1 -1
  232. package/esm/cli/idp/idp.js +1 -1
  233. package/esm/cli/idp/idp.js.map +1 -1
  234. package/esm/cli/info/info.js +3 -3
  235. package/esm/cli/info/info.js.map +1 -1
  236. package/esm/cli/journey/journey-delete.js +2 -2
  237. package/esm/cli/journey/journey-delete.js.map +1 -1
  238. package/esm/cli/journey/journey-describe.js +5 -5
  239. package/esm/cli/journey/journey-describe.js.map +1 -1
  240. package/esm/cli/journey/journey-disable.js +3 -3
  241. package/esm/cli/journey/journey-disable.js.map +1 -1
  242. package/esm/cli/journey/journey-enable.js +3 -3
  243. package/esm/cli/journey/journey-enable.js.map +1 -1
  244. package/esm/cli/journey/journey-export.js +3 -3
  245. package/esm/cli/journey/journey-export.js.map +1 -1
  246. package/esm/cli/journey/journey-import.js +3 -3
  247. package/esm/cli/journey/journey-import.js.map +1 -1
  248. package/esm/cli/journey/journey-list.js +1 -1
  249. package/esm/cli/journey/journey-list.js.map +1 -1
  250. package/esm/cli/journey/journey-prune.js +15 -11
  251. package/esm/cli/journey/journey-prune.js.map +1 -1
  252. package/esm/cli/journey/journey.js +1 -1
  253. package/esm/cli/journey/journey.js.map +1 -1
  254. package/esm/cli/log/log-fetch.js +4 -4
  255. package/esm/cli/log/log-fetch.js.map +1 -1
  256. package/esm/cli/log/log-key-delete.js +3 -3
  257. package/esm/cli/log/log-key-delete.js.map +1 -1
  258. package/esm/cli/log/log-key-describe.js +2 -2
  259. package/esm/cli/log/log-key-describe.js.map +1 -1
  260. package/esm/cli/log/log-key-list.js +2 -2
  261. package/esm/cli/log/log-key-list.js.map +1 -1
  262. package/esm/cli/log/log-list.js +2 -2
  263. package/esm/cli/log/log-list.js.map +1 -1
  264. package/esm/cli/log/log-tail.js +4 -4
  265. package/esm/cli/log/log-tail.js.map +1 -1
  266. package/esm/cli/log/log.js +1 -1
  267. package/esm/cli/log/log.js.map +1 -1
  268. package/esm/cli/realm/realm-add-custom-domain.js +3 -3
  269. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  270. package/esm/cli/realm/realm-describe.js +2 -2
  271. package/esm/cli/realm/realm-describe.js.map +1 -1
  272. package/esm/cli/realm/realm-list.js +3 -3
  273. package/esm/cli/realm/realm-list.js.map +1 -1
  274. package/esm/cli/realm/realm-remove-custom-domain.js +2 -2
  275. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  276. package/esm/cli/realm/realm.js +1 -1
  277. package/esm/cli/realm/realm.js.map +1 -1
  278. package/esm/cli/saml/saml-cot-export.js +3 -3
  279. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  280. package/esm/cli/saml/saml-cot-import.js +3 -3
  281. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  282. package/esm/cli/saml/saml-cot-list.js +3 -3
  283. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  284. package/esm/cli/saml/saml-delete.js +2 -2
  285. package/esm/cli/saml/saml-delete.js.map +1 -1
  286. package/esm/cli/saml/saml-describe.js +3 -3
  287. package/esm/cli/saml/saml-describe.js.map +1 -1
  288. package/esm/cli/saml/saml-export.js +3 -3
  289. package/esm/cli/saml/saml-export.js.map +1 -1
  290. package/esm/cli/saml/saml-import.js +3 -3
  291. package/esm/cli/saml/saml-import.js.map +1 -1
  292. package/esm/cli/saml/saml-list.js +3 -3
  293. package/esm/cli/saml/saml-list.js.map +1 -1
  294. package/esm/cli/saml/saml-metadata-export.js +3 -3
  295. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  296. package/esm/cli/saml/saml.js +1 -1
  297. package/esm/cli/saml/saml.js.map +1 -1
  298. package/esm/cli/script/script-delete.js +2 -2
  299. package/esm/cli/script/script-delete.js.map +1 -1
  300. package/esm/cli/script/script-describe.js +2 -2
  301. package/esm/cli/script/script-describe.js.map +1 -1
  302. package/esm/cli/script/script-export.js +3 -3
  303. package/esm/cli/script/script-export.js.map +1 -1
  304. package/esm/cli/script/script-import.js +3 -3
  305. package/esm/cli/script/script-import.js.map +1 -1
  306. package/esm/cli/script/script-list.js +3 -3
  307. package/esm/cli/script/script-list.js.map +1 -1
  308. package/esm/cli/script/script.js +1 -1
  309. package/esm/cli/script/script.js.map +1 -1
  310. package/esm/cli/service/service-delete.js +2 -2
  311. package/esm/cli/service/service-delete.js.map +1 -1
  312. package/esm/cli/service/service-export.js +2 -2
  313. package/esm/cli/service/service-export.js.map +1 -1
  314. package/esm/cli/service/service-import.js +2 -2
  315. package/esm/cli/service/service-import.js.map +1 -1
  316. package/esm/cli/service/service-list.js +2 -2
  317. package/esm/cli/service/service-list.js.map +1 -1
  318. package/esm/cli/service/service.js +1 -1
  319. package/esm/cli/service/service.js.map +1 -1
  320. package/esm/cli/shell/shell.js +7 -7
  321. package/esm/cli/shell/shell.js.map +1 -1
  322. package/esm/cli/theme/theme-delete.js +3 -3
  323. package/esm/cli/theme/theme-delete.js.map +1 -1
  324. package/esm/cli/theme/theme-export.js +3 -3
  325. package/esm/cli/theme/theme-export.js.map +1 -1
  326. package/esm/cli/theme/theme-import.js +3 -3
  327. package/esm/cli/theme/theme-import.js.map +1 -1
  328. package/esm/cli/theme/theme-list.js +2 -2
  329. package/esm/cli/theme/theme-list.js.map +1 -1
  330. package/esm/cli/theme/theme.js +1 -1
  331. package/esm/cli/theme/theme.js.map +1 -1
  332. package/esm/loader.js +1 -1
  333. package/esm/loader.js.map +1 -1
  334. package/esm/ops/AdminFederationOps.js +3 -3
  335. package/esm/ops/AdminFederationOps.js.map +1 -1
  336. package/esm/ops/AgentOps.js +13 -13
  337. package/esm/ops/AgentOps.js.map +1 -1
  338. package/esm/ops/CirclesOfTrustOps.js +4 -4
  339. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  340. package/esm/ops/ConnectionProfileOps.js +1 -1
  341. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  342. package/esm/ops/EmailTemplateOps.js +42 -44
  343. package/esm/ops/EmailTemplateOps.js.map +1 -1
  344. package/esm/ops/IdmOps.js +40 -56
  345. package/esm/ops/IdmOps.js.map +1 -1
  346. package/esm/ops/IdpOps.js +29 -26
  347. package/esm/ops/IdpOps.js.map +1 -1
  348. package/esm/ops/JourneyOps.js +42 -17
  349. package/esm/ops/JourneyOps.js.map +1 -1
  350. package/esm/ops/LogOps.js.map +1 -1
  351. package/esm/ops/NodeOps.js.map +1 -1
  352. package/esm/ops/OAuth2ClientOps.js +3 -3
  353. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  354. package/esm/ops/OrganizationOps.js +9 -23
  355. package/esm/ops/OrganizationOps.js.map +1 -1
  356. package/esm/ops/PolicyOps.js +10 -10
  357. package/esm/ops/PolicyOps.js.map +1 -1
  358. package/esm/ops/PolicySetOps.js +9 -9
  359. package/esm/ops/PolicySetOps.js.map +1 -1
  360. package/esm/ops/RealmOps.js +9 -9
  361. package/esm/ops/RealmOps.js.map +1 -1
  362. package/esm/ops/ResourceTypeOps.js +8 -8
  363. package/esm/ops/ResourceTypeOps.js.map +1 -1
  364. package/esm/ops/Saml2Ops.js +25 -30
  365. package/esm/ops/Saml2Ops.js.map +1 -1
  366. package/esm/ops/ScriptOps.js +6 -5
  367. package/esm/ops/ScriptOps.js.map +1 -1
  368. package/esm/ops/SecretsOps.js +18 -17
  369. package/esm/ops/SecretsOps.js.map +1 -1
  370. package/esm/ops/ServiceOps.js +1 -1
  371. package/esm/ops/ServiceOps.js.map +1 -1
  372. package/esm/ops/ThemeOps.js +18 -18
  373. package/esm/ops/ThemeOps.js.map +1 -1
  374. package/esm/ops/VariablesOps.js +9 -12
  375. package/esm/ops/VariablesOps.js.map +1 -1
  376. package/esm/utils/Config.js.map +1 -1
  377. package/esm/utils/Console.js +3 -2
  378. package/esm/utils/Console.js.map +1 -1
  379. package/esm/utils/ExportImportUtils.js +2 -2
  380. package/esm/utils/ExportImportUtils.js.map +1 -1
  381. package/esm/utils/Version.js +3 -3
  382. package/esm/utils/Version.js.map +1 -1
  383. package/package.json +5 -3
@@ -1,18 +1,18 @@
1
1
  import { frodo } from '@rockcarver/frodo-lib';
2
2
  import fs from 'fs';
3
- import { getTypedFilename, saveJsonToFile } from '../utils/ExportImportUtils';
4
- import { createProgressIndicator, updateProgressIndicator, stopProgressIndicator, printMessage, createTable, showSpinner, succeedSpinner, failSpinner, debugMessage } from '../utils/Console';
5
- import wordwrap from './utils/Wordwrap';
6
3
  import path from 'path';
4
+ import { createProgressIndicator, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressIndicator, succeedSpinner, updateProgressIndicator } from '../utils/Console';
5
+ import { getTypedFilename, saveJsonToFile } from '../utils/ExportImportUtils';
7
6
  import { cloneDeep } from './utils/OpsUtils';
7
+ import wordwrap from './utils/Wordwrap';
8
8
  const {
9
9
  validateImport
10
10
  } = frodo.utils;
11
11
  const {
12
12
  EMAIL_TEMPLATE_TYPE,
13
- getEmailTemplates,
14
- getEmailTemplate,
15
- putEmailTemplate
13
+ readEmailTemplates,
14
+ readEmailTemplate,
15
+ updateEmailTemplate
16
16
  } = frodo.email.template;
17
17
  const EMAIL_TEMPLATE_FILE_TYPE = 'template.email';
18
18
  const regexEmailTemplateType = new RegExp(`${EMAIL_TEMPLATE_TYPE}/`, 'g');
@@ -66,7 +66,7 @@ export function getTableRowMd(templateObj) {
66
66
  export async function listEmailTemplates(long = false) {
67
67
  let emailTemplates = [];
68
68
  try {
69
- emailTemplates = (await getEmailTemplates()).result;
69
+ emailTemplates = await readEmailTemplates();
70
70
  } catch (error) {
71
71
  printMessage(`Error retrieving email templates: ${error.message}`, 'error');
72
72
  }
@@ -109,7 +109,7 @@ export async function exportEmailTemplateToFile(templateId, file) {
109
109
  }
110
110
  createProgressIndicator('determinate', 1, `Exporting ${templateId}`);
111
111
  try {
112
- const templateData = await getEmailTemplate(templateId);
112
+ const templateData = await readEmailTemplate(templateId);
113
113
  updateProgressIndicator(`Writing file ${fileName}`);
114
114
  const fileData = getFileDataTemplate();
115
115
  fileData.emailTemplate[templateId] = templateData;
@@ -132,16 +132,15 @@ export async function exportEmailTemplatesToFile(file) {
132
132
  }
133
133
  try {
134
134
  const fileData = getFileDataTemplate();
135
- const response = await getEmailTemplates();
136
- const templates = response.result;
137
- createProgressIndicator('determinate', response.resultCount, 'Exporting email templates');
135
+ const templates = await readEmailTemplates();
136
+ createProgressIndicator('determinate', templates.length, 'Exporting email templates');
138
137
  for (const template of templates) {
139
138
  const templateId = template._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');
140
139
  updateProgressIndicator(`Exporting ${templateId}`);
141
140
  fileData.emailTemplate[templateId] = template;
142
141
  }
143
142
  saveJsonToFile(fileData, fileName);
144
- stopProgressIndicator(`${response.resultCount} templates exported to ${fileName}.`);
143
+ stopProgressIndicator(`${templates.length} templates exported to ${fileName}.`);
145
144
  } catch (err) {
146
145
  stopProgressIndicator(`${err}`);
147
146
  printMessage(err, 'error');
@@ -153,9 +152,8 @@ export async function exportEmailTemplatesToFile(file) {
153
152
  */
154
153
  export async function exportEmailTemplatesToFiles() {
155
154
  try {
156
- const response = await getEmailTemplates();
157
- const templates = response.result;
158
- createProgressIndicator('determinate', response.resultCount, 'Exporting email templates');
155
+ const templates = await readEmailTemplates();
156
+ createProgressIndicator('determinate', templates.length, 'Exporting email templates');
159
157
  for (const template of templates) {
160
158
  const templateId = template._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');
161
159
  const fileName = getTypedFilename(templateId, EMAIL_TEMPLATE_FILE_TYPE);
@@ -164,7 +162,7 @@ export async function exportEmailTemplatesToFiles() {
164
162
  fileData.emailTemplate[templateId] = template;
165
163
  saveJsonToFile(fileData, fileName);
166
164
  }
167
- stopProgressIndicator(`${response.resultCount} templates exported.`);
165
+ stopProgressIndicator(`${templates.length} templates exported.`);
168
166
  } catch (err) {
169
167
  stopProgressIndicator(`${err}`);
170
168
  printMessage(err, 'error');
@@ -188,12 +186,12 @@ export async function importEmailTemplateFromFile(templateId, file, raw = false)
188
186
  if (fileData.emailTemplate[templateId] || raw && fileData._id === templateId) {
189
187
  try {
190
188
  const emailTemplateData = raw ? s2sConvert(fileData) : fileData.emailTemplate[templateId];
191
- await putEmailTemplate(templateId, emailTemplateData);
189
+ await updateEmailTemplate(templateId, emailTemplateData);
192
190
  updateProgressIndicator(`Importing ${templateId}`);
193
191
  stopProgressIndicator(`Imported ${templateId}`);
194
- } catch (putEmailTemplateError) {
195
- stopProgressIndicator(`${putEmailTemplateError}`);
196
- printMessage(putEmailTemplateError, 'error');
192
+ } catch (updateEmailTemplateError) {
193
+ stopProgressIndicator(`${updateEmailTemplateError}`);
194
+ printMessage(updateEmailTemplateError, 'error');
197
195
  }
198
196
  } else {
199
197
  stopProgressIndicator(`Email template ${templateId} not found in ${file}!`);
@@ -219,11 +217,11 @@ export async function importEmailTemplatesFromFile(file) {
219
217
  if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
220
218
  const templateId = id.replace(regexEmailTemplateType, '');
221
219
  try {
222
- await putEmailTemplate(templateId, fileData.emailTemplate[templateId]);
220
+ await updateEmailTemplate(templateId, fileData.emailTemplate[templateId]);
223
221
  updateProgressIndicator(`Imported ${templateId}`);
224
- } catch (putEmailTemplateError) {
222
+ } catch (updateEmailTemplateError) {
225
223
  printMessage(`\nError importing ${templateId}`, 'error');
226
- printMessage(putEmailTemplateError.response.data, 'error');
224
+ printMessage(updateEmailTemplateError.response.data, 'error');
227
225
  }
228
226
  }
229
227
  }
@@ -239,11 +237,11 @@ export async function importEmailTemplatesFromFile(file) {
239
237
  * @param {string} file file name
240
238
  * @returns {string} email template id/name
241
239
  */
242
- function getEmailTemplateIdFromFile(file) {
243
- debugMessage(`cli.EmailTemplateOps.getEmailTemplateIdFromFile: file=${file}`);
240
+ function readEmailTemplateIdFromFile(file) {
241
+ debugMessage(`cli.EmailTemplateOps.readEmailTemplateIdFromFile: file=${file}`);
244
242
  const fileName = path.basename(file);
245
243
  const templateId = fileName.substring(14, fileName.indexOf('.'));
246
- debugMessage(`cli.EmailTemplateOps.getEmailTemplateIdFromFile: templateId=${templateId}`);
244
+ debugMessage(`cli.EmailTemplateOps.readEmailTemplateIdFromFile: templateId=${templateId}`);
247
245
  return templateId;
248
246
  }
249
247
 
@@ -282,16 +280,16 @@ export async function importEmailTemplatesFromFiles(raw = false) {
282
280
  let errors = 0;
283
281
  if (raw) {
284
282
  total++;
285
- const templateId = getEmailTemplateIdFromFile(file);
283
+ const templateId = readEmailTemplateIdFromFile(file);
286
284
  try {
287
285
  const templateData = s2sConvert(fileData);
288
- await putEmailTemplate(templateId, templateData);
289
- } catch (putEmailTemplateError) {
290
- var _putEmailTemplateErro;
286
+ await updateEmailTemplate(templateId, templateData);
287
+ } catch (updateEmailTemplateError) {
288
+ var _updateEmailTemplateE;
291
289
  errors += 1;
292
290
  printMessage(`\nError importing ${templateId}`, 'error');
293
- printMessage(putEmailTemplateError, 'error');
294
- printMessage((_putEmailTemplateErro = putEmailTemplateError.response) === null || _putEmailTemplateErro === void 0 ? void 0 : _putEmailTemplateErro.data, 'error');
291
+ printMessage(updateEmailTemplateError, 'error');
292
+ printMessage((_updateEmailTemplateE = updateEmailTemplateError.response) === null || _updateEmailTemplateE === void 0 ? void 0 : _updateEmailTemplateE.data, 'error');
295
293
  }
296
294
  } else {
297
295
  total += Object.keys(fileData.emailTemplate).length;
@@ -299,11 +297,11 @@ export async function importEmailTemplatesFromFiles(raw = false) {
299
297
  if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
300
298
  const templateId = id.replace(regexEmailTemplateType, '');
301
299
  try {
302
- await putEmailTemplate(templateId, fileData.emailTemplate[templateId]);
303
- } catch (putEmailTemplateError) {
300
+ await updateEmailTemplate(templateId, fileData.emailTemplate[templateId]);
301
+ } catch (updateEmailTemplateError) {
304
302
  errors += 1;
305
303
  printMessage(`\nError importing ${templateId}`, 'error');
306
- printMessage(putEmailTemplateError.response.data, 'error');
304
+ printMessage(updateEmailTemplateError.response.data, 'error');
307
305
  }
308
306
  }
309
307
  }
@@ -328,26 +326,26 @@ export async function importFirstEmailTemplateFromFile(file, raw = false) {
328
326
  if (raw && file.startsWith('emailTemplate-') || validateImport(fileData.meta)) {
329
327
  showSpinner(`Importing first email template`);
330
328
  if (raw) {
331
- const templateId = getEmailTemplateIdFromFile(file);
329
+ const templateId = readEmailTemplateIdFromFile(file);
332
330
  try {
333
331
  const templateData = s2sConvert(fileData);
334
- await putEmailTemplate(templateId, templateData);
332
+ await updateEmailTemplate(templateId, templateData);
335
333
  succeedSpinner(`Imported ${templateId}`);
336
- } catch (putEmailTemplateError) {
337
- var _putEmailTemplateErro2;
334
+ } catch (updateEmailTemplateError) {
335
+ var _updateEmailTemplateE2;
338
336
  failSpinner(`Error importing ${templateId}`);
339
- printMessage((_putEmailTemplateErro2 = putEmailTemplateError.response) === null || _putEmailTemplateErro2 === void 0 ? void 0 : _putEmailTemplateErro2.data, 'error');
337
+ printMessage((_updateEmailTemplateE2 = updateEmailTemplateError.response) === null || _updateEmailTemplateE2 === void 0 ? void 0 : _updateEmailTemplateE2.data, 'error');
340
338
  }
341
339
  } else {
342
340
  for (const id in fileData.emailTemplate) {
343
341
  if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
344
342
  try {
345
- await putEmailTemplate(id.replace(regexEmailTemplateType, ''), fileData.emailTemplate[id]);
343
+ await updateEmailTemplate(id.replace(regexEmailTemplateType, ''), fileData.emailTemplate[id]);
346
344
  succeedSpinner(`Imported ${id}`);
347
- } catch (putEmailTemplateError) {
348
- var _putEmailTemplateErro3;
345
+ } catch (updateEmailTemplateError) {
346
+ var _updateEmailTemplateE3;
349
347
  failSpinner(`Error importing ${id}`);
350
- printMessage((_putEmailTemplateErro3 = putEmailTemplateError.response) === null || _putEmailTemplateErro3 === void 0 ? void 0 : _putEmailTemplateErro3.data, 'error');
348
+ printMessage((_updateEmailTemplateE3 = updateEmailTemplateError.response) === null || _updateEmailTemplateE3 === void 0 ? void 0 : _updateEmailTemplateE3.data, 'error');
351
349
  }
352
350
  break;
353
351
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EmailTemplateOps.js","names":["frodo","fs","getTypedFilename","saveJsonToFile","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","printMessage","createTable","showSpinner","succeedSpinner","failSpinner","debugMessage","wordwrap","path","cloneDeep","validateImport","utils","EMAIL_TEMPLATE_TYPE","getEmailTemplates","getEmailTemplate","putEmailTemplate","email","template","EMAIL_TEMPLATE_FILE_TYPE","regexEmailTemplateType","RegExp","getFileDataTemplate","meta","emailTemplate","getOneLineDescription","templateObj","description","_id","split","displayName","defaultLocale","subject","Object","values","getTableHeaderMd","markdown","getTableRowMd","templateId","replace","locales","keys","length","filter","locale","join","row","name","listEmailTemplates","long","emailTemplates","result","error","message","sort","a","b","localeCompare","entries","table","push","enabled","from","toString","exportEmailTemplateToFile","file","fileName","templateData","fileData","err","exportEmailTemplatesToFile","response","templates","resultCount","exportEmailTemplatesToFiles","importEmailTemplateFromFile","raw","replaceAll","readFile","data","JSON","parse","emailTemplateData","s2sConvert","putEmailTemplateError","importEmailTemplatesFromFile","id","hasOwnProperty","call","getEmailTemplateIdFromFile","basename","substring","indexOf","html","convertedData","importEmailTemplatesFromFiles","names","readdirSync","jsonFiles","startsWith","endsWith","toLowerCase","total","totalErrors","readFileSync","errors","_putEmailTemplateErro","importFirstEmailTemplateFromFile","_putEmailTemplateErro2","_putEmailTemplateErro3"],"sources":["../../src/ops/EmailTemplateOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport type { EmailTemplateSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport { getTypedFilename, saveJsonToFile } from '../utils/ExportImportUtils';\nimport {\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n printMessage,\n createTable,\n showSpinner,\n succeedSpinner,\n failSpinner,\n debugMessage,\n} from '../utils/Console';\nimport wordwrap from './utils/Wordwrap';\nimport path from 'path';\nimport { cloneDeep } from './utils/OpsUtils';\n\nconst { validateImport } = frodo.utils;\nconst {\n EMAIL_TEMPLATE_TYPE,\n getEmailTemplates,\n getEmailTemplate,\n putEmailTemplate,\n} = frodo.email.template;\n\nconst EMAIL_TEMPLATE_FILE_TYPE = 'template.email';\n\nconst regexEmailTemplateType = new RegExp(`${EMAIL_TEMPLATE_TYPE}/`, 'g');\n\n// use a function vs a template variable to avoid problems in loops\nfunction getFileDataTemplate() {\n return {\n meta: {},\n emailTemplate: {},\n };\n}\n\n/**\n * Get a one-line description of the email template\n * @param {EmailTemplateSkeleton} templateObj email template object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(\n templateObj: EmailTemplateSkeleton\n): string {\n const description = `[${templateObj._id.split('/')[1]['brightCyan']}] ${\n templateObj.displayName ? templateObj.displayName : ''\n } - ${\n templateObj.defaultLocale\n ? templateObj.subject[templateObj.defaultLocale]\n : Object.values(templateObj.subject)[0]\n }`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Display Name | Locale(s) | Subject | Id |\\n';\n markdown += '| ------------ | --------- | ------- | ---|';\n return markdown;\n}\n\n/**\n * Get a table-row of the email template in markdown\n * @param {EmailTemplateSkeleton} templateObj email template object to describe\n * @returns {string} a table-row of the email template in markdown\n */\nexport function getTableRowMd(templateObj: EmailTemplateSkeleton): string {\n const templateId = templateObj._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');\n const locales = `${templateObj.defaultLocale}${\n Object.keys(templateObj.subject).length > 1\n ? ` (${Object.keys(templateObj.subject)\n .filter((locale) => locale !== templateObj.defaultLocale)\n .join(',')})`\n : ''\n }`;\n const row = `| ${\n templateObj.name ? templateObj.name : templateId\n } | ${locales} | ${\n templateObj.subject[templateObj.defaultLocale]\n } | \\`${templateId}\\` |`;\n return row;\n}\n\n/**\n * List email templates\n * @param {boolean} long Long list format with details\n * @return {Promise<unknown[]>} a promise that resolves to an array of email template objects\n */\nexport async function listEmailTemplates(long = false): Promise<unknown[]> {\n let emailTemplates = [];\n try {\n emailTemplates = (await getEmailTemplates()).result;\n } catch (error) {\n printMessage(`Error retrieving email templates: ${error.message}`, 'error');\n }\n emailTemplates.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n for (const [, emailTemplate] of emailTemplates.entries()) {\n printMessage(\n `${emailTemplate._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '')}`,\n 'data'\n );\n }\n } else {\n const table = createTable([\n 'Id'['brightCyan'],\n 'Name'['brightCyan'],\n 'Status'['brightCyan'],\n 'Locale(s)'['brightCyan'],\n 'From'['brightCyan'],\n 'Subject'['brightCyan'],\n ]);\n for (const emailTemplate of emailTemplates) {\n table.push([\n // Id\n `${emailTemplate._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '')}`,\n // Name\n `${emailTemplate.displayName ? emailTemplate.displayName : ''}`,\n // Status\n emailTemplate.enabled === false\n ? 'disabled'['brightRed']\n : 'enabled'['brightGreen'],\n // Locale(s)\n `${emailTemplate.defaultLocale}${\n Object.keys(emailTemplate.subject).length > 1\n ? ` (${Object.keys(emailTemplate.subject)\n .filter((locale) => locale !== emailTemplate.defaultLocale)\n .join(',')})`\n : ''\n }`,\n // From\n `${emailTemplate.from ? emailTemplate.from : ''}`,\n // Subject\n wordwrap(emailTemplate.subject[emailTemplate.defaultLocale], 40),\n ]);\n }\n printMessage(table.toString(), 'data');\n }\n return emailTemplates;\n}\n\n/**\n * Export single email template to a file\n * @param {string} templateId email template id to export\n * @param {string} file filename where to export the template data\n */\nexport async function exportEmailTemplateToFile(\n templateId: string,\n file: string\n) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(templateId, EMAIL_TEMPLATE_FILE_TYPE);\n }\n createProgressIndicator('determinate', 1, `Exporting ${templateId}`);\n try {\n const templateData = await getEmailTemplate(templateId);\n updateProgressIndicator(`Writing file ${fileName}`);\n const fileData = getFileDataTemplate();\n fileData.emailTemplate[templateId] = templateData;\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `Exported ${templateId['brightCyan']} to ${fileName['brightCyan']}.`\n );\n } catch (err) {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n }\n}\n\n/**\n * Export all email templates to file\n * @param {String} file optional filename\n */\nexport async function exportEmailTemplatesToFile(file) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`allEmailTemplates`, EMAIL_TEMPLATE_FILE_TYPE);\n }\n try {\n const fileData = getFileDataTemplate();\n const response = await getEmailTemplates();\n const templates = response.result;\n createProgressIndicator(\n 'determinate',\n response.resultCount,\n 'Exporting email templates'\n );\n for (const template of templates) {\n const templateId = template._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');\n updateProgressIndicator(`Exporting ${templateId}`);\n fileData.emailTemplate[templateId] = template;\n }\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `${response.resultCount} templates exported to ${fileName}.`\n );\n } catch (err) {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n }\n}\n\n/**\n * Export all email templates to separate files\n */\nexport async function exportEmailTemplatesToFiles() {\n try {\n const response = await getEmailTemplates();\n const templates = response.result;\n createProgressIndicator(\n 'determinate',\n response.resultCount,\n 'Exporting email templates'\n );\n for (const template of templates) {\n const templateId = template._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');\n const fileName = getTypedFilename(templateId, EMAIL_TEMPLATE_FILE_TYPE);\n const fileData = getFileDataTemplate();\n updateProgressIndicator(`Exporting ${templateId}`);\n fileData.emailTemplate[templateId] = template;\n saveJsonToFile(fileData, fileName);\n }\n stopProgressIndicator(`${response.resultCount} templates exported.`);\n } catch (err) {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n }\n}\n\n/**\n * Import email template by id from file\n * @param {string} templateId email template id\n * @param {string} file optional filename\n * @param {boolean} raw import raw data file lacking frodo export envelop\n */\nexport async function importEmailTemplateFromFile(\n templateId: string,\n file: string,\n raw = false\n) {\n // eslint-disable-next-line no-param-reassign\n templateId = templateId.replaceAll(`${EMAIL_TEMPLATE_TYPE}/`, '');\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (raw || validateImport(fileData.meta)) {\n createProgressIndicator('determinate', 1, `Importing ${templateId}`);\n if (\n fileData.emailTemplate[templateId] ||\n (raw && fileData._id === templateId)\n ) {\n try {\n const emailTemplateData = raw\n ? s2sConvert(fileData)\n : fileData.emailTemplate[templateId];\n await putEmailTemplate(templateId, emailTemplateData);\n updateProgressIndicator(`Importing ${templateId}`);\n stopProgressIndicator(`Imported ${templateId}`);\n } catch (putEmailTemplateError) {\n stopProgressIndicator(`${putEmailTemplateError}`);\n printMessage(putEmailTemplateError, 'error');\n }\n } else {\n stopProgressIndicator(\n `Email template ${templateId} not found in ${file}!`\n );\n printMessage(\n `Email template ${templateId} not found in ${file}!`,\n 'error'\n );\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all email templates from file\n * @param {string} file optional filename\n */\nexport async function importEmailTemplatesFromFile(file: string) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(\n 'determinate',\n Object.keys(fileData.emailTemplate).length,\n `Importing email templates`\n );\n for (const id in fileData.emailTemplate) {\n if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {\n const templateId = id.replace(regexEmailTemplateType, '');\n try {\n await putEmailTemplate(\n templateId,\n fileData.emailTemplate[templateId]\n );\n updateProgressIndicator(`Imported ${templateId}`);\n } catch (putEmailTemplateError) {\n printMessage(`\\nError importing ${templateId}`, 'error');\n printMessage(putEmailTemplateError.response.data, 'error');\n }\n }\n }\n stopProgressIndicator(`Done.`);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Helper function to get email template id from file name\n * @param {string} file file name\n * @returns {string} email template id/name\n */\nfunction getEmailTemplateIdFromFile(file: string) {\n debugMessage(`cli.EmailTemplateOps.getEmailTemplateIdFromFile: file=${file}`);\n const fileName = path.basename(file);\n const templateId = fileName.substring(14, fileName.indexOf('.'));\n debugMessage(\n `cli.EmailTemplateOps.getEmailTemplateIdFromFile: templateId=${templateId}`\n );\n return templateId;\n}\n\n/**\n * Convert template for s2s purposes (software-to-saas migration)\n * @param {EmailTemplateSkeleton} templateData template object\n * @returns {EmailTemplateSkeleton} converted template object\n */\nfunction s2sConvert(\n templateData: EmailTemplateSkeleton\n): EmailTemplateSkeleton {\n if (templateData.message && !templateData.html) {\n const convertedData = cloneDeep(templateData);\n convertedData.html = cloneDeep(templateData.message);\n debugMessage(`cli.EmailTemplateOps.s2sConvert: templateData:`);\n debugMessage(templateData);\n debugMessage(`cli.EmailTemplateOps.s2sConvert: convertedData:`);\n debugMessage(convertedData);\n return convertedData;\n }\n return templateData;\n}\n\n/**\n * Import all email templates from separate files\n * @param {boolean} raw import raw data file lacking frodo export envelop\n */\nexport async function importEmailTemplatesFromFiles(raw = false) {\n const names = fs.readdirSync('.');\n const jsonFiles = raw\n ? names.filter(\n (name) =>\n name.startsWith(`${EMAIL_TEMPLATE_TYPE}-`) && name.endsWith(`.json`)\n )\n : names.filter((name) =>\n name.toLowerCase().endsWith(`${EMAIL_TEMPLATE_FILE_TYPE}.json`)\n );\n createProgressIndicator(\n 'determinate',\n jsonFiles.length,\n 'Importing email templates...'\n );\n let total = 0;\n let totalErrors = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (\n (raw && file.startsWith('emailTemplate-')) ||\n validateImport(fileData.meta)\n ) {\n let errors = 0;\n if (raw) {\n total++;\n const templateId = getEmailTemplateIdFromFile(file);\n try {\n const templateData = s2sConvert(fileData);\n await putEmailTemplate(templateId, templateData);\n } catch (putEmailTemplateError) {\n errors += 1;\n printMessage(`\\nError importing ${templateId}`, 'error');\n printMessage(putEmailTemplateError, 'error');\n printMessage(putEmailTemplateError.response?.data, 'error');\n }\n } else {\n total += Object.keys(fileData.emailTemplate).length;\n for (const id in fileData.emailTemplate) {\n if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {\n const templateId = id.replace(regexEmailTemplateType, '');\n try {\n await putEmailTemplate(\n templateId,\n fileData.emailTemplate[templateId]\n );\n } catch (putEmailTemplateError) {\n errors += 1;\n printMessage(`\\nError importing ${templateId}`, 'error');\n printMessage(putEmailTemplateError.response.data, 'error');\n }\n }\n }\n }\n totalErrors += errors;\n updateProgressIndicator(`Imported ${file}`);\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressIndicator(\n `Imported ${total - totalErrors} of ${total} email template(s) from ${\n jsonFiles.length\n } file(s).`\n );\n}\n\n/**\n * Import first email template from file\n * @param {String} file optional filename\n */\nexport async function importFirstEmailTemplateFromFile(\n file: string,\n raw = false\n) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (\n (raw && file.startsWith('emailTemplate-')) ||\n validateImport(fileData.meta)\n ) {\n showSpinner(`Importing first email template`);\n if (raw) {\n const templateId = getEmailTemplateIdFromFile(file);\n try {\n const templateData = s2sConvert(fileData);\n await putEmailTemplate(templateId, templateData);\n succeedSpinner(`Imported ${templateId}`);\n } catch (putEmailTemplateError) {\n failSpinner(`Error importing ${templateId}`);\n printMessage(putEmailTemplateError.response?.data, 'error');\n }\n } else {\n for (const id in fileData.emailTemplate) {\n if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {\n try {\n await putEmailTemplate(\n id.replace(regexEmailTemplateType, ''),\n fileData.emailTemplate[id]\n );\n succeedSpinner(`Imported ${id}`);\n } catch (putEmailTemplateError) {\n failSpinner(`Error importing ${id}`);\n printMessage(putEmailTemplateError.response?.data, 'error');\n }\n break;\n }\n }\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EmailTemplateOps.js","names":["frodo","fs","path","createProgressIndicator","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressIndicator","succeedSpinner","updateProgressIndicator","getTypedFilename","saveJsonToFile","cloneDeep","wordwrap","validateImport","utils","EMAIL_TEMPLATE_TYPE","readEmailTemplates","readEmailTemplate","updateEmailTemplate","email","template","EMAIL_TEMPLATE_FILE_TYPE","regexEmailTemplateType","RegExp","getFileDataTemplate","meta","emailTemplate","getOneLineDescription","templateObj","description","_id","split","displayName","defaultLocale","subject","Object","values","getTableHeaderMd","markdown","getTableRowMd","templateId","replace","locales","keys","length","filter","locale","join","row","name","listEmailTemplates","long","emailTemplates","error","message","sort","a","b","localeCompare","entries","table","push","enabled","from","toString","exportEmailTemplateToFile","file","fileName","templateData","fileData","err","exportEmailTemplatesToFile","templates","exportEmailTemplatesToFiles","importEmailTemplateFromFile","raw","replaceAll","readFile","data","JSON","parse","emailTemplateData","s2sConvert","updateEmailTemplateError","importEmailTemplatesFromFile","id","hasOwnProperty","call","response","readEmailTemplateIdFromFile","basename","substring","indexOf","html","convertedData","importEmailTemplatesFromFiles","names","readdirSync","jsonFiles","startsWith","endsWith","toLowerCase","total","totalErrors","readFileSync","errors","_updateEmailTemplateE","importFirstEmailTemplateFromFile","_updateEmailTemplateE2","_updateEmailTemplateE3"],"sources":["../../src/ops/EmailTemplateOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { EmailTemplateSkeleton } from '@rockcarver/frodo-lib/types/ops/EmailTemplateOps';\nimport fs from 'fs';\nimport path from 'path';\n\nimport {\n createProgressIndicator,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressIndicator,\n succeedSpinner,\n updateProgressIndicator,\n} from '../utils/Console';\nimport { getTypedFilename, saveJsonToFile } from '../utils/ExportImportUtils';\nimport { cloneDeep } from './utils/OpsUtils';\nimport wordwrap from './utils/Wordwrap';\n\nconst { validateImport } = frodo.utils;\nconst {\n EMAIL_TEMPLATE_TYPE,\n readEmailTemplates,\n readEmailTemplate,\n updateEmailTemplate,\n} = frodo.email.template;\n\nconst EMAIL_TEMPLATE_FILE_TYPE = 'template.email';\n\nconst regexEmailTemplateType = new RegExp(`${EMAIL_TEMPLATE_TYPE}/`, 'g');\n\n// use a function vs a template variable to avoid problems in loops\nfunction getFileDataTemplate() {\n return {\n meta: {},\n emailTemplate: {},\n };\n}\n\n/**\n * Get a one-line description of the email template\n * @param {EmailTemplateSkeleton} templateObj email template object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(\n templateObj: EmailTemplateSkeleton\n): string {\n const description = `[${templateObj._id.split('/')[1]['brightCyan']}] ${\n templateObj.displayName ? templateObj.displayName : ''\n } - ${\n templateObj.defaultLocale\n ? templateObj.subject[templateObj.defaultLocale]\n : Object.values(templateObj.subject)[0]\n }`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Display Name | Locale(s) | Subject | Id |\\n';\n markdown += '| ------------ | --------- | ------- | ---|';\n return markdown;\n}\n\n/**\n * Get a table-row of the email template in markdown\n * @param {EmailTemplateSkeleton} templateObj email template object to describe\n * @returns {string} a table-row of the email template in markdown\n */\nexport function getTableRowMd(templateObj: EmailTemplateSkeleton): string {\n const templateId = templateObj._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');\n const locales = `${templateObj.defaultLocale}${\n Object.keys(templateObj.subject).length > 1\n ? ` (${Object.keys(templateObj.subject)\n .filter((locale) => locale !== templateObj.defaultLocale)\n .join(',')})`\n : ''\n }`;\n const row = `| ${\n templateObj.name ? templateObj.name : templateId\n } | ${locales} | ${\n templateObj.subject[templateObj.defaultLocale]\n } | \\`${templateId}\\` |`;\n return row;\n}\n\n/**\n * List email templates\n * @param {boolean} long Long list format with details\n * @return {Promise<unknown[]>} a promise that resolves to an array of email template objects\n */\nexport async function listEmailTemplates(long = false): Promise<unknown[]> {\n let emailTemplates = [];\n try {\n emailTemplates = await readEmailTemplates();\n } catch (error) {\n printMessage(`Error retrieving email templates: ${error.message}`, 'error');\n }\n emailTemplates.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n for (const [, emailTemplate] of emailTemplates.entries()) {\n printMessage(\n `${emailTemplate._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '')}`,\n 'data'\n );\n }\n } else {\n const table = createTable([\n 'Id'['brightCyan'],\n 'Name'['brightCyan'],\n 'Status'['brightCyan'],\n 'Locale(s)'['brightCyan'],\n 'From'['brightCyan'],\n 'Subject'['brightCyan'],\n ]);\n for (const emailTemplate of emailTemplates) {\n table.push([\n // Id\n `${emailTemplate._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '')}`,\n // Name\n `${emailTemplate.displayName ? emailTemplate.displayName : ''}`,\n // Status\n emailTemplate.enabled === false\n ? 'disabled'['brightRed']\n : 'enabled'['brightGreen'],\n // Locale(s)\n `${emailTemplate.defaultLocale}${\n Object.keys(emailTemplate.subject).length > 1\n ? ` (${Object.keys(emailTemplate.subject)\n .filter((locale) => locale !== emailTemplate.defaultLocale)\n .join(',')})`\n : ''\n }`,\n // From\n `${emailTemplate.from ? emailTemplate.from : ''}`,\n // Subject\n wordwrap(emailTemplate.subject[emailTemplate.defaultLocale], 40),\n ]);\n }\n printMessage(table.toString(), 'data');\n }\n return emailTemplates;\n}\n\n/**\n * Export single email template to a file\n * @param {string} templateId email template id to export\n * @param {string} file filename where to export the template data\n */\nexport async function exportEmailTemplateToFile(\n templateId: string,\n file: string\n) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(templateId, EMAIL_TEMPLATE_FILE_TYPE);\n }\n createProgressIndicator('determinate', 1, `Exporting ${templateId}`);\n try {\n const templateData = await readEmailTemplate(templateId);\n updateProgressIndicator(`Writing file ${fileName}`);\n const fileData = getFileDataTemplate();\n fileData.emailTemplate[templateId] = templateData;\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `Exported ${templateId['brightCyan']} to ${fileName['brightCyan']}.`\n );\n } catch (err) {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n }\n}\n\n/**\n * Export all email templates to file\n * @param {String} file optional filename\n */\nexport async function exportEmailTemplatesToFile(file) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`allEmailTemplates`, EMAIL_TEMPLATE_FILE_TYPE);\n }\n try {\n const fileData = getFileDataTemplate();\n const templates = await readEmailTemplates();\n createProgressIndicator(\n 'determinate',\n templates.length,\n 'Exporting email templates'\n );\n for (const template of templates) {\n const templateId = template._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');\n updateProgressIndicator(`Exporting ${templateId}`);\n fileData.emailTemplate[templateId] = template;\n }\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `${templates.length} templates exported to ${fileName}.`\n );\n } catch (err) {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n }\n}\n\n/**\n * Export all email templates to separate files\n */\nexport async function exportEmailTemplatesToFiles() {\n try {\n const templates = await readEmailTemplates();\n createProgressIndicator(\n 'determinate',\n templates.length,\n 'Exporting email templates'\n );\n for (const template of templates) {\n const templateId = template._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');\n const fileName = getTypedFilename(templateId, EMAIL_TEMPLATE_FILE_TYPE);\n const fileData = getFileDataTemplate();\n updateProgressIndicator(`Exporting ${templateId}`);\n fileData.emailTemplate[templateId] = template;\n saveJsonToFile(fileData, fileName);\n }\n stopProgressIndicator(`${templates.length} templates exported.`);\n } catch (err) {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n }\n}\n\n/**\n * Import email template by id from file\n * @param {string} templateId email template id\n * @param {string} file optional filename\n * @param {boolean} raw import raw data file lacking frodo export envelop\n */\nexport async function importEmailTemplateFromFile(\n templateId: string,\n file: string,\n raw = false\n) {\n // eslint-disable-next-line no-param-reassign\n templateId = templateId.replaceAll(`${EMAIL_TEMPLATE_TYPE}/`, '');\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (raw || validateImport(fileData.meta)) {\n createProgressIndicator('determinate', 1, `Importing ${templateId}`);\n if (\n fileData.emailTemplate[templateId] ||\n (raw && fileData._id === templateId)\n ) {\n try {\n const emailTemplateData = raw\n ? s2sConvert(fileData)\n : fileData.emailTemplate[templateId];\n await updateEmailTemplate(templateId, emailTemplateData);\n updateProgressIndicator(`Importing ${templateId}`);\n stopProgressIndicator(`Imported ${templateId}`);\n } catch (updateEmailTemplateError) {\n stopProgressIndicator(`${updateEmailTemplateError}`);\n printMessage(updateEmailTemplateError, 'error');\n }\n } else {\n stopProgressIndicator(\n `Email template ${templateId} not found in ${file}!`\n );\n printMessage(\n `Email template ${templateId} not found in ${file}!`,\n 'error'\n );\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all email templates from file\n * @param {string} file optional filename\n */\nexport async function importEmailTemplatesFromFile(file: string) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(\n 'determinate',\n Object.keys(fileData.emailTemplate).length,\n `Importing email templates`\n );\n for (const id in fileData.emailTemplate) {\n if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {\n const templateId = id.replace(regexEmailTemplateType, '');\n try {\n await updateEmailTemplate(\n templateId,\n fileData.emailTemplate[templateId]\n );\n updateProgressIndicator(`Imported ${templateId}`);\n } catch (updateEmailTemplateError) {\n printMessage(`\\nError importing ${templateId}`, 'error');\n printMessage(updateEmailTemplateError.response.data, 'error');\n }\n }\n }\n stopProgressIndicator(`Done.`);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Helper function to get email template id from file name\n * @param {string} file file name\n * @returns {string} email template id/name\n */\nfunction readEmailTemplateIdFromFile(file: string) {\n debugMessage(\n `cli.EmailTemplateOps.readEmailTemplateIdFromFile: file=${file}`\n );\n const fileName = path.basename(file);\n const templateId = fileName.substring(14, fileName.indexOf('.'));\n debugMessage(\n `cli.EmailTemplateOps.readEmailTemplateIdFromFile: templateId=${templateId}`\n );\n return templateId;\n}\n\n/**\n * Convert template for s2s purposes (software-to-saas migration)\n * @param {EmailTemplateSkeleton} templateData template object\n * @returns {EmailTemplateSkeleton} converted template object\n */\nfunction s2sConvert(\n templateData: EmailTemplateSkeleton\n): EmailTemplateSkeleton {\n if (templateData.message && !templateData.html) {\n const convertedData = cloneDeep(templateData);\n convertedData.html = cloneDeep(templateData.message);\n debugMessage(`cli.EmailTemplateOps.s2sConvert: templateData:`);\n debugMessage(templateData);\n debugMessage(`cli.EmailTemplateOps.s2sConvert: convertedData:`);\n debugMessage(convertedData);\n return convertedData;\n }\n return templateData;\n}\n\n/**\n * Import all email templates from separate files\n * @param {boolean} raw import raw data file lacking frodo export envelop\n */\nexport async function importEmailTemplatesFromFiles(raw = false) {\n const names = fs.readdirSync('.');\n const jsonFiles = raw\n ? names.filter(\n (name) =>\n name.startsWith(`${EMAIL_TEMPLATE_TYPE}-`) && name.endsWith(`.json`)\n )\n : names.filter((name) =>\n name.toLowerCase().endsWith(`${EMAIL_TEMPLATE_FILE_TYPE}.json`)\n );\n createProgressIndicator(\n 'determinate',\n jsonFiles.length,\n 'Importing email templates...'\n );\n let total = 0;\n let totalErrors = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (\n (raw && file.startsWith('emailTemplate-')) ||\n validateImport(fileData.meta)\n ) {\n let errors = 0;\n if (raw) {\n total++;\n const templateId = readEmailTemplateIdFromFile(file);\n try {\n const templateData = s2sConvert(fileData);\n await updateEmailTemplate(templateId, templateData);\n } catch (updateEmailTemplateError) {\n errors += 1;\n printMessage(`\\nError importing ${templateId}`, 'error');\n printMessage(updateEmailTemplateError, 'error');\n printMessage(updateEmailTemplateError.response?.data, 'error');\n }\n } else {\n total += Object.keys(fileData.emailTemplate).length;\n for (const id in fileData.emailTemplate) {\n if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {\n const templateId = id.replace(regexEmailTemplateType, '');\n try {\n await updateEmailTemplate(\n templateId,\n fileData.emailTemplate[templateId]\n );\n } catch (updateEmailTemplateError) {\n errors += 1;\n printMessage(`\\nError importing ${templateId}`, 'error');\n printMessage(updateEmailTemplateError.response.data, 'error');\n }\n }\n }\n }\n totalErrors += errors;\n updateProgressIndicator(`Imported ${file}`);\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressIndicator(\n `Imported ${total - totalErrors} of ${total} email template(s) from ${\n jsonFiles.length\n } file(s).`\n );\n}\n\n/**\n * Import first email template from file\n * @param {String} file optional filename\n */\nexport async function importFirstEmailTemplateFromFile(\n file: string,\n raw = false\n) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (\n (raw && file.startsWith('emailTemplate-')) ||\n validateImport(fileData.meta)\n ) {\n showSpinner(`Importing first email template`);\n if (raw) {\n const templateId = readEmailTemplateIdFromFile(file);\n try {\n const templateData = s2sConvert(fileData);\n await updateEmailTemplate(templateId, templateData);\n succeedSpinner(`Imported ${templateId}`);\n } catch (updateEmailTemplateError) {\n failSpinner(`Error importing ${templateId}`);\n printMessage(updateEmailTemplateError.response?.data, 'error');\n }\n } else {\n for (const id in fileData.emailTemplate) {\n if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {\n try {\n await updateEmailTemplate(\n id.replace(regexEmailTemplateType, ''),\n fileData.emailTemplate[id]\n );\n succeedSpinner(`Imported ${id}`);\n } catch (updateEmailTemplateError) {\n failSpinner(`Error importing ${id}`);\n printMessage(updateEmailTemplateError.response?.data, 'error');\n }\n break;\n }\n }\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n"],"mappings":"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"}
package/esm/ops/IdmOps.js CHANGED
@@ -12,11 +12,13 @@ const {
12
12
  } = frodo.utils;
13
13
  const {
14
14
  testConnectorServers,
15
- getAllConfigEntities,
16
- getConfigEntity,
17
- putConfigEntity,
18
- queryAllManagedObjectsByType
15
+ readConfigEntities,
16
+ readConfigEntity,
17
+ updateConfigEntity
19
18
  } = frodo.idm.config;
19
+ const {
20
+ queryManagedObjects
21
+ } = frodo.idm.managed;
20
22
 
21
23
  /**
22
24
  * Warn about and list offline remote connector servers
@@ -39,15 +41,13 @@ export async function warnAboutOfflineConnectorServers() {
39
41
  */
40
42
  export async function listAllConfigEntities() {
41
43
  try {
42
- const {
43
- configurations
44
- } = await getAllConfigEntities();
44
+ const configurations = await readConfigEntities();
45
45
  for (const configEntity of configurations) {
46
46
  printMessage(`${configEntity._id}`, 'data');
47
47
  }
48
- } catch (getAllConfigEntitiesError) {
49
- printMessage(getAllConfigEntitiesError, 'error');
50
- printMessage(`Error getting config entities: ${getAllConfigEntitiesError}`, 'error');
48
+ } catch (readConfigEntitiesError) {
49
+ printMessage(readConfigEntitiesError, 'error');
50
+ printMessage(`Error getting config entities: ${readConfigEntitiesError}`, 'error');
51
51
  }
52
52
  }
53
53
 
@@ -61,7 +61,7 @@ export async function exportConfigEntity(id, file) {
61
61
  if (!fileName) {
62
62
  fileName = getTypedFilename(`${id}`, 'idm');
63
63
  }
64
- const configEntity = await getConfigEntity(id);
64
+ const configEntity = await readConfigEntity(id);
65
65
  fs.writeFile(fileName, JSON.stringify(configEntity, null, 2), err => {
66
66
  if (err) {
67
67
  return printMessage(`ERROR - can't save ${id} export to file`, 'error');
@@ -76,26 +76,24 @@ export async function exportConfigEntity(id, file) {
76
76
  */
77
77
  export async function exportAllRawConfigEntities(directory) {
78
78
  try {
79
- const {
80
- configurations
81
- } = await getAllConfigEntities();
79
+ const configurations = await readConfigEntities();
82
80
  if (!fs.existsSync(directory)) {
83
81
  fs.mkdirSync(directory);
84
82
  }
85
83
  createProgressIndicator('indeterminate', undefined, 'Exporting config objects...');
86
84
  const entityPromises = [];
87
85
  for (const configEntity of configurations) {
88
- entityPromises.push(getConfigEntity(configEntity._id).catch(getConfigEntityError => {
89
- var _getConfigEntityError, _getConfigEntityError2, _getConfigEntityError3, _getConfigEntityError4, _getConfigEntityError5, _getConfigEntityError6, _getConfigEntityError7, _getConfigEntityError8, _getConfigEntityError9;
90
- 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.') && !(
86
+ entityPromises.push(readConfigEntity(configEntity._id).catch(readConfigEntityError => {
87
+ var _readConfigEntityErro, _readConfigEntityErro2, _readConfigEntityErro3, _readConfigEntityErro4, _readConfigEntityErro5, _readConfigEntityErro6, _readConfigEntityErro7, _readConfigEntityErro8, _readConfigEntityErro9;
88
+ if (!(((_readConfigEntityErro = readConfigEntityError.response) === null || _readConfigEntityErro === void 0 ? void 0 : _readConfigEntityErro.status) === 403 && ((_readConfigEntityErro2 = readConfigEntityError.response) === null || _readConfigEntityErro2 === void 0 ? void 0 : (_readConfigEntityErro3 = _readConfigEntityErro2.data) === null || _readConfigEntityErro3 === void 0 ? void 0 : _readConfigEntityErro3.message) === 'This operation is not available in ForgeRock Identity Cloud.') && !(
91
89
  // list of config entities, which do not exist by default or ever.
92
90
 
93
- ['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') &&
91
+ ['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) && ((_readConfigEntityErro4 = readConfigEntityError.response) === null || _readConfigEntityErro4 === void 0 ? void 0 : _readConfigEntityErro4.status) === 404 && ((_readConfigEntityErro5 = readConfigEntityError.response) === null || _readConfigEntityErro5 === void 0 ? void 0 : (_readConfigEntityErro6 = _readConfigEntityErro5.data) === null || _readConfigEntityErro6 === void 0 ? void 0 : _readConfigEntityErro6.reason) === 'Not Found') &&
94
92
  // https://bugster.forgerock.org/jira/browse/OPENIDM-18270
95
- !(((_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')) {
96
- var _getConfigEntityError10;
97
- printMessage((_getConfigEntityError10 = getConfigEntityError.response) === null || _getConfigEntityError10 === void 0 ? void 0 : _getConfigEntityError10.data, 'error');
98
- printMessage(`Error getting config entity ${configEntity._id}: ${getConfigEntityError}`, 'error');
93
+ !(((_readConfigEntityErro7 = readConfigEntityError.response) === null || _readConfigEntityErro7 === void 0 ? void 0 : _readConfigEntityErro7.status) === 404 && ((_readConfigEntityErro8 = readConfigEntityError.response) === null || _readConfigEntityErro8 === void 0 ? void 0 : (_readConfigEntityErro9 = _readConfigEntityErro8.data) === null || _readConfigEntityErro9 === void 0 ? void 0 : _readConfigEntityErro9.message) === 'No configuration exists for id org.apache.felix.fileinstall/openidm')) {
94
+ var _readConfigEntityErro10;
95
+ printMessage((_readConfigEntityErro10 = readConfigEntityError.response) === null || _readConfigEntityErro10 === void 0 ? void 0 : _readConfigEntityErro10.data, 'error');
96
+ printMessage(`Error getting config entity ${configEntity._id}: ${readConfigEntityError}`, 'error');
99
97
  }
100
98
  }));
101
99
  }
@@ -110,9 +108,9 @@ export async function exportAllRawConfigEntities(directory) {
110
108
  }
111
109
  }
112
110
  stopProgressIndicator('Exported config objects.', 'success');
113
- } catch (getAllConfigEntitiesError) {
114
- printMessage(getAllConfigEntitiesError, 'error');
115
- printMessage(`Error getting config entities: ${getAllConfigEntitiesError}`, 'error');
111
+ } catch (readConfigEntitiesError) {
112
+ printMessage(readConfigEntitiesError, 'error');
113
+ printMessage(`Error getting config entities: ${readConfigEntitiesError}`, 'error');
116
114
  }
117
115
  }
118
116
 
@@ -134,9 +132,7 @@ export async function exportAllConfigEntities(directory, entitiesFile, envFile)
134
132
  // read list of configs to parameterize for environment specific values
135
133
  const envParams = propertiesReader(envFile);
136
134
  try {
137
- const {
138
- configurations
139
- } = await getAllConfigEntities();
135
+ const configurations = await readConfigEntities();
140
136
  // create export directory if not exist
141
137
  if (!fs.existsSync(directory)) {
142
138
  fs.mkdirSync(directory);
@@ -145,7 +141,7 @@ export async function exportAllConfigEntities(directory, entitiesFile, envFile)
145
141
  const entityPromises = [];
146
142
  for (const configEntity of configurations) {
147
143
  if (entriesToExport.includes(configEntity._id)) {
148
- entityPromises.push(getConfigEntity(configEntity._id));
144
+ entityPromises.push(readConfigEntity(configEntity._id));
149
145
  }
150
146
  }
151
147
  const results = await Promise.all(entityPromises);
@@ -163,9 +159,9 @@ export async function exportAllConfigEntities(directory, entitiesFile, envFile)
163
159
  }
164
160
  }
165
161
  stopProgressIndicator(null, 'success');
166
- } catch (getAllConfigEntitiesError) {
167
- printMessage(getAllConfigEntitiesError, 'error');
168
- printMessage(`Error getting config entities: ${getAllConfigEntitiesError}`, 'error');
162
+ } catch (readConfigEntitiesError) {
163
+ printMessage(readConfigEntitiesError, 'error');
164
+ printMessage(`Error getting config entities: ${readConfigEntitiesError}`, 'error');
169
165
  }
170
166
  });
171
167
  }
@@ -188,10 +184,10 @@ export async function importConfigEntityByIdFromFile(entityId, file, validate) {
188
184
  return;
189
185
  }
190
186
  try {
191
- await putConfigEntity(entityId, entityData);
192
- } catch (putConfigEntityError) {
193
- printMessage(putConfigEntityError, 'error');
194
- printMessage(`Error: ${putConfigEntityError}`, 'error');
187
+ await updateConfigEntity(entityId, entityData);
188
+ } catch (updateConfigEntityError) {
189
+ printMessage(updateConfigEntityError, 'error');
190
+ printMessage(`Error: ${updateConfigEntityError}`, 'error');
195
191
  }
196
192
  }
197
193
 
@@ -210,10 +206,10 @@ export async function importConfigEntityFromFile(file, validate) {
210
206
  return;
211
207
  }
212
208
  try {
213
- await putConfigEntity(entityId, entityData);
214
- } catch (putConfigEntityError) {
215
- printMessage(putConfigEntityError, 'error');
216
- printMessage(`Error: ${putConfigEntityError}`, 'error');
209
+ await updateConfigEntity(entityId, entityData);
210
+ } catch (updateConfigEntityError) {
211
+ printMessage(updateConfigEntityError, 'error');
212
+ printMessage(`Error: ${updateConfigEntityError}`, 'error');
217
213
  }
218
214
  }
219
215
 
@@ -252,7 +248,7 @@ export async function importAllRawConfigEntities(baseDirectory, validate) {
252
248
  }
253
249
  createProgressIndicator('indeterminate', undefined, 'Importing config objects...');
254
250
  const entityPromises = jsonFiles.map(file => {
255
- return putConfigEntity(file.entityId, file.content);
251
+ return updateConfigEntity(file.entityId, JSON.parse(file.content));
256
252
  });
257
253
  const results = await Promise.allSettled(entityPromises);
258
254
  const errors = results.filter(result => result.status === 'rejected');
@@ -314,7 +310,7 @@ export async function importAllConfigEntities(baseDirectory, entitiesFile, envFi
314
310
  content
315
311
  }) => {
316
312
  const unsubstituted = unSubstituteEnvParams(content, envReader);
317
- return putConfigEntity(entityId, unsubstituted);
313
+ return updateConfigEntity(entityId, JSON.parse(unsubstituted));
318
314
  });
319
315
  const results = await Promise.allSettled(entityPromises);
320
316
  const errors = results.filter(result => result.status === 'rejected');
@@ -334,21 +330,9 @@ export async function importAllConfigEntities(baseDirectory, entitiesFile, envFi
334
330
  * @param {String} type managed object type, e.g. alpha_user
335
331
  */
336
332
  export async function countManagedObjects(type) {
337
- let count = 0;
338
- let result = {
339
- result: [],
340
- resultCount: 0,
341
- pagedResultsCookie: null,
342
- totalPagedResultsPolicy: 'NONE',
343
- totalPagedResults: -1,
344
- remainingPagedResults: -1
345
- };
346
333
  try {
347
- do {
348
- result = await queryAllManagedObjectsByType(type, [], result.pagedResultsCookie);
349
- count += result.resultCount;
350
- } while (result.pagedResultsCookie);
351
- printMessage(`${type}: ${count}`);
334
+ const result = await queryManagedObjects(type);
335
+ printMessage(`${type}: ${result.length}`);
352
336
  } catch (error) {
353
337
  printMessage(error.response.data, 'error');
354
338
  printMessage(`Error querying managed objects by type: ${error}`, 'error');