@rockcarver/frodo-cli 2.0.0-4 → 2.0.0-41

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 (486) hide show
  1. package/CHANGELOG.md +312 -5
  2. package/esm/app.js +22 -5
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/FrodoCommand.js +33 -7
  5. package/esm/cli/FrodoCommand.js.map +1 -1
  6. package/esm/cli/_template/something-delete.js +7 -5
  7. package/esm/cli/_template/something-delete.js.map +1 -1
  8. package/esm/cli/_template/something-describe.js +7 -5
  9. package/esm/cli/_template/something-describe.js.map +1 -1
  10. package/esm/cli/_template/something-else-delete.js +7 -5
  11. package/esm/cli/_template/something-else-delete.js.map +1 -1
  12. package/esm/cli/_template/something-else-describe.js +7 -5
  13. package/esm/cli/_template/something-else-describe.js.map +1 -1
  14. package/esm/cli/_template/something-else-export.js +8 -6
  15. package/esm/cli/_template/something-else-export.js.map +1 -1
  16. package/esm/cli/_template/something-else-import.js +7 -5
  17. package/esm/cli/_template/something-else-import.js.map +1 -1
  18. package/esm/cli/_template/something-else-list.js +7 -5
  19. package/esm/cli/_template/something-else-list.js.map +1 -1
  20. package/esm/cli/_template/something-else.js +1 -1
  21. package/esm/cli/_template/something-else.js.map +1 -1
  22. package/esm/cli/_template/something-export.js +8 -6
  23. package/esm/cli/_template/something-export.js.map +1 -1
  24. package/esm/cli/_template/something-import.js +7 -5
  25. package/esm/cli/_template/something-import.js.map +1 -1
  26. package/esm/cli/_template/something-list.js +7 -5
  27. package/esm/cli/_template/something-list.js.map +1 -1
  28. package/esm/cli/_template/something-other-delete.js +7 -5
  29. package/esm/cli/_template/something-other-delete.js.map +1 -1
  30. package/esm/cli/_template/something-other-describe.js +7 -5
  31. package/esm/cli/_template/something-other-describe.js.map +1 -1
  32. package/esm/cli/_template/something-other-export.js +8 -6
  33. package/esm/cli/_template/something-other-export.js.map +1 -1
  34. package/esm/cli/_template/something-other-import.js +7 -5
  35. package/esm/cli/_template/something-other-import.js.map +1 -1
  36. package/esm/cli/_template/something-other-list.js +7 -5
  37. package/esm/cli/_template/something-other-list.js.map +1 -1
  38. package/esm/cli/_template/something-other.js +1 -1
  39. package/esm/cli/_template/something-other.js.map +1 -1
  40. package/esm/cli/_template/something.js +2 -2
  41. package/esm/cli/_template/something.js.map +1 -1
  42. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +10 -5
  43. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
  44. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +14 -8
  45. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  46. package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js +41 -0
  47. package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js.map +1 -0
  48. package/esm/cli/admin/admin-federation-export.js +44 -0
  49. package/esm/cli/admin/admin-federation-export.js.map +1 -0
  50. package/esm/cli/admin/admin-federation-import.js +48 -0
  51. package/esm/cli/admin/admin-federation-import.js.map +1 -0
  52. package/esm/cli/admin/admin-federation-list.js +28 -0
  53. package/esm/cli/admin/admin-federation-list.js.map +1 -0
  54. package/esm/cli/admin/admin-federation.js +13 -0
  55. package/esm/cli/admin/admin-federation.js.map +1 -0
  56. package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artefacts.js +43 -0
  57. package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artefacts.js.map +1 -0
  58. package/esm/cli/admin/admin-get-access-token.js +12 -7
  59. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  60. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +13 -8
  61. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  62. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +11 -6
  63. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  64. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +11 -6
  65. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  66. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +11 -6
  67. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  68. package/esm/cli/admin/admin-list-static-user-mappings.js +12 -7
  69. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  70. package/esm/cli/admin/admin-remove-static-user-mapping.js +12 -6
  71. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  72. package/esm/cli/admin/admin-repair-org-model.js +11 -6
  73. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  74. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +12 -7
  75. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  76. package/esm/cli/admin/admin-show-generic-extension-attributes.js +11 -6
  77. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  78. package/esm/cli/admin/admin-train-auto-access-model.js +32 -0
  79. package/esm/cli/admin/admin-train-auto-access-model.js.map +1 -0
  80. package/esm/cli/admin/admin.js +8 -2
  81. package/esm/cli/admin/admin.js.map +1 -1
  82. package/esm/cli/agent/agent-delete.js +13 -7
  83. package/esm/cli/agent/agent-delete.js.map +1 -1
  84. package/esm/cli/agent/agent-describe.js +7 -5
  85. package/esm/cli/agent/agent-describe.js.map +1 -1
  86. package/esm/cli/agent/agent-export.js +12 -10
  87. package/esm/cli/agent/agent-export.js.map +1 -1
  88. package/esm/cli/agent/agent-gateway-delete.js +13 -7
  89. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  90. package/esm/cli/agent/agent-gateway-describe.js +7 -5
  91. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  92. package/esm/cli/agent/agent-gateway-export.js +12 -10
  93. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  94. package/esm/cli/agent/agent-gateway-import.js +8 -6
  95. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  96. package/esm/cli/agent/agent-gateway-list.js +7 -5
  97. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  98. package/esm/cli/agent/agent-gateway.js +1 -1
  99. package/esm/cli/agent/agent-gateway.js.map +1 -1
  100. package/esm/cli/agent/agent-import.js +8 -6
  101. package/esm/cli/agent/agent-import.js.map +1 -1
  102. package/esm/cli/agent/agent-java-delete.js +13 -7
  103. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  104. package/esm/cli/agent/agent-java-describe.js +7 -5
  105. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  106. package/esm/cli/agent/agent-java-export.js +12 -10
  107. package/esm/cli/agent/agent-java-export.js.map +1 -1
  108. package/esm/cli/agent/agent-java-import.js +8 -6
  109. package/esm/cli/agent/agent-java-import.js.map +1 -1
  110. package/esm/cli/agent/agent-java-list.js +7 -5
  111. package/esm/cli/agent/agent-java-list.js.map +1 -1
  112. package/esm/cli/agent/agent-java.js +1 -1
  113. package/esm/cli/agent/agent-java.js.map +1 -1
  114. package/esm/cli/agent/agent-list.js +7 -5
  115. package/esm/cli/agent/agent-list.js.map +1 -1
  116. package/esm/cli/agent/agent-web-delete.js +13 -7
  117. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  118. package/esm/cli/agent/agent-web-describe.js +7 -5
  119. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  120. package/esm/cli/agent/agent-web-export.js +12 -10
  121. package/esm/cli/agent/agent-web-export.js.map +1 -1
  122. package/esm/cli/agent/agent-web-import.js +8 -6
  123. package/esm/cli/agent/agent-web-import.js.map +1 -1
  124. package/esm/cli/agent/agent-web-list.js +7 -5
  125. package/esm/cli/agent/agent-web-list.js.map +1 -1
  126. package/esm/cli/agent/agent-web.js +3 -3
  127. package/esm/cli/agent/agent-web.js.map +1 -1
  128. package/esm/cli/agent/agent.js +2 -2
  129. package/esm/cli/agent/agent.js.map +1 -1
  130. package/esm/cli/app/app-delete.js +27 -9
  131. package/esm/cli/app/app-delete.js.map +1 -1
  132. package/esm/cli/app/app-describe.js +9 -6
  133. package/esm/cli/app/app-describe.js.map +1 -1
  134. package/esm/cli/app/app-export.js +17 -14
  135. package/esm/cli/app/app-export.js.map +1 -1
  136. package/esm/cli/app/app-import.js +21 -18
  137. package/esm/cli/app/app-import.js.map +1 -1
  138. package/esm/cli/app/app-list.js +12 -9
  139. package/esm/cli/app/app-list.js.map +1 -1
  140. package/esm/cli/app/app.js +8 -12
  141. package/esm/cli/app/app.js.map +1 -1
  142. package/esm/cli/authn/authn-describe.js +29 -0
  143. package/esm/cli/authn/authn-describe.js.map +1 -0
  144. package/esm/cli/authn/authn-export.js +25 -0
  145. package/esm/cli/authn/authn-export.js.map +1 -0
  146. package/esm/cli/authn/authn-import.js +25 -0
  147. package/esm/cli/authn/authn-import.js.map +1 -0
  148. package/esm/cli/authn/authn.js +12 -0
  149. package/esm/cli/authn/authn.js.map +1 -0
  150. package/esm/cli/authz/authz-policy-delete.js +11 -9
  151. package/esm/cli/authz/authz-policy-delete.js.map +1 -1
  152. package/esm/cli/authz/authz-policy-describe.js +8 -6
  153. package/esm/cli/authz/authz-policy-describe.js.map +1 -1
  154. package/esm/cli/authz/authz-policy-export.js +18 -16
  155. package/esm/cli/authz/authz-policy-export.js.map +1 -1
  156. package/esm/cli/authz/authz-policy-import.js +11 -9
  157. package/esm/cli/authz/authz-policy-import.js.map +1 -1
  158. package/esm/cli/authz/authz-policy-list.js +11 -9
  159. package/esm/cli/authz/authz-policy-list.js.map +1 -1
  160. package/esm/cli/authz/authz-policy.js +1 -1
  161. package/esm/cli/authz/authz-policy.js.map +1 -1
  162. package/esm/cli/authz/authz-set-delete.js +11 -9
  163. package/esm/cli/authz/authz-set-delete.js.map +1 -1
  164. package/esm/cli/authz/authz-set-describe.js +8 -6
  165. package/esm/cli/authz/authz-set-describe.js.map +1 -1
  166. package/esm/cli/authz/authz-set-export.js +14 -12
  167. package/esm/cli/authz/authz-set-export.js.map +1 -1
  168. package/esm/cli/authz/authz-set-import.js +11 -9
  169. package/esm/cli/authz/authz-set-import.js.map +1 -1
  170. package/esm/cli/authz/authz-set-list.js +8 -6
  171. package/esm/cli/authz/authz-set-list.js.map +1 -1
  172. package/esm/cli/authz/authz-set.js +1 -1
  173. package/esm/cli/authz/authz-set.js.map +1 -1
  174. package/esm/cli/authz/authz-type-delete.js +13 -11
  175. package/esm/cli/authz/authz-type-delete.js.map +1 -1
  176. package/esm/cli/authz/authz-type-describe.js +9 -7
  177. package/esm/cli/authz/authz-type-describe.js.map +1 -1
  178. package/esm/cli/authz/authz-type-export.js +16 -14
  179. package/esm/cli/authz/authz-type-export.js.map +1 -1
  180. package/esm/cli/authz/authz-type-import.js +14 -12
  181. package/esm/cli/authz/authz-type-import.js.map +1 -1
  182. package/esm/cli/authz/authz-type-list.js +9 -7
  183. package/esm/cli/authz/authz-type-list.js.map +1 -1
  184. package/esm/cli/authz/authz-type.js +1 -1
  185. package/esm/cli/authz/authz-type.js.map +1 -1
  186. package/esm/cli/authz/authz.js +2 -2
  187. package/esm/cli/authz/authz.js.map +1 -1
  188. package/esm/cli/config/config-delete.js +21 -0
  189. package/esm/cli/config/config-delete.js.map +1 -0
  190. package/esm/cli/config/config-describe.js +21 -0
  191. package/esm/cli/config/config-describe.js.map +1 -0
  192. package/esm/cli/config/config-export.js +43 -0
  193. package/esm/cli/config/config-export.js.map +1 -0
  194. package/esm/cli/config/config-import.js +54 -0
  195. package/esm/cli/config/config-import.js.map +1 -0
  196. package/esm/cli/config/config-list.js +21 -0
  197. package/esm/cli/config/config-list.js.map +1 -0
  198. package/esm/cli/config/config.js +19 -0
  199. package/esm/cli/config/config.js.map +1 -0
  200. package/esm/cli/conn/conn-delete.js +2 -3
  201. package/esm/cli/conn/conn-delete.js.map +1 -1
  202. package/esm/cli/conn/conn-describe.js +2 -3
  203. package/esm/cli/conn/conn-describe.js.map +1 -1
  204. package/esm/cli/conn/conn-list.js +2 -3
  205. package/esm/cli/conn/conn-list.js.map +1 -1
  206. package/esm/cli/conn/conn-save.js +31 -16
  207. package/esm/cli/conn/conn-save.js.map +1 -1
  208. package/esm/cli/conn/conn.js +2 -2
  209. package/esm/cli/conn/conn.js.map +1 -1
  210. package/esm/cli/email/email-template-export.js +14 -12
  211. package/esm/cli/email/email-template-export.js.map +1 -1
  212. package/esm/cli/email/email-template-import.js +15 -13
  213. package/esm/cli/email/email-template-import.js.map +1 -1
  214. package/esm/cli/email/email-template-list.js +9 -7
  215. package/esm/cli/email/email-template-list.js.map +1 -1
  216. package/esm/cli/email/email-template.js +1 -1
  217. package/esm/cli/email/email-template.js.map +1 -1
  218. package/esm/cli/email/email.js +2 -2
  219. package/esm/cli/email/email.js.map +1 -1
  220. package/esm/cli/esv/esv-apply.js +18 -9
  221. package/esm/cli/esv/esv-apply.js.map +1 -1
  222. package/esm/cli/esv/esv-secret-create.js +10 -7
  223. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  224. package/esm/cli/esv/esv-secret-delete.js +13 -10
  225. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  226. package/esm/cli/esv/esv-secret-describe.js +10 -7
  227. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  228. package/esm/cli/esv/esv-secret-export.js +22 -7
  229. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  230. package/esm/cli/esv/esv-secret-import.js +7 -5
  231. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  232. package/esm/cli/esv/esv-secret-list.js +11 -8
  233. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  234. package/esm/cli/esv/esv-secret-set.js +10 -7
  235. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  236. package/esm/cli/esv/esv-secret-version-activate.js +10 -8
  237. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  238. package/esm/cli/esv/esv-secret-version-create.js +10 -7
  239. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  240. package/esm/cli/esv/esv-secret-version-deactivate.js +10 -8
  241. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  242. package/esm/cli/esv/esv-secret-version-delete.js +13 -10
  243. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  244. package/esm/cli/esv/esv-secret-version-list.js +10 -7
  245. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  246. package/esm/cli/esv/esv-secret-version.js +1 -1
  247. package/esm/cli/esv/esv-secret-version.js.map +1 -1
  248. package/esm/cli/esv/esv-secret.js +2 -3
  249. package/esm/cli/esv/esv-secret.js.map +1 -1
  250. package/esm/cli/esv/esv-variable-create.js +11 -7
  251. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  252. package/esm/cli/esv/esv-variable-delete.js +13 -9
  253. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  254. package/esm/cli/esv/esv-variable-describe.js +11 -8
  255. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  256. package/esm/cli/esv/esv-variable-export.js +23 -7
  257. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  258. package/esm/cli/esv/esv-variable-import.js +7 -5
  259. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  260. package/esm/cli/esv/esv-variable-list.js +11 -8
  261. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  262. package/esm/cli/esv/esv-variable-set.js +12 -8
  263. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  264. package/esm/cli/esv/esv-variable.js +2 -3
  265. package/esm/cli/esv/esv-variable.js.map +1 -1
  266. package/esm/cli/esv/esv.js +2 -2
  267. package/esm/cli/esv/esv.js.map +1 -1
  268. package/esm/cli/idm/idm-count.js +10 -8
  269. package/esm/cli/idm/idm-count.js.map +1 -1
  270. package/esm/cli/idm/idm-export.js +24 -16
  271. package/esm/cli/idm/idm-export.js.map +1 -1
  272. package/esm/cli/idm/idm-import.js +22 -14
  273. package/esm/cli/idm/idm-import.js.map +1 -1
  274. package/esm/cli/idm/idm-list.js +9 -7
  275. package/esm/cli/idm/idm-list.js.map +1 -1
  276. package/esm/cli/idm/idm.js +2 -2
  277. package/esm/cli/idm/idm.js.map +1 -1
  278. package/esm/cli/idp/idp-export.js +12 -10
  279. package/esm/cli/idp/idp-export.js.map +1 -1
  280. package/esm/cli/idp/idp-import.js +24 -14
  281. package/esm/cli/idp/idp-import.js.map +1 -1
  282. package/esm/cli/idp/idp-list.js +8 -6
  283. package/esm/cli/idp/idp-list.js.map +1 -1
  284. package/esm/cli/idp/idp.js +2 -2
  285. package/esm/cli/idp/idp.js.map +1 -1
  286. package/esm/cli/info/info.js +13 -8
  287. package/esm/cli/info/info.js.map +1 -1
  288. package/esm/cli/journey/journey-delete.js +14 -8
  289. package/esm/cli/journey/journey-delete.js.map +1 -1
  290. package/esm/cli/journey/journey-describe.js +22 -12
  291. package/esm/cli/journey/journey-describe.js.map +1 -1
  292. package/esm/cli/journey/journey-disable.js +11 -12
  293. package/esm/cli/journey/journey-disable.js.map +1 -1
  294. package/esm/cli/journey/journey-enable.js +11 -12
  295. package/esm/cli/journey/journey-enable.js.map +1 -1
  296. package/esm/cli/journey/journey-export.js +24 -13
  297. package/esm/cli/journey/journey-export.js.map +1 -1
  298. package/esm/cli/journey/journey-import.js +15 -13
  299. package/esm/cli/journey/journey-import.js.map +1 -1
  300. package/esm/cli/journey/journey-list.js +7 -5
  301. package/esm/cli/journey/journey-list.js.map +1 -1
  302. package/esm/cli/journey/journey-prune.js +23 -13
  303. package/esm/cli/journey/journey-prune.js.map +1 -1
  304. package/esm/cli/journey/journey.js +2 -2
  305. package/esm/cli/journey/journey.js.map +1 -1
  306. package/esm/cli/{logging/logs-fetch.js → log/log-fetch.js} +68 -36
  307. package/esm/cli/log/log-fetch.js.map +1 -0
  308. package/esm/cli/log/log-key-delete.js +34 -0
  309. package/esm/cli/log/log-key-delete.js.map +1 -0
  310. package/esm/cli/log/log-key-describe.js +21 -0
  311. package/esm/cli/log/log-key-describe.js.map +1 -0
  312. package/esm/cli/log/log-key-list.js +25 -0
  313. package/esm/cli/log/log-key-list.js.map +1 -0
  314. package/esm/cli/log/log-key.js +8 -0
  315. package/esm/cli/log/log-key.js.map +1 -0
  316. package/esm/cli/log/log-list.js +80 -0
  317. package/esm/cli/log/log-list.js.map +1 -0
  318. package/esm/cli/log/log-tail.js +77 -0
  319. package/esm/cli/log/log-tail.js.map +1 -0
  320. package/esm/cli/{logging/logs.js → log/log.js} +6 -3
  321. package/esm/cli/log/log.js.map +1 -0
  322. package/esm/cli/oauth/oauth-client-delete.js +21 -0
  323. package/esm/cli/oauth/oauth-client-delete.js.map +1 -0
  324. package/esm/cli/oauth/oauth-client-describe.js +21 -0
  325. package/esm/cli/oauth/oauth-client-describe.js.map +1 -0
  326. package/esm/cli/oauth/oauth-client-export.js +51 -0
  327. package/esm/cli/oauth/oauth-client-export.js.map +1 -0
  328. package/esm/cli/oauth/oauth-client-import.js +56 -0
  329. package/esm/cli/oauth/oauth-client-import.js.map +1 -0
  330. package/esm/cli/oauth/oauth-client-list.js +24 -0
  331. package/esm/cli/oauth/oauth-client-list.js.map +1 -0
  332. package/esm/cli/oauth/oauth-client.js +14 -0
  333. package/esm/cli/oauth/oauth-client.js.map +1 -0
  334. package/esm/cli/oauth/oauth.js +13 -0
  335. package/esm/cli/oauth/oauth.js.map +1 -0
  336. package/esm/cli/realm/realm-add-custom-domain.js +8 -6
  337. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  338. package/esm/cli/realm/realm-describe.js +8 -6
  339. package/esm/cli/realm/realm-describe.js.map +1 -1
  340. package/esm/cli/realm/realm-list.js +8 -6
  341. package/esm/cli/realm/realm-list.js.map +1 -1
  342. package/esm/cli/realm/realm-remove-custom-domain.js +11 -6
  343. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  344. package/esm/cli/realm/realm.js +2 -2
  345. package/esm/cli/realm/realm.js.map +1 -1
  346. package/esm/cli/saml/saml-cot-export.js +14 -12
  347. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  348. package/esm/cli/saml/saml-cot-import.js +15 -13
  349. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  350. package/esm/cli/saml/saml-cot-list.js +9 -7
  351. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  352. package/esm/cli/saml/saml-cot.js +1 -1
  353. package/esm/cli/saml/saml-cot.js.map +1 -1
  354. package/esm/cli/saml/saml-delete.js +14 -8
  355. package/esm/cli/saml/saml-delete.js.map +1 -1
  356. package/esm/cli/saml/saml-describe.js +9 -7
  357. package/esm/cli/saml/saml-describe.js.map +1 -1
  358. package/esm/cli/saml/saml-export.js +14 -12
  359. package/esm/cli/saml/saml-export.js.map +1 -1
  360. package/esm/cli/saml/saml-import.js +24 -14
  361. package/esm/cli/saml/saml-import.js.map +1 -1
  362. package/esm/cli/saml/saml-list.js +9 -7
  363. package/esm/cli/saml/saml-list.js.map +1 -1
  364. package/esm/cli/saml/saml-metadata-export.js +10 -8
  365. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  366. package/esm/cli/saml/saml-metadata.js +1 -1
  367. package/esm/cli/saml/saml-metadata.js.map +1 -1
  368. package/esm/cli/saml/saml.js +2 -2
  369. package/esm/cli/saml/saml.js.map +1 -1
  370. package/esm/cli/script/script-delete.js +21 -8
  371. package/esm/cli/script/script-delete.js.map +1 -1
  372. package/esm/cli/script/script-describe.js +7 -5
  373. package/esm/cli/script/script-describe.js.map +1 -1
  374. package/esm/cli/script/script-export.js +12 -14
  375. package/esm/cli/script/script-export.js.map +1 -1
  376. package/esm/cli/script/script-import.js +9 -7
  377. package/esm/cli/script/script-import.js.map +1 -1
  378. package/esm/cli/script/script-list.js +10 -8
  379. package/esm/cli/script/script-list.js.map +1 -1
  380. package/esm/cli/script/script.js +3 -5
  381. package/esm/cli/script/script.js.map +1 -1
  382. package/esm/cli/service/service-delete.js +8 -5
  383. package/esm/cli/service/service-delete.js.map +1 -1
  384. package/esm/cli/service/service-export.js +13 -11
  385. package/esm/cli/service/service-export.js.map +1 -1
  386. package/esm/cli/service/service-import.js +32 -14
  387. package/esm/cli/service/service-import.js.map +1 -1
  388. package/esm/cli/service/service-list.js +7 -4
  389. package/esm/cli/service/service-list.js.map +1 -1
  390. package/esm/cli/service/service.js +2 -2
  391. package/esm/cli/service/service.js.map +1 -1
  392. package/esm/cli/shell/shell.js +57 -0
  393. package/esm/cli/shell/shell.js.map +1 -0
  394. package/esm/cli/theme/theme-delete.js +13 -11
  395. package/esm/cli/theme/theme-delete.js.map +1 -1
  396. package/esm/cli/theme/theme-export.js +16 -14
  397. package/esm/cli/theme/theme-export.js.map +1 -1
  398. package/esm/cli/theme/theme-import.js +16 -14
  399. package/esm/cli/theme/theme-import.js.map +1 -1
  400. package/esm/cli/theme/theme-list.js +8 -6
  401. package/esm/cli/theme/theme-list.js.map +1 -1
  402. package/esm/cli/theme/theme.js +2 -2
  403. package/esm/cli/theme/theme.js.map +1 -1
  404. package/esm/help/SampleData.js +7 -0
  405. package/esm/help/SampleData.js.map +1 -0
  406. package/esm/launch.js +1 -1
  407. package/esm/launch.js.map +1 -1
  408. package/esm/loader.js +2 -2
  409. package/esm/loader.js.map +1 -1
  410. package/esm/ops/AdminFederationOps.js +231 -0
  411. package/esm/ops/AdminFederationOps.js.map +1 -0
  412. package/esm/ops/AdminOps.js +151 -0
  413. package/esm/ops/AdminOps.js.map +1 -0
  414. package/esm/ops/AgentOps.js +213 -150
  415. package/esm/ops/AgentOps.js.map +1 -1
  416. package/esm/ops/ApplicationOps.js +324 -0
  417. package/esm/ops/ApplicationOps.js.map +1 -0
  418. package/esm/ops/AuthenticationSettingsOps.js +90 -0
  419. package/esm/ops/AuthenticationSettingsOps.js.map +1 -0
  420. package/esm/ops/CirclesOfTrustOps.js +98 -78
  421. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  422. package/esm/ops/ConfigOps.js +162 -0
  423. package/esm/ops/ConfigOps.js.map +1 -0
  424. package/esm/ops/ConnectionProfileOps.js +12 -6
  425. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  426. package/esm/ops/EmailTemplateOps.js +122 -127
  427. package/esm/ops/EmailTemplateOps.js.map +1 -1
  428. package/esm/ops/IdmOps.js +101 -182
  429. package/esm/ops/IdmOps.js.map +1 -1
  430. package/esm/ops/IdpOps.js +118 -73
  431. package/esm/ops/IdpOps.js.map +1 -1
  432. package/esm/ops/JourneyOps.js +176 -114
  433. package/esm/ops/JourneyOps.js.map +1 -1
  434. package/esm/ops/LogOps.js +92 -30
  435. package/esm/ops/LogOps.js.map +1 -1
  436. package/esm/ops/NodeOps.js +6 -3
  437. package/esm/ops/NodeOps.js.map +1 -1
  438. package/esm/ops/OAuth2ClientOps.js +71 -49
  439. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  440. package/esm/ops/OrganizationOps.js +14 -22
  441. package/esm/ops/OrganizationOps.js.map +1 -1
  442. package/esm/ops/PolicyOps.js +127 -86
  443. package/esm/ops/PolicyOps.js.map +1 -1
  444. package/esm/ops/PolicySetOps.js +108 -76
  445. package/esm/ops/PolicySetOps.js.map +1 -1
  446. package/esm/ops/RealmOps.js +18 -11
  447. package/esm/ops/RealmOps.js.map +1 -1
  448. package/esm/ops/ResourceTypeOps.js +105 -87
  449. package/esm/ops/ResourceTypeOps.js.map +1 -1
  450. package/esm/ops/Saml2Ops.js +132 -91
  451. package/esm/ops/Saml2Ops.js.map +1 -1
  452. package/esm/ops/Saml2Ops.test_.js.map +1 -1
  453. package/esm/ops/ScriptOps.js +205 -82
  454. package/esm/ops/ScriptOps.js.map +1 -1
  455. package/esm/ops/SecretsOps.js +289 -79
  456. package/esm/ops/SecretsOps.js.map +1 -1
  457. package/esm/ops/ServiceOps.js +97 -54
  458. package/esm/ops/ServiceOps.js.map +1 -1
  459. package/esm/ops/ThemeOps.js +164 -158
  460. package/esm/ops/ThemeOps.js.map +1 -1
  461. package/esm/ops/VariablesOps.js +252 -65
  462. package/esm/ops/VariablesOps.js.map +1 -1
  463. package/esm/ops/utils/OpsUtils.js +1 -1
  464. package/esm/ops/utils/OpsUtils.js.map +1 -1
  465. package/esm/ops/utils/Wordwrap.js +1 -1
  466. package/esm/ops/utils/Wordwrap.js.map +1 -1
  467. package/esm/storage/StaticStorage.js +1 -1
  468. package/esm/storage/StaticStorage.js.map +1 -1
  469. package/esm/utils/Config.js +162 -4
  470. package/esm/utils/Config.js.map +1 -1
  471. package/esm/utils/Console.js +78 -35
  472. package/esm/utils/Console.js.map +1 -1
  473. package/esm/utils/Version.js +19 -16
  474. package/esm/utils/Version.js.map +1 -1
  475. package/global-jest-setup.js +4 -0
  476. package/package.json +55 -37
  477. package/esm/cli/logging/logs-fetch.js.map +0 -1
  478. package/esm/cli/logging/logs-list.js +0 -49
  479. package/esm/cli/logging/logs-list.js.map +0 -1
  480. package/esm/cli/logging/logs-tail.js +0 -46
  481. package/esm/cli/logging/logs-tail.js.map +0 -1
  482. package/esm/cli/logging/logs.js.map +0 -1
  483. package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
  484. package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
  485. package/esm/utils/ExportImportUtils.js +0 -90
  486. package/esm/utils/ExportImportUtils.js.map +0 -1
