@rockcarver/frodo-cli 1.0.1 → 2.0.0-10

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 (361) hide show
  1. package/.vscode/launch.json +15 -0
  2. package/CHANGELOG.md +49 -4
  3. package/esm/app.js +4 -4
  4. package/esm/app.js.map +1 -1
  5. package/esm/cli/FrodoCommand.js +13 -10
  6. package/esm/cli/FrodoCommand.js.map +1 -1
  7. package/esm/cli/_template/something-delete.js +2 -2
  8. package/esm/cli/_template/something-delete.js.map +1 -1
  9. package/esm/cli/_template/something-describe.js +2 -2
  10. package/esm/cli/_template/something-describe.js.map +1 -1
  11. package/esm/cli/_template/something-else-delete.js +2 -2
  12. package/esm/cli/_template/something-else-delete.js.map +1 -1
  13. package/esm/cli/_template/something-else-describe.js +2 -2
  14. package/esm/cli/_template/something-else-describe.js.map +1 -1
  15. package/esm/cli/_template/something-else-export.js +2 -2
  16. package/esm/cli/_template/something-else-export.js.map +1 -1
  17. package/esm/cli/_template/something-else-import.js +2 -2
  18. package/esm/cli/_template/something-else-import.js.map +1 -1
  19. package/esm/cli/_template/something-else-list.js +2 -2
  20. package/esm/cli/_template/something-else-list.js.map +1 -1
  21. package/esm/cli/_template/something-export.js +2 -2
  22. package/esm/cli/_template/something-export.js.map +1 -1
  23. package/esm/cli/_template/something-import.js +2 -2
  24. package/esm/cli/_template/something-import.js.map +1 -1
  25. package/esm/cli/_template/something-list.js +2 -2
  26. package/esm/cli/_template/something-list.js.map +1 -1
  27. package/esm/cli/_template/something-other-delete.js +2 -2
  28. package/esm/cli/_template/something-other-delete.js.map +1 -1
  29. package/esm/cli/_template/something-other-describe.js +2 -2
  30. package/esm/cli/_template/something-other-describe.js.map +1 -1
  31. package/esm/cli/_template/something-other-export.js +2 -2
  32. package/esm/cli/_template/something-other-export.js.map +1 -1
  33. package/esm/cli/_template/something-other-import.js +2 -2
  34. package/esm/cli/_template/something-other-import.js.map +1 -1
  35. package/esm/cli/_template/something-other-list.js +2 -2
  36. package/esm/cli/_template/something-other-list.js.map +1 -1
  37. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +3 -3
  38. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
  39. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +5 -5
  40. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  41. package/esm/cli/admin/admin-federation-export.js +2 -2
  42. package/esm/cli/admin/admin-federation-export.js.map +1 -1
  43. package/esm/cli/admin/admin-federation-import.js +2 -2
  44. package/esm/cli/admin/admin-federation-import.js.map +1 -1
  45. package/esm/cli/admin/admin-federation-list.js +2 -2
  46. package/esm/cli/admin/admin-federation-list.js.map +1 -1
  47. package/esm/cli/admin/admin-get-access-token.js +6 -6
  48. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  49. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +3 -3
  50. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  51. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +3 -3
  52. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  53. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +5 -5
  54. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  55. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +5 -5
  56. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  57. package/esm/cli/admin/admin-list-static-user-mappings.js +3 -3
  58. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  59. package/esm/cli/admin/admin-remove-static-user-mapping.js +3 -3
  60. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  61. package/esm/cli/admin/admin-repair-org-model.js +3 -3
  62. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  63. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +3 -3
  64. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  65. package/esm/cli/admin/admin-show-generic-extension-attributes.js +5 -5
  66. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  67. package/esm/cli/agent/agent-delete.js +5 -5
  68. package/esm/cli/agent/agent-delete.js.map +1 -1
  69. package/esm/cli/agent/agent-describe.js +2 -2
  70. package/esm/cli/agent/agent-describe.js.map +1 -1
  71. package/esm/cli/agent/agent-export.js +2 -2
  72. package/esm/cli/agent/agent-export.js.map +1 -1
  73. package/esm/cli/agent/agent-gateway-delete.js +3 -3
  74. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  75. package/esm/cli/agent/agent-gateway-describe.js +2 -2
  76. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  77. package/esm/cli/agent/agent-gateway-export.js +2 -2
  78. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  79. package/esm/cli/agent/agent-gateway-import.js +2 -2
  80. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  81. package/esm/cli/agent/agent-gateway-list.js +2 -2
  82. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  83. package/esm/cli/agent/agent-import.js +2 -2
  84. package/esm/cli/agent/agent-import.js.map +1 -1
  85. package/esm/cli/agent/agent-java-delete.js +3 -3
  86. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  87. package/esm/cli/agent/agent-java-describe.js +2 -2
  88. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  89. package/esm/cli/agent/agent-java-export.js +2 -2
  90. package/esm/cli/agent/agent-java-export.js.map +1 -1
  91. package/esm/cli/agent/agent-java-import.js +2 -2
  92. package/esm/cli/agent/agent-java-import.js.map +1 -1
  93. package/esm/cli/agent/agent-java-list.js +2 -2
  94. package/esm/cli/agent/agent-java-list.js.map +1 -1
  95. package/esm/cli/agent/agent-list.js +2 -2
  96. package/esm/cli/agent/agent-list.js.map +1 -1
  97. package/esm/cli/agent/agent-web-delete.js +3 -3
  98. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  99. package/esm/cli/agent/agent-web-describe.js +2 -2
  100. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  101. package/esm/cli/agent/agent-web-export.js +2 -2
  102. package/esm/cli/agent/agent-web-export.js.map +1 -1
  103. package/esm/cli/agent/agent-web-import.js +2 -2
  104. package/esm/cli/agent/agent-web-import.js.map +1 -1
  105. package/esm/cli/agent/agent-web-list.js +2 -2
  106. package/esm/cli/agent/agent-web-list.js.map +1 -1
  107. package/esm/cli/app/app-delete.js +2 -2
  108. package/esm/cli/app/app-delete.js.map +1 -1
  109. package/esm/cli/app/app-describe.js +2 -2
  110. package/esm/cli/app/app-describe.js.map +1 -1
  111. package/esm/cli/app/app-export.js +2 -2
  112. package/esm/cli/app/app-export.js.map +1 -1
  113. package/esm/cli/app/app-import.js +2 -2
  114. package/esm/cli/app/app-import.js.map +1 -1
  115. package/esm/cli/app/app-list.js +3 -3
  116. package/esm/cli/app/app-list.js.map +1 -1
  117. package/esm/cli/authz/authz-policy-delete.js +2 -2
  118. package/esm/cli/authz/authz-policy-delete.js.map +1 -1
  119. package/esm/cli/authz/authz-policy-describe.js +2 -2
  120. package/esm/cli/authz/authz-policy-describe.js.map +1 -1
  121. package/esm/cli/authz/authz-policy-export.js +2 -2
  122. package/esm/cli/authz/authz-policy-export.js.map +1 -1
  123. package/esm/cli/authz/authz-policy-import.js +2 -2
  124. package/esm/cli/authz/authz-policy-import.js.map +1 -1
  125. package/esm/cli/authz/authz-policy-list.js +2 -2
  126. package/esm/cli/authz/authz-policy-list.js.map +1 -1
  127. package/esm/cli/authz/authz-set-delete.js +2 -2
  128. package/esm/cli/authz/authz-set-delete.js.map +1 -1
  129. package/esm/cli/authz/authz-set-describe.js +2 -2
  130. package/esm/cli/authz/authz-set-describe.js.map +1 -1
  131. package/esm/cli/authz/authz-set-export.js +2 -2
  132. package/esm/cli/authz/authz-set-export.js.map +1 -1
  133. package/esm/cli/authz/authz-set-import.js +2 -2
  134. package/esm/cli/authz/authz-set-import.js.map +1 -1
  135. package/esm/cli/authz/authz-set-list.js +2 -2
  136. package/esm/cli/authz/authz-set-list.js.map +1 -1
  137. package/esm/cli/authz/authz-type-delete.js +2 -2
  138. package/esm/cli/authz/authz-type-delete.js.map +1 -1
  139. package/esm/cli/authz/authz-type-describe.js +2 -2
  140. package/esm/cli/authz/authz-type-describe.js.map +1 -1
  141. package/esm/cli/authz/authz-type-export.js +2 -2
  142. package/esm/cli/authz/authz-type-export.js.map +1 -1
  143. package/esm/cli/authz/authz-type-import.js +2 -2
  144. package/esm/cli/authz/authz-type-import.js.map +1 -1
  145. package/esm/cli/authz/authz-type-list.js +2 -2
  146. package/esm/cli/authz/authz-type-list.js.map +1 -1
  147. package/esm/cli/conn/conn-delete.js +2 -5
  148. package/esm/cli/conn/conn-delete.js.map +1 -1
  149. package/esm/cli/conn/conn-describe.js +1 -4
  150. package/esm/cli/conn/conn-describe.js.map +1 -1
  151. package/esm/cli/conn/conn-list.js +1 -4
  152. package/esm/cli/conn/conn-list.js.map +1 -1
  153. package/esm/cli/conn/conn-save.js +13 -9
  154. package/esm/cli/conn/conn-save.js.map +1 -1
  155. package/esm/cli/email/email-template-export.js +2 -2
  156. package/esm/cli/email/email-template-export.js.map +1 -1
  157. package/esm/cli/email/email-template-import.js +2 -2
  158. package/esm/cli/email/email-template-import.js.map +1 -1
  159. package/esm/cli/email/email-template-list.js +2 -2
  160. package/esm/cli/email/email-template-list.js.map +1 -1
  161. package/esm/cli/esv/esv-apply.js +6 -6
  162. package/esm/cli/esv/esv-apply.js.map +1 -1
  163. package/esm/cli/esv/esv-secret-create.js +3 -5
  164. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  165. package/esm/cli/esv/esv-secret-delete.js +5 -8
  166. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  167. package/esm/cli/esv/esv-secret-describe.js +3 -5
  168. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  169. package/esm/cli/esv/esv-secret-export.js +2 -2
  170. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  171. package/esm/cli/esv/esv-secret-import.js +2 -2
  172. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  173. package/esm/cli/esv/esv-secret-list.js +3 -5
  174. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  175. package/esm/cli/esv/esv-secret-set.js +4 -6
  176. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  177. package/esm/cli/esv/esv-secret-version-activate.js +3 -5
  178. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  179. package/esm/cli/esv/esv-secret-version-create.js +4 -6
  180. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  181. package/esm/cli/esv/esv-secret-version-deactivate.js +3 -5
  182. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  183. package/esm/cli/esv/esv-secret-version-delete.js +4 -6
  184. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  185. package/esm/cli/esv/esv-secret-version-list.js +4 -6
  186. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  187. package/esm/cli/esv/esv-variable-create.js +3 -5
  188. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  189. package/esm/cli/esv/esv-variable-delete.js +5 -8
  190. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  191. package/esm/cli/esv/esv-variable-describe.js +3 -5
  192. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  193. package/esm/cli/esv/esv-variable-export.js +2 -2
  194. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  195. package/esm/cli/esv/esv-variable-import.js +2 -2
  196. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  197. package/esm/cli/esv/esv-variable-list.js +3 -5
  198. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  199. package/esm/cli/esv/esv-variable-set.js +4 -7
  200. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  201. package/esm/cli/idm/idm-count.js +2 -2
  202. package/esm/cli/idm/idm-count.js.map +1 -1
  203. package/esm/cli/idm/idm-export.js +2 -2
  204. package/esm/cli/idm/idm-export.js.map +1 -1
  205. package/esm/cli/idm/idm-import.js +2 -2
  206. package/esm/cli/idm/idm-import.js.map +1 -1
  207. package/esm/cli/idm/idm-list.js +2 -2
  208. package/esm/cli/idm/idm-list.js.map +1 -1
  209. package/esm/cli/idp/idp-export.js +2 -2
  210. package/esm/cli/idp/idp-export.js.map +1 -1
  211. package/esm/cli/idp/idp-import.js +2 -2
  212. package/esm/cli/idp/idp-import.js.map +1 -1
  213. package/esm/cli/idp/idp-list.js +2 -2
  214. package/esm/cli/idp/idp-list.js.map +1 -1
  215. package/esm/cli/info/info.js +8 -8
  216. package/esm/cli/info/info.js.map +1 -1
  217. package/esm/cli/journey/journey-delete.js +4 -8
  218. package/esm/cli/journey/journey-delete.js.map +1 -1
  219. package/esm/cli/journey/journey-describe.js +5 -5
  220. package/esm/cli/journey/journey-describe.js.map +1 -1
  221. package/esm/cli/journey/journey-disable.js +3 -3
  222. package/esm/cli/journey/journey-disable.js.map +1 -1
  223. package/esm/cli/journey/journey-enable.js +3 -3
  224. package/esm/cli/journey/journey-enable.js.map +1 -1
  225. package/esm/cli/journey/journey-export.js +2 -2
  226. package/esm/cli/journey/journey-export.js.map +1 -1
  227. package/esm/cli/journey/journey-import.js +2 -2
  228. package/esm/cli/journey/journey-import.js.map +1 -1
  229. package/esm/cli/journey/journey-list.js +2 -2
  230. package/esm/cli/journey/journey-list.js.map +1 -1
  231. package/esm/cli/journey/journey-prune.js +3 -3
  232. package/esm/cli/journey/journey-prune.js.map +1 -1
  233. package/esm/cli/{logging/logs-fetch.js → log/log-fetch.js} +9 -9
  234. package/esm/cli/log/log-fetch.js.map +1 -0
  235. package/esm/cli/log/log-key-delete.js +35 -0
  236. package/esm/cli/log/log-key-delete.js.map +1 -0
  237. package/esm/cli/log/log-key-describe.js +22 -0
  238. package/esm/cli/log/log-key-describe.js.map +1 -0
  239. package/esm/cli/log/log-key-list.js +26 -0
  240. package/esm/cli/log/log-key-list.js.map +1 -0
  241. package/esm/cli/log/log-key.js +8 -0
  242. package/esm/cli/log/log-key.js.map +1 -0
  243. package/esm/cli/{logging/logs-list.js → log/log-list.js} +8 -8
  244. package/esm/cli/log/log-list.js.map +1 -0
  245. package/esm/cli/{logging/logs-tail.js → log/log-tail.js} +9 -9
  246. package/esm/cli/log/log-tail.js.map +1 -0
  247. package/esm/cli/{logging/logs.js → log/log.js} +5 -2
  248. package/esm/cli/log/log.js.map +1 -0
  249. package/esm/cli/realm/realm-add-custom-domain.js +3 -5
  250. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  251. package/esm/cli/realm/realm-describe.js +4 -9
  252. package/esm/cli/realm/realm-describe.js.map +1 -1
  253. package/esm/cli/realm/realm-list.js +3 -5
  254. package/esm/cli/realm/realm-list.js.map +1 -1
  255. package/esm/cli/realm/realm-remove-custom-domain.js +3 -3
  256. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  257. package/esm/cli/saml/saml-cot-export.js +9 -10
  258. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  259. package/esm/cli/saml/saml-cot-import.js +12 -13
  260. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  261. package/esm/cli/saml/saml-cot-list.js +5 -6
  262. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  263. package/esm/cli/saml/saml-delete.js +3 -3
  264. package/esm/cli/saml/saml-delete.js.map +1 -1
  265. package/esm/cli/saml/saml-describe.js +2 -2
  266. package/esm/cli/saml/saml-describe.js.map +1 -1
  267. package/esm/cli/saml/saml-export.js +10 -25
  268. package/esm/cli/saml/saml-export.js.map +1 -1
  269. package/esm/cli/saml/saml-import.js +12 -30
  270. package/esm/cli/saml/saml-import.js.map +1 -1
  271. package/esm/cli/saml/saml-list.js +6 -11
  272. package/esm/cli/saml/saml-list.js.map +1 -1
  273. package/esm/cli/saml/saml-metadata-export.js +2 -2
  274. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  275. package/esm/cli/script/script-delete.js +2 -2
  276. package/esm/cli/script/script-delete.js.map +1 -1
  277. package/esm/cli/script/script-describe.js +2 -2
  278. package/esm/cli/script/script-describe.js.map +1 -1
  279. package/esm/cli/script/script-export.js +2 -2
  280. package/esm/cli/script/script-export.js.map +1 -1
  281. package/esm/cli/script/script-import.js +4 -3
  282. package/esm/cli/script/script-import.js.map +1 -1
  283. package/esm/cli/script/script-list.js +4 -3
  284. package/esm/cli/script/script-list.js.map +1 -1
  285. package/esm/cli/service/service-delete.js +2 -2
  286. package/esm/cli/service/service-delete.js.map +1 -1
  287. package/esm/cli/service/service-export.js +2 -2
  288. package/esm/cli/service/service-export.js.map +1 -1
  289. package/esm/cli/service/service-import.js +2 -2
  290. package/esm/cli/service/service-import.js.map +1 -1
  291. package/esm/cli/service/service-list.js +2 -2
  292. package/esm/cli/service/service-list.js.map +1 -1
  293. package/esm/cli/theme/theme-delete.js +2 -2
  294. package/esm/cli/theme/theme-delete.js.map +1 -1
  295. package/esm/cli/theme/theme-export.js +2 -2
  296. package/esm/cli/theme/theme-export.js.map +1 -1
  297. package/esm/cli/theme/theme-import.js +2 -2
  298. package/esm/cli/theme/theme-import.js.map +1 -1
  299. package/esm/cli/theme/theme-list.js +2 -2
  300. package/esm/cli/theme/theme-list.js.map +1 -1
  301. package/esm/help/SampleData.js +7 -0
  302. package/esm/help/SampleData.js.map +1 -0
  303. package/esm/launch.js +4 -3
  304. package/esm/launch.js.map +1 -1
  305. package/esm/ops/AdminFederationOps.js +4 -4
  306. package/esm/ops/AdminFederationOps.js.map +1 -1
  307. package/esm/ops/AgentOps.js +26 -33
  308. package/esm/ops/AgentOps.js.map +1 -1
  309. package/esm/ops/CirclesOfTrustOps.js +228 -1
  310. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  311. package/esm/ops/ConnectionProfileOps.js +101 -5
  312. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  313. package/esm/ops/EmailTemplateOps.js +7 -8
  314. package/esm/ops/EmailTemplateOps.js.map +1 -1
  315. package/esm/ops/IdmOps.js +16 -17
  316. package/esm/ops/IdmOps.js.map +1 -1
  317. package/esm/ops/IdpOps.js +25 -13
  318. package/esm/ops/IdpOps.js.map +1 -1
  319. package/esm/ops/JourneyOps.js +40 -40
  320. package/esm/ops/JourneyOps.js.map +1 -1
  321. package/esm/ops/LogOps.js +85 -31
  322. package/esm/ops/LogOps.js.map +1 -1
  323. package/esm/ops/NodeOps.js +14 -11
  324. package/esm/ops/NodeOps.js.map +1 -1
  325. package/esm/ops/OAuth2ClientOps.js +5 -8
  326. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  327. package/esm/ops/OrganizationOps.js +34 -0
  328. package/esm/ops/OrganizationOps.js.map +1 -0
  329. package/esm/ops/PolicyOps.js +9 -10
  330. package/esm/ops/PolicyOps.js.map +1 -1
  331. package/esm/ops/PolicySetOps.js +11 -12
  332. package/esm/ops/PolicySetOps.js.map +1 -1
  333. package/esm/ops/RealmOps.js +116 -0
  334. package/esm/ops/RealmOps.js.map +1 -0
  335. package/esm/ops/ResourceTypeOps.js +8 -10
  336. package/esm/ops/ResourceTypeOps.js.map +1 -1
  337. package/esm/ops/Saml2Ops.js +22 -223
  338. package/esm/ops/Saml2Ops.js.map +1 -1
  339. package/esm/ops/ScriptOps.js +6 -5
  340. package/esm/ops/ScriptOps.js.map +1 -1
  341. package/esm/ops/SecretsOps.js +237 -0
  342. package/esm/ops/SecretsOps.js.map +1 -0
  343. package/esm/ops/ServiceOps.js +19 -19
  344. package/esm/ops/ServiceOps.js.map +1 -1
  345. package/esm/ops/ThemeOps.js +8 -7
  346. package/esm/ops/ThemeOps.js.map +1 -1
  347. package/esm/ops/VariablesOps.js +144 -0
  348. package/esm/ops/VariablesOps.js.map +1 -0
  349. package/esm/utils/Config.js +2 -2
  350. package/esm/utils/Config.js.map +1 -1
  351. package/esm/utils/Console.js +2 -2
  352. package/esm/utils/Console.js.map +1 -1
  353. package/esm/utils/ExportImportUtils.js +3 -2
  354. package/esm/utils/ExportImportUtils.js.map +1 -1
  355. package/esm/utils/Version.js +7 -3
  356. package/esm/utils/Version.js.map +1 -1
  357. package/package.json +2 -2
  358. package/esm/cli/logging/logs-fetch.js.map +0 -1
  359. package/esm/cli/logging/logs-list.js.map +0 -1
  360. package/esm/cli/logging/logs-tail.js.map +0 -1
  361. package/esm/cli/logging/logs.js.map +0 -1
