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

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 (443) hide show
  1. package/.vscode/launch.json +1 -0
  2. package/CHANGELOG.md +427 -7
  3. package/dist/app.cjs +187368 -0
  4. package/dist/app.cjs.map +1 -0
  5. package/dist/app.d.cts +2 -0
  6. package/dist/chunk-MPPKDFVI.cjs +56 -0
  7. package/dist/chunk-MPPKDFVI.cjs.map +1 -0
  8. package/dist/launch.cjs +27 -0
  9. package/dist/launch.cjs.map +1 -0
  10. package/dist/launch.d.cts +1 -0
  11. package/dist/loader.cjs +836 -0
  12. package/dist/loader.cjs.map +1 -0
  13. package/dist/loader.d.cts +3 -0
  14. package/global-jest-setup.js +5 -0
  15. package/package.json +71 -64
  16. package/tsup.config.ts +40 -0
  17. package/esm/app.js +0 -58
  18. package/esm/app.js.map +0 -1
  19. package/esm/cli/FrodoCommand.js +0 -147
  20. package/esm/cli/FrodoCommand.js.map +0 -1
  21. package/esm/cli/_template/something-delete.js +0 -19
  22. package/esm/cli/_template/something-delete.js.map +0 -1
  23. package/esm/cli/_template/something-describe.js +0 -19
  24. package/esm/cli/_template/something-describe.js.map +0 -1
  25. package/esm/cli/_template/something-else-delete.js +0 -19
  26. package/esm/cli/_template/something-else-delete.js.map +0 -1
  27. package/esm/cli/_template/something-else-describe.js +0 -19
  28. package/esm/cli/_template/something-else-describe.js.map +0 -1
  29. package/esm/cli/_template/something-else-export.js +0 -19
  30. package/esm/cli/_template/something-else-export.js.map +0 -1
  31. package/esm/cli/_template/something-else-import.js +0 -19
  32. package/esm/cli/_template/something-else-import.js.map +0 -1
  33. package/esm/cli/_template/something-else-list.js +0 -19
  34. package/esm/cli/_template/something-else-list.js.map +0 -1
  35. package/esm/cli/_template/something-else.js +0 -10
  36. package/esm/cli/_template/something-else.js.map +0 -1
  37. package/esm/cli/_template/something-export.js +0 -19
  38. package/esm/cli/_template/something-export.js.map +0 -1
  39. package/esm/cli/_template/something-import.js +0 -19
  40. package/esm/cli/_template/something-import.js.map +0 -1
  41. package/esm/cli/_template/something-list.js +0 -19
  42. package/esm/cli/_template/something-list.js.map +0 -1
  43. package/esm/cli/_template/something-other-delete.js +0 -19
  44. package/esm/cli/_template/something-other-delete.js.map +0 -1
  45. package/esm/cli/_template/something-other-describe.js +0 -19
  46. package/esm/cli/_template/something-other-describe.js.map +0 -1
  47. package/esm/cli/_template/something-other-export.js +0 -19
  48. package/esm/cli/_template/something-other-export.js.map +0 -1
  49. package/esm/cli/_template/something-other-import.js +0 -19
  50. package/esm/cli/_template/something-other-import.js.map +0 -1
  51. package/esm/cli/_template/something-other-list.js +0 -19
  52. package/esm/cli/_template/something-other-list.js.map +0 -1
  53. package/esm/cli/_template/something-other.js +0 -10
  54. package/esm/cli/_template/something-other.js.map +0 -1
  55. package/esm/cli/_template/something.js +0 -16
  56. package/esm/cli/_template/something.js.map +0 -1
  57. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +0 -21
  58. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +0 -1
  59. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +0 -79
  60. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +0 -1
  61. package/esm/cli/admin/admin-federation-export.js +0 -42
  62. package/esm/cli/admin/admin-federation-export.js.map +0 -1
  63. package/esm/cli/admin/admin-federation-import.js +0 -46
  64. package/esm/cli/admin/admin-federation-import.js.map +0 -1
  65. package/esm/cli/admin/admin-federation-list.js +0 -26
  66. package/esm/cli/admin/admin-federation-list.js.map +0 -1
  67. package/esm/cli/admin/admin-federation.js +0 -13
  68. package/esm/cli/admin/admin-federation.js.map +0 -1
  69. package/esm/cli/admin/admin-get-access-token.js +0 -22
  70. package/esm/cli/admin/admin-get-access-token.js.map +0 -1
  71. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +0 -22
  72. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +0 -1
  73. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +0 -22
  74. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +0 -1
  75. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +0 -24
  76. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +0 -1
  77. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +0 -24
  78. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +0 -1
  79. package/esm/cli/admin/admin-list-static-user-mappings.js +0 -25
  80. package/esm/cli/admin/admin-list-static-user-mappings.js.map +0 -1
  81. package/esm/cli/admin/admin-remove-static-user-mapping.js +0 -21
  82. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +0 -1
  83. package/esm/cli/admin/admin-repair-org-model.js +0 -22
  84. package/esm/cli/admin/admin-repair-org-model.js.map +0 -1
  85. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +0 -22
  86. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +0 -1
  87. package/esm/cli/admin/admin-show-generic-extension-attributes.js +0 -22
  88. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +0 -1
  89. package/esm/cli/admin/admin.js +0 -22
  90. package/esm/cli/admin/admin.js.map +0 -1
  91. package/esm/cli/agent/agent-delete.js +0 -45
  92. package/esm/cli/agent/agent-delete.js.map +0 -1
  93. package/esm/cli/agent/agent-describe.js +0 -19
  94. package/esm/cli/agent/agent-describe.js.map +0 -1
  95. package/esm/cli/agent/agent-export.js +0 -39
  96. package/esm/cli/agent/agent-export.js.map +0 -1
  97. package/esm/cli/agent/agent-gateway-delete.js +0 -45
  98. package/esm/cli/agent/agent-gateway-delete.js.map +0 -1
  99. package/esm/cli/agent/agent-gateway-describe.js +0 -19
  100. package/esm/cli/agent/agent-gateway-describe.js.map +0 -1
  101. package/esm/cli/agent/agent-gateway-export.js +0 -39
  102. package/esm/cli/agent/agent-gateway-export.js.map +0 -1
  103. package/esm/cli/agent/agent-gateway-import.js +0 -44
  104. package/esm/cli/agent/agent-gateway-import.js.map +0 -1
  105. package/esm/cli/agent/agent-gateway-list.js +0 -20
  106. package/esm/cli/agent/agent-gateway-list.js.map +0 -1
  107. package/esm/cli/agent/agent-gateway.js +0 -10
  108. package/esm/cli/agent/agent-gateway.js.map +0 -1
  109. package/esm/cli/agent/agent-import.js +0 -44
  110. package/esm/cli/agent/agent-import.js.map +0 -1
  111. package/esm/cli/agent/agent-java-delete.js +0 -45
  112. package/esm/cli/agent/agent-java-delete.js.map +0 -1
  113. package/esm/cli/agent/agent-java-describe.js +0 -19
  114. package/esm/cli/agent/agent-java-describe.js.map +0 -1
  115. package/esm/cli/agent/agent-java-export.js +0 -39
  116. package/esm/cli/agent/agent-java-export.js.map +0 -1
  117. package/esm/cli/agent/agent-java-import.js +0 -44
  118. package/esm/cli/agent/agent-java-import.js.map +0 -1
  119. package/esm/cli/agent/agent-java-list.js +0 -20
  120. package/esm/cli/agent/agent-java-list.js.map +0 -1
  121. package/esm/cli/agent/agent-java.js +0 -10
  122. package/esm/cli/agent/agent-java.js.map +0 -1
  123. package/esm/cli/agent/agent-list.js +0 -20
  124. package/esm/cli/agent/agent-list.js.map +0 -1
  125. package/esm/cli/agent/agent-web-delete.js +0 -45
  126. package/esm/cli/agent/agent-web-delete.js.map +0 -1
  127. package/esm/cli/agent/agent-web-describe.js +0 -19
  128. package/esm/cli/agent/agent-web-describe.js.map +0 -1
  129. package/esm/cli/agent/agent-web-export.js +0 -39
  130. package/esm/cli/agent/agent-web-export.js.map +0 -1
  131. package/esm/cli/agent/agent-web-import.js +0 -44
  132. package/esm/cli/agent/agent-web-import.js.map +0 -1
  133. package/esm/cli/agent/agent-web-list.js +0 -20
  134. package/esm/cli/agent/agent-web-list.js.map +0 -1
  135. package/esm/cli/agent/agent-web.js +0 -10
  136. package/esm/cli/agent/agent-web.js.map +0 -1
  137. package/esm/cli/agent/agent.js +0 -17
  138. package/esm/cli/agent/agent.js.map +0 -1
  139. package/esm/cli/app/app-delete.js +0 -19
  140. package/esm/cli/app/app-delete.js.map +0 -1
  141. package/esm/cli/app/app-describe.js +0 -19
  142. package/esm/cli/app/app-describe.js.map +0 -1
  143. package/esm/cli/app/app-export.js +0 -49
  144. package/esm/cli/app/app-export.js.map +0 -1
  145. package/esm/cli/app/app-import.js +0 -54
  146. package/esm/cli/app/app-import.js.map +0 -1
  147. package/esm/cli/app/app-list.js +0 -22
  148. package/esm/cli/app/app-list.js.map +0 -1
  149. package/esm/cli/app/app.js +0 -21
  150. package/esm/cli/app/app.js.map +0 -1
  151. package/esm/cli/authz/authz-policy-delete.js +0 -40
  152. package/esm/cli/authz/authz-policy-delete.js.map +0 -1
  153. package/esm/cli/authz/authz-policy-describe.js +0 -27
  154. package/esm/cli/authz/authz-policy-describe.js.map +0 -1
  155. package/esm/cli/authz/authz-policy-export.js +0 -72
  156. package/esm/cli/authz/authz-policy-export.js.map +0 -1
  157. package/esm/cli/authz/authz-policy-import.js +0 -62
  158. package/esm/cli/authz/authz-policy-import.js.map +0 -1
  159. package/esm/cli/authz/authz-policy-list.js +0 -34
  160. package/esm/cli/authz/authz-policy-list.js.map +0 -1
  161. package/esm/cli/authz/authz-policy.js +0 -10
  162. package/esm/cli/authz/authz-policy.js.map +0 -1
  163. package/esm/cli/authz/authz-set-delete.js +0 -34
  164. package/esm/cli/authz/authz-set-delete.js.map +0 -1
  165. package/esm/cli/authz/authz-set-describe.js +0 -27
  166. package/esm/cli/authz/authz-set-describe.js.map +0 -1
  167. package/esm/cli/authz/authz-set-export.js +0 -52
  168. package/esm/cli/authz/authz-set-export.js.map +0 -1
  169. package/esm/cli/authz/authz-set-import.js +0 -58
  170. package/esm/cli/authz/authz-set-import.js.map +0 -1
  171. package/esm/cli/authz/authz-set-list.js +0 -22
  172. package/esm/cli/authz/authz-set-list.js.map +0 -1
  173. package/esm/cli/authz/authz-set.js +0 -10
  174. package/esm/cli/authz/authz-set.js.map +0 -1
  175. package/esm/cli/authz/authz-type-delete.js +0 -40
  176. package/esm/cli/authz/authz-type-delete.js.map +0 -1
  177. package/esm/cli/authz/authz-type-describe.js +0 -31
  178. package/esm/cli/authz/authz-type-describe.js.map +0 -1
  179. package/esm/cli/authz/authz-type-export.js +0 -46
  180. package/esm/cli/authz/authz-type-export.js.map +0 -1
  181. package/esm/cli/authz/authz-type-import.js +0 -52
  182. package/esm/cli/authz/authz-type-import.js.map +0 -1
  183. package/esm/cli/authz/authz-type-list.js +0 -23
  184. package/esm/cli/authz/authz-type-list.js.map +0 -1
  185. package/esm/cli/authz/authz-type.js +0 -10
  186. package/esm/cli/authz/authz-type.js.map +0 -1
  187. package/esm/cli/authz/authz.js +0 -12
  188. package/esm/cli/authz/authz.js.map +0 -1
  189. package/esm/cli/conn/conn-delete.js +0 -14
  190. package/esm/cli/conn/conn-delete.js.map +0 -1
  191. package/esm/cli/conn/conn-describe.js +0 -15
  192. package/esm/cli/conn/conn-describe.js.map +0 -1
  193. package/esm/cli/conn/conn-list.js +0 -15
  194. package/esm/cli/conn/conn-list.js.map +0 -1
  195. package/esm/cli/conn/conn-save.js +0 -94
  196. package/esm/cli/conn/conn-save.js.map +0 -1
  197. package/esm/cli/conn/conn.js +0 -15
  198. package/esm/cli/conn/conn.js.map +0 -1
  199. package/esm/cli/email/email-template-export.js +0 -37
  200. package/esm/cli/email/email-template-export.js.map +0 -1
  201. package/esm/cli/email/email-template-import.js +0 -42
  202. package/esm/cli/email/email-template-import.js.map +0 -1
  203. package/esm/cli/email/email-template-list.js +0 -22
  204. package/esm/cli/email/email-template-list.js.map +0 -1
  205. package/esm/cli/email/email-template.js +0 -8
  206. package/esm/cli/email/email-template.js.map +0 -1
  207. package/esm/cli/email/email.js +0 -11
  208. package/esm/cli/email/email.js.map +0 -1
  209. package/esm/cli/esv/esv-apply.js +0 -52
  210. package/esm/cli/esv/esv-apply.js.map +0 -1
  211. package/esm/cli/esv/esv-secret-create.js +0 -22
  212. package/esm/cli/esv/esv-secret-create.js.map +0 -1
  213. package/esm/cli/esv/esv-secret-delete.js +0 -32
  214. package/esm/cli/esv/esv-secret-delete.js.map +0 -1
  215. package/esm/cli/esv/esv-secret-describe.js +0 -22
  216. package/esm/cli/esv/esv-secret-describe.js.map +0 -1
  217. package/esm/cli/esv/esv-secret-export.js +0 -19
  218. package/esm/cli/esv/esv-secret-export.js.map +0 -1
  219. package/esm/cli/esv/esv-secret-import.js +0 -19
  220. package/esm/cli/esv/esv-secret-import.js.map +0 -1
  221. package/esm/cli/esv/esv-secret-list.js +0 -22
  222. package/esm/cli/esv/esv-secret-list.js.map +0 -1
  223. package/esm/cli/esv/esv-secret-set.js +0 -22
  224. package/esm/cli/esv/esv-secret-set.js.map +0 -1
  225. package/esm/cli/esv/esv-secret-version-activate.js +0 -27
  226. package/esm/cli/esv/esv-secret-version-activate.js.map +0 -1
  227. package/esm/cli/esv/esv-secret-version-create.js +0 -22
  228. package/esm/cli/esv/esv-secret-version-create.js.map +0 -1
  229. package/esm/cli/esv/esv-secret-version-deactivate.js +0 -27
  230. package/esm/cli/esv/esv-secret-version-deactivate.js.map +0 -1
  231. package/esm/cli/esv/esv-secret-version-delete.js +0 -32
  232. package/esm/cli/esv/esv-secret-version-delete.js.map +0 -1
  233. package/esm/cli/esv/esv-secret-version-list.js +0 -22
  234. package/esm/cli/esv/esv-secret-version-list.js.map +0 -1
  235. package/esm/cli/esv/esv-secret-version.js +0 -10
  236. package/esm/cli/esv/esv-secret-version.js.map +0 -1
  237. package/esm/cli/esv/esv-secret.js +0 -16
  238. package/esm/cli/esv/esv-secret.js.map +0 -1
  239. package/esm/cli/esv/esv-variable-create.js +0 -21
  240. package/esm/cli/esv/esv-variable-create.js.map +0 -1
  241. package/esm/cli/esv/esv-variable-delete.js +0 -32
  242. package/esm/cli/esv/esv-variable-delete.js.map +0 -1
  243. package/esm/cli/esv/esv-variable-describe.js +0 -22
  244. package/esm/cli/esv/esv-variable-describe.js.map +0 -1
  245. package/esm/cli/esv/esv-variable-export.js +0 -19
  246. package/esm/cli/esv/esv-variable-export.js.map +0 -1
  247. package/esm/cli/esv/esv-variable-import.js +0 -19
  248. package/esm/cli/esv/esv-variable-import.js.map +0 -1
  249. package/esm/cli/esv/esv-variable-list.js +0 -22
  250. package/esm/cli/esv/esv-variable-list.js.map +0 -1
  251. package/esm/cli/esv/esv-variable-set.js +0 -28
  252. package/esm/cli/esv/esv-variable-set.js.map +0 -1
  253. package/esm/cli/esv/esv-variable.js +0 -15
  254. package/esm/cli/esv/esv-variable.js.map +0 -1
  255. package/esm/cli/esv/esv.js +0 -12
  256. package/esm/cli/esv/esv.js.map +0 -1
  257. package/esm/cli/idm/idm-count.js +0 -22
  258. package/esm/cli/idm/idm-count.js.map +0 -1
  259. package/esm/cli/idm/idm-export.js +0 -39
  260. package/esm/cli/idm/idm-export.js.map +0 -1
  261. package/esm/cli/idm/idm-import.js +0 -42
  262. package/esm/cli/idm/idm-import.js.map +0 -1
  263. package/esm/cli/idm/idm-list.js +0 -26
  264. package/esm/cli/idm/idm-list.js.map +0 -1
  265. package/esm/cli/idm/idm.js +0 -13
  266. package/esm/cli/idm/idm.js.map +0 -1
  267. package/esm/cli/idp/idp-export.js +0 -39
  268. package/esm/cli/idp/idp-export.js.map +0 -1
  269. package/esm/cli/idp/idp-import.js +0 -42
  270. package/esm/cli/idp/idp-import.js.map +0 -1
  271. package/esm/cli/idp/idp-list.js +0 -25
  272. package/esm/cli/idp/idp-list.js.map +0 -1
  273. package/esm/cli/idp/idp.js +0 -12
  274. package/esm/cli/idp/idp.js.map +0 -1
  275. package/esm/cli/info/info.js +0 -48
  276. package/esm/cli/info/info.js.map +0 -1
  277. package/esm/cli/journey/journey-delete.js +0 -31
  278. package/esm/cli/journey/journey-delete.js.map +0 -1
  279. package/esm/cli/journey/journey-describe.js +0 -117
  280. package/esm/cli/journey/journey-describe.js.map +0 -1
  281. package/esm/cli/journey/journey-disable.js +0 -37
  282. package/esm/cli/journey/journey-disable.js.map +0 -1
  283. package/esm/cli/journey/journey-enable.js +0 -37
  284. package/esm/cli/journey/journey-enable.js.map +0 -1
  285. package/esm/cli/journey/journey-export.js +0 -47
  286. package/esm/cli/journey/journey-export.js.map +0 -1
  287. package/esm/cli/journey/journey-import.js +0 -54
  288. package/esm/cli/journey/journey-import.js.map +0 -1
  289. package/esm/cli/journey/journey-list.js +0 -22
  290. package/esm/cli/journey/journey-list.js.map +0 -1
  291. package/esm/cli/journey/journey-prune.js +0 -31
  292. package/esm/cli/journey/journey-prune.js.map +0 -1
  293. package/esm/cli/journey/journey.js +0 -17
  294. package/esm/cli/journey/journey.js.map +0 -1
  295. package/esm/cli/log/log-fetch.js +0 -91
  296. package/esm/cli/log/log-fetch.js.map +0 -1
  297. package/esm/cli/log/log-key-delete.js +0 -32
  298. package/esm/cli/log/log-key-delete.js.map +0 -1
  299. package/esm/cli/log/log-key-describe.js +0 -19
  300. package/esm/cli/log/log-key-describe.js.map +0 -1
  301. package/esm/cli/log/log-key-list.js +0 -23
  302. package/esm/cli/log/log-key-list.js.map +0 -1
  303. package/esm/cli/log/log-key.js +0 -8
  304. package/esm/cli/log/log-key.js.map +0 -1
  305. package/esm/cli/log/log-list.js +0 -49
  306. package/esm/cli/log/log-list.js.map +0 -1
  307. package/esm/cli/log/log-tail.js +0 -46
  308. package/esm/cli/log/log-tail.js.map +0 -1
  309. package/esm/cli/log/log.js +0 -17
  310. package/esm/cli/log/log.js.map +0 -1
  311. package/esm/cli/realm/realm-add-custom-domain.js +0 -22
  312. package/esm/cli/realm/realm-add-custom-domain.js.map +0 -1
  313. package/esm/cli/realm/realm-describe.js +0 -21
  314. package/esm/cli/realm/realm-describe.js.map +0 -1
  315. package/esm/cli/realm/realm-list.js +0 -22
  316. package/esm/cli/realm/realm-list.js.map +0 -1
  317. package/esm/cli/realm/realm-remove-custom-domain.js +0 -21
  318. package/esm/cli/realm/realm-remove-custom-domain.js.map +0 -1
  319. package/esm/cli/realm/realm.js +0 -18
  320. package/esm/cli/realm/realm.js.map +0 -1
  321. package/esm/cli/saml/saml-cot-export.js +0 -40
  322. package/esm/cli/saml/saml-cot-export.js.map +0 -1
  323. package/esm/cli/saml/saml-cot-import.js +0 -46
  324. package/esm/cli/saml/saml-cot-import.js.map +0 -1
  325. package/esm/cli/saml/saml-cot-list.js +0 -23
  326. package/esm/cli/saml/saml-cot-list.js.map +0 -1
  327. package/esm/cli/saml/saml-cot.js +0 -8
  328. package/esm/cli/saml/saml-cot.js.map +0 -1
  329. package/esm/cli/saml/saml-delete.js +0 -31
  330. package/esm/cli/saml/saml-delete.js.map +0 -1
  331. package/esm/cli/saml/saml-describe.js +0 -22
  332. package/esm/cli/saml/saml-describe.js.map +0 -1
  333. package/esm/cli/saml/saml-export.js +0 -37
  334. package/esm/cli/saml/saml-export.js.map +0 -1
  335. package/esm/cli/saml/saml-import.js +0 -42
  336. package/esm/cli/saml/saml-import.js.map +0 -1
  337. package/esm/cli/saml/saml-list.js +0 -22
  338. package/esm/cli/saml/saml-list.js.map +0 -1
  339. package/esm/cli/saml/saml-metadata-export.js +0 -32
  340. package/esm/cli/saml/saml-metadata-export.js.map +0 -1
  341. package/esm/cli/saml/saml-metadata.js +0 -6
  342. package/esm/cli/saml/saml-metadata.js.map +0 -1
  343. package/esm/cli/saml/saml.js +0 -16
  344. package/esm/cli/saml/saml.js.map +0 -1
  345. package/esm/cli/script/script-delete.js +0 -19
  346. package/esm/cli/script/script-delete.js.map +0 -1
  347. package/esm/cli/script/script-describe.js +0 -19
  348. package/esm/cli/script/script-describe.js.map +0 -1
  349. package/esm/cli/script/script-export.js +0 -59
  350. package/esm/cli/script/script-export.js.map +0 -1
  351. package/esm/cli/script/script-import.js +0 -32
  352. package/esm/cli/script/script-import.js.map +0 -1
  353. package/esm/cli/script/script-list.js +0 -23
  354. package/esm/cli/script/script-list.js.map +0 -1
  355. package/esm/cli/script/script.js +0 -18
  356. package/esm/cli/script/script.js.map +0 -1
  357. package/esm/cli/service/service-delete.js +0 -19
  358. package/esm/cli/service/service-delete.js.map +0 -1
  359. package/esm/cli/service/service-export.js +0 -37
  360. package/esm/cli/service/service-export.js.map +0 -1
  361. package/esm/cli/service/service-import.js +0 -44
  362. package/esm/cli/service/service-import.js.map +0 -1
  363. package/esm/cli/service/service-list.js +0 -17
  364. package/esm/cli/service/service-list.js.map +0 -1
  365. package/esm/cli/service/service.js +0 -13
  366. package/esm/cli/service/service.js.map +0 -1
  367. package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
  368. package/esm/cli/theme/theme-delete.js +0 -37
  369. package/esm/cli/theme/theme-delete.js.map +0 -1
  370. package/esm/cli/theme/theme-export.js +0 -42
  371. package/esm/cli/theme/theme-export.js.map +0 -1
  372. package/esm/cli/theme/theme-import.js +0 -47
  373. package/esm/cli/theme/theme-import.js.map +0 -1
  374. package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
  375. package/esm/cli/theme/theme-list.js +0 -22
  376. package/esm/cli/theme/theme-list.js.map +0 -1
  377. package/esm/cli/theme/theme.js +0 -13
  378. package/esm/cli/theme/theme.js.map +0 -1
  379. package/esm/help/SampleData.js +0 -7
  380. package/esm/help/SampleData.js.map +0 -1
  381. package/esm/launch.js +0 -15
  382. package/esm/launch.js.map +0 -1
  383. package/esm/loader.js +0 -40
  384. package/esm/loader.js.map +0 -1
  385. package/esm/ops/AdminFederationOps.js +0 -208
  386. package/esm/ops/AdminFederationOps.js.map +0 -1
  387. package/esm/ops/AgentOps.js +0 -665
  388. package/esm/ops/AgentOps.js.map +0 -1
  389. package/esm/ops/CirclesOfTrustOps.js +0 -248
  390. package/esm/ops/CirclesOfTrustOps.js.map +0 -1
  391. package/esm/ops/ConnectionProfileOps.js +0 -118
  392. package/esm/ops/ConnectionProfileOps.js.map +0 -1
  393. package/esm/ops/EmailTemplateOps.js +0 -353
  394. package/esm/ops/EmailTemplateOps.js.map +0 -1
  395. package/esm/ops/IdmOps.js +0 -347
  396. package/esm/ops/IdmOps.js.map +0 -1
  397. package/esm/ops/IdpOps.js +0 -204
  398. package/esm/ops/IdpOps.js.map +0 -1
  399. package/esm/ops/JourneyOps.js +0 -653
  400. package/esm/ops/JourneyOps.js.map +0 -1
  401. package/esm/ops/LogOps.js +0 -139
  402. package/esm/ops/LogOps.js.map +0 -1
  403. package/esm/ops/NodeOps.js +0 -86
  404. package/esm/ops/NodeOps.js.map +0 -1
  405. package/esm/ops/OAuth2ClientOps.js +0 -258
  406. package/esm/ops/OAuth2ClientOps.js.map +0 -1
  407. package/esm/ops/OrganizationOps.js +0 -28
  408. package/esm/ops/OrganizationOps.js.map +0 -1
  409. package/esm/ops/PolicyOps.js +0 -478
  410. package/esm/ops/PolicyOps.js.map +0 -1
  411. package/esm/ops/PolicySetOps.js +0 -362
  412. package/esm/ops/PolicySetOps.js.map +0 -1
  413. package/esm/ops/RealmOps.js +0 -111
  414. package/esm/ops/RealmOps.js.map +0 -1
  415. package/esm/ops/ResourceTypeOps.js +0 -436
  416. package/esm/ops/ResourceTypeOps.js.map +0 -1
  417. package/esm/ops/Saml2Ops.js +0 -273
  418. package/esm/ops/Saml2Ops.js.map +0 -1
  419. package/esm/ops/Saml2Ops.test_.js.map +0 -1
  420. package/esm/ops/ScriptOps.js +0 -375
  421. package/esm/ops/ScriptOps.js.map +0 -1
  422. package/esm/ops/SecretsOps.js +0 -223
  423. package/esm/ops/SecretsOps.js.map +0 -1
  424. package/esm/ops/ServiceOps.js +0 -192
  425. package/esm/ops/ServiceOps.js.map +0 -1
  426. package/esm/ops/ThemeOps.js +0 -345
  427. package/esm/ops/ThemeOps.js.map +0 -1
  428. package/esm/ops/VariablesOps.js +0 -133
  429. package/esm/ops/VariablesOps.js.map +0 -1
  430. package/esm/ops/utils/OpsUtils.js +0 -9
  431. package/esm/ops/utils/OpsUtils.js.map +0 -1
  432. package/esm/ops/utils/Wordwrap.js +0 -5
  433. package/esm/ops/utils/Wordwrap.js.map +0 -1
  434. package/esm/storage/StaticStorage.js +0 -12
  435. package/esm/storage/StaticStorage.js.map +0 -1
  436. package/esm/utils/Config.js +0 -40
  437. package/esm/utils/Config.js.map +0 -1
  438. package/esm/utils/Console.js +0 -534
  439. package/esm/utils/Console.js.map +0 -1
  440. package/esm/utils/ExportImportUtils.js +0 -90
  441. package/esm/utils/ExportImportUtils.js.map +0 -1
  442. package/esm/utils/Version.js +0 -135
  443. package/esm/utils/Version.js.map +0 -1