@@ -1,12 +1,15 @@
1
- import { FrodoCommand } from '../FrodoCommand';
2
- import { Option } from 'commander';
3
1
  import { frodo } from '@rockcarver/frodo-lib';
2
+ import { Option } from 'commander';
3
+ import { FrodoCommand } from '../FrodoCommand';
4
+ const {
5
+ getTokens
6
+ } = frodo.login;
4
7
  const program = new FrodoCommand('frodo something other import');
5
8
  program.description('Import other.').addOption(new Option('-i, --other-id <other-id>', '[Other] id. If specified, only one [other] is imported and the options -a and -A are ignored.')).addOption(new Option('-f, --file <file>', 'Name of the file to import.')).addOption(new Option('-a, --all', 'Import all [others] from single file. Ignored with -i.')).addOption(new Option('-A, --all-separate', 'Import all [others] from separate files (*.[other].json) in the current directory. Ignored with -i or -a.')).action(
6
9
  // implement command logic inside action handler
7
10
  async (host, realm, user, password, options, command) => {
8
11
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
9
- if (await frodo.login.getTokens()) {
12
+ if (await getTokens()) {
10
13
  // code goes here
11
14
  } else {
12
15
  process.exitCode = 1;
@@ -14,6 +17,5 @@ async (host, realm, user, password, options, command) => {
14
17
  }
15
18
  // end command logic inside action handler
16
19
  );
17
-
18
20
  program.parse();
19
- //# sourceMappingURL=something-other-import.js.map
21
+ //# sourceMappingURL=something-other-import.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"something-other-import.js","names":["FrodoCommand","Option","frodo","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","login","getTokens","process","exitCode","parse"],"sources":["cli/_template/something-other-import.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { frodo } from '@rockcarver/frodo-lib';\n\nconst program = new FrodoCommand('frodo something other import');\n\nprogram\n .description('Import other.')\n .addOption(\n new Option(\n '-i, --other-id <other-id>',\n '[Other] id. If specified, only one [other] is imported and the options -a and -A are ignored.'\n )\n )\n .addOption(new Option('-f, --file <file>', 'Name of the file to import.'))\n .addOption(\n new Option(\n '-a, --all',\n 'Import all [others] from single file. Ignored with -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all [others] from separate files (*.[other].json) in the current directory. Ignored with -i or -a.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await frodo.login.getTokens()) {\n // code goes here\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,KAAK,QAAQ,uBAAuB;AAE7C,MAAMC,OAAO,GAAG,IAAIH,YAAY,CAAC,8BAA8B,CAAC;AAEhEG,OAAO,CACJC,WAAW,CAAC,eAAe,CAAC,CAC5BC,SAAS,CACR,IAAIJ,MAAM,CACR,2BAA2B,EAC3B,+FACF,CACF,CAAC,CACAI,SAAS,CAAC,IAAIJ,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAC,CACzEI,SAAS,CACR,IAAIJ,MAAM,CACR,WAAW,EACX,wDACF,CACF,CAAC,CACAI,SAAS,CACR,IAAIJ,MAAM,CACR,oBAAoB,EACpB,2GACF,CACF,CAAC,CACAK,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMV,KAAK,CAACY,KAAK,CAACC,SAAS,CAAC,CAAC,EAAE;IACjC;EAAA,CACD,MAAM;IACLC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;;AAEHd,OAAO,CAACe,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"something-other-import.js","names":["frodo","Option","FrodoCommand","getTokens","login","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","process","exitCode","parse"],"sources":["../../../src/cli/_template/something-other-import.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo something other import');\n\nprogram\n .description('Import other.')\n .addOption(\n new Option(\n '-i, --other-id <other-id>',\n '[Other] id. If specified, only one [other] is imported and the options -a and -A are ignored.'\n )\n )\n .addOption(new Option('-f, --file <file>', 'Name of the file to import.'))\n .addOption(\n new Option(\n '-a, --all',\n 'Import all [others] from single file. Ignored with -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all [others] from separate files (*.[other].json) in the current directory. Ignored with -i or -a.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n // code goes here\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAM;EAAEC;AAAU,CAAC,GAAGH,KAAK,CAACI,KAAK;AAEjC,MAAMC,OAAO,GAAG,IAAIH,YAAY,CAAC,8BAA8B,CAAC;AAEhEG,OAAO,CACJC,WAAW,CAAC,eAAe,CAAC,CAC5BC,SAAS,CACR,IAAIN,MAAM,CACR,2BAA2B,EAC3B,+FACF,CACF,CAAC,CACAM,SAAS,CAAC,IAAIN,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAC,CACzEM,SAAS,CACR,IAAIN,MAAM,CACR,WAAW,EACX,wDACF,CACF,CAAC,CACAM,SAAS,CACR,IAAIN,MAAM,CACR,oBAAoB,EACpB,2GACF,CACF,CAAC,CACAO,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMX,SAAS,CAAC,CAAC,EAAE;IACrB;EAAA,CACD,MAAM;IACLa,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHZ,OAAO,CAACa,KAAK,CAAC,CAAC"}
@@ -1,12 +1,15 @@
1
- import { FrodoCommand } from '../FrodoCommand';
2
- import { Option } from 'commander';
3
1
  import { frodo } from '@rockcarver/frodo-lib';
2
+ import { Option } from 'commander';
3
+ import { FrodoCommand } from '../FrodoCommand';
4
+ const {
5
+ getTokens
6
+ } = frodo.login;
4
7
  const program = new FrodoCommand('frodo something other list');
5
8
  program.description('List other.').addOption(new Option('-l, --long', 'Long with all fields.').default(false, 'false')).action(
6
9
  // implement command logic inside action handler
7
10
  async (host, realm, user, password, options, command) => {
8
11
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
9
- if (await frodo.login.getTokens()) {
12
+ if (await getTokens()) {
10
13
  // code goes here
11
14
  } else {
12
15
  process.exitCode = 1;
@@ -14,6 +17,5 @@ async (host, realm, user, password, options, command) => {
14
17
  }
15
18
  // end command logic inside action handler
16
19
  );
17
-
18
20
  program.parse();
19
- //# sourceMappingURL=something-other-list.js.map
21
+ //# sourceMappingURL=something-other-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"something-other-list.js","names":["FrodoCommand","Option","frodo","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","login","getTokens","process","exitCode","parse"],"sources":["cli/_template/something-other-list.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { frodo } from '@rockcarver/frodo-lib';\n\nconst program = new FrodoCommand('frodo something other list');\n\nprogram\n .description('List other.')\n .addOption(\n new Option('-l, --long', 'Long with all fields.').default(false, 'false')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await frodo.login.getTokens()) {\n // code goes here\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,KAAK,QAAQ,uBAAuB;AAE7C,MAAMC,OAAO,GAAG,IAAIH,YAAY,CAAC,4BAA4B,CAAC;AAE9DG,OAAO,CACJC,WAAW,CAAC,aAAa,CAAC,CAC1BC,SAAS,CACR,IAAIJ,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAACK,OAAO,CAAC,KAAK,EAAE,OAAO,CAC1E,CAAC,CACAC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMX,KAAK,CAACa,KAAK,CAACC,SAAS,CAAC,CAAC,EAAE;IACjC;EAAA,CACD,MAAM;IACLC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;;AAEHf,OAAO,CAACgB,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"something-other-list.js","names":["frodo","Option","FrodoCommand","getTokens","login","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","process","exitCode","parse"],"sources":["../../../src/cli/_template/something-other-list.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo something other list');\n\nprogram\n .description('List other.')\n .addOption(\n new Option('-l, --long', 'Long with all fields.').default(false, 'false')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n // code goes here\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAM;EAAEC;AAAU,CAAC,GAAGH,KAAK,CAACI,KAAK;AAEjC,MAAMC,OAAO,GAAG,IAAIH,YAAY,CAAC,4BAA4B,CAAC;AAE9DG,OAAO,CACJC,WAAW,CAAC,aAAa,CAAC,CAC1BC,SAAS,CACR,IAAIN,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAACO,OAAO,CAAC,KAAK,EAAE,OAAO,CAC1E,CAAC,CACAC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMZ,SAAS,CAAC,CAAC,EAAE;IACrB;EAAA,CACD,MAAM;IACLc,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHb,OAAO,CAACc,KAAK,CAAC,CAAC"}
@@ -7,4 +7,4 @@ program.command('export', 'Export other.');
7
7
  program.command('import', 'Import other.');
8
8
  program.command('delete', 'Delete other.');
9
9
  program.parse();
10
- //# sourceMappingURL=something-other.js.map
10
+ //# sourceMappingURL=something-other.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"something-other.js","names":["FrodoStubCommand","program","description","command","parse"],"sources":["cli/_template/something-other.ts"],"sourcesContent":["import { FrodoStubCommand } from '../FrodoCommand';\n\nconst program = new FrodoStubCommand('frodo something other');\n\nprogram.description('Manage other.');\n\nprogram.command('list', 'List other.');\n\nprogram.command('describe', 'Describe other.');\n\nprogram.command('export', 'Export other.');\n\nprogram.command('import', 'Import other.');\n\nprogram.command('delete', 'Delete other.');\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,iBAAiB;AAElD,MAAMC,OAAO,GAAG,IAAID,gBAAgB,CAAC,uBAAuB,CAAC;AAE7DC,OAAO,CAACC,WAAW,CAAC,eAAe,CAAC;AAEpCD,OAAO,CAACE,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC;AAEtCF,OAAO,CAACE,OAAO,CAAC,UAAU,EAAE,iBAAiB,CAAC;AAE9CF,OAAO,CAACE,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC;AAE1CF,OAAO,CAACE,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC;AAE1CF,OAAO,CAACE,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC;AAE1CF,OAAO,CAACG,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"something-other.js","names":["FrodoStubCommand","program","description","command","parse"],"sources":["../../../src/cli/_template/something-other.ts"],"sourcesContent":["import { FrodoStubCommand } from '../FrodoCommand';\n\nconst program = new FrodoStubCommand('frodo something other');\n\nprogram.description('Manage other.');\n\nprogram.command('list', 'List other.');\n\nprogram.command('describe', 'Describe other.');\n\nprogram.command('export', 'Export other.');\n\nprogram.command('import', 'Import other.');\n\nprogram.command('delete', 'Delete other.');\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,iBAAiB;AAElD,MAAMC,OAAO,GAAG,IAAID,gBAAgB,CAAC,uBAAuB,CAAC;AAE7DC,OAAO,CAACC,WAAW,CAAC,eAAe,CAAC;AAEpCD,OAAO,CAACE,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC;AAEtCF,OAAO,CAACE,OAAO,CAAC,UAAU,EAAE,iBAAiB,CAAC;AAE9CF,OAAO,CAACE,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC;AAE1CF,OAAO,CAACE,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC;AAE1CF,OAAO,CAACE,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC;AAE1CF,OAAO,CAACG,KAAK,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
- import { FrodoStubCommand } from '../FrodoCommand';
2
1
  import path from 'path';
3
2
  import { fileURLToPath } from 'url';
3
+ import { FrodoStubCommand } from '../FrodoCommand';
4
4
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
5
5
  export default function setup() {
6
6
  const program = new FrodoStubCommand('something').description('Manage something.').executableDir(__dirname);
@@ -13,4 +13,4 @@ export default function setup() {
13
13
  program.command('delete', 'Delete something.');
14
14
  return program;
15
15
  }
16
- //# sourceMappingURL=something.js.map
16
+ //# sourceMappingURL=something.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"something.js","names":["FrodoStubCommand","path","fileURLToPath","__dirname","dirname","import","meta","url","setup","program","description","executableDir","command"],"sources":["cli/_template/something.ts"],"sourcesContent":["import { FrodoStubCommand } from '../FrodoCommand';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport default function setup() {\n const program = new FrodoStubCommand('something')\n .description('Manage something.')\n .executableDir(__dirname);\n\n program.command('else', 'Manage something else.');\n\n program.command('other', 'Manage something other.');\n\n program.command('list', 'List something.');\n\n program.command('describe', 'Describe something.');\n\n program.command('export', 'Export something.');\n\n program.command('import', 'Import something.');\n\n program.command('delete', 'Delete something.');\n\n return program;\n}\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,iBAAiB;AAClD,OAAOC,IAAI,MAAM,MAAM;AACvB,SAASC,aAAa,QAAQ,KAAK;AAEnC,MAAMC,SAAS,GAAGF,IAAI,CAACG,OAAO,CAACF,aAAa,CAACG,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;AAE9D,eAAe,SAASC,KAAKA,CAAA,EAAG;EAC9B,MAAMC,OAAO,GAAG,IAAIT,gBAAgB,CAAC,WAAW,CAAC,CAC9CU,WAAW,CAAC,mBAAmB,CAAC,CAChCC,aAAa,CAACR,SAAS,CAAC;EAE3BM,OAAO,CAACG,OAAO,CAAC,MAAM,EAAE,wBAAwB,CAAC;EAEjDH,OAAO,CAACG,OAAO,CAAC,OAAO,EAAE,yBAAyB,CAAC;EAEnDH,OAAO,CAACG,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC;EAE1CH,OAAO,CAACG,OAAO,CAAC,UAAU,EAAE,qBAAqB,CAAC;EAElDH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC;EAE9CH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC;EAE9CH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC;EAE9C,OAAOH,OAAO;AAChB"}
1
+ {"version":3,"file":"something.js","names":["path","fileURLToPath","FrodoStubCommand","__dirname","dirname","import","meta","url","setup","program","description","executableDir","command"],"sources":["../../../src/cli/_template/something.ts"],"sourcesContent":["import path from 'path';\nimport { fileURLToPath } from 'url';\n\nimport { FrodoStubCommand } from '../FrodoCommand';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport default function setup() {\n const program = new FrodoStubCommand('something')\n .description('Manage something.')\n .executableDir(__dirname);\n\n program.command('else', 'Manage something else.');\n\n program.command('other', 'Manage something other.');\n\n program.command('list', 'List something.');\n\n program.command('describe', 'Describe something.');\n\n program.command('export', 'Export something.');\n\n program.command('import', 'Import something.');\n\n program.command('delete', 'Delete something.');\n\n return program;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AACvB,SAASC,aAAa,QAAQ,KAAK;AAEnC,SAASC,gBAAgB,QAAQ,iBAAiB;AAElD,MAAMC,SAAS,GAAGH,IAAI,CAACI,OAAO,CAACH,aAAa,CAACI,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;AAE9D,eAAe,SAASC,KAAKA,CAAA,EAAG;EAC9B,MAAMC,OAAO,GAAG,IAAIP,gBAAgB,CAAC,WAAW,CAAC,CAC9CQ,WAAW,CAAC,mBAAmB,CAAC,CAChCC,aAAa,CAACR,SAAS,CAAC;EAE3BM,OAAO,CAACG,OAAO,CAAC,MAAM,EAAE,wBAAwB,CAAC;EAEjDH,OAAO,CAACG,OAAO,CAAC,OAAO,EAAE,yBAAyB,CAAC;EAEnDH,OAAO,CAACG,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC;EAE1CH,OAAO,CAACG,OAAO,CAAC,UAAU,EAAE,qBAAqB,CAAC;EAElDH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC;EAE9CH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC;EAE9CH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,mBAAmB,CAAC;EAE9C,OAAOH,OAAO;AAChB"}
@@ -1,14 +1,20 @@
1
- import { FrodoCommand } from '../FrodoCommand';
2
1
  import { frodo } from '@rockcarver/frodo-lib';
3
2
  import { printMessage } from '../../utils/Console.js';
3
+ import { FrodoCommand } from '../FrodoCommand';
4
+ const {
5
+ getTokens
6
+ } = frodo.login;
7
+ const {
8
+ addAutoIdStaticUserMapping
9
+ } = frodo.admin;
4
10
  const program = new FrodoCommand('frodo admin add-autoid-static-user-mapping');
5
11
  program.description('Add AutoId static user mapping to enable dashboards and other AutoId-based functionality.').action(
6
12
  // implement command logic inside action handler
7
13
  async (host, realm, user, password, options, command) => {
8
14
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
9
- if (await frodo.login.getTokens()) {
15
+ if (await getTokens()) {
10
16
  printMessage(`Adding AutoId static user mapping...`);
11
- await frodo.admin.addAutoIdStaticUserMapping();
17
+ await addAutoIdStaticUserMapping();
12
18
  printMessage('Done.');
13
19
  } else {
14
20
  process.exitCode = 1;
@@ -16,6 +22,5 @@ async (host, realm, user, password, options, command) => {
16
22
  }
17
23
  // end command logic inside action handler
18
24
  );
19
-
20
25
  program.parse();
21
- //# sourceMappingURL=admin-add-autoid-static-user-mapping.js.map
26
+ //# sourceMappingURL=admin-add-autoid-static-user-mapping.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-add-autoid-static-user-mapping.js","names":["FrodoCommand","frodo","printMessage","program","description","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","login","getTokens","admin","addAutoIdStaticUserMapping","process","exitCode","parse"],"sources":["cli/admin/admin-add-autoid-static-user-mapping.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { frodo } from '@rockcarver/frodo-lib';\nimport { printMessage } from '../../utils/Console.js';\n\nconst program = new FrodoCommand('frodo admin add-autoid-static-user-mapping');\n\nprogram\n .description(\n 'Add AutoId static user mapping to enable dashboards and other AutoId-based functionality.'\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await frodo.login.getTokens()) {\n printMessage(`Adding AutoId static user mapping...`);\n await frodo.admin.addAutoIdStaticUserMapping();\n printMessage('Done.');\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,YAAY,QAAQ,wBAAwB;AAErD,MAAMC,OAAO,GAAG,IAAIH,YAAY,CAAC,4CAA4C,CAAC;AAE9EG,OAAO,CACJC,WAAW,CACV,2FACF,CAAC,CACAC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMV,KAAK,CAACY,KAAK,CAACC,SAAS,CAAC,CAAC,EAAE;IACjCZ,YAAY,CAAE,sCAAqC,CAAC;IACpD,MAAMD,KAAK,CAACc,KAAK,CAACC,0BAA0B,CAAC,CAAC;IAC9Cd,YAAY,CAAC,OAAO,CAAC;EACvB,CAAC,MAAM;IACLe,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;;AAEHf,OAAO,CAACgB,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"admin-add-autoid-static-user-mapping.js","names":["frodo","printMessage","FrodoCommand","getTokens","login","addAutoIdStaticUserMapping","admin","program","description","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","process","exitCode","parse"],"sources":["../../../src/cli/admin/admin-add-autoid-static-user-mapping.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\n\nimport { printMessage } from '../../utils/Console.js';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\nconst { addAutoIdStaticUserMapping } = frodo.admin;\n\nconst program = new FrodoCommand('frodo admin add-autoid-static-user-mapping');\n\nprogram\n .description(\n 'Add AutoId static user mapping to enable dashboards and other AutoId-based functionality.'\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n printMessage(`Adding AutoId static user mapping...`);\n await addAutoIdStaticUserMapping();\n printMessage('Done.');\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAE7C,SAASC,YAAY,QAAQ,wBAAwB;AACrD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAM;EAAEC;AAAU,CAAC,GAAGH,KAAK,CAACI,KAAK;AACjC,MAAM;EAAEC;AAA2B,CAAC,GAAGL,KAAK,CAACM,KAAK;AAElD,MAAMC,OAAO,GAAG,IAAIL,YAAY,CAAC,4CAA4C,CAAC;AAE9EK,OAAO,CACJC,WAAW,CACV,2FACF,CAAC,CACAC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMZ,SAAS,CAAC,CAAC,EAAE;IACrBF,YAAY,CAAE,sCAAqC,CAAC;IACpD,MAAMI,0BAA0B,CAAC,CAAC;IAClCJ,YAAY,CAAC,OAAO,CAAC;EACvB,CAAC,MAAM;IACLgB,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHX,OAAO,CAACY,KAAK,CAAC,CAAC"}
@@ -1,15 +1,22 @@
1
- import { FrodoCommand } from '../FrodoCommand';
1
+ import { frodo, state } from '@rockcarver/frodo-lib';
2
+ import Table from 'cli-table3';
2
3
  import { Option } from 'commander';
3
4
  import { v4 as uuidv4 } from 'uuid';
4
- import Table from 'cli-table3';
5
- import { frodo, state } from '@rockcarver/frodo-lib';
6
5
  import { printMessage } from '../../utils/Console.js';
6
+ import { FrodoCommand } from '../FrodoCommand';
7
+ const {
8
+ getTokens
9
+ } = frodo.login;
10
+ const {
11
+ createOAuth2ClientWithAdminPrivileges,
12
+ createLongLivedToken
13
+ } = frodo.admin;
7
14
  const program = new FrodoCommand('frodo admin create-oauth2-client-with-admin-privileges');
8
15
  program.description('Create an oauth2 client with admin privileges.').addOption(new Option('--client-id [id]', 'Client id.')).addOption(new Option('--client-secret [secret]', 'Client secret.')).addOption(new Option('--llt', 'Create a long-lived token and store it in a secret. The default secret name is esv-admin-token and the default token lifetime is 315,360,000 seconds (10 years). Both can be overwritten with the --llt-esv and --llt-ttl options.')).addOption(new Option('--llt-scope [scope]', 'Request the following scope(s). This option only applies if used with the --llt option.').default('fr:idm:*', 'fr:idm:*')).addOption(new Option('--llt-esv [esv]', 'Name of the secret to store the token in. This option only applies if used with the --llt option.').default('esv-admin-token', 'esv-admin-token')).addOption(new Option('--no-llt-esv', "Don't store the token in a secret and output to console instead. This option only applies if used with the --llt option.")).addOption(new Option('--llt-ttl [ttl]', 'Token lifetime (seconds). This option only applies if used with the --llt option.').default(315360000, '315,360,000 seconds (10 years)')).action(
9
16
  // implement command logic inside action handler
10
17
  async (host, realm, user, password, options, command) => {
11
18
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
12
- if (await frodo.login.getTokens()) {
19
+ if (await getTokens()) {
13
20
  printMessage(`Creating oauth2 client with admin privileges in realm "${state.getRealm()}"...`);
14
21
  let clientId = uuidv4();
15
22
  let clientSecret = uuidv4();
@@ -20,7 +27,7 @@ async (host, realm, user, password, options, command) => {
20
27
  clientSecret = options.clientSecret;
21
28
  }
22
29
  try {
23
- await frodo.admin.createOAuth2ClientWithAdminPrivileges(clientId, clientSecret);
30
+ await createOAuth2ClientWithAdminPrivileges(clientId, clientSecret);
24
31
  } catch (error) {
25
32
  printMessage(error, 'error');
26
33
  process.exitCode = 1;
@@ -52,7 +59,7 @@ async (host, realm, user, password, options, command) => {
52
59
  table.push(['Client Secret'['brightCyan'], clientSecret]);
53
60
  if (options.llt) {
54
61
  try {
55
- const response = await frodo.admin.createLongLivedToken(clientId, clientSecret, options.scope, options.lltEsv, options.lltTtl);
62
+ const response = await createLongLivedToken(clientId, clientSecret, options.lltScope, options.lltEsv, options.lltTtl);
56
63
  if (options.lltEsv) table.push(['Secret Name'['brightCyan'], response.secret]);
57
64
  table.push(['Scope'['brightCyan'], response.scope]);
58
65
  table.push(['Expires'['brightCyan'], response.expires_on]);
@@ -74,6 +81,5 @@ async (host, realm, user, password, options, command) => {
74
81
  }
75
82
  // end command logic inside action handler
76
83
  );
77
-
78
84
  program.parse();
79
- //# sourceMappingURL=admin-create-oauth2-client-with-admin-privileges.js.map
85
+ //# sourceMappingURL=admin-create-oauth2-client-with-admin-privileges.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-create-oauth2-client-with-admin-privileges.js","names":["FrodoCommand","Option","v4","uuidv4","Table","frodo","state","printMessage","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","login","getTokens","getRealm","clientId","clientSecret","admin","createOAuth2ClientWithAdminPrivileges","error","process","exitCode","table","chars","top","bottom","left","mid","right","style","wordWrap","push","llt","response","createLongLivedToken","scope","lltEsv","lltTtl","secret","expires_on","toString","access_token","parse"],"sources":["cli/admin/admin-create-oauth2-client-with-admin-privileges.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { v4 as uuidv4 } from 'uuid';\nimport Table from 'cli-table3';\nimport { frodo, state } from '@rockcarver/frodo-lib';\nimport { printMessage } from '../../utils/Console.js';\n\nconst program = new FrodoCommand(\n 'frodo admin create-oauth2-client-with-admin-privileges'\n);\n\nprogram\n .description('Create an oauth2 client with admin privileges.')\n .addOption(new Option('--client-id [id]', 'Client id.'))\n .addOption(new Option('--client-secret [secret]', 'Client secret.'))\n .addOption(\n new Option(\n '--llt',\n 'Create a long-lived token and store it in a secret. The default secret name is esv-admin-token and the default token lifetime is 315,360,000 seconds (10 years). Both can be overwritten with the --llt-esv and --llt-ttl options.'\n )\n )\n .addOption(\n new Option(\n '--llt-scope [scope]',\n 'Request the following scope(s). This option only applies if used with the --llt option.'\n ).default('fr:idm:*', 'fr:idm:*')\n )\n .addOption(\n new Option(\n '--llt-esv [esv]',\n 'Name of the secret to store the token in. This option only applies if used with the --llt option.'\n ).default('esv-admin-token', 'esv-admin-token')\n )\n .addOption(\n new Option(\n '--no-llt-esv',\n \"Don't store the token in a secret and output to console instead. This option only applies if used with the --llt option.\"\n )\n )\n .addOption(\n new Option(\n '--llt-ttl [ttl]',\n 'Token lifetime (seconds). This option only applies if used with the --llt option.'\n ).default(315360000, '315,360,000 seconds (10 years)')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await frodo.login.getTokens()) {\n printMessage(\n `Creating oauth2 client with admin privileges in realm \"${state.getRealm()}\"...`\n );\n let clientId = uuidv4();\n let clientSecret = uuidv4();\n if (options.clientId) {\n clientId = options.clientId;\n }\n if (options.clientSecret) {\n clientSecret = options.clientSecret;\n }\n try {\n await frodo.admin.createOAuth2ClientWithAdminPrivileges(\n clientId,\n clientSecret\n );\n } catch (error) {\n printMessage(error, 'error');\n process.exitCode = 1;\n }\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0 },\n wordWrap: true,\n });\n table.push(['Client ID'['brightCyan'], clientId]);\n table.push(['Client Secret'['brightCyan'], clientSecret]);\n if (options.llt) {\n try {\n const response = await frodo.admin.createLongLivedToken(\n clientId,\n clientSecret,\n options.scope,\n options.lltEsv,\n options.lltTtl\n );\n if (options.lltEsv)\n table.push(['Secret Name'['brightCyan'], response.secret]);\n table.push(['Scope'['brightCyan'], response.scope]);\n table.push(['Expires'['brightCyan'], response.expires_on]);\n printMessage(table.toString());\n if (options.lltEsv === false) {\n printMessage(`\\nBearer token:`, 'info');\n printMessage(`${response.access_token}`, 'data');\n }\n } catch (error) {\n printMessage(error, 'error');\n process.exitCode = 1;\n }\n } else {\n printMessage(table.toString());\n }\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
1
+ {"version":3,"file":"admin-create-oauth2-client-with-admin-privileges.js","names":["frodo","state","Table","Option","v4","uuidv4","printMessage","FrodoCommand","getTokens","login","createOAuth2ClientWithAdminPrivileges","createLongLivedToken","admin","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","getRealm","clientId","clientSecret","error","process","exitCode","table","chars","top","bottom","left","mid","right","style","wordWrap","push","llt","response","lltScope","lltEsv","lltTtl","secret","scope","expires_on","toString","access_token","parse"],"sources":["../../../src/cli/admin/admin-create-oauth2-client-with-admin-privileges.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport Table from 'cli-table3';\nimport { Option } from 'commander';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { printMessage } from '../../utils/Console.js';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\nconst { createOAuth2ClientWithAdminPrivileges, createLongLivedToken } =\n frodo.admin;\n\nconst program = new FrodoCommand(\n 'frodo admin create-oauth2-client-with-admin-privileges'\n);\n\nprogram\n .description('Create an oauth2 client with admin privileges.')\n .addOption(new Option('--client-id [id]', 'Client id.'))\n .addOption(new Option('--client-secret [secret]', 'Client secret.'))\n .addOption(\n new Option(\n '--llt',\n 'Create a long-lived token and store it in a secret. The default secret name is esv-admin-token and the default token lifetime is 315,360,000 seconds (10 years). Both can be overwritten with the --llt-esv and --llt-ttl options.'\n )\n )\n .addOption(\n new Option(\n '--llt-scope [scope]',\n 'Request the following scope(s). This option only applies if used with the --llt option.'\n ).default('fr:idm:*', 'fr:idm:*')\n )\n .addOption(\n new Option(\n '--llt-esv [esv]',\n 'Name of the secret to store the token in. This option only applies if used with the --llt option.'\n ).default('esv-admin-token', 'esv-admin-token')\n )\n .addOption(\n new Option(\n '--no-llt-esv',\n \"Don't store the token in a secret and output to console instead. This option only applies if used with the --llt option.\"\n )\n )\n .addOption(\n new Option(\n '--llt-ttl [ttl]',\n 'Token lifetime (seconds). This option only applies if used with the --llt option.'\n ).default(315360000, '315,360,000 seconds (10 years)')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n printMessage(\n `Creating oauth2 client with admin privileges in realm \"${state.getRealm()}\"...`\n );\n let clientId = uuidv4();\n let clientSecret = uuidv4();\n if (options.clientId) {\n clientId = options.clientId;\n }\n if (options.clientSecret) {\n clientSecret = options.clientSecret;\n }\n try {\n await createOAuth2ClientWithAdminPrivileges(clientId, clientSecret);\n } catch (error) {\n printMessage(error, 'error');\n process.exitCode = 1;\n }\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0 },\n wordWrap: true,\n });\n table.push(['Client ID'['brightCyan'], clientId]);\n table.push(['Client Secret'['brightCyan'], clientSecret]);\n if (options.llt) {\n try {\n const response = await createLongLivedToken(\n clientId,\n clientSecret,\n options.lltScope,\n options.lltEsv,\n options.lltTtl\n );\n if (options.lltEsv)\n table.push(['Secret Name'['brightCyan'], response.secret]);\n table.push(['Scope'['brightCyan'], response.scope]);\n table.push(['Expires'['brightCyan'], response.expires_on]);\n printMessage(table.toString());\n if (options.lltEsv === false) {\n printMessage(`\\nBearer token:`, 'info');\n printMessage(`${response.access_token}`, 'data');\n }\n } catch (error) {\n printMessage(error, 'error');\n process.exitCode = 1;\n }\n } else {\n printMessage(table.toString());\n }\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { frodo } from '@rockcarver/frodo-lib';
2
+ import { Option } from 'commander';
3
+ import fs from 'fs';
4
+ import { v4 as uuidv4 } from 'uuid';
5
+ import * as s from '../../help/SampleData';
6
+ import { executeRfc7523AuthZGrantFlow } from '../../ops/AdminOps.js';
7
+ import { printMessage } from '../../utils/Console.js';
8
+ import { FrodoCommand } from '../FrodoCommand.js';
9
+ const {
10
+ getTokens
11
+ } = frodo.login;
12
+ const program = new FrodoCommand('frodo admin execute-rfc7523-authz-grant-flow');
13
+ program.description('Execute RFC7523 authorization grant flow.').addOption(new Option('--client-id [id]', 'Client id.')).addOption(new Option('--jwk-file [file]', 'Path to JSON Web Key (JWK) file containing private key.')).addOption(new Option('--sub [subject]', 'Subject identifier, typically a UUID. Must resolve to a valid user in the realm.')).addOption(new Option('--iss [issuer]', 'Trusted issuer, typically a URL.')).addOption(new Option('--scope [scope]', 'Space-delimited list of scopes.').default('openid fr:am:* fr:idm:*')).addOption(new Option('--json', 'Output in JSON format.')).addHelpText('after', `Usage Examples:\n` + ` If you used frodo to create the RFC7523 configuration (see 'Related Commands' below), then you can test your configuration with minimal input and frodo will locate the missing parameters. The command below returns access token and identity token:\n` + ` $ frodo admin execute-rfc7523-authz-grant-flow --client-id rfc7523-client1 ${s.amBaseUrl}\n`['brightCyan'] + ` Same as above but output raw json:\n` + ` $ frodo admin execute-rfc7523-authz-grant-flow --client-id rfc7523-client1 --json ${s.amBaseUrl}'\n`['brightCyan'] + ` Same as first command above but explicitly provide all parameters:\n` + ` $ frodo admin execute-rfc7523-authz-grant-flow --client-id rfc7523-client1 --iss https://my-issuer.com/issuer --sub 146c2230-9448-4442-b86d-eb4a81a0121d --jwk-file rfc7523-client1_private.jwk.json ${s.amBaseUrl}'\n`['brightCyan'] + `\nRelated Commands:\n` + ` Run ${'frodo admin generate-rfc7523-authz-grant-artefacts --help'['brightCyan']} to see how to create the required configuration artefacts for ${'frodo admin execute-rfc7523-authz-grant-flow'['brightCyan']}:\n`).action(
14
+ // implement command logic inside action handler
15
+ async (host, realm, user, password, options, command) => {
16
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
17
+ if (await getTokens()) {
18
+ printMessage(`Executing RFC7523 authorization grant flow...`);
19
+ let clientId = uuidv4();
20
+ if (options.clientId) {
21
+ clientId = options.clientId;
22
+ }
23
+ let jwk = undefined;
24
+ if (options.jwkFile) {
25
+ try {
26
+ const data = fs.readFileSync(options.jwkFile);
27
+ jwk = JSON.parse(data.toString());
28
+ } catch (error) {
29
+ printMessage(`Error parsing JWK from file ${options.jwkFile}: ${error.message}`, 'error');
30
+ }
31
+ }
32
+ const outcome = await executeRfc7523AuthZGrantFlow(clientId, options.iss, jwk, options.sub, options.scope.split(' '), options.json);
33
+ if (!outcome) process.exitCode = 1;
34
+ } else {
35
+ process.exitCode = 1;
36
+ }
37
+ }
38
+ // end command logic inside action handler
39
+ );
40
+ program.parse();
41
+ //# sourceMappingURL=admin-execute-rfc7523-authz-grant-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-execute-rfc7523-authz-grant-flow.js","names":["frodo","Option","fs","v4","uuidv4","s","executeRfc7523AuthZGrantFlow","printMessage","FrodoCommand","getTokens","login","program","description","addOption","default","addHelpText","amBaseUrl","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","clientId","jwk","undefined","jwkFile","data","readFileSync","JSON","parse","toString","error","message","outcome","iss","sub","scope","split","json","process","exitCode"],"sources":["../../../src/cli/admin/admin-execute-rfc7523-authz-grant-flow.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { JwkRsa } from '@rockcarver/frodo-lib/types/ops/JoseOps.js';\nimport { Option } from 'commander';\nimport fs from 'fs';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport * as s from '../../help/SampleData';\nimport { executeRfc7523AuthZGrantFlow } from '../../ops/AdminOps.js';\nimport { printMessage } from '../../utils/Console.js';\nimport { FrodoCommand } from '../FrodoCommand.js';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand(\n 'frodo admin execute-rfc7523-authz-grant-flow'\n);\n\nprogram\n .description('Execute RFC7523 authorization grant flow.')\n .addOption(new Option('--client-id [id]', 'Client id.'))\n .addOption(\n new Option(\n '--jwk-file [file]',\n 'Path to JSON Web Key (JWK) file containing private key.'\n )\n )\n .addOption(\n new Option(\n '--sub [subject]',\n 'Subject identifier, typically a UUID. Must resolve to a valid user in the realm.'\n )\n )\n .addOption(new Option('--iss [issuer]', 'Trusted issuer, typically a URL.'))\n .addOption(\n new Option('--scope [scope]', 'Space-delimited list of scopes.').default(\n 'openid fr:am:* fr:idm:*'\n )\n )\n .addOption(new Option('--json', 'Output in JSON format.'))\n .addHelpText(\n 'after',\n `Usage Examples:\\n` +\n ` If you used frodo to create the RFC7523 configuration (see 'Related Commands' below), then you can test your configuration with minimal input and frodo will locate the missing parameters. The command below returns access token and identity token:\\n` +\n ` $ frodo admin execute-rfc7523-authz-grant-flow --client-id rfc7523-client1 ${s.amBaseUrl}\\n`[\n 'brightCyan'\n ] +\n ` Same as above but output raw json:\\n` +\n ` $ frodo admin execute-rfc7523-authz-grant-flow --client-id rfc7523-client1 --json ${s.amBaseUrl}'\\n`[\n 'brightCyan'\n ] +\n ` Same as first command above but explicitly provide all parameters:\\n` +\n ` $ frodo admin execute-rfc7523-authz-grant-flow --client-id rfc7523-client1 --iss https://my-issuer.com/issuer --sub 146c2230-9448-4442-b86d-eb4a81a0121d --jwk-file rfc7523-client1_private.jwk.json ${s.amBaseUrl}'\\n`[\n 'brightCyan'\n ] +\n `\\nRelated Commands:\\n` +\n ` Run ${'frodo admin generate-rfc7523-authz-grant-artefacts --help'['brightCyan']} to see how to create the required configuration artefacts for ${'frodo admin execute-rfc7523-authz-grant-flow'['brightCyan']}:\\n`\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n printMessage(`Executing RFC7523 authorization grant flow...`);\n let clientId = uuidv4();\n if (options.clientId) {\n clientId = options.clientId;\n }\n let jwk: JwkRsa = undefined;\n if (options.jwkFile) {\n try {\n const data = fs.readFileSync(options.jwkFile);\n jwk = JSON.parse(data.toString());\n } catch (error) {\n printMessage(\n `Error parsing JWK from file ${options.jwkFile}: ${error.message}`,\n 'error'\n );\n }\n }\n const outcome = await executeRfc7523AuthZGrantFlow(\n clientId,\n options.iss,\n jwk,\n options.sub,\n options.scope.split(' '),\n options.json\n );\n if (!outcome) process.exitCode = 1;\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { frodo } from '@rockcarver/frodo-lib';
2
+ import { Option } from 'commander';
3
+ import { exportAdminFederationProvidersToFile, exportAdminFederationProvidersToFiles, exportAdminFederationProviderToFile } from '../../ops/AdminFederationOps';
4
+ import { printMessage, verboseMessage } from '../../utils/Console';
5
+ import { FrodoCommand } from '../FrodoCommand';
6
+ const {
7
+ getTokens
8
+ } = frodo.login;
9
+ const program = new FrodoCommand('frodo admin federation export', ['realm']);
10
+ program.description('Export admin federation providers.').addOption(new Option('-i, --idp-id <idp-id>', 'Id/name of a provider. If specified, -a and -A are ignored.')).addOption(new Option('-f, --file [file]', 'Name of the file to write the exported provider(s) to. Ignored with -A.')).addOption(new Option('-a, --all', 'Export all the providers to a single file. Ignored with -t and -i.')).addOption(new Option('-A, --all-separate', 'Export all the providers as separate files <provider name>.admin.federation.json. Ignored with -t, -i, and -a.')).addOption(new Option('-N, --no-metadata', 'Does not include metadata in the export file.')).action(
11
+ // implement command logic inside action handler
12
+ async (host, user, password, options, command) => {
13
+ command.handleDefaultArgsAndOpts(host, user, password, options, command);
14
+ if (await getTokens(true)) {
15
+ // export by id/name
16
+ if (options.idpId) {
17
+ verboseMessage(`Exporting provider "${options.idpId}...`);
18
+ const outcome = await exportAdminFederationProviderToFile(options.idpId, options.file, options.metadata);
19
+ if (!outcome) process.exitCode = 1;
20
+ }
21
+ // --all -a
22
+ else if (options.all) {
23
+ verboseMessage('Exporting all providers to a single file...');
24
+ const outcome = await exportAdminFederationProvidersToFile(options.file, options.metadata);
25
+ if (!outcome) process.exitCode = 1;
26
+ }
27
+ // --all-separate -A
28
+ else if (options.allSeparate) {
29
+ verboseMessage('Exporting all providers to separate files...');
30
+ const outcome = await exportAdminFederationProvidersToFiles(options.metadata);
31
+ if (!outcome) process.exitCode = 1;
32
+ }
33
+ // unrecognized combination of options or no options
34
+ else {
35
+ printMessage('Unrecognized combination of options or no options...', 'error');
36
+ program.help();
37
+ process.exitCode = 1;
38
+ }
39
+ }
40
+ }
41
+ // end command logic inside action handler
42
+ );
43
+ program.parse();
44
+ //# sourceMappingURL=admin-federation-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-federation-export.js","names":["frodo","Option","exportAdminFederationProvidersToFile","exportAdminFederationProvidersToFiles","exportAdminFederationProviderToFile","printMessage","verboseMessage","FrodoCommand","getTokens","login","program","description","addOption","action","host","user","password","options","command","handleDefaultArgsAndOpts","idpId","outcome","file","metadata","process","exitCode","all","allSeparate","help","parse"],"sources":["../../../src/cli/admin/admin-federation-export.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport {\n exportAdminFederationProvidersToFile,\n exportAdminFederationProvidersToFiles,\n exportAdminFederationProviderToFile,\n} from '../../ops/AdminFederationOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo admin federation export', ['realm']);\n\nprogram\n .description('Export admin federation providers.')\n .addOption(\n new Option(\n '-i, --idp-id <idp-id>',\n 'Id/name of a provider. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file [file]',\n 'Name of the file to write the exported provider(s) to. Ignored with -A.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Export all the providers to a single file. Ignored with -t and -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Export all the providers as separate files <provider name>.admin.federation.json. Ignored with -t, -i, and -a.'\n )\n )\n .addOption(\n new Option(\n '-N, --no-metadata',\n 'Does not include metadata in the export file.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(host, user, password, options, command);\n if (await getTokens(true)) {\n // export by id/name\n if (options.idpId) {\n verboseMessage(`Exporting provider \"${options.idpId}...`);\n const outcome = await exportAdminFederationProviderToFile(\n options.idpId,\n options.file,\n options.metadata\n );\n if (!outcome) process.exitCode = 1;\n }\n // --all -a\n else if (options.all) {\n verboseMessage('Exporting all providers to a single file...');\n const outcome = await exportAdminFederationProvidersToFile(\n options.file,\n options.metadata\n );\n if (!outcome) process.exitCode = 1;\n }\n // --all-separate -A\n else if (options.allSeparate) {\n verboseMessage('Exporting all providers to separate files...');\n const outcome = await exportAdminFederationProvidersToFiles(\n options.metadata\n );\n if (!outcome) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SACEC,oCAAoC,EACpCC,qCAAqC,EACrCC,mCAAmC,QAC9B,8BAA8B;AACrC,SAASC,YAAY,EAAEC,cAAc,QAAQ,qBAAqB;AAClE,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAM;EAAEC;AAAU,CAAC,GAAGR,KAAK,CAACS,KAAK;AAEjC,MAAMC,OAAO,GAAG,IAAIH,YAAY,CAAC,+BAA+B,EAAE,CAAC,OAAO,CAAC,CAAC;AAE5EG,OAAO,CACJC,WAAW,CAAC,oCAAoC,CAAC,CACjDC,SAAS,CACR,IAAIX,MAAM,CACR,uBAAuB,EACvB,6DACF,CACF,CAAC,CACAW,SAAS,CACR,IAAIX,MAAM,CACR,mBAAmB,EACnB,yEACF,CACF,CAAC,CACAW,SAAS,CACR,IAAIX,MAAM,CACR,WAAW,EACX,oEACF,CACF,CAAC,CACAW,SAAS,CACR,IAAIX,MAAM,CACR,oBAAoB,EACpB,gHACF,CACF,CAAC,CACAW,SAAS,CACR,IAAIX,MAAM,CACR,mBAAmB,EACnB,+CACF,CACF,CAAC,CACAY,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EAChDA,OAAO,CAACC,wBAAwB,CAACL,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,CAAC;EACxE,IAAI,MAAMV,SAAS,CAAC,IAAI,CAAC,EAAE;IACzB;IACA,IAAIS,OAAO,CAACG,KAAK,EAAE;MACjBd,cAAc,CAAE,uBAAsBW,OAAO,CAACG,KAAM,KAAI,CAAC;MACzD,MAAMC,OAAO,GAAG,MAAMjB,mCAAmC,CACvDa,OAAO,CAACG,KAAK,EACbH,OAAO,CAACK,IAAI,EACZL,OAAO,CAACM,QACV,CAAC;MACD,IAAI,CAACF,OAAO,EAAEG,OAAO,CAACC,QAAQ,GAAG,CAAC;IACpC;IACA;IAAA,KACK,IAAIR,OAAO,CAACS,GAAG,EAAE;MACpBpB,cAAc,CAAC,6CAA6C,CAAC;MAC7D,MAAMe,OAAO,GAAG,MAAMnB,oCAAoC,CACxDe,OAAO,CAACK,IAAI,EACZL,OAAO,CAACM,QACV,CAAC;MACD,IAAI,CAACF,OAAO,EAAEG,OAAO,CAACC,QAAQ,GAAG,CAAC;IACpC;IACA;IAAA,KACK,IAAIR,OAAO,CAACU,WAAW,EAAE;MAC5BrB,cAAc,CAAC,8CAA8C,CAAC;MAC9D,MAAMe,OAAO,GAAG,MAAMlB,qCAAqC,CACzDc,OAAO,CAACM,QACV,CAAC;MACD,IAAI,CAACF,OAAO,EAAEG,OAAO,CAACC,QAAQ,GAAG,CAAC;IACpC;IACA;IAAA,KACK;MACHpB,YAAY,CACV,sDAAsD,EACtD,OACF,CAAC;MACDK,OAAO,CAACkB,IAAI,CAAC,CAAC;MACdJ,OAAO,CAACC,QAAQ,GAAG,CAAC;IACtB;EACF;AACF;AACA;AACF,CAAC;AAEHf,OAAO,CAACmB,KAAK,CAAC,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { frodo } from '@rockcarver/frodo-lib';
2
+ import { Option } from 'commander';
3
+ import { importAdminFederationProviderFromFile, importAdminFederationProvidersFromFile, importAdminFederationProvidersFromFiles, importFirstAdminFederationProviderFromFile } from '../../ops/AdminFederationOps';
4
+ import { printMessage, verboseMessage } from '../../utils/Console';
5
+ import { FrodoCommand } from '../FrodoCommand';
6
+ const {
7
+ getTokens
8
+ } = frodo.login;
9
+ const program = new FrodoCommand('frodo admin federation import', ['realm']);
10
+ program.description('Import admin federation providers.').addOption(new Option('-i, --idp-id <id>', 'Provider id. If specified, -a and -A are ignored.')).addOption(new Option('-f, --file <file>', 'Name of the file to import the provider(s) from.')).addOption(new Option('-a, --all', 'Import all the providers from single file. Ignored with -t or -i.')).addOption(new Option('-A, --all-separate', 'Import all the providers from separate files (*.admin.federation.json) in the current directory. Ignored with -t or -i or -a.')).action(
11
+ // implement command logic inside action handler
12
+ async (host, user, password, options, command) => {
13
+ command.handleDefaultArgsAndOpts(host, user, password, options, command);
14
+ // import by id
15
+ if (options.file && options.idpId && (await getTokens(true))) {
16
+ verboseMessage(`Importing provider "${options.idpId}"...`);
17
+ const outcome = await importAdminFederationProviderFromFile(options.idpId, options.file);
18
+ if (!outcome) process.exitCode = 1;
19
+ }
20
+ // --all -a
21
+ else if (options.all && options.file && (await getTokens(true))) {
22
+ verboseMessage(`Importing all providers from a single file (${options.file})...`);
23
+ const outcome = await importAdminFederationProvidersFromFile(options.file);
24
+ if (!outcome) process.exitCode = 1;
25
+ }
26
+ // --all-separate -A
27
+ else if (options.allSeparate && !options.file && (await getTokens(true))) {
28
+ verboseMessage('Importing all providers from separate files in current directory...');
29
+ const outcome = await importAdminFederationProvidersFromFiles();
30
+ if (!outcome) process.exitCode = 1;
31
+ }
32
+ // import first provider from file
33
+ else if (options.file && (await getTokens(true))) {
34
+ verboseMessage(`Importing first provider from file "${options.file}"...`);
35
+ const outcome = await importFirstAdminFederationProviderFromFile(options.file);
36
+ if (!outcome) process.exitCode = 1;
37
+ }
38
+ // unrecognized combination of options or no options
39
+ else {
40
+ printMessage('Unrecognized combination of options or no options...');
41
+ program.help();
42
+ process.exitCode = 1;
43
+ }
44
+ }
45
+ // end command logic inside action handler
46
+ );
47
+ program.parse();
48
+ //# sourceMappingURL=admin-federation-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-federation-import.js","names":["frodo","Option","importAdminFederationProviderFromFile","importAdminFederationProvidersFromFile","importAdminFederationProvidersFromFiles","importFirstAdminFederationProviderFromFile","printMessage","verboseMessage","FrodoCommand","getTokens","login","program","description","addOption","action","host","user","password","options","command","handleDefaultArgsAndOpts","file","idpId","outcome","process","exitCode","all","allSeparate","help","parse"],"sources":["../../../src/cli/admin/admin-federation-import.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport {\n importAdminFederationProviderFromFile,\n importAdminFederationProvidersFromFile,\n importAdminFederationProvidersFromFiles,\n importFirstAdminFederationProviderFromFile,\n} from '../../ops/AdminFederationOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo admin federation import', ['realm']);\n\nprogram\n .description('Import admin federation providers.')\n .addOption(\n new Option(\n '-i, --idp-id <id>',\n 'Provider id. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file <file>',\n 'Name of the file to import the provider(s) from.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Import all the providers from single file. Ignored with -t or -i.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all the providers from separate files (*.admin.federation.json) in the current directory. Ignored with -t or -i or -a.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(host, user, password, options, command);\n // import by id\n if (options.file && options.idpId && (await getTokens(true))) {\n verboseMessage(`Importing provider \"${options.idpId}\"...`);\n const outcome = await importAdminFederationProviderFromFile(\n options.idpId,\n options.file\n );\n if (!outcome) process.exitCode = 1;\n }\n // --all -a\n else if (options.all && options.file && (await getTokens(true))) {\n verboseMessage(\n `Importing all providers from a single file (${options.file})...`\n );\n const outcome = await importAdminFederationProvidersFromFile(\n options.file\n );\n if (!outcome) process.exitCode = 1;\n }\n // --all-separate -A\n else if (\n options.allSeparate &&\n !options.file &&\n (await getTokens(true))\n ) {\n verboseMessage(\n 'Importing all providers from separate files in current directory...'\n );\n const outcome = await importAdminFederationProvidersFromFiles();\n if (!outcome) process.exitCode = 1;\n }\n // import first provider from file\n else if (options.file && (await getTokens(true))) {\n verboseMessage(\n `Importing first provider from file \"${options.file}\"...`\n );\n const outcome = await importFirstAdminFederationProviderFromFile(\n options.file\n );\n if (!outcome) process.exitCode = 1;\n }\n // unrecognized combination of options or no options\n else {\n printMessage('Unrecognized combination of options or no options...');\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SACEC,qCAAqC,EACrCC,sCAAsC,EACtCC,uCAAuC,EACvCC,0CAA0C,QACrC,8BAA8B;AACrC,SAASC,YAAY,EAAEC,cAAc,QAAQ,qBAAqB;AAClE,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAM;EAAEC;AAAU,CAAC,GAAGT,KAAK,CAACU,KAAK;AAEjC,MAAMC,OAAO,GAAG,IAAIH,YAAY,CAAC,+BAA+B,EAAE,CAAC,OAAO,CAAC,CAAC;AAE5EG,OAAO,CACJC,WAAW,CAAC,oCAAoC,CAAC,CACjDC,SAAS,CACR,IAAIZ,MAAM,CACR,mBAAmB,EACnB,mDACF,CACF,CAAC,CACAY,SAAS,CACR,IAAIZ,MAAM,CACR,mBAAmB,EACnB,kDACF,CACF,CAAC,CACAY,SAAS,CACR,IAAIZ,MAAM,CACR,WAAW,EACX,mEACF,CACF,CAAC,CACAY,SAAS,CACR,IAAIZ,MAAM,CACR,oBAAoB,EACpB,+HACF,CACF,CAAC,CACAa,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EAChDA,OAAO,CAACC,wBAAwB,CAACL,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,CAAC;EACxE;EACA,IAAID,OAAO,CAACG,IAAI,IAAIH,OAAO,CAACI,KAAK,KAAK,MAAMb,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;IAC5DF,cAAc,CAAE,uBAAsBW,OAAO,CAACI,KAAM,MAAK,CAAC;IAC1D,MAAMC,OAAO,GAAG,MAAMrB,qCAAqC,CACzDgB,OAAO,CAACI,KAAK,EACbJ,OAAO,CAACG,IACV,CAAC;IACD,IAAI,CAACE,OAAO,EAAEC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK,IAAIP,OAAO,CAACQ,GAAG,IAAIR,OAAO,CAACG,IAAI,KAAK,MAAMZ,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;IAC/DF,cAAc,CACX,+CAA8CW,OAAO,CAACG,IAAK,MAC9D,CAAC;IACD,MAAME,OAAO,GAAG,MAAMpB,sCAAsC,CAC1De,OAAO,CAACG,IACV,CAAC;IACD,IAAI,CAACE,OAAO,EAAEC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK,IACHP,OAAO,CAACS,WAAW,IACnB,CAACT,OAAO,CAACG,IAAI,KACZ,MAAMZ,SAAS,CAAC,IAAI,CAAC,CAAC,EACvB;IACAF,cAAc,CACZ,qEACF,CAAC;IACD,MAAMgB,OAAO,GAAG,MAAMnB,uCAAuC,CAAC,CAAC;IAC/D,IAAI,CAACmB,OAAO,EAAEC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK,IAAIP,OAAO,CAACG,IAAI,KAAK,MAAMZ,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;IAChDF,cAAc,CACX,uCAAsCW,OAAO,CAACG,IAAK,MACtD,CAAC;IACD,MAAME,OAAO,GAAG,MAAMlB,0CAA0C,CAC9Da,OAAO,CAACG,IACV,CAAC;IACD,IAAI,CAACE,OAAO,EAAEC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC;EACA;EAAA,KACK;IACHnB,YAAY,CAAC,sDAAsD,CAAC;IACpEK,OAAO,CAACiB,IAAI,CAAC,CAAC;IACdJ,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHd,OAAO,CAACkB,KAAK,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { frodo } from '@rockcarver/frodo-lib';
2
+ import { listAdminFederationProviders } from '../../ops/AdminFederationOps';
3
+ import { verboseMessage } from '../../utils/Console';
4
+ import { FrodoCommand } from '../FrodoCommand';
5
+ const {
6
+ getTokens
7
+ } = frodo.login;
8
+ const program = new FrodoCommand('frodo admin federation list', ['realm']);
9
+ program.description('List admin federation providers.')
10
+ // .addOption(
11
+ // new Option('-l, --long', 'Long with all fields.').default(false, 'false')
12
+ // )
13
+ .action(
14
+ // implement command logic inside action handler
15
+ async (host, user, password, options, command) => {
16
+ command.handleDefaultArgsAndOpts(host, user, password, options, command);
17
+ if (await getTokens(true)) {
18
+ verboseMessage(`Listing admin federation providers...`);
19
+ const outcome = await listAdminFederationProviders();
20
+ if (!outcome) process.exitCode = 1;
21
+ } else {
22
+ process.exitCode = 1;
23
+ }
24
+ }
25
+ // end command logic inside action handler
26
+ );
27
+ program.parse();
28
+ //# sourceMappingURL=admin-federation-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-federation-list.js","names":["frodo","listAdminFederationProviders","verboseMessage","FrodoCommand","getTokens","login","program","description","action","host","user","password","options","command","handleDefaultArgsAndOpts","outcome","process","exitCode","parse"],"sources":["../../../src/cli/admin/admin-federation-list.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\n\nimport { listAdminFederationProviders } from '../../ops/AdminFederationOps';\nimport { verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst { getTokens } = frodo.login;\n\nconst program = new FrodoCommand('frodo admin federation list', ['realm']);\n\nprogram\n .description('List admin federation providers.')\n // .addOption(\n // new Option('-l, --long', 'Long with all fields.').default(false, 'false')\n // )\n .action(\n // implement command logic inside action handler\n async (host, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(host, user, password, options, command);\n if (await getTokens(true)) {\n verboseMessage(`Listing admin federation providers...`);\n const outcome = await listAdminFederationProviders();\n if (!outcome) process.exitCode = 1;\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAE7C,SAASC,4BAA4B,QAAQ,8BAA8B;AAC3E,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAM;EAAEC;AAAU,CAAC,GAAGJ,KAAK,CAACK,KAAK;AAEjC,MAAMC,OAAO,GAAG,IAAIH,YAAY,CAAC,6BAA6B,EAAE,CAAC,OAAO,CAAC,CAAC;AAE1EG,OAAO,CACJC,WAAW,CAAC,kCAAkC;AAC/C;AACA;AACA;AAAA,CACCC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EAChDA,OAAO,CAACC,wBAAwB,CAACL,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,CAAC;EACxE,IAAI,MAAMT,SAAS,CAAC,IAAI,CAAC,EAAE;IACzBF,cAAc,CAAE,uCAAsC,CAAC;IACvD,MAAMa,OAAO,GAAG,MAAMd,4BAA4B,CAAC,CAAC;IACpD,IAAI,CAACc,OAAO,EAAEC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC,CAAC,MAAM;IACLD,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHX,OAAO,CAACY,KAAK,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { FrodoStubCommand } from '../FrodoCommand';
2
+ const program = new FrodoStubCommand('frodo admin federation');
3
+ program.description('Manages admin federation configuration.');
4
+
5
+ // program.command('delete', 'Delete admin federation provider.');
6
+
7
+ // program.command('describe', 'Describe admin federation provider.');
8
+
9
+ program.command('export', 'Export admin federation providers.');
10
+ program.command('import', 'Import admin federation providers.');
11
+ program.command('list', 'List admin federation providers.');
12
+ program.parse();
13
+ //# sourceMappingURL=admin-federation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-federation.js","names":["FrodoStubCommand","program","description","command","parse"],"sources":["../../../src/cli/admin/admin-federation.ts"],"sourcesContent":["import { FrodoStubCommand } from '../FrodoCommand';\n\nconst program = new FrodoStubCommand('frodo admin federation');\n\nprogram.description('Manages admin federation configuration.');\n\n// program.command('delete', 'Delete admin federation provider.');\n\n// program.command('describe', 'Describe admin federation provider.');\n\nprogram.command('export', 'Export admin federation providers.');\n\nprogram.command('import', 'Import admin federation providers.');\n\nprogram.command('list', 'List admin federation providers.');\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,iBAAiB;AAElD,MAAMC,OAAO,GAAG,IAAID,gBAAgB,CAAC,wBAAwB,CAAC;AAE9DC,OAAO,CAACC,WAAW,CAAC,yCAAyC,CAAC;;AAE9D;;AAEA;;AAEAD,OAAO,CAACE,OAAO,CAAC,QAAQ,EAAE,oCAAoC,CAAC;AAE/DF,OAAO,CAACE,OAAO,CAAC,QAAQ,EAAE,oCAAoC,CAAC;AAE/DF,OAAO,CAACE,OAAO,CAAC,MAAM,EAAE,kCAAkC,CAAC;AAE3DF,OAAO,CAACG,KAAK,CAAC,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { frodo, state } from '@rockcarver/frodo-lib';
2
+ import { Option } from 'commander';
3
+ import fs from 'fs';
4
+ import { v4 as uuidv4 } from 'uuid';
5
+ import * as s from '../../help/SampleData';
6
+ import { generateRfc7523AuthZGrantArtefacts } from '../../ops/AdminOps.js';
7
+ import { printMessage } from '../../utils/Console.js';
8
+ import { FrodoCommand } from '../FrodoCommand.js';
9
+ const {
10
+ getTokens
11
+ } = frodo.login;
12
+ const program = new FrodoCommand('frodo admin generate-rfc7523-authz-grant-artefacts');
13
+ program.description('Generate RFC7523 authorization grant artefacts.').addOption(new Option('--client-id [id]', 'Client id.')).addOption(new Option('--jwk-file [file]', 'Path to JSON Web Key (JWK) file containing private key.')).addOption(new Option('--sub [subject]', 'Subject identifier, typically a UUID. Must resolve to a valid user in the realm. Restricts the trusted issuer to only this subject by adding the identifier to the list of allowed subjects. Omitting this option allows the trusted issuer to request tokens for any realm user without restrictions.')).addOption(new Option('--iss [issuer]', 'Trusted issuer, typically a URL.')).addOption(new Option('--scope [scope]', 'Space-delimited list of scopes.').default('openid fr:am:* fr:idm:*')).addOption(new Option('--no-save', 'Do not save artefacts in AM and to file By default this command creates a fully configured oauth2 client and trusted issuer in AM and saves the generated JWK (private key) and JWKS (public key set) to files.')).addOption(new Option('--json', 'Output in JSON format.')).addHelpText('after', `Usage Examples:\n` + ` Generate, output to console, and save all the artefacts for an RFC7523 authorization grant flow configuration limited to one particular subject:\n` + ` - Fully configured OAuth2 client - named '<clientId>'\n` + ` - Fully configured OAuth2 trusted issuer - named '<clientId>-issuer'\n` + ` - Private Key as Json Web Key (JWK) - named '<clientId>_private.jwk.json'\n` + ` - Public Key as Json Web Key Set (JWKS) - named '<clientId>_public.jwks.json'\n` + ` $ frodo admin generate-rfc7523-authz-grant-artefacts --client-id rfc7523-client1 --iss https://my-issuer.com/issuer --sub 146c2230-9448-4442-b86d-eb4a81a0121d ${s.amBaseUrl}\n`['brightCyan'] + ` Same as above but use an existing JWK file instead of creating one.\n` + ` $ frodo admin generate-rfc7523-authz-grant-artefacts --client-id rfc7523-client1 --iss https://my-issuer.com/issuer --sub 146c2230-9448-4442-b86d-eb4a81a0121d --jwk-file rfc7523-client1_private.jwk.json ${s.amBaseUrl}\n`['brightCyan'] + ` Generate and output to console all the artefacts for an RFC7523 authorization grant flow configuration but do not create any configuration or files.\n` + ` $ frodo admin generate-rfc7523-authz-grant-artefacts --client-id rfc7523-client1 --iss https://my-issuer.com/issuer --sub 146c2230-9448-4442-b86d-eb4a81a0121d --no-save ${s.amBaseUrl}\n`['brightCyan'] + ` Generate and output in json format all the artefacts for an RFC7523 authorization grant flow configuration.\n` + ` $ frodo admin generate-rfc7523-authz-grant-artefacts --client-id rfc7523-client1 --iss https://my-issuer.com/issuer --sub 146c2230-9448-4442-b86d-eb4a81a0121d --json ${s.amBaseUrl}\n`['brightCyan'] + `\nRelated Commands:\n` + ` Run ${'frodo admin execute-rfc7523-authz-grant-flow --help'['brightCyan']} to see how to test your configuration created with ${'frodo admin generate-rfc7523-authz-grant-artefacts'['brightCyan']}:\n`).action(
14
+ // implement command logic inside action handler
15
+ async (host, realm, user, password, options, command) => {
16
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
17
+ if (await getTokens()) {
18
+ printMessage(`Generating RFC7523 authorization grant artefacts in realm "${state.getRealm()}"...`);
19
+ let clientId = uuidv4();
20
+ if (options.clientId) {
21
+ clientId = options.clientId;
22
+ }
23
+ let jwk = undefined;
24
+ if (options.jwkFile) {
25
+ try {
26
+ const data = fs.readFileSync(options.jwkFile);
27
+ jwk = JSON.parse(data.toString());
28
+ } catch (error) {
29
+ printMessage(`Error parsing JWK from file ${options.jwkFile}: ${error.message}`, 'error');
30
+ }
31
+ }
32
+ const outcome = await generateRfc7523AuthZGrantArtefacts(clientId, options.iss, jwk, options.sub, options.scope.split(' '), {
33
+ save: options.save
34
+ }, options.json);
35
+ if (!outcome) process.exitCode = 1;
36
+ } else {
37
+ process.exitCode = 1;
38
+ }
39
+ }
40
+ // end command logic inside action handler
41
+ );
42
+ program.parse();
43
+ //# sourceMappingURL=admin-generate-rfc7523-authz-grant-artefacts.js.map