@@ -1,4 +1,7 @@
1
- import { Node, Types } from '@rockcarver/frodo-lib';
1
+ import { frodo } from '@rockcarver/frodo-lib';
2
+ const {
3
+ getNodeClassification: _getNodeClassification
4
+ } = frodo.authn.node;
2
5
 
3
6
  /**
4
7
  * Get node classification
@@ -6,15 +9,15 @@ import { Node, Types } from '@rockcarver/frodo-lib';
6
9
  * @returns {stringp[]} Colored string array of classifications
7
10
  */
8
11
  export function getNodeClassification(nodeType) {
9
- return Node.getNodeClassification(nodeType).map(it => {
12
+ return _getNodeClassification(nodeType).map(it => {
10
13
  switch (it) {
11
- case Types.NodeClassification.STANDARD:
14
+ case 'standard':
12
15
  return it.toString()['brightGreen'];
13
- case Types.NodeClassification.CLOUD:
16
+ case 'cloud':
14
17
  return it.toString()['brightMagenta'];
15
- case Types.NodeClassification.CUSTOM:
18
+ case 'custom':
16
19
  return it.toString()['brightRed'];
17
- case Types.NodeClassification.PREMIUM:
20
+ case 'premium':
18
21
  return it.toString()['brightYellow'];
19
22
  }
20
23
  });
@@ -26,15 +29,15 @@ export function getNodeClassification(nodeType) {
26
29
  * @returns {stringp[]} Colored string array of classifications
27
30
  */
28
31
  export function getNodeClassificationMd(nodeType) {
29
- return Node.getNodeClassification(nodeType).map(it => {
32
+ return _getNodeClassification(nodeType).map(it => {
30
33
  switch (it) {
31
- case Types.NodeClassification.STANDARD:
34
+ case 'standard':
32
35
  return `:green_circle: \`${it.toString()}\``;
33
- case Types.NodeClassification.CLOUD:
36
+ case 'cloud':
34
37
  return `:purple_circle: \`${it.toString()}\``;
35
- case Types.NodeClassification.CUSTOM:
38
+ case 'custom':
36
39
  return `:red_circle: \`${it.toString()}\``;
37
- case Types.NodeClassification.PREMIUM:
40
+ case 'premium':
38
41
  return `:yellow_circle: \`${it.toString()}\``;
39
42
  }
40
43
  });
@@ -1 +1 @@
1
- {"version":3,"file":"NodeOps.js","names":["Node","Types","getNodeClassification","nodeType","map","it","NodeClassification","STANDARD","toString","CLOUD","CUSTOM","PREMIUM","getNodeClassificationMd","getOneLineDescription","nodeObj","nodeRef","description","_id","_type","join","displayName","getOneLineDescriptionMd","getTableHeaderMd","markdown","getTableRowMd","row"],"sources":["../../src/ops/NodeOps.ts"],"sourcesContent":["import {\n InnerNodeRefSkeletonInterface,\n NodeRefSkeletonInterface,\n NodeSkeleton,\n} from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport { Node, Types } from '@rockcarver/frodo-lib';\n\n/**\n * Get node classification\n * @param {string} nodeType node type\n * @returns {stringp[]} Colored string array of classifications\n */\nexport function getNodeClassification(nodeType: string): string[] {\n return Node.getNodeClassification(nodeType).map((it) => {\n switch (it) {\n case Types.NodeClassification.STANDARD:\n return it.toString()['brightGreen'];\n\n case Types.NodeClassification.CLOUD:\n return it.toString()['brightMagenta'];\n\n case Types.NodeClassification.CUSTOM:\n return it.toString()['brightRed'];\n\n case Types.NodeClassification.PREMIUM:\n return it.toString()['brightYellow'];\n }\n });\n}\n\n/**\n * Get node classification in markdown\n * @param {string} nodeType node type\n * @returns {stringp[]} Colored string array of classifications\n */\nexport function getNodeClassificationMd(nodeType: string): string[] {\n return Node.getNodeClassification(nodeType).map((it) => {\n switch (it) {\n case Types.NodeClassification.STANDARD:\n return `:green_circle: \\`${it.toString()}\\``;\n\n case Types.NodeClassification.CLOUD:\n return `:purple_circle: \\`${it.toString()}\\``;\n\n case Types.NodeClassification.CUSTOM:\n return `:red_circle: \\`${it.toString()}\\``;\n\n case Types.NodeClassification.PREMIUM:\n return `:yellow_circle: \\`${it.toString()}\\``;\n }\n });\n}\n\n/**\n * Get a one-line description of the node\n * @param {NodeSkeleton} nodeObj node object to describe\n * @param {NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface} nodeRef node reference object\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(\n nodeObj: NodeSkeleton,\n nodeRef?: NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface\n): string {\n const description = `[${nodeObj._id['brightCyan']}] (${getNodeClassification(\n nodeObj._type._id\n ).join(', ')}) ${nodeObj._type._id}${\n nodeRef ? ' - ' + nodeRef?.displayName : ''\n }`;\n return description;\n}\n\n/**\n * Get a one-line description of the node in markdown\n * @param {NodeSkeleton} nodeObj node object to describe\n * @param {NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface} nodeRef node reference object\n * @returns {string} a one-line description in markdown\n */\nexport function getOneLineDescriptionMd(\n nodeObj: NodeSkeleton,\n nodeRef?: NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface\n): string {\n const description = `${nodeObj._id} (${getNodeClassificationMd(\n nodeObj._type._id\n ).join(', ')}) ${nodeObj._type._id}${\n nodeRef ? ' - ' + nodeRef?.displayName : ''\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 | Type | Classification | Id |\\n';\n markdown += '| ------------ | ---- | -------------- | ---|';\n return markdown;\n}\n\n/**\n * Get a table-row of the node in markdown\n * @param {NodeSkeleton} nodeObj node object to describe\n * @param {NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface} nodeRef node reference object\n * @returns {string} a table-row of the node in markdown\n */\nexport function getTableRowMd(\n nodeObj: NodeSkeleton,\n nodeRef?: NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface\n): string {\n const row = `| ${nodeRef ? nodeRef.displayName : ''} | ${\n nodeObj._type._id\n } | ${getNodeClassificationMd(nodeObj._type._id).join('<br>')} | \\`${\n nodeObj._id\n }\\` |`;\n return row;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"NodeOps.js","names":["frodo","getNodeClassification","_getNodeClassification","authn","node","nodeType","map","it","toString","getNodeClassificationMd","getOneLineDescription","nodeObj","nodeRef","description","_id","_type","join","displayName","getOneLineDescriptionMd","getTableHeaderMd","markdown","getTableRowMd","row"],"sources":["../../src/ops/NodeOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport type {\n InnerNodeRefSkeletonInterface,\n NodeRefSkeletonInterface,\n NodeSkeleton,\n} from '@rockcarver/frodo-lib/types/api/ApiTypes';\n\nconst { getNodeClassification: _getNodeClassification } = frodo.authn.node;\n\n/**\n * Get node classification\n * @param {string} nodeType node type\n * @returns {stringp[]} Colored string array of classifications\n */\nexport function getNodeClassification(nodeType: string): string[] {\n return _getNodeClassification(nodeType).map((it) => {\n switch (it) {\n case 'standard':\n return it.toString()['brightGreen'];\n\n case 'cloud':\n return it.toString()['brightMagenta'];\n\n case 'custom':\n return it.toString()['brightRed'];\n\n case 'premium':\n return it.toString()['brightYellow'];\n }\n });\n}\n\n/**\n * Get node classification in markdown\n * @param {string} nodeType node type\n * @returns {stringp[]} Colored string array of classifications\n */\nexport function getNodeClassificationMd(nodeType: string): string[] {\n return _getNodeClassification(nodeType).map((it) => {\n switch (it) {\n case 'standard':\n return `:green_circle: \\`${it.toString()}\\``;\n\n case 'cloud':\n return `:purple_circle: \\`${it.toString()}\\``;\n\n case 'custom':\n return `:red_circle: \\`${it.toString()}\\``;\n\n case 'premium':\n return `:yellow_circle: \\`${it.toString()}\\``;\n }\n });\n}\n\n/**\n * Get a one-line description of the node\n * @param {NodeSkeleton} nodeObj node object to describe\n * @param {NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface} nodeRef node reference object\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(\n nodeObj: NodeSkeleton,\n nodeRef?: NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface\n): string {\n const description = `[${nodeObj._id['brightCyan']}] (${getNodeClassification(\n nodeObj._type._id\n ).join(', ')}) ${nodeObj._type._id}${\n nodeRef ? ' - ' + nodeRef?.displayName : ''\n }`;\n return description;\n}\n\n/**\n * Get a one-line description of the node in markdown\n * @param {NodeSkeleton} nodeObj node object to describe\n * @param {NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface} nodeRef node reference object\n * @returns {string} a one-line description in markdown\n */\nexport function getOneLineDescriptionMd(\n nodeObj: NodeSkeleton,\n nodeRef?: NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface\n): string {\n const description = `${nodeObj._id} (${getNodeClassificationMd(\n nodeObj._type._id\n ).join(', ')}) ${nodeObj._type._id}${\n nodeRef ? ' - ' + nodeRef?.displayName : ''\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 | Type | Classification | Id |\\n';\n markdown += '| ------------ | ---- | -------------- | ---|';\n return markdown;\n}\n\n/**\n * Get a table-row of the node in markdown\n * @param {NodeSkeleton} nodeObj node object to describe\n * @param {NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface} nodeRef node reference object\n * @returns {string} a table-row of the node in markdown\n */\nexport function getTableRowMd(\n nodeObj: NodeSkeleton,\n nodeRef?: NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface\n): string {\n const row = `| ${nodeRef ? nodeRef.displayName : ''} | ${\n nodeObj._type._id\n } | ${getNodeClassificationMd(nodeObj._type._id).join('<br>')} | \\`${\n nodeObj._id\n }\\` |`;\n return row;\n}\n"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
+ import { frodo, state } from '@rockcarver/frodo-lib';
1
2
  import fs from 'fs';
2
- import { OAuth2Client, ExportImportUtils, Utils, state } from '@rockcarver/frodo-lib';
3
3
  import { createProgressBar, createTable, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
4
4
  import { saveJsonToFile } from '../utils/ExportImportUtils';
5
5
  const {
6
6
  getTypedFilename,
7
7
  titleCase
8
- } = ExportImportUtils;
8
+ } = frodo.utils.impex;
9
9
  const {
10
10
  getOAuth2Clients,
11
11
  exportOAuth2Client,
@@ -13,10 +13,7 @@ const {
13
13
  importOAuth2Client,
14
14
  importFirstOAuth2Client,
15
15
  importOAuth2Clients
16
- } = OAuth2Client;
17
- const {
18
- getRealmName
19
- } = Utils;
16
+ } = frodo.oauth2oidc.client;
20
17
 
21
18
  /**
22
19
  * List OAuth2 clients
@@ -44,7 +41,7 @@ export async function listOAuth2Clients(long = false) {
44
41
  'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT Bearer'
45
42
  };
46
43
  clients.forEach(client => {
47
- table.push([client._id, client.coreOAuth2ClientConfig.status === 'Active' ? 'Active'['brightGreen'] : client.coreOAuth2ClientConfig.status.brightRed, client.coreOAuth2ClientConfig.clientType, client.advancedOAuth2ClientConfig.grantTypes.map(type => grantTypesMap[type]).join('\n'), client.coreOAuth2ClientConfig.scopes.join('\n'), client.coreOAuth2ClientConfig.redirectionUris.join('\n')
44
+ table.push([client._id, client.coreOAuth2ClientConfig.status === 'Active' ? 'Active'['brightGreen'] : client.coreOAuth2ClientConfig.status['brightRed'], client.coreOAuth2ClientConfig.clientType, client.advancedOAuth2ClientConfig.grantTypes.map(type => grantTypesMap[type]).join('\n'), client.coreOAuth2ClientConfig.scopes.join('\n'), client.coreOAuth2ClientConfig.redirectionUris.join('\n')
48
45
  // wordwrap(client.description, 30),
49
46
  ]);
50
47
  });
@@ -104,7 +101,7 @@ export async function exportOAuth2ClientsToFile(file, options = {
104
101
  debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);
105
102
  showSpinner(`Exporting all clients...`);
106
103
  try {
107
- let fileName = getTypedFilename(`all${titleCase(getRealmName(state.getRealm()))}Applications`, 'oauth2.app');
104
+ let fileName = getTypedFilename(`all${titleCase(frodo.helper.utils.getRealmName(state.getRealm()))}Applications`, 'oauth2.app');
108
105
  if (file) {
109
106
  fileName = file;
110
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OAuth2ClientOps.js","names":["fs","OAuth2Client","ExportImportUtils","Utils","state","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveJsonToFile","getTypedFilename","titleCase","getOAuth2Clients","exportOAuth2Client","exportOAuth2Clients","importOAuth2Client","importFirstOAuth2Client","importOAuth2Clients","getRealmName","listOAuth2Clients","long","clients","sort","a","b","_id","localeCompare","table","grantTypesMap","authorization_code","client_credentials","refresh_token","password","implicit","forEach","client","push","coreOAuth2ClientConfig","status","brightRed","clientType","advancedOAuth2ClientConfig","grantTypes","map","type","join","scopes","redirectionUris","toString","error","exportOAuth2ClientToFile","clientId","file","options","useStringArrays","deps","outcome","fileName","exportData","message","exportOAuth2ClientsToFile","getRealm","exportOAuth2ClientsToFiles","errors","length","importOAuth2ClientFromFile","data","readFileSync","fileData","JSON","parse","importFirstOAuth2ClientFromFile","importOAuth2ClientsFromFile","applicationData","importOAuth2ClientsFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","application"],"sources":["../../src/ops/OAuth2ClientOps.ts"],"sourcesContent":["import fs from 'fs';\nimport {\n OAuth2Client,\n ExportImportUtils,\n Utils,\n state,\n} from '@rockcarver/frodo-lib';\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport { saveJsonToFile } from '../utils/ExportImportUtils';\nimport {\n OAuth2ClientExportInterface,\n OAuth2ClientExportOptions,\n OAuth2ClientImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/OAuth2ClientOps';\n\nconst { getTypedFilename, titleCase } = ExportImportUtils;\nconst {\n getOAuth2Clients,\n exportOAuth2Client,\n exportOAuth2Clients,\n importOAuth2Client,\n importFirstOAuth2Client,\n importOAuth2Clients,\n} = OAuth2Client;\nconst { getRealmName } = Utils;\n\n/**\n * List OAuth2 clients\n */\nexport async function listOAuth2Clients(long = false) {\n try {\n const clients = await getOAuth2Clients();\n clients.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable([\n 'Client Id',\n 'Status',\n 'Client Type',\n 'Grant Types',\n 'Scopes',\n 'Redirect URIs',\n // 'Description',\n ]);\n const grantTypesMap = {\n authorization_code: 'Authz Code',\n client_credentials: 'Client Creds',\n refresh_token: 'Refresh Token',\n password: 'ROPC',\n 'urn:ietf:params:oauth:grant-type:uma-ticket': 'UMA',\n implicit: 'Implicit',\n 'urn:ietf:params:oauth:grant-type:device_code': 'Device Code',\n 'urn:ietf:params:oauth:grant-type:saml2-bearer': 'SAML2 Bearer',\n 'urn:openid:params:grant-type:ciba': 'CIBA',\n 'urn:ietf:params:oauth:grant-type:token-exchange': 'Token Exchange',\n 'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT Bearer',\n };\n clients.forEach((client) => {\n table.push([\n client._id,\n client.coreOAuth2ClientConfig.status === 'Active'\n ? 'Active'['brightGreen']\n : client.coreOAuth2ClientConfig.status.brightRed,\n client.coreOAuth2ClientConfig.clientType,\n client.advancedOAuth2ClientConfig.grantTypes\n .map((type) => grantTypesMap[type])\n .join('\\n'),\n client.coreOAuth2ClientConfig.scopes.join('\\n'),\n client.coreOAuth2ClientConfig.redirectionUris.join('\\n'),\n // wordwrap(client.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n clients.forEach((client) => {\n printMessage(`${client._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing applications - ${error}`, 'error');\n }\n}\n\n/**\n * Export OAuth2 client to file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientToFile(\n clientId: string,\n file: string,\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n) {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);\n showSpinner(`Exporting ${clientId}...`);\n try {\n let fileName = getTypedFilename(clientId, 'oauth2.app');\n if (file) {\n fileName = file;\n }\n const exportData = await exportOAuth2Client(clientId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${clientId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${clientId}: ${error.message}`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: end`);\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to file\n * @param {string} file file name\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFile(\n file: string,\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);\n showSpinner(`Exporting all clients...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Applications`,\n 'oauth2.app'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportOAuth2Clients(options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all clients to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all clients`);\n printMessage(`${error.message}`, 'error');\n }\n debugMessage(\n `cli.OAuth2ClientOps.exportOAuth2ClientsToFile: end [${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to separate files\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFiles(\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n) {\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: begin`);\n const errors = [];\n try {\n const clients = await getOAuth2Clients();\n createProgressBar(clients.length, 'Exporting clients...');\n for (const client of clients) {\n const file = getTypedFilename(client._id, 'oauth2.app');\n try {\n const exportData: OAuth2ClientExportInterface =\n await exportOAuth2Client(client._id, options);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${client._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${client._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting client(s) to file(s)`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientFromFile(\n clientId: string,\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${clientId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importOAuth2Client(clientId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${clientId}.`);\n } catch (error) {\n failSpinner(`Error importing ${clientId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstOAuth2ClientFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstOAuth2Client(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const applicationData = JSON.parse(data);\n await importOAuth2Clients(applicationData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFiles(\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.oauth2.app.json')\n );\n createProgressBar(files.length, 'Importing clients...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: OAuth2ClientExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.application).length;\n total += count;\n await importOAuth2Clients(fileData, options);\n updateProgressBar(`Imported ${count} client(s) from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing client(s) from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} client(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing client(s) from file(s).`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"OAuth2ClientOps.js","names":["frodo","state","fs","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","saveJsonToFile","getTypedFilename","titleCase","utils","impex","getOAuth2Clients","exportOAuth2Client","exportOAuth2Clients","importOAuth2Client","importFirstOAuth2Client","importOAuth2Clients","oauth2oidc","client","listOAuth2Clients","long","clients","sort","a","b","_id","localeCompare","table","grantTypesMap","authorization_code","client_credentials","refresh_token","password","implicit","forEach","push","coreOAuth2ClientConfig","status","clientType","advancedOAuth2ClientConfig","grantTypes","map","type","join","scopes","redirectionUris","toString","error","exportOAuth2ClientToFile","clientId","file","options","useStringArrays","deps","outcome","fileName","exportData","message","exportOAuth2ClientsToFile","helper","getRealmName","getRealm","exportOAuth2ClientsToFiles","errors","length","importOAuth2ClientFromFile","data","readFileSync","fileData","JSON","parse","importFirstOAuth2ClientFromFile","importOAuth2ClientsFromFile","applicationData","importOAuth2ClientsFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","application"],"sources":["../../src/ops/OAuth2ClientOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport {\n createProgressBar,\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport { saveJsonToFile } from '../utils/ExportImportUtils';\nimport type {\n OAuth2ClientExportInterface,\n OAuth2ClientExportOptions,\n OAuth2ClientImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/OAuth2ClientOps';\nimport { ReadableStrings } from '@rockcarver/frodo-lib/types/api/ApiTypes';\n\nconst { getTypedFilename, titleCase } = frodo.utils.impex;\nconst {\n getOAuth2Clients,\n exportOAuth2Client,\n exportOAuth2Clients,\n importOAuth2Client,\n importFirstOAuth2Client,\n importOAuth2Clients,\n} = frodo.oauth2oidc.client;\n\n/**\n * List OAuth2 clients\n */\nexport async function listOAuth2Clients(long = false) {\n try {\n const clients = await getOAuth2Clients();\n clients.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable([\n 'Client Id',\n 'Status',\n 'Client Type',\n 'Grant Types',\n 'Scopes',\n 'Redirect URIs',\n // 'Description',\n ]);\n const grantTypesMap = {\n authorization_code: 'Authz Code',\n client_credentials: 'Client Creds',\n refresh_token: 'Refresh Token',\n password: 'ROPC',\n 'urn:ietf:params:oauth:grant-type:uma-ticket': 'UMA',\n implicit: 'Implicit',\n 'urn:ietf:params:oauth:grant-type:device_code': 'Device Code',\n 'urn:ietf:params:oauth:grant-type:saml2-bearer': 'SAML2 Bearer',\n 'urn:openid:params:grant-type:ciba': 'CIBA',\n 'urn:ietf:params:oauth:grant-type:token-exchange': 'Token Exchange',\n 'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT Bearer',\n };\n clients.forEach((client) => {\n table.push([\n client._id,\n client.coreOAuth2ClientConfig.status === 'Active'\n ? 'Active'['brightGreen']\n : (client.coreOAuth2ClientConfig.status as string)['brightRed'],\n client.coreOAuth2ClientConfig.clientType,\n (client.advancedOAuth2ClientConfig.grantTypes as ReadableStrings)\n .map((type) => grantTypesMap[type])\n .join('\\n'),\n (client.coreOAuth2ClientConfig.scopes as ReadableStrings).join('\\n'),\n (client.coreOAuth2ClientConfig.redirectionUris as string[]).join(\n '\\n'\n ),\n // wordwrap(client.description, 30),\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n clients.forEach((client) => {\n printMessage(`${client._id}`, 'data');\n });\n }\n } catch (error) {\n printMessage(`Error listing applications - ${error}`, 'error');\n }\n}\n\n/**\n * Export OAuth2 client to file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientToFile(\n clientId: string,\n file: string,\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n) {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: begin`);\n showSpinner(`Exporting ${clientId}...`);\n try {\n let fileName = getTypedFilename(clientId, 'oauth2.app');\n if (file) {\n fileName = file;\n }\n const exportData = await exportOAuth2Client(clientId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${clientId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${clientId}: ${error.message}`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientToFile: end`);\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to file\n * @param {string} file file name\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFile(\n file: string,\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFile: begin`);\n showSpinner(`Exporting all clients...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(\n frodo.helper.utils.getRealmName(state.getRealm())\n )}Applications`,\n 'oauth2.app'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportOAuth2Clients(options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all clients to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting all clients`);\n printMessage(`${error.message}`, 'error');\n }\n debugMessage(\n `cli.OAuth2ClientOps.exportOAuth2ClientsToFile: end [${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export all OAuth2 clients to separate files\n * @param {OAuth2ClientExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportOAuth2ClientsToFiles(\n options: OAuth2ClientExportOptions = { useStringArrays: true, deps: true }\n) {\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: begin`);\n const errors = [];\n try {\n const clients = await getOAuth2Clients();\n createProgressBar(clients.length, 'Exporting clients...');\n for (const client of clients) {\n const file = getTypedFilename(client._id, 'oauth2.app');\n try {\n const exportData: OAuth2ClientExportInterface =\n await exportOAuth2Client(client._id, options);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${client._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${client._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting client(s) to file(s)`);\n }\n debugMessage(`cli.OAuth2ClientOps.exportOAuth2ClientsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} clientId client id\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientFromFile(\n clientId: string,\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${clientId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importOAuth2Client(clientId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${clientId}.`);\n } catch (error) {\n failSpinner(`Error importing ${clientId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first OAuth2 client from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstOAuth2ClientFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstOAuth2Client(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importFirstOAuth2ClientFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from file\n * @param {string} file file name\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFile(\n file: string,\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const applicationData = JSON.parse(data);\n await importOAuth2Clients(applicationData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import OAuth2 clients from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importOAuth2ClientsFromFiles(\n options: OAuth2ClientImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.oauth2.app.json')\n );\n createProgressBar(files.length, 'Importing clients...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: OAuth2ClientExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.application).length;\n total += count;\n await importOAuth2Clients(fileData, options);\n updateProgressBar(`Imported ${count} client(s) from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing client(s) from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} client(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing client(s) from file(s).`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.OAuth2ClientOps.importOAuth2ClientsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { frodo } from '@rockcarver/frodo-lib';
2
+ import { printMessage } from '../utils/Console';
3
+ const {
4
+ queryAllManagedObjectsByType
5
+ } = frodo.idm.config;
6
+ const {
7
+ getRealmManagedOrganization
8
+ } = frodo.idm.organization;
9
+
10
+ // unfinished work
11
+ export async function listOrganizationsTopDown() {
12
+ const orgs = [];
13
+ let result = {
14
+ result: [],
15
+ resultCount: 0,
16
+ pagedResultsCookie: null,
17
+ totalPagedResultsPolicy: 'NONE',
18
+ totalPagedResults: -1,
19
+ remainingPagedResults: -1
20
+ };
21
+ do {
22
+ try {
23
+ // eslint-disable-next-line no-await-in-loop
24
+ result = await queryAllManagedObjectsByType(getRealmManagedOrganization(), ['name', 'parent/*/name', 'children/*/name'], result.pagedResultsCookie);
25
+ } catch (queryAllManagedObjectsByTypeError) {
26
+ printMessage(queryAllManagedObjectsByTypeError, 'error');
27
+ printMessage(`Error querying ${getRealmManagedOrganization()} objects: ${queryAllManagedObjectsByTypeError}`, 'error');
28
+ }
29
+ orgs.concat(result.result);
30
+ printMessage('.', 'text', false);
31
+ } while (result.pagedResultsCookie);
32
+ return orgs;
33
+ }
34
+ //# sourceMappingURL=OrganizationOps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationOps.js","names":["frodo","printMessage","queryAllManagedObjectsByType","idm","config","getRealmManagedOrganization","organization","listOrganizationsTopDown","orgs","result","resultCount","pagedResultsCookie","totalPagedResultsPolicy","totalPagedResults","remainingPagedResults","queryAllManagedObjectsByTypeError","concat"],"sources":["../../src/ops/OrganizationOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { printMessage } from '../utils/Console';\n\nconst { queryAllManagedObjectsByType } = frodo.idm.config;\nconst { getRealmManagedOrganization } = frodo.idm.organization;\n\n// unfinished work\nexport async function listOrganizationsTopDown() {\n const orgs = [];\n let result = {\n result: [],\n resultCount: 0,\n pagedResultsCookie: null,\n totalPagedResultsPolicy: 'NONE',\n totalPagedResults: -1,\n remainingPagedResults: -1,\n };\n do {\n try {\n // eslint-disable-next-line no-await-in-loop\n result = await queryAllManagedObjectsByType(\n getRealmManagedOrganization(),\n ['name', 'parent/*/name', 'children/*/name'],\n result.pagedResultsCookie\n );\n } catch (queryAllManagedObjectsByTypeError) {\n printMessage(queryAllManagedObjectsByTypeError, 'error');\n printMessage(\n `Error querying ${getRealmManagedOrganization()} objects: ${queryAllManagedObjectsByTypeError}`,\n 'error'\n );\n }\n orgs.concat(result.result);\n printMessage('.', 'text', false);\n } while (result.pagedResultsCookie);\n return orgs;\n}\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,YAAY,QAAQ,kBAAkB;AAE/C,MAAM;EAAEC;AAA6B,CAAC,GAAGF,KAAK,CAACG,GAAG,CAACC,MAAM;AACzD,MAAM;EAAEC;AAA4B,CAAC,GAAGL,KAAK,CAACG,GAAG,CAACG,YAAY;;AAE9D;AACA,OAAO,eAAeC,wBAAwBA,CAAA,EAAG;EAC/C,MAAMC,IAAI,GAAG,EAAE;EACf,IAAIC,MAAM,GAAG;IACXA,MAAM,EAAE,EAAE;IACVC,WAAW,EAAE,CAAC;IACdC,kBAAkB,EAAE,IAAI;IACxBC,uBAAuB,EAAE,MAAM;IAC/BC,iBAAiB,EAAE,CAAC,CAAC;IACrBC,qBAAqB,EAAE,CAAC;EAC1B,CAAC;EACD,GAAG;IACD,IAAI;MACF;MACAL,MAAM,GAAG,MAAMP,4BAA4B,CACzCG,2BAA2B,CAAC,CAAC,EAC7B,CAAC,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAC5CI,MAAM,CAACE,kBACT,CAAC;IACH,CAAC,CAAC,OAAOI,iCAAiC,EAAE;MAC1Cd,YAAY,CAACc,iCAAiC,EAAE,OAAO,CAAC;MACxDd,YAAY,CACT,kBAAiBI,2BAA2B,CAAC,CAAE,aAAYU,iCAAkC,EAAC,EAC/F,OACF,CAAC;IACH;IACAP,IAAI,CAACQ,MAAM,CAACP,MAAM,CAACA,MAAM,CAAC;IAC1BR,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC;EAClC,CAAC,QAAQQ,MAAM,CAACE,kBAAkB;EAClC,OAAOH,IAAI;AACb"}
@@ -1,22 +1,21 @@
1
+ import { frodo, state } from '@rockcarver/frodo-lib';
1
2
  import fs from 'fs';
2
- import { Policy, Utils, state } from '@rockcarver/frodo-lib';
3
3
  import { createObjectTable, createProgressBar, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
4
4
  import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
5
5
  const {
6
- deletePolicy: _deletePolicy,
7
- getPolicy,
6
+ getRealmName
7
+ } = frodo.helper.utils;
8
+ const {
8
9
  getPolicies,
9
10
  getPoliciesByPolicySet,
11
+ getPolicy,
10
12
  exportPolicy,
11
13
  exportPolicies,
12
14
  exportPoliciesByPolicySet,
13
15
  importPolicy,
14
16
  importFirstPolicy,
15
17
  importPolicies
16
- } = Policy;
17
- const {
18
- getRealmName
19
- } = Utils;
18
+ } = frodo.authz.policy;
20
19
 
21
20
  /**
22
21
  * List policies
@@ -96,7 +95,7 @@ export async function deletePolicy(policyId) {
96
95
  const errors = [];
97
96
  try {
98
97
  debugMessage(`Deleting policy ${policyId}`);
99
- await _deletePolicy(policyId);
98
+ await deletePolicy(policyId);
100
99
  } catch (error) {
101
100
  printMessage(`Error deleting policy ${policyId}: ${error}`, 'error');
102
101
  }
@@ -135,7 +134,7 @@ export async function deletePolicies() {
135
134
  const policyId = policy._id;
136
135
  try {
137
136
  debugMessage(`Deleting policy ${policyId}`);
138
- await _deletePolicy(policyId);
137
+ await deletePolicy(policyId);
139
138
  updateProgressBar(`Deleted ${policyId}`);
140
139
  } catch (error) {
141
140
  error.message = `Error deleting policy ${policyId}: ${error}`;
@@ -184,7 +183,7 @@ export async function deletePoliciesByPolicySet(policySetId) {
184
183
  const policyId = policy._id;
185
184
  try {
186
185
  debugMessage(`Deleting policy ${policyId}`);
187
- await _deletePolicy(policyId);
186
+ await deletePolicy(policyId);
188
187
  updateProgressBar(`Deleted ${policyId}`);
189
188
  } catch (error) {
190
189
  error.message = `Error deleting policy ${policyId} from policy set ${policySetId}: ${error}`;
@@ -1 +1 @@
1
- {"version":3,"file":"PolicyOps.js","names":["fs","Policy","Utils","state","createObjectTable","createProgressBar","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","deletePolicy","_deletePolicy","getPolicy","getPolicies","getPoliciesByPolicySet","exportPolicy","exportPolicies","exportPoliciesByPolicySet","importPolicy","importFirstPolicy","importPolicies","getRealmName","listPolicies","long","outcome","policies","sort","a","b","_id","localeCompare","policy","err","message","listPoliciesByPolicySet","policySetId","describePolicy","policyId","json","policySet","table","toString","errors","error","length","errorMessages","map","join","deletePolicies","push","deletePoliciesByPolicySet","exportPolicyToFile","file","options","deps","prereqs","useStringArrays","fileName","exportData","exportPoliciesToFile","getRealm","exportPoliciesByPolicySetToFile","exportPoliciesToFiles","exportPoliciesByPolicySetToFiles","importPolicyFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicyFromFile","importPoliciesFromFile","policySetName","importPoliciesFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["../../src/ops/PolicyOps.ts"],"sourcesContent":["import fs from 'fs';\nimport { PolicySkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport { Policy, Utils, state } from '@rockcarver/frodo-lib';\nimport {\n createObjectTable,\n createProgressBar,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport {\n PolicyExportOptions,\n PolicyImportOptions,\n PolicyExportInterface,\n} from '@rockcarver/frodo-lib/types/ops/PolicyOps';\n\nconst {\n deletePolicy: _deletePolicy,\n getPolicy,\n getPolicies,\n getPoliciesByPolicySet,\n exportPolicy,\n exportPolicies,\n exportPoliciesByPolicySet,\n importPolicy,\n importFirstPolicy,\n importPolicies,\n} = Policy;\nconst { getRealmName } = Utils;\n\n/**\n * List policies\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicies(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await getPolicies();\n policies.sort((a, b) => a._id.localeCompare(b._id));\n for (const policy of policies) {\n if (!long) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * List policies by policy set\n * @param {string} policySetId policy set id/name\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPoliciesByPolicySet(\n policySetId: string,\n long = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await getPoliciesByPolicySet(policySetId);\n policies.sort((a, b) => a._id.localeCompare(b._id));\n for (const policy of policies) {\n if (!long) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy\n * @param {string} policyId policy id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicy(\n policyId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await getPolicy(policyId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy\n * @param {string} policyId policy id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicy(policyId: string): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicy: begin`);\n showSpinner(`Deleting ${policyId}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await _deletePolicy(policyId);\n } catch (error) {\n printMessage(`Error deleting policy ${policyId}: ${error}`, 'error');\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n failSpinner(`Error deleting ${policyId}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${policyId}.`);\n outcome = true;\n }\n debugMessage(`cli.PolicyOps.deletePolicy: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicies(): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicies: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n try {\n showSpinner(`Retrieving all policies...`);\n try {\n policies = await getPolicies();\n succeedSpinner(`Found ${policies.length} policies.`);\n } catch (error) {\n error.message = `Error retrieving all policies: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n createProgressBar(\n policies.length,\n `Deleting ${policies.length} policies...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await _deletePolicy(policyId);\n updateProgressBar(`Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressBar(`Error deleting all policies: ${errorMessages}`);\n } else {\n if (policies.length)\n stopProgressBar(`Deleted ${policies.length} policies.`);\n outcome = true;\n }\n }\n debugMessage(`cli.PolicyOps.deletePolicies: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies in policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePoliciesByPolicySet(\n policySetId: string\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePoliciesByPolicySet: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n try {\n showSpinner(`Retrieving all policies from policy set ${policySetId}...`);\n try {\n policies = await getPoliciesByPolicySet(policySetId);\n succeedSpinner(\n `Found ${policies.length} policies in policy set ${policySetId}.`\n );\n } catch (error) {\n error.message = `Error retrieving all policies from policy set ${policySetId}: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n createProgressBar(\n policies.length,\n `Deleting ${policies.length} policies from policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await _deletePolicy(policyId);\n updateProgressBar(`Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId} from policy set ${policySetId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies from policy set ${policySetId}: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressBar(\n `Error deleting all policies from policy set ${policySetId}: ${errorMessages}`\n );\n } else {\n if (policies.length)\n stopProgressBar(`Deleted ${policies.length} policies.`);\n outcome = true;\n }\n }\n debugMessage(\n `cli.PolicyOps.deletePoliciesByPolicySet: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export policy to file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicyToFile(\n policyId: string,\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPolicyToFile: begin`);\n showSpinner(`Exporting ${policyId}...`);\n try {\n let fileName = getTypedFilename(policyId, 'policy.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicy(policyId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${policyId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policyId}: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPolicyToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFile(\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicies(options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${\n titleCase(getRealmName(state.getRealm())) + titleCase(policySetId)\n }Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportPoliciesByPolicySet(policySetId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFiles(\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n try {\n const policies: PolicySkeleton[] = await getPolicies();\n createProgressBar(policies.length, 'Exporting policy sets...');\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policy._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFiles(\n policySetId: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n try {\n const policies: PolicySkeleton[] = await getPoliciesByPolicySet(\n policySetId\n );\n createProgressBar(\n policies.length,\n `Exporting policies in policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policy._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy from file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicyFromFile(\n policyId: string,\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPolicyFromFile: begin`);\n showSpinner(`Importing ${policyId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicy(policyId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policyId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policyId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicyFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstPolicy(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicies(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported ${file}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n } catch (error) {\n failSpinner(\n `Error importing ${file}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from files\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFiles(\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.policy.authz.json')\n );\n createProgressBar(files.length, 'Importing policies...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicyExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicies(fileData, options);\n updateProgressBar(`Imported ${count} policies from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing policies from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} policies from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing policies from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"PolicyOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getRealmName","helper","utils","getPolicies","getPoliciesByPolicySet","getPolicy","exportPolicy","exportPolicies","exportPoliciesByPolicySet","importPolicy","importFirstPolicy","importPolicies","authz","policy","listPolicies","long","outcome","policies","sort","a","b","_id","localeCompare","err","message","listPoliciesByPolicySet","policySetId","describePolicy","policyId","json","policySet","table","toString","deletePolicy","errors","error","length","errorMessages","map","join","deletePolicies","push","deletePoliciesByPolicySet","exportPolicyToFile","file","options","deps","prereqs","useStringArrays","fileName","exportData","exportPoliciesToFile","getRealm","exportPoliciesByPolicySetToFile","exportPoliciesToFiles","exportPoliciesByPolicySetToFiles","importPolicyFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicyFromFile","importPoliciesFromFile","policySetName","importPoliciesFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["../../src/ops/PolicyOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport type { PolicySkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\n createObjectTable,\n createProgressBar,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport type {\n PolicyExportOptions,\n PolicyImportOptions,\n PolicyExportInterface,\n} from '@rockcarver/frodo-lib/types/ops/PolicyOps';\n\nconst { getRealmName } = frodo.helper.utils;\nconst {\n getPolicies,\n getPoliciesByPolicySet,\n getPolicy,\n exportPolicy,\n exportPolicies,\n exportPoliciesByPolicySet,\n importPolicy,\n importFirstPolicy,\n importPolicies,\n} = frodo.authz.policy;\n\n/**\n * List policies\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicies(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await getPolicies();\n policies.sort((a, b) => a._id.localeCompare(b._id));\n for (const policy of policies) {\n if (!long) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * List policies by policy set\n * @param {string} policySetId policy set id/name\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPoliciesByPolicySet(\n policySetId: string,\n long = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await getPoliciesByPolicySet(policySetId);\n policies.sort((a, b) => a._id.localeCompare(b._id));\n for (const policy of policies) {\n if (!long) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy\n * @param {string} policyId policy id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicy(\n policyId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await getPolicy(policyId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy\n * @param {string} policyId policy id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicy(policyId: string): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicy: begin`);\n showSpinner(`Deleting ${policyId}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n } catch (error) {\n printMessage(`Error deleting policy ${policyId}: ${error}`, 'error');\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n failSpinner(`Error deleting ${policyId}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${policyId}.`);\n outcome = true;\n }\n debugMessage(`cli.PolicyOps.deletePolicy: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicies(): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicies: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n try {\n showSpinner(`Retrieving all policies...`);\n try {\n policies = await getPolicies();\n succeedSpinner(`Found ${policies.length} policies.`);\n } catch (error) {\n error.message = `Error retrieving all policies: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n createProgressBar(\n policies.length,\n `Deleting ${policies.length} policies...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n updateProgressBar(`Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressBar(`Error deleting all policies: ${errorMessages}`);\n } else {\n if (policies.length)\n stopProgressBar(`Deleted ${policies.length} policies.`);\n outcome = true;\n }\n }\n debugMessage(`cli.PolicyOps.deletePolicies: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies in policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePoliciesByPolicySet(\n policySetId: string\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePoliciesByPolicySet: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n try {\n showSpinner(`Retrieving all policies from policy set ${policySetId}...`);\n try {\n policies = await getPoliciesByPolicySet(policySetId);\n succeedSpinner(\n `Found ${policies.length} policies in policy set ${policySetId}.`\n );\n } catch (error) {\n error.message = `Error retrieving all policies from policy set ${policySetId}: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n createProgressBar(\n policies.length,\n `Deleting ${policies.length} policies from policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await deletePolicy(policyId);\n updateProgressBar(`Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId} from policy set ${policySetId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies from policy set ${policySetId}: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressBar(\n `Error deleting all policies from policy set ${policySetId}: ${errorMessages}`\n );\n } else {\n if (policies.length)\n stopProgressBar(`Deleted ${policies.length} policies.`);\n outcome = true;\n }\n }\n debugMessage(\n `cli.PolicyOps.deletePoliciesByPolicySet: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export policy to file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicyToFile(\n policyId: string,\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPolicyToFile: begin`);\n showSpinner(`Exporting ${policyId}...`);\n try {\n let fileName = getTypedFilename(policyId, 'policy.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicy(policyId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${policyId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policyId}: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPolicyToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFile(\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicies(options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${\n titleCase(getRealmName(state.getRealm())) + titleCase(policySetId)\n }Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportPoliciesByPolicySet(policySetId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFiles(\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n try {\n const policies: PolicySkeleton[] = await getPolicies();\n createProgressBar(policies.length, 'Exporting policy sets...');\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policy._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFiles(\n policySetId: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n try {\n const policies: PolicySkeleton[] = await getPoliciesByPolicySet(\n policySetId\n );\n createProgressBar(\n policies.length,\n `Exporting policies in policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policy._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy from file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicyFromFile(\n policyId: string,\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPolicyFromFile: begin`);\n showSpinner(`Importing ${policyId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicy(policyId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policyId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policyId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicyFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstPolicy(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicies(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported ${file}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n } catch (error) {\n failSpinner(\n `Error importing ${file}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from files\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFiles(\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.policy.authz.json')\n );\n createProgressBar(files.length, 'Importing policies...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicyExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicies(fileData, options);\n updateProgressBar(`Imported ${count} policies from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing policies from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} policies from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing policies from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
@@ -1,9 +1,15 @@
1
+ import { frodo, state } from '@rockcarver/frodo-lib';
1
2
  import fs from 'fs';
2
- import { Policy, PolicySet, Utils, state } from '@rockcarver/frodo-lib';
3
3
  import { createObjectTable, createProgressBar, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
4
4
  import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
5
5
  const {
6
- deletePolicySet: _deletePolicySet,
6
+ getRealmName
7
+ } = frodo.helper.utils;
8
+ const {
9
+ getPoliciesByPolicySet,
10
+ deletePolicy
11
+ } = frodo.authz.policy;
12
+ const {
7
13
  getPolicySets,
8
14
  getPolicySet,
9
15
  exportPolicySet,
@@ -11,14 +17,7 @@ const {
11
17
  importPolicySet,
12
18
  importFirstPolicySet,
13
19
  importPolicySets
14
- } = PolicySet;
15
- const {
16
- getPoliciesByPolicySet,
17
- deletePolicy
18
- } = Policy;
19
- const {
20
- getRealmName
21
- } = Utils;
20
+ } = frodo.authz.policySet;
22
21
 
23
22
  /**
24
23
  * List policy sets
@@ -82,7 +81,7 @@ export async function deletePolicySet(policySetId) {
82
81
  }
83
82
  try {
84
83
  debugMessage(`Deleting policy set ${policySetId}`);
85
- await _deletePolicySet(policySetId);
84
+ await deletePolicySet(policySetId);
86
85
  } catch (error) {
87
86
  printMessage(`Error deleting policy set ${policySetId}: ${error}`, 'error');
88
87
  }
@@ -136,7 +135,7 @@ export async function deletePolicySets() {
136
135
  }
137
136
  try {
138
137
  debugMessage(`Deleting policy set ${policySetId}`);
139
- await _deletePolicySet(policySetId);
138
+ await deletePolicySet(policySetId);
140
139
  updateProgressBar(`Deleted ${policySetId}`);
141
140
  } catch (error) {
142
141
  error.message = `Error deleting policy set ${policySetId}: ${error}`;