package/esm/ops/IdmOps.js DELETED
@@ -1,347 +0,0 @@
1
- /* eslint-disable no-await-in-loop */
2
- import fs from 'fs';
3
- import fse from 'fs-extra';
4
- import path from 'path';
5
- import propertiesReader from 'properties-reader';
6
- import replaceall from 'replaceall';
7
- import { frodo } from '@rockcarver/frodo-lib';
8
- import { createProgressIndicator, printMessage, stopProgressIndicator } from '../utils/Console';
9
- import { getTypedFilename } from '../utils/ExportImportUtils';
10
-
11
- /**
12
- * Warn about and list offline remote connector servers
13
- */
14
- export async function warnAboutOfflineConnectorServers() {
15
- try {
16
- const all = await frodo.idm.config.testConnectorServers();
17
- const offline = all.filter(status => !status.ok).map(status => status.name);
18
- if (offline.length) {
19
- printMessage(`\nThe following connector server(s) are offline and their connectors and configuration unavailable:\n${offline.join('\n')}`, 'warn');
20
- }
21
- } catch (error) {
22
- printMessage(error, 'error');
23
- printMessage(`Error getting offline connector servers: ${error.message}`, 'error');
24
- }
25
- }
26
-
27
- /**
28
- * List all IDM configuration objects
29
- */
30
- export async function listAllConfigEntities() {
31
- try {
32
- const {
33
- configurations
34
- } = await frodo.idm.config.getAllConfigEntities();
35
- for (const configEntity of configurations) {
36
- printMessage(`${configEntity._id}`, 'data');
37
- }
38
- } catch (getAllConfigEntitiesError) {
39
- printMessage(getAllConfigEntitiesError, 'error');
40
- printMessage(`Error getting config entities: ${getAllConfigEntitiesError}`, 'error');
41
- }
42
- }
43
-
44
- /**
45
- * Export an IDM configuration object.
46
- * @param {String} id the desired configuration object
47
- * @param {String} file optional export file
48
- */
49
- export async function exportConfigEntity(id, file) {
50
- let fileName = file;
51
- if (!fileName) {
52
- fileName = getTypedFilename(`${id}`, 'idm');
53
- }
54
- const configEntity = await frodo.idm.config.getConfigEntity(id);
55
- fs.writeFile(fileName, JSON.stringify(configEntity, null, 2), err => {
56
- if (err) {
57
- return printMessage(`ERROR - can't save ${id} export to file`, 'error');
58
- }
59
- return '';
60
- });
61
- }
62
-
63
- /**
64
- * Export all IDM configuration objects into separate JSON files in a directory specified by <directory>
65
- * @param {String} directory export directory
66
- */
67
- export async function exportAllRawConfigEntities(directory) {
68
- try {
69
- const {
70
- configurations
71
- } = await frodo.idm.config.getAllConfigEntities();
72
- if (!fs.existsSync(directory)) {
73
- fs.mkdirSync(directory);
74
- }
75
- createProgressIndicator('indeterminate', undefined, 'Exporting config objects...');
76
- const entityPromises = [];
77
- 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.') && !(
81
- // list of config entities, which do not exist by default or ever.
82
-
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') &&
84
- // 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');
89
- }
90
- }));
91
- }
92
- const results = await Promise.all(entityPromises);
93
- for (const item of results) {
94
- if (item != null) {
95
- fse.outputFile(`${directory}/${item._id}.json`, JSON.stringify(item, null, 2), err => {
96
- if (err) {
97
- return printMessage(`ERROR - can't save config ${item._id} to file - ${err}`, 'error');
98
- }
99
- });
100
- }
101
- }
102
- stopProgressIndicator('Exported config objects.', 'success');
103
- } catch (getAllConfigEntitiesError) {
104
- printMessage(getAllConfigEntitiesError, 'error');
105
- printMessage(`Error getting config entities: ${getAllConfigEntitiesError}`, 'error');
106
- }
107
- }
108
-
109
- /**
110
- * Export all IDM configuration objects
111
- * @param {String} directory export directory
112
- * @param {String} entitiesFile JSON file that specifies the config entities to export/import
113
- * @param {String} envFile File that defines environment specific variables for replacement during configuration export/import
114
- */
115
- export async function exportAllConfigEntities(directory, entitiesFile, envFile) {
116
- let entriesToExport = [];
117
- // read list of entities to export
118
- fs.readFile(entitiesFile, 'utf8', async (err, data) => {
119
- if (err) throw err;
120
- const entriesData = JSON.parse(data);
121
- entriesToExport = entriesData.idm;
122
- // console.log(`entriesToExport ${entriesToExport}`);
123
-
124
- // read list of configs to parameterize for environment specific values
125
- const envParams = propertiesReader(envFile);
126
- 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
- }
134
- createProgressIndicator('indeterminate', undefined, 'Exporting config objects...');
135
- const entityPromises = [];
136
- for (const configEntity of configurations) {
137
- if (entriesToExport.includes(configEntity._id)) {
138
- entityPromises.push(frodo.idm.config.getConfigEntity(configEntity._id));
139
- }
140
- }
141
- const results = await Promise.all(entityPromises);
142
- for (const item of results) {
143
- if (item != null) {
144
- let configEntityString = JSON.stringify(item, null, 2);
145
- envParams.each((key, value) => {
146
- configEntityString = replaceall(value, `\${${key}}`, configEntityString);
147
- });
148
- fse.outputFile(`${directory}/${item._id}.json`, configEntityString, error => {
149
- if (err) {
150
- return printMessage(`ERROR - can't save config ${item._id} to file - ${error}`, 'error');
151
- }
152
- });
153
- }
154
- }
155
- stopProgressIndicator(null, 'success');
156
- } catch (getAllConfigEntitiesError) {
157
- printMessage(getAllConfigEntitiesError, 'error');
158
- printMessage(`Error getting config entities: ${getAllConfigEntitiesError}`, 'error');
159
- }
160
- });
161
- }
162
-
163
- /**
164
- * Import an IDM configuration object by id from file.
165
- * @param entityId the configuration object to import
166
- * @param file optional file to import
167
- * @param validate validate script hooks
168
- */
169
- export async function importConfigEntityByIdFromFile(entityId, file, validate) {
170
- if (!file) {
171
- file = getTypedFilename(entityId, 'idm');
172
- }
173
- const fileData = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');
174
- const entityData = JSON.parse(fileData);
175
- const isValid = frodo.helper.script.validateScriptHooks(entityData);
176
- if (validate && !isValid) {
177
- printMessage('Invalid IDM configuration object', 'error');
178
- return;
179
- }
180
- try {
181
- await frodo.idm.config.putConfigEntity(entityId, entityData);
182
- } catch (putConfigEntityError) {
183
- printMessage(putConfigEntityError, 'error');
184
- printMessage(`Error: ${putConfigEntityError}`, 'error');
185
- }
186
- }
187
-
188
- /**
189
- * Import IDM configuration object from file.
190
- * @param file optional file to import
191
- * @param validate validate script hooks
192
- */
193
- export async function importConfigEntityFromFile(file, validate) {
194
- const fileData = fs.readFileSync(path.resolve(process.cwd(), file), 'utf8');
195
- const entityData = JSON.parse(fileData);
196
- const entityId = entityData._id;
197
- const isValid = frodo.helper.script.validateScriptHooks(entityData);
198
- if (validate && !isValid) {
199
- printMessage('Invalid IDM configuration object', 'error');
200
- return;
201
- }
202
- try {
203
- await frodo.idm.config.putConfigEntity(entityId, entityData);
204
- } catch (putConfigEntityError) {
205
- printMessage(putConfigEntityError, 'error');
206
- printMessage(`Error: ${putConfigEntityError}`, 'error');
207
- }
208
- }
209
-
210
- /**
211
- * Import all IDM configuration objects from separate JSON files in a directory specified by <directory>
212
- * @param baseDirectory export directory
213
- * @param validate validate script hooks
214
- */
215
- export async function importAllRawConfigEntities(baseDirectory, validate) {
216
- if (!fs.existsSync(baseDirectory)) {
217
- return;
218
- }
219
- const files = await frodo.helper.utils.readFiles(baseDirectory);
220
- const jsonFiles = files.filter(({
221
- path
222
- }) => path.toLowerCase().endsWith('.json')).map(({
223
- path,
224
- content
225
- }) => ({
226
- // Remove .json extension
227
- entityId: path.substring(0, path.length - 5),
228
- content,
229
- path
230
- }));
231
- let everyScriptValid = true;
232
- for (const file of jsonFiles) {
233
- const jsObject = JSON.parse(file.content);
234
- const isScriptValid = frodo.helper.script.validateScriptHooks(jsObject);
235
- if (!isScriptValid) {
236
- printMessage(`Invalid script hook in ${file.path}`, 'error');
237
- everyScriptValid = false;
238
- }
239
- }
240
- if (validate && !everyScriptValid) {
241
- return;
242
- }
243
- createProgressIndicator('indeterminate', undefined, 'Importing config objects...');
244
- const entityPromises = jsonFiles.map(file => {
245
- return frodo.idm.config.putConfigEntity(file.entityId, file.content);
246
- });
247
- const results = await Promise.allSettled(entityPromises);
248
- const errors = results.filter(result => result.status === 'rejected');
249
- if (errors.length > 0) {
250
- printMessage(`Failed to import ${errors.length} config objects:`, 'error');
251
- for (const error of errors) {
252
- printMessage(`- ${error.reason}`, 'error');
253
- }
254
- stopProgressIndicator(`Failed to import ${errors.length} config objects`, 'error');
255
- return;
256
- }
257
- stopProgressIndicator(`Imported ${results.length} config objects`, 'success');
258
- }
259
-
260
- /**
261
- * Import all IDM configuration objects
262
- * @param baseDirectory import directory
263
- * @param entitiesFile JSON file that specifies the config entities to export/import
264
- * @param envFile File that defines environment specific variables for replacement during configuration export/import
265
- * @param validate validate script hooks
266
- */
267
- export async function importAllConfigEntities(baseDirectory, entitiesFile, envFile, validate) {
268
- if (!fs.existsSync(baseDirectory)) {
269
- return;
270
- }
271
- const entriesToImport = JSON.parse(fs.readFileSync(entitiesFile, 'utf8')).idm;
272
- const envReader = propertiesReader(envFile);
273
- const files = await frodo.helper.utils.readFiles(baseDirectory);
274
- const jsonFiles = files.filter(({
275
- path
276
- }) => path.toLowerCase().endsWith('.json')).map(({
277
- content,
278
- path
279
- }) => ({
280
- // Remove .json extension
281
- entityId: path.substring(0, path.length - 5),
282
- content,
283
- path
284
- }));
285
- let everyScriptValid = true;
286
- for (const file of jsonFiles) {
287
- const jsObject = JSON.parse(file.content);
288
- const isScriptValid = frodo.helper.script.validateScriptHooks(jsObject);
289
- if (!isScriptValid) {
290
- printMessage(`Invalid script hook in ${file.path}`, 'error');
291
- everyScriptValid = false;
292
- }
293
- }
294
- if (validate && !everyScriptValid) {
295
- return;
296
- }
297
- createProgressIndicator('indeterminate', undefined, 'Importing config objects...');
298
- const entityPromises = jsonFiles.filter(({
299
- entityId
300
- }) => {
301
- return entriesToImport.includes(entityId);
302
- }).map(({
303
- entityId,
304
- content
305
- }) => {
306
- const unsubstituted = frodo.helper.utils.unSubstituteEnvParams(content, envReader);
307
- return frodo.idm.config.putConfigEntity(entityId, unsubstituted);
308
- });
309
- const results = await Promise.allSettled(entityPromises);
310
- const errors = results.filter(result => result.status === 'rejected');
311
- if (errors.length > 0) {
312
- printMessage(`Failed to import ${errors.length} config objects:`, 'error');
313
- for (const error of errors) {
314
- printMessage(`- ${error.reason}`, 'error');
315
- }
316
- stopProgressIndicator(`Failed to import ${errors.length} config objects`, 'error');
317
- return;
318
- }
319
- stopProgressIndicator(`Imported ${results.length} config objects`, 'success');
320
- }
321
-
322
- /**
323
- * Count number of managed objects of a given type
324
- * @param {String} type managed object type, e.g. alpha_user
325
- */
326
- 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
- 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}`);
342
- } catch (error) {
343
- printMessage(error.response.data, 'error');
344
- printMessage(`Error querying managed objects by type: ${error}`, 'error');
345
- }
346
- }
347
- //# sourceMappingURL=IdmOps.js.map
@@ -1 +0,0 @@
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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"}
package/esm/ops/IdpOps.js DELETED
@@ -1,204 +0,0 @@
1
- import { frodo } from '@rockcarver/frodo-lib';
2
- import fs from 'fs';
3
- import { createProgressBar, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
4
- import { getRealmString, getTypedFilename, saveJsonToFile } from '../utils/ExportImportUtils';
5
-
6
- /**
7
- * Get a one-line description of the social idp object
8
- * @param {SocialIdpSkeleton} socialIdpObj social idp object to describe
9
- * @returns {string} a one-line description
10
- */
11
- export function getOneLineDescription(socialIdpObj) {
12
- const description = `[${socialIdpObj._id['brightCyan']}] ${socialIdpObj._type._id}`;
13
- return description;
14
- }
15
-
16
- /**
17
- * Get markdown table header
18
- * @returns {string} markdown table header
19
- */
20
- export function getTableHeaderMd() {
21
- let markdown = '';
22
- markdown += '| Name/Id | Status | Type |\n';
23
- markdown += '| ------- | ------ | ---- |';
24
- return markdown;
25
- }
26
-
27
- /**
28
- * Get a table-row of the social idp in markdown
29
- * @param {SocialIdpSkeleton} socialIdpObj social idp object to describe
30
- * @returns {string} a table-row of the social idp in markdown
31
- */
32
- export function getTableRowMd(socialIdpObj) {
33
- const row = `| ${socialIdpObj._id} | ${socialIdpObj.enabled === false ? ':o: `disabled`' : ':white_check_mark: `enabled`'} | ${socialIdpObj._type.name} |`;
34
- return row;
35
- }
36
-
37
- /**
38
- * List providers
39
- */
40
- export async function listSocialProviders() {
41
- try {
42
- const providers = await frodo.oauth2oidc.external.getSocialIdentityProviders();
43
- providers.sort((a, b) => a._id.localeCompare(b._id));
44
- providers.forEach(socialIdentityProvider => {
45
- printMessage(`${socialIdentityProvider._id}`, 'data');
46
- });
47
- } catch (err) {
48
- printMessage(`listSocialProviders ERROR: ${err.message}`, 'error');
49
- printMessage(err, 'error');
50
- }
51
- }
52
-
53
- /**
54
- * Export provider by id
55
- * @param {string} providerId provider id/name
56
- * @param {string} file optional export file name
57
- */
58
- export async function exportSocialProviderToFile(providerId, file = '') {
59
- debugMessage(`cli.IdpOps.exportSocialProviderToFile: start`);
60
- let fileName = file;
61
- if (!fileName) {
62
- fileName = getTypedFilename(providerId, 'idp');
63
- }
64
- createProgressBar(1, `Exporting ${providerId}`);
65
- try {
66
- updateProgressBar(`Writing file ${fileName}`);
67
- const fileData = await frodo.oauth2oidc.external.exportSocialProvider(providerId);
68
- saveJsonToFile(fileData, fileName);
69
- stopProgressBar(`Exported ${providerId['brightCyan']} to ${fileName['brightCyan']}.`);
70
- } catch (err) {
71
- stopProgressBar(`${err}`);
72
- printMessage(`${err}`, 'error');
73
- }
74
- debugMessage(`cli.IdpOps.exportSocialProviderToFile: end`);
75
- }
76
-
77
- /**
78
- * Export all providers
79
- * @param {string} file optional export file name
80
- */
81
- export async function exportSocialProvidersToFile(file = '') {
82
- let fileName = file;
83
- if (!fileName) {
84
- fileName = getTypedFilename(`all${getRealmString()}Providers`, 'idp');
85
- }
86
- const fileData = await frodo.oauth2oidc.external.exportSocialProviders();
87
- saveJsonToFile(fileData, fileName);
88
- }
89
-
90
- /**
91
- * Export all providers to individual files
92
- */
93
- export async function exportSocialProvidersToFiles() {
94
- debugMessage(`cli.IdpOps.exportSocialProvidersToFiles: start`);
95
- try {
96
- const allIdpsData = await frodo.oauth2oidc.external.getSocialIdentityProviders();
97
- createProgressBar(allIdpsData.length, 'Exporting providers');
98
- for (const idpData of allIdpsData) {
99
- try {
100
- const fileName = getTypedFilename(idpData._id, 'idp');
101
- const fileData = await frodo.oauth2oidc.external.exportSocialProvider(idpData._id);
102
- saveJsonToFile(fileData, fileName);
103
- updateProgressBar(`Exported provider ${idpData._id}`);
104
- } catch (error) {
105
- printMessage(`Error exporting ${idpData._id}: ${error}`, 'error');
106
- }
107
- }
108
- stopProgressBar(`${allIdpsData.length} providers exported.`);
109
- } catch (error) {
110
- stopProgressBar(`${error}`);
111
- printMessage(`${error}`, 'error');
112
- }
113
- debugMessage(`cli.IdpOps.exportSocialProvidersToFiles: end`);
114
- }
115
-
116
- /**
117
- * Import provider by id/name
118
- * @param {string} providerId provider id/name
119
- * @param {string} file import file name
120
- * @returns {Promise<boolean>} true if provider was imported successfully, false otherwise
121
- */
122
- export async function importSocialProviderFromFile(providerId, file) {
123
- let outcome = false;
124
- showSpinner(`Importing provider ${providerId} from ${file}...`);
125
- fs.readFile(file, 'utf8', async (err, data) => {
126
- if (err) throw err;
127
- try {
128
- const fileData = JSON.parse(data);
129
- outcome = await frodo.oauth2oidc.external.importSocialProvider(providerId, fileData);
130
- succeedSpinner(`Successfully imported provider ${providerId} from ${file}.`);
131
- } catch (error) {
132
- var _error$response;
133
- failSpinner(`Error importing provider ${providerId} from ${file}.`);
134
- printMessage(((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data) || error, 'error');
135
- }
136
- });
137
- return outcome;
138
- }
139
-
140
- /**
141
- * Import first provider from file
142
- * @param {String} file import file name
143
- * @returns {Promise<boolean>} true if first provider was imported successfully, false otherwise
144
- */
145
- export async function importFirstSocialProviderFromFile(file) {
146
- let outcome = false;
147
- showSpinner(`Importing first provider from ${file}...`);
148
- fs.readFile(file, 'utf8', async (err, data) => {
149
- if (err) throw err;
150
- try {
151
- const fileData = JSON.parse(data);
152
- outcome = await frodo.oauth2oidc.external.importFirstSocialProvider(fileData);
153
- succeedSpinner(`Successfully imported first provider from ${file}.`);
154
- } catch (error) {
155
- var _error$response2;
156
- failSpinner(`Error importing first provider from ${file}.`);
157
- printMessage(((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.data) || error, 'error');
158
- }
159
- });
160
- return outcome;
161
- }
162
-
163
- /**
164
- * Import all providers from file
165
- * @param {string} file import file name
166
- * @returns {Promise<boolean>} true if all providers were imported successfully, false otherwise
167
- */
168
- export async function importSocialProvidersFromFile(file) {
169
- let outcome = false;
170
- showSpinner(`Importing providers from ${file}...`);
171
- fs.readFile(file, 'utf8', async (err, data) => {
172
- if (err) throw err;
173
- try {
174
- const fileData = JSON.parse(data);
175
- outcome = await frodo.oauth2oidc.external.importSocialProviders(fileData);
176
- succeedSpinner(`Successfully imported providers from ${file}.`);
177
- } catch (error) {
178
- var _error$response3;
179
- failSpinner(`Error importing providers from ${file}.`);
180
- printMessage(((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.data) || error, 'error');
181
- }
182
- });
183
- return outcome;
184
- }
185
-
186
- /**
187
- * Import providers from *.idp.json files in current working directory
188
- */
189
- export async function importSocialProvidersFromFiles() {
190
- const names = fs.readdirSync('.');
191
- const jsonFiles = names.filter(name => name.toLowerCase().endsWith('.idp.json'));
192
- createProgressBar(jsonFiles.length, 'Importing providers...');
193
- let total = 0;
194
- for (const file of jsonFiles) {
195
- const data = fs.readFileSync(file, 'utf8');
196
- const fileData = JSON.parse(data);
197
- const count = Object.keys(fileData.idp).length;
198
- total += count;
199
- await frodo.oauth2oidc.external.importSocialProviders(fileData);
200
- updateProgressBar(`Imported ${count} provider(s) from ${file}`);
201
- }
202
- stopProgressBar(`Finished importing ${total} provider(s) from ${jsonFiles.length} file(s).`);
203
- }
204
- //# sourceMappingURL=IdpOps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IdpOps.js","names":["frodo","fs","createProgressBar","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getRealmString","getTypedFilename","saveJsonToFile","getOneLineDescription","socialIdpObj","description","_id","_type","getTableHeaderMd","markdown","getTableRowMd","row","enabled","name","listSocialProviders","providers","oauth2oidc","external","getSocialIdentityProviders","sort","a","b","localeCompare","forEach","socialIdentityProvider","err","message","exportSocialProviderToFile","providerId","file","fileName","fileData","exportSocialProvider","exportSocialProvidersToFile","exportSocialProviders","exportSocialProvidersToFiles","allIdpsData","length","idpData","error","importSocialProviderFromFile","outcome","readFile","data","JSON","parse","importSocialProvider","_error$response","response","importFirstSocialProviderFromFile","importFirstSocialProvider","_error$response2","importSocialProvidersFromFile","importSocialProviders","_error$response3","importSocialProvidersFromFiles","names","readdirSync","jsonFiles","filter","toLowerCase","endsWith","total","readFileSync","count","Object","keys","idp"],"sources":["ops/IdpOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport type { SocialIdpSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\n createProgressBar,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getRealmString,\n getTypedFilename,\n saveJsonToFile,\n} from '../utils/ExportImportUtils';\n\n/**\n * Get a one-line description of the social idp object\n * @param {SocialIdpSkeleton} socialIdpObj social idp object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(socialIdpObj: SocialIdpSkeleton): string {\n const description = `[${socialIdpObj._id['brightCyan']}] ${socialIdpObj._type._id}`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Name/Id | Status | Type |\\n';\n markdown += '| ------- | ------ | ---- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the social idp in markdown\n * @param {SocialIdpSkeleton} socialIdpObj social idp object to describe\n * @returns {string} a table-row of the social idp in markdown\n */\nexport function getTableRowMd(socialIdpObj: SocialIdpSkeleton): string {\n const row = `| ${socialIdpObj._id} | ${\n socialIdpObj.enabled === false\n ? ':o: `disabled`'\n : ':white_check_mark: `enabled`'\n } | ${socialIdpObj._type.name} |`;\n return row;\n}\n\n/**\n * List providers\n */\nexport async function listSocialProviders() {\n try {\n const providers =\n await frodo.oauth2oidc.external.getSocialIdentityProviders();\n providers.sort((a, b) => a._id.localeCompare(b._id));\n providers.forEach((socialIdentityProvider) => {\n printMessage(`${socialIdentityProvider._id}`, 'data');\n });\n } catch (err) {\n printMessage(`listSocialProviders ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n}\n\n/**\n * Export provider by id\n * @param {string} providerId provider id/name\n * @param {string} file optional export file name\n */\nexport async function exportSocialProviderToFile(\n providerId: string,\n file = ''\n) {\n debugMessage(`cli.IdpOps.exportSocialProviderToFile: start`);\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(providerId, 'idp');\n }\n createProgressBar(1, `Exporting ${providerId}`);\n try {\n updateProgressBar(`Writing file ${fileName}`);\n const fileData = await frodo.oauth2oidc.external.exportSocialProvider(\n providerId\n );\n saveJsonToFile(fileData, fileName);\n stopProgressBar(\n `Exported ${providerId['brightCyan']} to ${fileName['brightCyan']}.`\n );\n } catch (err) {\n stopProgressBar(`${err}`);\n printMessage(`${err}`, 'error');\n }\n debugMessage(`cli.IdpOps.exportSocialProviderToFile: end`);\n}\n\n/**\n * Export all providers\n * @param {string} file optional export file name\n */\nexport async function exportSocialProvidersToFile(file = '') {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`all${getRealmString()}Providers`, 'idp');\n }\n const fileData = await frodo.oauth2oidc.external.exportSocialProviders();\n saveJsonToFile(fileData, fileName);\n}\n\n/**\n * Export all providers to individual files\n */\nexport async function exportSocialProvidersToFiles() {\n debugMessage(`cli.IdpOps.exportSocialProvidersToFiles: start`);\n try {\n const allIdpsData =\n await frodo.oauth2oidc.external.getSocialIdentityProviders();\n createProgressBar(allIdpsData.length, 'Exporting providers');\n for (const idpData of allIdpsData) {\n try {\n const fileName = getTypedFilename(idpData._id, 'idp');\n const fileData = await frodo.oauth2oidc.external.exportSocialProvider(\n idpData._id\n );\n saveJsonToFile(fileData, fileName);\n updateProgressBar(`Exported provider ${idpData._id}`);\n } catch (error) {\n printMessage(`Error exporting ${idpData._id}: ${error}`, 'error');\n }\n }\n stopProgressBar(`${allIdpsData.length} providers exported.`);\n } catch (error) {\n stopProgressBar(`${error}`);\n printMessage(`${error}`, 'error');\n }\n debugMessage(`cli.IdpOps.exportSocialProvidersToFiles: end`);\n}\n\n/**\n * Import provider by id/name\n * @param {string} providerId provider id/name\n * @param {string} file import file name\n * @returns {Promise<boolean>} true if provider was imported successfully, false otherwise\n */\nexport async function importSocialProviderFromFile(\n providerId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing provider ${providerId} from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n outcome = await frodo.oauth2oidc.external.importSocialProvider(\n providerId,\n fileData\n );\n succeedSpinner(\n `Successfully imported provider ${providerId} from ${file}.`\n );\n } catch (error) {\n failSpinner(`Error importing provider ${providerId} from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import first provider from file\n * @param {String} file import file name\n * @returns {Promise<boolean>} true if first provider was imported successfully, false otherwise\n */\nexport async function importFirstSocialProviderFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing first provider from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n outcome = await frodo.oauth2oidc.external.importFirstSocialProvider(\n fileData\n );\n succeedSpinner(`Successfully imported first provider from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing first provider from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import all providers from file\n * @param {string} file import file name\n * @returns {Promise<boolean>} true if all providers were imported successfully, false otherwise\n */\nexport async function importSocialProvidersFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n showSpinner(`Importing providers from ${file}...`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n try {\n const fileData = JSON.parse(data);\n outcome = await frodo.oauth2oidc.external.importSocialProviders(fileData);\n succeedSpinner(`Successfully imported providers from ${file}.`);\n } catch (error) {\n failSpinner(`Error importing providers from ${file}.`);\n printMessage(error.response?.data || error, 'error');\n }\n });\n return outcome;\n}\n\n/**\n * Import providers from *.idp.json files in current working directory\n */\nexport async function importSocialProvidersFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.idp.json')\n );\n\n createProgressBar(jsonFiles.length, 'Importing providers...');\n let total = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n const count = Object.keys(fileData.idp).length;\n total += count;\n await frodo.oauth2oidc.external.importSocialProviders(fileData);\n updateProgressBar(`Imported ${count} provider(s) from ${file}`);\n }\n stopProgressBar(\n `Finished importing ${total} provider(s) from ${jsonFiles.length} file(s).`\n );\n}\n"],"mappings":"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"}