@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
package/CHANGELOG.md CHANGED
@@ -7,6 +7,172 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.0.0-40] - 2023-12-22
11
+
12
+ ## [2.0.0-39] - 2023-12-19
13
+
14
+ ## [2.0.0-38] - 2023-12-16
15
+
16
+ ## [2.0.0-37] - 2023-12-06
17
+
18
+ ## [2.0.0-36] - 2023-12-01
19
+
20
+ ## [2.0.0-35] - 2023-11-30
21
+
22
+ ## [2.0.0-34] - 2023-11-29
23
+
24
+ ## [2.0.0-33] - 2023-11-26
25
+
26
+ ## [2.0.0-32] - 2023-11-21
27
+
28
+ ## [2.0.0-31] - 2023-11-17
29
+
30
+ ## [2.0.0-30] - 2023-11-04
31
+
32
+ ### Added
33
+
34
+ - \#283: Support for authentication settings:
35
+
36
+ - `frodo authn` Manage authentication setting.
37
+ - `describe` List authentication settings.
38
+ - `export` Export authentication settings.
39
+ - `import` Import authentication settings.
40
+
41
+ Examples:
42
+
43
+ - Describe authentication settings:<br>
44
+ `frodo authn describe <myTenant> <realm>`
45
+
46
+ `frodo authn describe --json <myTenant> <realm>`
47
+
48
+ `frodo authn describe <myTenant> <username> <password>`
49
+
50
+ - Describe authentication settings in machine-readable format (json):<br>
51
+ `frodo authn describe --json <myTenant> <realm>`
52
+
53
+ `frodo authn describe --json <myTenant> <realm> <username> <password>`
54
+
55
+ - Export authentication settings to file:<br>
56
+ `frodo authn export <myTenant> <realm>`
57
+
58
+ `frodo authn export <myTenant> <realm> <username> <password>`
59
+
60
+ - Import authentication settings from file:<br>
61
+ `frodo authn import -f alphaRealm.authentication.settings.json <myTenant> <realm>`
62
+
63
+ `frodo authn import -f alphaRealm.authentication.settings.json <myTenant> <realm> <username> <password>`<br>
64
+
65
+ - \#217: Support `--json` with `frodo esv variable describe`.
66
+
67
+ ## [2.0.0-29] - 2023-11-02
68
+
69
+ ### Added
70
+
71
+ - rockcarver/frodo-lib#53: Frodo Library now uses a file-based secure token cache to persist session and access tokens for re-use. The cached tokens are protected by the credential that was used to obtain them. Session tokens are encrypted using the hashed password as the master key, access tokens are encrypted using the hashed JWK private key as the master key. Therefore only users and processes with the correct credentials can access the tokens in the cache.
72
+
73
+ - The new default behavior is for Frodo CLI to use the new token cache for all applicable commands.
74
+ - A new global option `--no-cache` has been added to all commands to allow disabling the cache for indiviual invocations.
75
+ - A new environment variable `FRODO_NO_CACHE` is available to globally turn off token caching.
76
+ - A new environment variable `FRODO_TOKEN_CACHE_PATH` is available to instruct Frodo Library to use a non-default token cache file.
77
+
78
+ - rockcarver/frodo-lib#340: Frodo Library now autotomatically refreshes expired session and access tokens.
79
+
80
+ - The new default behavior is for Frodo CLI to automatically refresh tokens. This will only ever be noticeable during long-running operations like `frodo journey prune` or `frodo esv apply` that can take longer than 15 mins to complete.
81
+
82
+ ### Fixed
83
+
84
+ - \#316: Frodo Library now properly exports scripts referenced by the `Device Match` node if the `Use Custom Matching Script` option is selected.
85
+
86
+ ## [2.0.0-28] - 2023-10-25
87
+
88
+ ## [2.0.0-27] - 2023-10-22
89
+
90
+ ## [2.0.0-26] - 2023-10-19
91
+
92
+ ## [2.0.0-25] - 2023-10-19
93
+
94
+ ## [2.0.0-24] - 2023-10-15
95
+
96
+ ## [2.0.0-23] - 2023-10-14
97
+
98
+ ## [2.0.0-22] - 2023-10-12
99
+
100
+ ## [2.0.0-21] - 2023-10-11
101
+
102
+ ## [2.0.0-20] - 2023-10-11
103
+
104
+ ## [2.0.0-19] - 2023-10-02
105
+
106
+ ## [2.0.0-18] - 2023-10-02
107
+
108
+ ## [2.0.0-17] - 2023-09-29
109
+
110
+ ## [2.0.0-16] - 2023-09-08
111
+
112
+ ## [2.0.0-15] - 2023-08-17
113
+
114
+ ### Fixed
115
+
116
+ - \#276: `frodo script import -A --watch <tenant>` (preceeded by `frodo script export -A --extract <tenant>`) now properly reports errors like scripts not compiling or any REST errors but won't exit the watch thread but keep on watching and pushing local changes to `<tenant>`.
117
+
118
+ ## [2.0.0-14] - 2023-08-16
119
+
120
+ ### Changed
121
+
122
+ - Update to frodo-lib 2.0.0-21
123
+
124
+ ## [2.0.0-13] - 2023-07-31
125
+
126
+ ## [2.0.0-12] - 2023-07-18
127
+
128
+ ### Fixed
129
+
130
+ - rockcarver/frodo-lib#272: Added new `--variable-type` parameter to `frodo esv variable create` command.
131
+
132
+ ## [2.0.0-11] - 2023-07-17
133
+
134
+ ## [2.0.0-10] - 2023-07-05
135
+
136
+ ## [2.0.0-9] - 2023-07-05
137
+
138
+ ## [2.0.0-8] - 2023-07-05
139
+
140
+ ## [2.0.0-7] - 2023-06-23
141
+
142
+ ## [2.0.0-6] - 2023-06-22
143
+
144
+ ### Added
145
+
146
+ - \#251: Support for Identity Cloud admin federation configuration:
147
+
148
+ - `frodo admin federation` Manage admin federation configuration.
149
+ - `export` Export admin federation providers.
150
+ - `import` Import admin federation providers.
151
+ - `list` List admin federation providers.
152
+
153
+ Examples:
154
+
155
+ - List all configured admin federation providers:<br>
156
+ `frodo admin federation list <myTenant>`
157
+
158
+ `frodo admin federation list <myTenant> <username> <password>`
159
+ - Export all admin federation providers to a single file:<br>
160
+ `frodo admin federation export -a <myTenant>`
161
+
162
+ `frodo admin federation export -a <myTenant> <username> <password>`
163
+ - Import all admin federation providers from a single file:<br>
164
+ `frodo admin federation import -a -f allProviders.admin.federation.json <myTenant>`
165
+
166
+ `frodo admin federation import -a -f allProviders.admin.federation.json <myTenant> <username> <password>`<br>
167
+
168
+ **_Note_**: Only tenant admins can perform admin federation operations, service accounts do not have the required privileges. Therefore, the connection profile used must contain username and password or they must be provided through command arguments.
169
+
170
+ ### Changed
171
+
172
+ - Update to frodo-lib 2.0.0-8
173
+
174
+ ## [2.0.0-5] - 2023-06-21
175
+
10
176
  ## [2.0.0-4] - 2023-06-16
11
177
 
12
178
  ## [2.0.0-3] - 2023-06-15
@@ -15,6 +181,79 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
15
181
 
16
182
  ## [2.0.0-1] - 2023-06-15
17
183
 
184
+ ## [1.0.0] - 2023-06-30
185
+
186
+ ### Added
187
+
188
+ - MacOS binaries are now signed and notarized and run without security exceptions.
189
+ - \#251: Support for Identity Cloud admin federation configuration:
190
+
191
+ - `frodo admin federation` Manage admin federation configuration.
192
+ - `export` Export admin federation providers.
193
+ - `import` Import admin federation providers.
194
+ - `list` List admin federation providers.
195
+
196
+ Examples:
197
+
198
+ - List all configured admin federation providers:<br>
199
+ `frodo admin federation list <myTenant>`
200
+
201
+ `frodo admin federation list <myTenant> <username> <password>`
202
+ - Export all admin federation providers to a single file:<br>
203
+ `frodo admin federation export -a <myTenant>`
204
+
205
+ `frodo admin federation export -a <myTenant> <username> <password>`
206
+ - Import all admin federation providers from a single file:<br>
207
+ `frodo admin federation import -a -f allProviders.admin.federation.json <myTenant>`
208
+
209
+ `frodo admin federation import -a -f allProviders.admin.federation.json <myTenant> <username> <password>`<br>
210
+
211
+ **_Note_**: Only tenant admins can perform admin federation operations, service accounts do not have the required privileges. Therefore, the connection profile used must contain username and password or they must be provided through command arguments.
212
+
213
+ ### Changed
214
+
215
+ - Update to frodo-lib 1.1.0
216
+
217
+ ## [1.0.0-1] - 2023-06-30
218
+
219
+ ## [0.24.6-3] - 2023-06-30
220
+
221
+ ## [0.24.6-2] - 2023-06-22
222
+
223
+ ## [0.24.6-1] - 2023-06-22
224
+
225
+ ### Added
226
+
227
+ - \#251: Support for Identity Cloud admin federation configuration:
228
+
229
+ - `frodo admin federation` Manage admin federation configuration.
230
+ - `export` Export admin federation providers.
231
+ - `import` Import admin federation providers.
232
+ - `list` List admin federation providers.
233
+
234
+ Examples:
235
+
236
+ - List all configured admin federation providers:<br>
237
+ `frodo admin federation list <myTenant>`
238
+
239
+ `frodo admin federation list <myTenant> <username> <password>`
240
+ - Export all admin federation providers to a single file:<br>
241
+ `frodo admin federation export -a <myTenant>`
242
+
243
+ `frodo admin federation export -a <myTenant> <username> <password>`
244
+ - Import all admin federation providers from a single file:<br>
245
+ `frodo admin federation import -a -f allProviders.admin.federation.json <myTenant>`
246
+
247
+ `frodo admin federation import -a -f allProviders.admin.federation.json <myTenant> <username> <password>`<br>
248
+
249
+ **_Note_**: Only tenant admins can perform admin federation operations, service accounts do not have the required privileges. Therefore, the connection profile used must contain username and password or they must be provided through command arguments.
250
+
251
+ ### Changed
252
+
253
+ - Update to frodo-lib 1.0.1-0
254
+
255
+ ## [0.24.6-0] - 2023-06-21
256
+
18
257
  ## [0.24.5] - 2023-05-31
19
258
 
20
259
  ### Added
@@ -1208,15 +1447,83 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1208
1447
  - Fixed problem with adding connection profiles
1209
1448
  - Miscellaneous bug fixes
1210
1449
 
1211
- [Unreleased]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-4...HEAD
1450
+ [Unreleased]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-40...HEAD
1451
+
1452
+ [2.0.0-40]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-39...v2.0.0-40
1453
+
1454
+ [2.0.0-39]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-38...v2.0.0-39
1455
+
1456
+ [2.0.0-38]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-37...v2.0.0-38
1457
+
1458
+ [2.0.0-37]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-36...v2.0.0-37
1459
+
1460
+ [2.0.0-36]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-35...v2.0.0-36
1461
+
1462
+ [2.0.0-35]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-34...v2.0.0-35
1463
+
1464
+ [2.0.0-34]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-33...v2.0.0-34
1465
+
1466
+ [2.0.0-33]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-32...v2.0.0-33
1467
+
1468
+ [2.0.0-32]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-31...v2.0.0-32
1469
+
1470
+ [2.0.0-31]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-30...v2.0.0-31
1471
+
1472
+ [2.0.0-30]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-29...v2.0.0-30
1473
+
1474
+ [2.0.0-29]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-28...v2.0.0-29
1475
+
1476
+ [2.0.0-28]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-27...v2.0.0-28
1477
+
1478
+ [2.0.0-27]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-26...v2.0.0-27
1479
+
1480
+ [2.0.0-26]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-25...v2.0.0-26
1481
+
1482
+ [2.0.0-25]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-24...v2.0.0-25
1483
+
1484
+ [2.0.0-24]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-23...v2.0.0-24
1485
+
1486
+ [2.0.0-23]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-22...v2.0.0-23
1487
+
1488
+ [2.0.0-22]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-21...v2.0.0-22
1489
+
1490
+ [2.0.0-21]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-20...v2.0.0-21
1491
+
1492
+ [2.0.0-20]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-19...v2.0.0-20
1493
+
1494
+ [2.0.0-19]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-18...v2.0.0-19
1495
+
1496
+ [2.0.0-18]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-17...v2.0.0-18
1497
+
1498
+ [2.0.0-17]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-16...v2.0.0-17
1499
+
1500
+ [2.0.0-16]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-15...v2.0.0-16
1501
+
1502
+ [2.0.0-15]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-14...v2.0.0-15
1503
+
1504
+ [2.0.0-14]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-13...v2.0.0-14
1505
+
1506
+ [2.0.0-13]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-12...v2.0.0-13
1507
+
1508
+ [2.0.0-12]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-11...v2.0.0-12
1509
+
1510
+ [2.0.0-11]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-10...v2.0.0-11
1511
+
1512
+ [2.0.0-10]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-9...v2.0.0-10
1513
+
1514
+ [2.0.0-9]: https://github.com/rockcarver/frodo-cli/compare/v1.0.0...v2.0.0-9
1515
+
1516
+ [1.0.0]: https://github.com/rockcarver/frodo-cli/compare/v1.0.0-1...v1.0.0
1517
+
1518
+ [1.0.0-1]: https://github.com/rockcarver/frodo-cli/compare/v0.24.6-3...v1.0.0-1
1212
1519
 
1213
- [2.0.0-4]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-3...v2.0.0-4
1520
+ [0.24.6-3]: https://github.com/rockcarver/frodo-cli/compare/v0.24.6-2...v0.24.6-3
1214
1521
 
1215
- [2.0.0-3]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-2...v2.0.0-3
1522
+ [0.24.6-2]: https://github.com/rockcarver/frodo-cli/compare/v0.24.6-1...v0.24.6-2
1216
1523
 
1217
- [2.0.0-2]: https://github.com/rockcarver/frodo-cli/compare/v2.0.0-1...v2.0.0-2
1524
+ [0.24.6-1]: https://github.com/rockcarver/frodo-cli/compare/v0.24.6-0...v0.24.6-1
1218
1525
 
1219
- [2.0.0-1]: https://github.com/rockcarver/frodo-cli/compare/v0.24.5...v2.0.0-1
1526
+ [0.24.6-0]: https://github.com/rockcarver/frodo-cli/compare/v0.24.5...v0.24.6-0
1220
1527
 
1221
1528
  [0.24.5]: https://github.com/rockcarver/frodo-cli/compare/v0.24.4...v0.24.5
1222
1529
 
package/esm/app.js CHANGED
@@ -4,8 +4,10 @@ import { Command } from 'commander';
4
4
  // commands
5
5
  import admin from './cli/admin/admin';
6
6
  import agent from './cli/agent/agent';
7
- import authz from './cli/authz/authz';
8
7
  import app from './cli/app/app';
8
+ import authn from './cli/authn/authn';
9
+ import authz from './cli/authz/authz';
10
+ import config from './cli/config/config';
9
11
  import conn from './cli/conn/conn';
10
12
  import email from './cli/email/email';
11
13
  import esv from './cli/esv/esv';
@@ -13,25 +15,36 @@ import idm from './cli/idm/idm';
13
15
  import idp from './cli/idp/idp';
14
16
  import info from './cli/info/info';
15
17
  import journey from './cli/journey/journey';
16
- import logging from './cli/logging/logs';
18
+ import log from './cli/log/log';
19
+ import oauth from './cli/oauth/oauth';
17
20
  import realm from './cli/realm/realm';
18
21
  import saml from './cli/saml/saml';
19
22
  import script from './cli/script/script';
20
23
  import service from './cli/service/service';
24
+ import shell from './cli/shell/shell';
21
25
  // enable sample command template.
22
26
  // import something from './cli/_template/something';
23
27
  import theme from './cli/theme/theme';
24
28
  import { printMessage } from './utils/Console';
25
29
  import { getVersions } from './utils/Version';
30
+ const {
31
+ initConnectionProfiles
32
+ } = frodo.conn;
33
+ const {
34
+ initTokenCache
35
+ } = frodo.cache;
26
36
  (async () => {
27
37
  try {
28
38
  const program = new Command('frodo').version(await getVersions(false), '-v, --version');
29
39
  printMessage(await getVersions(true), 'text', false);
30
- await frodo.conn.initConnectionProfiles();
40
+ await initConnectionProfiles();
41
+ await initTokenCache();
31
42
  program.addCommand(admin());
32
43
  program.addCommand(agent());
44
+ program.addCommand(authn());
33
45
  program.addCommand(authz());
34
46
  program.addCommand(app());
47
+ program.addCommand(config());
35
48
  program.addCommand(conn());
36
49
  program.addCommand(email());
37
50
  program.addCommand(esv());
@@ -39,11 +52,13 @@ import { getVersions } from './utils/Version';
39
52
  program.addCommand(idp());
40
53
  program.addCommand(info());
41
54
  program.addCommand(journey());
42
- program.addCommand(logging());
55
+ program.addCommand(log());
56
+ program.addCommand(oauth());
43
57
  program.addCommand(realm());
44
58
  program.addCommand(saml());
45
59
  program.addCommand(script());
46
60
  program.addCommand(service());
61
+ program.addCommand(shell());
47
62
  program.addCommand(theme());
48
63
  // enable sample command template.
49
64
  // program.addCommand(something());
@@ -52,7 +67,9 @@ import { getVersions } from './utils/Version';
52
67
  program.enablePositionalOptions();
53
68
  program.parse();
54
69
  } catch (e) {
70
+ process.exitCode = 1;
55
71
  printMessage(`ERROR: exception running frodo - ${e}`, 'error');
72
+ printMessage(e.stack, 'error');
56
73
  }
57
74
  })();
58
- //# sourceMappingURL=app.js.map
75
+ //# sourceMappingURL=app.js.map
package/esm/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","names":["frodo","Command","admin","agent","authz","app","conn","email","esv","idm","idp","info","journey","logging","realm","saml","script","service","theme","printMessage","getVersions","program","version","initConnectionProfiles","addCommand","showHelpAfterError","enablePositionalOptions","parse","e"],"sources":["app.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Command } from 'commander';\n\n// commands\nimport admin from './cli/admin/admin';\nimport agent from './cli/agent/agent';\nimport authz from './cli/authz/authz';\nimport app from './cli/app/app';\nimport conn from './cli/conn/conn';\nimport email from './cli/email/email';\nimport esv from './cli/esv/esv';\nimport idm from './cli/idm/idm';\nimport idp from './cli/idp/idp';\nimport info from './cli/info/info';\nimport journey from './cli/journey/journey';\nimport logging from './cli/logging/logs';\nimport realm from './cli/realm/realm';\nimport saml from './cli/saml/saml';\nimport script from './cli/script/script';\nimport service from './cli/service/service';\n// enable sample command template.\n// import something from './cli/_template/something';\nimport theme from './cli/theme/theme';\nimport { printMessage } from './utils/Console';\nimport { getVersions } from './utils/Version';\n\n(async () => {\n try {\n const program = new Command('frodo').version(\n await getVersions(false),\n '-v, --version'\n );\n\n printMessage(await getVersions(true), 'text', false);\n\n await frodo.conn.initConnectionProfiles();\n\n program.addCommand(admin());\n program.addCommand(agent());\n program.addCommand(authz());\n program.addCommand(app());\n program.addCommand(conn());\n program.addCommand(email());\n program.addCommand(esv());\n program.addCommand(idm());\n program.addCommand(idp());\n program.addCommand(info());\n program.addCommand(journey());\n program.addCommand(logging());\n program.addCommand(realm());\n program.addCommand(saml());\n program.addCommand(script());\n program.addCommand(service());\n program.addCommand(theme());\n // enable sample command template.\n // program.addCommand(something());\n\n program.showHelpAfterError();\n program.enablePositionalOptions();\n program.parse();\n } catch (e) {\n printMessage(`ERROR: exception running frodo - ${e}`, 'error');\n }\n})();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,OAAO,QAAQ,WAAW;;AAEnC;AACA,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,GAAG,MAAM,eAAe;AAC/B,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,OAAO,MAAM,uBAAuB;AAC3C,OAAOC,OAAO,MAAM,oBAAoB;AACxC,OAAOC,KAAK,MAAM,mBAAmB;AACrC,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,MAAM,MAAM,qBAAqB;AACxC,OAAOC,OAAO,MAAM,uBAAuB;AAC3C;AACA;AACA,OAAOC,KAAK,MAAM,mBAAmB;AACrC,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,WAAW,QAAQ,iBAAiB;AAE7C,CAAC,YAAY;EACX,IAAI;IACF,MAAMC,OAAO,GAAG,IAAIpB,OAAO,CAAC,OAAO,CAAC,CAACqB,OAAO,CAC1C,MAAMF,WAAW,CAAC,KAAK,CAAC,EACxB,eACF,CAAC;IAEDD,YAAY,CAAC,MAAMC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;IAEpD,MAAMpB,KAAK,CAACM,IAAI,CAACiB,sBAAsB,CAAC,CAAC;IAEzCF,OAAO,CAACG,UAAU,CAACtB,KAAK,CAAC,CAAC,CAAC;IAC3BmB,OAAO,CAACG,UAAU,CAACrB,KAAK,CAAC,CAAC,CAAC;IAC3BkB,OAAO,CAACG,UAAU,CAACpB,KAAK,CAAC,CAAC,CAAC;IAC3BiB,OAAO,CAACG,UAAU,CAACnB,GAAG,CAAC,CAAC,CAAC;IACzBgB,OAAO,CAACG,UAAU,CAAClB,IAAI,CAAC,CAAC,CAAC;IAC1Be,OAAO,CAACG,UAAU,CAACjB,KAAK,CAAC,CAAC,CAAC;IAC3Bc,OAAO,CAACG,UAAU,CAAChB,GAAG,CAAC,CAAC,CAAC;IACzBa,OAAO,CAACG,UAAU,CAACf,GAAG,CAAC,CAAC,CAAC;IACzBY,OAAO,CAACG,UAAU,CAACd,GAAG,CAAC,CAAC,CAAC;IACzBW,OAAO,CAACG,UAAU,CAACb,IAAI,CAAC,CAAC,CAAC;IAC1BU,OAAO,CAACG,UAAU,CAACZ,OAAO,CAAC,CAAC,CAAC;IAC7BS,OAAO,CAACG,UAAU,CAACX,OAAO,CAAC,CAAC,CAAC;IAC7BQ,OAAO,CAACG,UAAU,CAACV,KAAK,CAAC,CAAC,CAAC;IAC3BO,OAAO,CAACG,UAAU,CAACT,IAAI,CAAC,CAAC,CAAC;IAC1BM,OAAO,CAACG,UAAU,CAACR,MAAM,CAAC,CAAC,CAAC;IAC5BK,OAAO,CAACG,UAAU,CAACP,OAAO,CAAC,CAAC,CAAC;IAC7BI,OAAO,CAACG,UAAU,CAACN,KAAK,CAAC,CAAC,CAAC;IAC3B;IACA;;IAEAG,OAAO,CAACI,kBAAkB,CAAC,CAAC;IAC5BJ,OAAO,CAACK,uBAAuB,CAAC,CAAC;IACjCL,OAAO,CAACM,KAAK,CAAC,CAAC;EACjB,CAAC,CAAC,OAAOC,CAAC,EAAE;IACVT,YAAY,CAAE,oCAAmCS,CAAE,EAAC,EAAE,OAAO,CAAC;EAChE;AACF,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"app.js","names":["frodo","Command","admin","agent","app","authn","authz","config","conn","email","esv","idm","idp","info","journey","log","oauth","realm","saml","script","service","shell","theme","printMessage","getVersions","initConnectionProfiles","initTokenCache","cache","program","version","addCommand","showHelpAfterError","enablePositionalOptions","parse","e","process","exitCode","stack"],"sources":["../src/app.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport { Command } from 'commander';\n\n// commands\nimport admin from './cli/admin/admin';\nimport agent from './cli/agent/agent';\nimport app from './cli/app/app';\nimport authn from './cli/authn/authn';\nimport authz from './cli/authz/authz';\nimport config from './cli/config/config';\nimport conn from './cli/conn/conn';\nimport email from './cli/email/email';\nimport esv from './cli/esv/esv';\nimport idm from './cli/idm/idm';\nimport idp from './cli/idp/idp';\nimport info from './cli/info/info';\nimport journey from './cli/journey/journey';\nimport log from './cli/log/log';\nimport oauth from './cli/oauth/oauth';\nimport realm from './cli/realm/realm';\nimport saml from './cli/saml/saml';\nimport script from './cli/script/script';\nimport service from './cli/service/service';\nimport shell from './cli/shell/shell';\n// enable sample command template.\n// import something from './cli/_template/something';\nimport theme from './cli/theme/theme';\nimport { printMessage } from './utils/Console';\nimport { getVersions } from './utils/Version';\n\nconst { initConnectionProfiles } = frodo.conn;\nconst { initTokenCache } = frodo.cache;\n\n(async () => {\n try {\n const program = new Command('frodo').version(\n await getVersions(false),\n '-v, --version'\n );\n\n printMessage(await getVersions(true), 'text', false);\n\n await initConnectionProfiles();\n await initTokenCache();\n\n program.addCommand(admin());\n program.addCommand(agent());\n program.addCommand(authn());\n program.addCommand(authz());\n program.addCommand(app());\n program.addCommand(config());\n program.addCommand(conn());\n program.addCommand(email());\n program.addCommand(esv());\n program.addCommand(idm());\n program.addCommand(idp());\n program.addCommand(info());\n program.addCommand(journey());\n program.addCommand(log());\n program.addCommand(oauth());\n program.addCommand(realm());\n program.addCommand(saml());\n program.addCommand(script());\n program.addCommand(service());\n program.addCommand(shell());\n program.addCommand(theme());\n // enable sample command template.\n // program.addCommand(something());\n\n program.showHelpAfterError();\n program.enablePositionalOptions();\n program.parse();\n } catch (e) {\n process.exitCode = 1;\n printMessage(`ERROR: exception running frodo - ${e}`, 'error');\n printMessage(e.stack, 'error');\n }\n})();\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
+ import { frodo, state } from '@rockcarver/frodo-lib';
1
2
  import { Argument, Command, Option } from 'commander';
2
- import * as globalConfig from '../storage/StaticStorage';
3
- import { state } from '@rockcarver/frodo-lib';
4
3
  import fs from 'fs';
5
- import { printMessage, createProgressIndicator, updateProgressIndicator, stopProgressIndicator, verboseMessage, debugMessage, curlirizeMessage } from '../utils/Console.js';
4
+ import * as globalConfig from '../storage/StaticStorage';
5
+ import { cleanupProgressIndicators, createProgressIndicator, curlirizeMessage, debugMessage, printMessage, stopProgressIndicator, updateProgressIndicator, verboseMessage } from '../utils/Console.js';
6
6
  const hostArgument = new Argument('[host]', 'Access Management base URL, e.g.: https://cdk.iam.example.com/am. To use a connection profile, just specify a unique substring.');
7
7
  const realmArgument = new Argument('[realm]', "Realm. Specify realm as '/' for the root realm or 'realm' or '/parent/child' otherwise.").default(
8
8
  // must check for FRODO_REALM env variable here because otherwise cli will overwrite realm with default value
@@ -18,12 +18,15 @@ forgeops: A ForgeOps CDK or CDM deployment. \n\
18
18
  The detected or provided deployment type controls certain behavior like obtaining an Identity \
19
19
  Management admin token or not and whether to export/import referenced email templates or how \
20
20
  to walk through the tenant admin login flow of Identity Cloud and handle MFA').choices(globalConfig.DEPLOYMENT_TYPES);
21
+ const directoryOption = new Option('-D, --directory <directory>', 'Set the working directory.').default(undefined, 'undefined');
21
22
  const insecureOption = new Option('-k, --insecure', 'Allow insecure connections when using SSL/TLS. Has no effect when using a network proxy for https (HTTPS_PROXY=http://<host>:<port>), in that case the proxy must provide this capability.').default(false, "Don't allow insecure connections");
22
23
  const verboseOption = new Option('--verbose', 'Verbose output during command execution. If specified, may or may not produce additional output.');
23
24
  const debugOption = new Option('--debug', 'Debug output during command execution. If specified, may or may not produce additional output helpful for troubleshooting.');
24
25
  const curlirizeOption = new Option('--curlirize', 'Output all network calls in curl format.');
26
+ const noCacheOption = new Option('--no-cache', 'Disable token cache for this operation.');
27
+ const flushCacheOption = new Option('--flush-cache', 'Flush token cache.');
25
28
  const defaultArgs = [hostArgument, realmArgument, usernameArgument, passwordArgument];
26
- const defaultOpts = [serviceAccountIdOption, serviceAccountJwkFileOption, deploymentOption, insecureOption, verboseOption, debugOption, curlirizeOption];
29
+ const defaultOpts = [serviceAccountIdOption, serviceAccountJwkFileOption, deploymentOption, directoryOption, insecureOption, verboseOption, debugOption, curlirizeOption, noCacheOption, flushCacheOption];
27
30
  const stateMap = {
28
31
  [hostArgument.name()]: host => state.setHost(host),
29
32
  [realmArgument.name()]: realm => state.setRealm(realm),
@@ -40,10 +43,15 @@ const stateMap = {
40
43
  }
41
44
  },
42
45
  [deploymentOption.attributeName()]: type => state.setDeploymentType(type),
46
+ [directoryOption.attributeName()]: directory => state.setDirectory(directory),
43
47
  [insecureOption.attributeName()]: insecure => state.setAllowInsecureConnection(insecure),
44
48
  [verboseOption.attributeName()]: verbose => state.setVerbose(verbose),
45
49
  [debugOption.attributeName()]: debug => state.setDebug(debug),
46
- [curlirizeOption.attributeName()]: curlirize => state.setCurlirize(curlirize)
50
+ [curlirizeOption.attributeName()]: curlirize => state.setCurlirize(curlirize),
51
+ [noCacheOption.attributeName()]: cache => state.setUseTokenCache(cache),
52
+ [flushCacheOption.attributeName()]: flush => {
53
+ if (flush) frodo.cache.flush();
54
+ }
47
55
  };
48
56
 
49
57
  /**
@@ -57,6 +65,17 @@ export class FrodoStubCommand extends Command {
57
65
  */
58
66
  constructor(name) {
59
67
  super(name);
68
+ if (!process.listenerCount('unhandledRejection')) {
69
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
+ process.on('unhandledRejection', error => {
71
+ var _error$config, _error$config2, _error$response;
72
+ printMessage(`${(_error$config = error.config) !== null && _error$config !== void 0 && _error$config.method ? error.config.method + ' ' : ''}${(_error$config2 = error.config) !== null && _error$config2 !== void 0 && _error$config2.url ? error.config.url : ''}`, 'error');
73
+ printMessage((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data, 'error');
74
+ printMessage(error.stack, 'error');
75
+ printMessage(`Please report this unhandled error here: https://github.com/rockcarver/frodo-cli/issues`, 'error');
76
+ process.exitCode = 1;
77
+ });
78
+ }
60
79
 
61
80
  // other default settings
62
81
  this.helpOption('-h, --help', 'Help');
@@ -74,6 +93,13 @@ export class FrodoStubCommand extends Command {
74
93
  state.setCreateProgressHandler(createProgressIndicator);
75
94
  state.setUpdateProgressHandler(updateProgressIndicator);
76
95
  state.setStopProgressHandler(stopProgressIndicator);
96
+
97
+ // shutdown handlers
98
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
99
+ this.hook('postAction', (thisCommand, actionCommand) => {
100
+ debugMessage(`postAction: this command: ${thisCommand.name()}, action command: ${actionCommand.name()}`);
101
+ cleanupProgressIndicators();
102
+ });
77
103
  }
78
104
  }
79
105
 
@@ -100,7 +126,7 @@ export class FrodoCommand extends FrodoStubCommand {
100
126
  }
101
127
 
102
128
  // additional help
103
- this.addHelpText('after', `\nEvironment Variables:\n` + ` FRODO_HOST: Access Management base URL. Overrides 'host' argument.\n` + ` FRODO_REALM: Realm. Overrides 'realm' argument.\n` + ` FRODO_USERNAME: Username. Overrides 'username' argument.\n` + ` FRODO_PASSWORD: Password. Overrides 'password' argument.\n` + ` FRODO_SA_ID: Service account uuid. Overrides '--sa-id' option.\n` + ` FRODO_SA_JWK: Service account JWK. Overrides '--sa-jwk-file' option but takes the actual JWK as a value, not a file name.\n` + ('frodo conn save' === this.name() ? ` FRODO_LOG_KEY: Log API key. Overrides '--log-api-key' option.\n` + ` FRODO_LOG_SECRET: Log API secret. Overrides '--log-api-secret' option.\n` : ``) + (this.name().startsWith('frodo logs') ? ` FRODO_LOG_KEY: Log API key. Overrides 'username' argument.\n` + ` FRODO_LOG_SECRET: Log API secret. Overrides 'password' argument.\n` : ``) + ` FRODO_AUTHENTICATION_SERVICE: Name of a login journey to use.\n` + ` FRODO_DEBUG: Set to any value to enable debug output. Same as '--debug'.\n`);
129
+ this.addHelpText('after', `\nEvironment Variables:\n` + ` FRODO_HOST: Access Management base URL. Overrides 'host' argument.\n` + ` FRODO_REALM: Realm. Overrides 'realm' argument.\n` + ` FRODO_USERNAME: Username. Overrides 'username' argument.\n` + ` FRODO_PASSWORD: Password. Overrides 'password' argument.\n` + ` FRODO_SA_ID: Service account uuid. Overrides '--sa-id' option.\n` + ` FRODO_SA_JWK: Service account JWK. Overrides '--sa-jwk-file' option but takes the actual JWK as a value, not a file name.\n` + ` FRODO_NO_CACHE: Disable token cache. Same as '--no-cache' option.\n` + ` FRODO_TOKEN_CACHE_PATH: Use this token cache file instead of '~/.frodo/TokenCache.json'.\n` + ('frodo conn save' === this.name() ? ` FRODO_LOG_KEY: Log API key. Overrides '--log-api-key' option.\n` + ` FRODO_LOG_SECRET: Log API secret. Overrides '--log-api-secret' option.\n` : ``) + (this.name().startsWith('frodo log') ? ` FRODO_LOG_KEY: Log API key. Overrides 'username' argument.\n` + ` FRODO_LOG_SECRET: Log API secret. Overrides 'password' argument.\n` : ``) + ` FRODO_CONNECTION_PROFILES_PATH: Use this connection profiles file instead of '~/.frodo/Connections.json'.\n` + ` FRODO_AUTHENTICATION_SERVICE: Name of a login journey to use.\n` + ` FRODO_DEBUG: Set to any value to enable debug output. Same as '--debug'.\n` + ` FRODO_MASTER_KEY_PATH: Use this master key file instead of '~/.frodo/masterkey.key' file.\n` + ` FRODO_MASTER_KEY: Use this master key instead of what's in '~/.frodo/masterkey.key'. Takes precedence over FRODO_MASTER_KEY_PATH.\n`);
104
130
  }
105
131
 
106
132
  /**
@@ -144,4 +170,4 @@ export class FrodoCommand extends FrodoStubCommand {
144
170
  }
145
171
  }
146
172
  }
147
- //# sourceMappingURL=FrodoCommand.js.map
173
+ //# sourceMappingURL=FrodoCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FrodoCommand.js","names":["Argument","Command","Option","globalConfig","state","fs","printMessage","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","verboseMessage","debugMessage","curlirizeMessage","hostArgument","realmArgument","default","process","env","FRODO_REALM","DEFAULT_REALM_KEY","usernameArgument","passwordArgument","serviceAccountIdOption","serviceAccountJwkFileOption","deploymentOption","choices","DEPLOYMENT_TYPES","insecureOption","verboseOption","debugOption","curlirizeOption","defaultArgs","defaultOpts","stateMap","name","host","setHost","realm","setRealm","username","setUsername","password","setPassword","attributeName","saId","setServiceAccountId","file","data","readFileSync","jwk","JSON","parse","toString","setServiceAccountJwk","error","message","type","setDeploymentType","insecure","setAllowInsecureConnection","verbose","setVerbose","debug","setDebug","curlirize","setCurlirize","FrodoStubCommand","constructor","helpOption","showHelpAfterError","configureHelp","sortSubcommands","sortOptions","setPrintHandler","setVerboseHandler","setDebugHandler","setCurlirizeHandler","setCreateProgressHandler","setUpdateProgressHandler","setStopProgressHandler","FrodoCommand","omits","arg","includes","addArgument","opt","addOption","addHelpText","startsWith","handleDefaultArgsAndOpts","args","command","pop","options","i","v","entries","_args","length","Object","keys","handler","k"],"sources":["cli/FrodoCommand.ts"],"sourcesContent":["import { Argument, Command, Option } from 'commander';\nimport * as globalConfig from '../storage/StaticStorage';\nimport { state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport {\n printMessage,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n verboseMessage,\n debugMessage,\n curlirizeMessage,\n} from '../utils/Console.js';\n\nconst hostArgument = new Argument(\n '[host]',\n 'Access Management base URL, e.g.: https://cdk.iam.example.com/am. To use a connection profile, just specify a unique substring.'\n);\n\nconst realmArgument = new Argument(\n '[realm]',\n \"Realm. Specify realm as '/' for the root realm or 'realm' or '/parent/child' otherwise.\"\n).default(\n // must check for FRODO_REALM env variable here because otherwise cli will overwrite realm with default value\n process.env.FRODO_REALM || globalConfig.DEFAULT_REALM_KEY,\n '\"alpha\" for Identity Cloud tenants, \"/\" otherwise.'\n);\n\nconst usernameArgument = new Argument(\n '[username]',\n 'Username to login with. Must be an admin user with appropriate rights to manage authentication journeys/trees.'\n);\n\nconst passwordArgument = new Argument('[password]', 'Password.');\n\nconst serviceAccountIdOption = new Option(\n '--sa-id <sa-id>',\n 'Service account id.'\n);\n\nconst serviceAccountJwkFileOption = new Option(\n '--sa-jwk-file <file>',\n 'File containing the JSON Web Key (JWK) associated with the the service account.'\n);\n\nconst deploymentOption = new Option(\n '-m, --type <type>',\n 'Override auto-detected deployment type. Valid values for type: \\n\\\nclassic: A classic Access Management-only deployment with custom layout and configuration. \\n\\\ncloud: A ForgeRock Identity Cloud environment. \\n\\\nforgeops: A ForgeOps CDK or CDM deployment. \\n\\\nThe detected or provided deployment type controls certain behavior like obtaining an Identity \\\nManagement admin token or not and whether to export/import referenced email templates or how \\\nto walk through the tenant admin login flow of Identity Cloud and handle MFA'\n).choices(globalConfig.DEPLOYMENT_TYPES);\n\nconst insecureOption = new Option(\n '-k, --insecure',\n 'Allow insecure connections when using SSL/TLS. Has no effect when using a network proxy for https (HTTPS_PROXY=http://<host>:<port>), in that case the proxy must provide this capability.'\n).default(false, \"Don't allow insecure connections\");\n\nconst verboseOption = new Option(\n '--verbose',\n 'Verbose output during command execution. If specified, may or may not produce additional output.'\n);\n\nconst debugOption = new Option(\n '--debug',\n 'Debug output during command execution. If specified, may or may not produce additional output helpful for troubleshooting.'\n);\n\nconst curlirizeOption = new Option(\n '--curlirize',\n 'Output all network calls in curl format.'\n);\n\nconst defaultArgs = [\n hostArgument,\n realmArgument,\n usernameArgument,\n passwordArgument,\n];\n\nconst defaultOpts = [\n serviceAccountIdOption,\n serviceAccountJwkFileOption,\n deploymentOption,\n insecureOption,\n verboseOption,\n debugOption,\n curlirizeOption,\n];\n\nconst stateMap = {\n [hostArgument.name()]: (host: string) => state.setHost(host),\n [realmArgument.name()]: (realm: string) => state.setRealm(realm),\n [usernameArgument.name()]: (username: string) => state.setUsername(username),\n [passwordArgument.name()]: (password: string) => state.setPassword(password),\n [serviceAccountIdOption.attributeName()]: (saId: string) =>\n state.setServiceAccountId(saId),\n [serviceAccountJwkFileOption.attributeName()]: (file: string) => {\n try {\n const data = fs.readFileSync(file);\n const jwk = JSON.parse(data.toString());\n state.setServiceAccountJwk(jwk);\n } catch (error) {\n printMessage(\n `Error parsing JWK from file ${file}: ${error.message}`,\n 'error'\n );\n }\n },\n [deploymentOption.attributeName()]: (type: string) =>\n state.setDeploymentType(type),\n [insecureOption.attributeName()]: (insecure: boolean) =>\n state.setAllowInsecureConnection(insecure),\n [verboseOption.attributeName()]: (verbose: boolean) =>\n state.setVerbose(verbose),\n [debugOption.attributeName()]: (debug: boolean) => state.setDebug(debug),\n [curlirizeOption.attributeName()]: (curlirize: boolean) =>\n state.setCurlirize(curlirize),\n};\n\n/**\n * Command with default options\n */\nexport class FrodoStubCommand extends Command {\n /**\n * Creates a new FrodoCommand instance\n * @param name Name of the command\n * @param omits Array of default argument names and default option names that should not be added to this command\n */\n constructor(name: string) {\n super(name);\n\n // other default settings\n this.helpOption('-h, --help', 'Help');\n this.showHelpAfterError();\n this.configureHelp({\n sortSubcommands: true,\n sortOptions: true,\n });\n\n // register default handlers\n state.setPrintHandler(printMessage);\n state.setVerboseHandler(verboseMessage);\n state.setDebugHandler(debugMessage);\n state.setCurlirizeHandler(curlirizeMessage);\n state.setCreateProgressHandler(createProgressIndicator);\n state.setUpdateProgressHandler(updateProgressIndicator);\n state.setStopProgressHandler(stopProgressIndicator);\n }\n}\n\n/**\n * Command with default options\n */\nexport class FrodoCommand extends FrodoStubCommand {\n /**\n * Creates a new FrodoCommand instance\n * @param name Name of the command\n * @param omits Array of default argument names and default option names that should not be added to this command\n */\n constructor(name: string, omits: string[] = []) {\n super(name);\n\n // register default arguments\n for (const arg of defaultArgs) {\n if (!omits.includes(arg.name())) this.addArgument(arg);\n }\n\n // register default options\n for (const opt of defaultOpts) {\n if (!omits.includes(opt.name())) this.addOption(opt);\n }\n\n // additional help\n this.addHelpText(\n 'after',\n `\\nEvironment Variables:\\n` +\n ` FRODO_HOST: Access Management base URL. Overrides 'host' argument.\\n` +\n ` FRODO_REALM: Realm. Overrides 'realm' argument.\\n` +\n ` FRODO_USERNAME: Username. Overrides 'username' argument.\\n` +\n ` FRODO_PASSWORD: Password. Overrides 'password' argument.\\n` +\n ` FRODO_SA_ID: Service account uuid. Overrides '--sa-id' option.\\n` +\n ` FRODO_SA_JWK: Service account JWK. Overrides '--sa-jwk-file' option but takes the actual JWK as a value, not a file name.\\n` +\n ('frodo conn save' === this.name()\n ? ` FRODO_LOG_KEY: Log API key. Overrides '--log-api-key' option.\\n` +\n ` FRODO_LOG_SECRET: Log API secret. Overrides '--log-api-secret' option.\\n`\n : ``) +\n (this.name().startsWith('frodo logs')\n ? ` FRODO_LOG_KEY: Log API key. Overrides 'username' argument.\\n` +\n ` FRODO_LOG_SECRET: Log API secret. Overrides 'password' argument.\\n`\n : ``) +\n ` FRODO_AUTHENTICATION_SERVICE: Name of a login journey to use.\\n` +\n ` FRODO_DEBUG: Set to any value to enable debug output. Same as '--debug'.\\n`\n );\n }\n\n /**\n *\n * @param args\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handleDefaultArgsAndOpts(...args: any) {\n const command = args.pop();\n const options = args.pop();\n\n // handle arguments first\n for (const [i, v] of command.args.entries()) {\n if (!command._args[i]) {\n printMessage(\n `${command.args.length} arguments supplied but command only supports ${command._args.length}.`,\n 'warn'\n );\n break;\n }\n const arg = command._args[i].name();\n // handle only default arguments\n if (Object.keys(stateMap).includes(arg)) {\n debugMessage(\n `FrodoCommand.handleDefaultArgsAndOpts: Handling default argument '${arg}'.`\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handler: any = stateMap[arg];\n handler(v);\n } else {\n debugMessage(\n `FrodoCommand.handleDefaultArgsAndOpts: Ignoring non-default argument '${arg}'.`\n );\n }\n }\n\n // handle options\n for (const [k, v] of Object.entries(options)) {\n // handle only default options\n if (Object.keys(stateMap).includes(k)) {\n debugMessage(\n `FrodoCommand.handleDefaultArgsAndOpts: Handling default option '${k}'.`\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handler: any = stateMap[k];\n handler(v);\n } else {\n debugMessage(\n `FrodoCommand.handleDefaultArgsAndOpts: Ignoring non-default option '${k}'.`\n );\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"FrodoCommand.js","names":["frodo","state","Argument","Command","Option","fs","globalConfig","cleanupProgressIndicators","createProgressIndicator","curlirizeMessage","debugMessage","printMessage","stopProgressIndicator","updateProgressIndicator","verboseMessage","hostArgument","realmArgument","default","process","env","FRODO_REALM","DEFAULT_REALM_KEY","usernameArgument","passwordArgument","serviceAccountIdOption","serviceAccountJwkFileOption","deploymentOption","choices","DEPLOYMENT_TYPES","directoryOption","undefined","insecureOption","verboseOption","debugOption","curlirizeOption","noCacheOption","flushCacheOption","defaultArgs","defaultOpts","stateMap","name","host","setHost","realm","setRealm","username","setUsername","password","setPassword","attributeName","saId","setServiceAccountId","file","data","readFileSync","jwk","JSON","parse","toString","setServiceAccountJwk","error","message","type","setDeploymentType","directory","setDirectory","insecure","setAllowInsecureConnection","verbose","setVerbose","debug","setDebug","curlirize","setCurlirize","cache","setUseTokenCache","flush","FrodoStubCommand","constructor","listenerCount","on","_error$config","_error$config2","_error$response","config","method","url","response","stack","exitCode","helpOption","showHelpAfterError","configureHelp","sortSubcommands","sortOptions","setPrintHandler","setVerboseHandler","setDebugHandler","setCurlirizeHandler","setCreateProgressHandler","setUpdateProgressHandler","setStopProgressHandler","hook","thisCommand","actionCommand","FrodoCommand","omits","arg","includes","addArgument","opt","addOption","addHelpText","startsWith","handleDefaultArgsAndOpts","args","command","pop","options","i","v","entries","_args","length","Object","keys","handler","k"],"sources":["../../src/cli/FrodoCommand.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { Argument, Command, Option } from 'commander';\nimport fs from 'fs';\n\nimport * as globalConfig from '../storage/StaticStorage';\nimport {\n cleanupProgressIndicators,\n createProgressIndicator,\n curlirizeMessage,\n debugMessage,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n verboseMessage,\n} from '../utils/Console.js';\n\nconst hostArgument = new Argument(\n '[host]',\n 'Access Management base URL, e.g.: https://cdk.iam.example.com/am. To use a connection profile, just specify a unique substring.'\n);\n\nconst realmArgument = new Argument(\n '[realm]',\n \"Realm. Specify realm as '/' for the root realm or 'realm' or '/parent/child' otherwise.\"\n).default(\n // must check for FRODO_REALM env variable here because otherwise cli will overwrite realm with default value\n process.env.FRODO_REALM || globalConfig.DEFAULT_REALM_KEY,\n '\"alpha\" for Identity Cloud tenants, \"/\" otherwise.'\n);\n\nconst usernameArgument = new Argument(\n '[username]',\n 'Username to login with. Must be an admin user with appropriate rights to manage authentication journeys/trees.'\n);\n\nconst passwordArgument = new Argument('[password]', 'Password.');\n\nconst serviceAccountIdOption = new Option(\n '--sa-id <sa-id>',\n 'Service account id.'\n);\n\nconst serviceAccountJwkFileOption = new Option(\n '--sa-jwk-file <file>',\n 'File containing the JSON Web Key (JWK) associated with the the service account.'\n);\n\nconst deploymentOption = new Option(\n '-m, --type <type>',\n 'Override auto-detected deployment type. Valid values for type: \\n\\\nclassic: A classic Access Management-only deployment with custom layout and configuration. \\n\\\ncloud: A ForgeRock Identity Cloud environment. \\n\\\nforgeops: A ForgeOps CDK or CDM deployment. \\n\\\nThe detected or provided deployment type controls certain behavior like obtaining an Identity \\\nManagement admin token or not and whether to export/import referenced email templates or how \\\nto walk through the tenant admin login flow of Identity Cloud and handle MFA'\n).choices(globalConfig.DEPLOYMENT_TYPES);\n\nconst directoryOption = new Option(\n '-D, --directory <directory>',\n 'Set the working directory.'\n).default(undefined, 'undefined');\n\nconst insecureOption = new Option(\n '-k, --insecure',\n 'Allow insecure connections when using SSL/TLS. Has no effect when using a network proxy for https (HTTPS_PROXY=http://<host>:<port>), in that case the proxy must provide this capability.'\n).default(false, \"Don't allow insecure connections\");\n\nconst verboseOption = new Option(\n '--verbose',\n 'Verbose output during command execution. If specified, may or may not produce additional output.'\n);\n\nconst debugOption = new Option(\n '--debug',\n 'Debug output during command execution. If specified, may or may not produce additional output helpful for troubleshooting.'\n);\n\nconst curlirizeOption = new Option(\n '--curlirize',\n 'Output all network calls in curl format.'\n);\n\nconst noCacheOption = new Option(\n '--no-cache',\n 'Disable token cache for this operation.'\n);\n\nconst flushCacheOption = new Option('--flush-cache', 'Flush token cache.');\n\nconst defaultArgs = [\n hostArgument,\n realmArgument,\n usernameArgument,\n passwordArgument,\n];\n\nconst defaultOpts = [\n serviceAccountIdOption,\n serviceAccountJwkFileOption,\n deploymentOption,\n directoryOption,\n insecureOption,\n verboseOption,\n debugOption,\n curlirizeOption,\n noCacheOption,\n flushCacheOption,\n];\n\nconst stateMap = {\n [hostArgument.name()]: (host: string) => state.setHost(host),\n [realmArgument.name()]: (realm: string) => state.setRealm(realm),\n [usernameArgument.name()]: (username: string) => state.setUsername(username),\n [passwordArgument.name()]: (password: string) => state.setPassword(password),\n [serviceAccountIdOption.attributeName()]: (saId: string) =>\n state.setServiceAccountId(saId),\n [serviceAccountJwkFileOption.attributeName()]: (file: string) => {\n try {\n const data = fs.readFileSync(file);\n const jwk = JSON.parse(data.toString());\n state.setServiceAccountJwk(jwk);\n } catch (error) {\n printMessage(\n `Error parsing JWK from file ${file}: ${error.message}`,\n 'error'\n );\n }\n },\n [deploymentOption.attributeName()]: (type: string) =>\n state.setDeploymentType(type),\n [directoryOption.attributeName()]: (directory: string) =>\n state.setDirectory(directory),\n [insecureOption.attributeName()]: (insecure: boolean) =>\n state.setAllowInsecureConnection(insecure),\n [verboseOption.attributeName()]: (verbose: boolean) =>\n state.setVerbose(verbose),\n [debugOption.attributeName()]: (debug: boolean) => state.setDebug(debug),\n [curlirizeOption.attributeName()]: (curlirize: boolean) =>\n state.setCurlirize(curlirize),\n [noCacheOption.attributeName()]: (cache: boolean) =>\n state.setUseTokenCache(cache),\n [flushCacheOption.attributeName()]: (flush: boolean) => {\n if (flush) frodo.cache.flush();\n },\n};\n\n/**\n * Command with default options\n */\nexport class FrodoStubCommand extends Command {\n /**\n * Creates a new FrodoCommand instance\n * @param name Name of the command\n * @param omits Array of default argument names and default option names that should not be added to this command\n */\n constructor(name: string) {\n super(name);\n\n if (!process.listenerCount('unhandledRejection')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n process.on('unhandledRejection', (error: any) => {\n printMessage(\n `${error.config?.method ? error.config.method + ' ' : ''}${\n error.config?.url ? error.config.url : ''\n }`,\n 'error'\n );\n printMessage(error.response?.data, 'error');\n printMessage(error.stack, 'error');\n printMessage(\n `Please report this unhandled error here: https://github.com/rockcarver/frodo-cli/issues`,\n 'error'\n );\n process.exitCode = 1;\n });\n }\n\n // other default settings\n this.helpOption('-h, --help', 'Help');\n this.showHelpAfterError();\n this.configureHelp({\n sortSubcommands: true,\n sortOptions: true,\n });\n\n // register default handlers\n state.setPrintHandler(printMessage);\n state.setVerboseHandler(verboseMessage);\n state.setDebugHandler(debugMessage);\n state.setCurlirizeHandler(curlirizeMessage);\n state.setCreateProgressHandler(createProgressIndicator);\n state.setUpdateProgressHandler(updateProgressIndicator);\n state.setStopProgressHandler(stopProgressIndicator);\n\n // shutdown handlers\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.hook('postAction', (thisCommand, actionCommand) => {\n debugMessage(\n `postAction: this command: ${thisCommand.name()}, action command: ${actionCommand.name()}`\n );\n cleanupProgressIndicators();\n });\n }\n}\n\n/**\n * Command with default options\n */\nexport class FrodoCommand extends FrodoStubCommand {\n /**\n * Creates a new FrodoCommand instance\n * @param name Name of the command\n * @param omits Array of default argument names and default option names that should not be added to this command\n */\n constructor(name: string, omits: string[] = []) {\n super(name);\n\n // register default arguments\n for (const arg of defaultArgs) {\n if (!omits.includes(arg.name())) this.addArgument(arg);\n }\n\n // register default options\n for (const opt of defaultOpts) {\n if (!omits.includes(opt.name())) this.addOption(opt);\n }\n\n // additional help\n this.addHelpText(\n 'after',\n `\\nEvironment Variables:\\n` +\n ` FRODO_HOST: Access Management base URL. Overrides 'host' argument.\\n` +\n ` FRODO_REALM: Realm. Overrides 'realm' argument.\\n` +\n ` FRODO_USERNAME: Username. Overrides 'username' argument.\\n` +\n ` FRODO_PASSWORD: Password. Overrides 'password' argument.\\n` +\n ` FRODO_SA_ID: Service account uuid. Overrides '--sa-id' option.\\n` +\n ` FRODO_SA_JWK: Service account JWK. Overrides '--sa-jwk-file' option but takes the actual JWK as a value, not a file name.\\n` +\n ` FRODO_NO_CACHE: Disable token cache. Same as '--no-cache' option.\\n` +\n ` FRODO_TOKEN_CACHE_PATH: Use this token cache file instead of '~/.frodo/TokenCache.json'.\\n` +\n ('frodo conn save' === this.name()\n ? ` FRODO_LOG_KEY: Log API key. Overrides '--log-api-key' option.\\n` +\n ` FRODO_LOG_SECRET: Log API secret. Overrides '--log-api-secret' option.\\n`\n : ``) +\n (this.name().startsWith('frodo log')\n ? ` FRODO_LOG_KEY: Log API key. Overrides 'username' argument.\\n` +\n ` FRODO_LOG_SECRET: Log API secret. Overrides 'password' argument.\\n`\n : ``) +\n ` FRODO_CONNECTION_PROFILES_PATH: Use this connection profiles file instead of '~/.frodo/Connections.json'.\\n` +\n ` FRODO_AUTHENTICATION_SERVICE: Name of a login journey to use.\\n` +\n ` FRODO_DEBUG: Set to any value to enable debug output. Same as '--debug'.\\n` +\n ` FRODO_MASTER_KEY_PATH: Use this master key file instead of '~/.frodo/masterkey.key' file.\\n` +\n ` FRODO_MASTER_KEY: Use this master key instead of what's in '~/.frodo/masterkey.key'. Takes precedence over FRODO_MASTER_KEY_PATH.\\n`\n );\n }\n\n /**\n *\n * @param args\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handleDefaultArgsAndOpts(...args: any) {\n const command = args.pop();\n const options = args.pop();\n\n // handle arguments first\n for (const [i, v] of command.args.entries()) {\n if (!command._args[i]) {\n printMessage(\n `${command.args.length} arguments supplied but command only supports ${command._args.length}.`,\n 'warn'\n );\n break;\n }\n const arg = command._args[i].name();\n // handle only default arguments\n if (Object.keys(stateMap).includes(arg)) {\n debugMessage(\n `FrodoCommand.handleDefaultArgsAndOpts: Handling default argument '${arg}'.`\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handler: any = stateMap[arg];\n handler(v);\n } else {\n debugMessage(\n `FrodoCommand.handleDefaultArgsAndOpts: Ignoring non-default argument '${arg}'.`\n );\n }\n }\n\n // handle options\n for (const [k, v] of Object.entries(options)) {\n // handle only default options\n if (Object.keys(stateMap).includes(k)) {\n debugMessage(\n `FrodoCommand.handleDefaultArgsAndOpts: Handling default option '${k}'.`\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handler: any = stateMap[k];\n handler(v);\n } else {\n debugMessage(\n `FrodoCommand.handleDefaultArgsAndOpts: Ignoring non-default option '${k}'.`\n );\n }\n }\n }\n}\n"],"mappings":"AAAA,SAASA,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AACpD,SAASC,QAAQ,EAAEC,OAAO,EAAEC,MAAM,QAAQ,WAAW;AACrD,OAAOC,EAAE,MAAM,IAAI;AAEnB,OAAO,KAAKC,YAAY,MAAM,0BAA0B;AACxD,SACEC,yBAAyB,EACzBC,uBAAuB,EACvBC,gBAAgB,EAChBC,YAAY,EACZC,YAAY,EACZC,qBAAqB,EACrBC,uBAAuB,EACvBC,cAAc,QACT,qBAAqB;AAE5B,MAAMC,YAAY,GAAG,IAAIb,QAAQ,CAC/B,QAAQ,EACR,iIACF,CAAC;AAED,MAAMc,aAAa,GAAG,IAAId,QAAQ,CAChC,SAAS,EACT,yFACF,CAAC,CAACe,OAAO;AACP;AACAC,OAAO,CAACC,GAAG,CAACC,WAAW,IAAId,YAAY,CAACe,iBAAiB,EACzD,oDACF,CAAC;AAED,MAAMC,gBAAgB,GAAG,IAAIpB,QAAQ,CACnC,YAAY,EACZ,gHACF,CAAC;AAED,MAAMqB,gBAAgB,GAAG,IAAIrB,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;AAEhE,MAAMsB,sBAAsB,GAAG,IAAIpB,MAAM,CACvC,iBAAiB,EACjB,qBACF,CAAC;AAED,MAAMqB,2BAA2B,GAAG,IAAIrB,MAAM,CAC5C,sBAAsB,EACtB,iFACF,CAAC;AAED,MAAMsB,gBAAgB,GAAG,IAAItB,MAAM,CACjC,mBAAmB,EACnB;AACF;AACA;AACA;AACA;AACA;AACA,6EACA,CAAC,CAACuB,OAAO,CAACrB,YAAY,CAACsB,gBAAgB,CAAC;AAExC,MAAMC,eAAe,GAAG,IAAIzB,MAAM,CAChC,6BAA6B,EAC7B,4BACF,CAAC,CAACa,OAAO,CAACa,SAAS,EAAE,WAAW,CAAC;AAEjC,MAAMC,cAAc,GAAG,IAAI3B,MAAM,CAC/B,gBAAgB,EAChB,4LACF,CAAC,CAACa,OAAO,CAAC,KAAK,EAAE,kCAAkC,CAAC;AAEpD,MAAMe,aAAa,GAAG,IAAI5B,MAAM,CAC9B,WAAW,EACX,kGACF,CAAC;AAED,MAAM6B,WAAW,GAAG,IAAI7B,MAAM,CAC5B,SAAS,EACT,4HACF,CAAC;AAED,MAAM8B,eAAe,GAAG,IAAI9B,MAAM,CAChC,aAAa,EACb,0CACF,CAAC;AAED,MAAM+B,aAAa,GAAG,IAAI/B,MAAM,CAC9B,YAAY,EACZ,yCACF,CAAC;AAED,MAAMgC,gBAAgB,GAAG,IAAIhC,MAAM,CAAC,eAAe,EAAE,oBAAoB,CAAC;AAE1E,MAAMiC,WAAW,GAAG,CAClBtB,YAAY,EACZC,aAAa,EACbM,gBAAgB,EAChBC,gBAAgB,CACjB;AAED,MAAMe,WAAW,GAAG,CAClBd,sBAAsB,EACtBC,2BAA2B,EAC3BC,gBAAgB,EAChBG,eAAe,EACfE,cAAc,EACdC,aAAa,EACbC,WAAW,EACXC,eAAe,EACfC,aAAa,EACbC,gBAAgB,CACjB;AAED,MAAMG,QAAQ,GAAG;EACf,CAACxB,YAAY,CAACyB,IAAI,CAAC,CAAC,GAAIC,IAAY,IAAKxC,KAAK,CAACyC,OAAO,CAACD,IAAI,CAAC;EAC5D,CAACzB,aAAa,CAACwB,IAAI,CAAC,CAAC,GAAIG,KAAa,IAAK1C,KAAK,CAAC2C,QAAQ,CAACD,KAAK,CAAC;EAChE,CAACrB,gBAAgB,CAACkB,IAAI,CAAC,CAAC,GAAIK,QAAgB,IAAK5C,KAAK,CAAC6C,WAAW,CAACD,QAAQ,CAAC;EAC5E,CAACtB,gBAAgB,CAACiB,IAAI,CAAC,CAAC,GAAIO,QAAgB,IAAK9C,KAAK,CAAC+C,WAAW,CAACD,QAAQ,CAAC;EAC5E,CAACvB,sBAAsB,CAACyB,aAAa,CAAC,CAAC,GAAIC,IAAY,IACrDjD,KAAK,CAACkD,mBAAmB,CAACD,IAAI,CAAC;EACjC,CAACzB,2BAA2B,CAACwB,aAAa,CAAC,CAAC,GAAIG,IAAY,IAAK;IAC/D,IAAI;MACF,MAAMC,IAAI,GAAGhD,EAAE,CAACiD,YAAY,CAACF,IAAI,CAAC;MAClC,MAAMG,GAAG,GAAGC,IAAI,CAACC,KAAK,CAACJ,IAAI,CAACK,QAAQ,CAAC,CAAC,CAAC;MACvCzD,KAAK,CAAC0D,oBAAoB,CAACJ,GAAG,CAAC;IACjC,CAAC,CAAC,OAAOK,KAAK,EAAE;MACdjD,YAAY,CACT,+BAA8ByC,IAAK,KAAIQ,KAAK,CAACC,OAAQ,EAAC,EACvD,OACF,CAAC;IACH;EACF,CAAC;EACD,CAACnC,gBAAgB,CAACuB,aAAa,CAAC,CAAC,GAAIa,IAAY,IAC/C7D,KAAK,CAAC8D,iBAAiB,CAACD,IAAI,CAAC;EAC/B,CAACjC,eAAe,CAACoB,aAAa,CAAC,CAAC,GAAIe,SAAiB,IACnD/D,KAAK,CAACgE,YAAY,CAACD,SAAS,CAAC;EAC/B,CAACjC,cAAc,CAACkB,aAAa,CAAC,CAAC,GAAIiB,QAAiB,IAClDjE,KAAK,CAACkE,0BAA0B,CAACD,QAAQ,CAAC;EAC5C,CAAClC,aAAa,CAACiB,aAAa,CAAC,CAAC,GAAImB,OAAgB,IAChDnE,KAAK,CAACoE,UAAU,CAACD,OAAO,CAAC;EAC3B,CAACnC,WAAW,CAACgB,aAAa,CAAC,CAAC,GAAIqB,KAAc,IAAKrE,KAAK,CAACsE,QAAQ,CAACD,KAAK,CAAC;EACxE,CAACpC,eAAe,CAACe,aAAa,CAAC,CAAC,GAAIuB,SAAkB,IACpDvE,KAAK,CAACwE,YAAY,CAACD,SAAS,CAAC;EAC/B,CAACrC,aAAa,CAACc,aAAa,CAAC,CAAC,GAAIyB,KAAc,IAC9CzE,KAAK,CAAC0E,gBAAgB,CAACD,KAAK,CAAC;EAC/B,CAACtC,gBAAgB,CAACa,aAAa,CAAC,CAAC,GAAI2B,KAAc,IAAK;IACtD,IAAIA,KAAK,EAAE5E,KAAK,CAAC0E,KAAK,CAACE,KAAK,CAAC,CAAC;EAChC;AACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,SAAS1E,OAAO,CAAC;EAC5C;AACF;AACA;AACA;AACA;EACE2E,WAAWA,CAACtC,IAAY,EAAE;IACxB,KAAK,CAACA,IAAI,CAAC;IAEX,IAAI,CAACtB,OAAO,CAAC6D,aAAa,CAAC,oBAAoB,CAAC,EAAE;MAChD;MACA7D,OAAO,CAAC8D,EAAE,CAAC,oBAAoB,EAAGpB,KAAU,IAAK;QAAA,IAAAqB,aAAA,EAAAC,cAAA,EAAAC,eAAA;QAC/CxE,YAAY,CACT,GAAE,CAAAsE,aAAA,GAAArB,KAAK,CAACwB,MAAM,cAAAH,aAAA,eAAZA,aAAA,CAAcI,MAAM,GAAGzB,KAAK,CAACwB,MAAM,CAACC,MAAM,GAAG,GAAG,GAAG,EAAG,GACvD,CAAAH,cAAA,GAAAtB,KAAK,CAACwB,MAAM,cAAAF,cAAA,eAAZA,cAAA,CAAcI,GAAG,GAAG1B,KAAK,CAACwB,MAAM,CAACE,GAAG,GAAG,EACxC,EAAC,EACF,OACF,CAAC;QACD3E,YAAY,EAAAwE,eAAA,GAACvB,KAAK,CAAC2B,QAAQ,cAAAJ,eAAA,uBAAdA,eAAA,CAAgB9B,IAAI,EAAE,OAAO,CAAC;QAC3C1C,YAAY,CAACiD,KAAK,CAAC4B,KAAK,EAAE,OAAO,CAAC;QAClC7E,YAAY,CACT,yFAAwF,EACzF,OACF,CAAC;QACDO,OAAO,CAACuE,QAAQ,GAAG,CAAC;MACtB,CAAC,CAAC;IACJ;;IAEA;IACA,IAAI,CAACC,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC;IACrC,IAAI,CAACC,kBAAkB,CAAC,CAAC;IACzB,IAAI,CAACC,aAAa,CAAC;MACjBC,eAAe,EAAE,IAAI;MACrBC,WAAW,EAAE;IACf,CAAC,CAAC;;IAEF;IACA7F,KAAK,CAAC8F,eAAe,CAACpF,YAAY,CAAC;IACnCV,KAAK,CAAC+F,iBAAiB,CAAClF,cAAc,CAAC;IACvCb,KAAK,CAACgG,eAAe,CAACvF,YAAY,CAAC;IACnCT,KAAK,CAACiG,mBAAmB,CAACzF,gBAAgB,CAAC;IAC3CR,KAAK,CAACkG,wBAAwB,CAAC3F,uBAAuB,CAAC;IACvDP,KAAK,CAACmG,wBAAwB,CAACvF,uBAAuB,CAAC;IACvDZ,KAAK,CAACoG,sBAAsB,CAACzF,qBAAqB,CAAC;;IAEnD;IACA;IACA,IAAI,CAAC0F,IAAI,CAAC,YAAY,EAAE,CAACC,WAAW,EAAEC,aAAa,KAAK;MACtD9F,YAAY,CACT,6BAA4B6F,WAAW,CAAC/D,IAAI,CAAC,CAAE,qBAAoBgE,aAAa,CAAChE,IAAI,CAAC,CAAE,EAC3F,CAAC;MACDjC,yBAAyB,CAAC,CAAC;IAC7B,CAAC,CAAC;EACJ;AACF;;AAEA;AACA;AACA;AACA,OAAO,MAAMkG,YAAY,SAAS5B,gBAAgB,CAAC;EACjD;AACF;AACA;AACA;AACA;EACEC,WAAWA,CAACtC,IAAY,EAAEkE,KAAe,GAAG,EAAE,EAAE;IAC9C,KAAK,CAAClE,IAAI,CAAC;;IAEX;IACA,KAAK,MAAMmE,GAAG,IAAItE,WAAW,EAAE;MAC7B,IAAI,CAACqE,KAAK,CAACE,QAAQ,CAACD,GAAG,CAACnE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAACqE,WAAW,CAACF,GAAG,CAAC;IACxD;;IAEA;IACA,KAAK,MAAMG,GAAG,IAAIxE,WAAW,EAAE;MAC7B,IAAI,CAACoE,KAAK,CAACE,QAAQ,CAACE,GAAG,CAACtE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAACuE,SAAS,CAACD,GAAG,CAAC;IACtD;;IAEA;IACA,IAAI,CAACE,WAAW,CACd,OAAO,EACN,2BAA0B,GACxB,wEAAuE,GACvE,qDAAoD,GACpD,8DAA6D,GAC7D,8DAA6D,GAC7D,oEAAmE,GACnE,+HAA8H,GAC9H,uEAAsE,GACtE,8FAA6F,IAC7F,iBAAiB,KAAK,IAAI,CAACxE,IAAI,CAAC,CAAC,GAC7B,mEAAkE,GAClE,4EAA2E,GAC3E,EAAC,CAAC,IACN,IAAI,CAACA,IAAI,CAAC,CAAC,CAACyE,UAAU,CAAC,WAAW,CAAC,GAC/B,gEAA+D,GAC/D,sEAAqE,GACrE,EAAC,CAAC,GACN,+GAA8G,GAC9G,mEAAkE,GAClE,8EAA6E,GAC7E,+FAA8F,GAC9F,uIACL,CAAC;EACH;;EAEA;AACF;AACA;AACA;EACE;EACAC,wBAAwBA,CAAC,GAAGC,IAAS,EAAE;IACrC,MAAMC,OAAO,GAAGD,IAAI,CAACE,GAAG,CAAC,CAAC;IAC1B,MAAMC,OAAO,GAAGH,IAAI,CAACE,GAAG,CAAC,CAAC;;IAE1B;IACA,KAAK,MAAM,CAACE,CAAC,EAAEC,CAAC,CAAC,IAAIJ,OAAO,CAACD,IAAI,CAACM,OAAO,CAAC,CAAC,EAAE;MAC3C,IAAI,CAACL,OAAO,CAACM,KAAK,CAACH,CAAC,CAAC,EAAE;QACrB5G,YAAY,CACT,GAAEyG,OAAO,CAACD,IAAI,CAACQ,MAAO,iDAAgDP,OAAO,CAACM,KAAK,CAACC,MAAO,GAAE,EAC9F,MACF,CAAC;QACD;MACF;MACA,MAAMhB,GAAG,GAAGS,OAAO,CAACM,KAAK,CAACH,CAAC,CAAC,CAAC/E,IAAI,CAAC,CAAC;MACnC;MACA,IAAIoF,MAAM,CAACC,IAAI,CAACtF,QAAQ,CAAC,CAACqE,QAAQ,CAACD,GAAG,CAAC,EAAE;QACvCjG,YAAY,CACT,qEAAoEiG,GAAI,IAC3E,CAAC;QACD;QACA,MAAMmB,OAAY,GAAGvF,QAAQ,CAACoE,GAAG,CAAC;QAClCmB,OAAO,CAACN,CAAC,CAAC;MACZ,CAAC,MAAM;QACL9G,YAAY,CACT,yEAAwEiG,GAAI,IAC/E,CAAC;MACH;IACF;;IAEA;IACA,KAAK,MAAM,CAACoB,CAAC,EAAEP,CAAC,CAAC,IAAII,MAAM,CAACH,OAAO,CAACH,OAAO,CAAC,EAAE;MAC5C;MACA,IAAIM,MAAM,CAACC,IAAI,CAACtF,QAAQ,CAAC,CAACqE,QAAQ,CAACmB,CAAC,CAAC,EAAE;QACrCrH,YAAY,CACT,mEAAkEqH,CAAE,IACvE,CAAC;QACD;QACA,MAAMD,OAAY,GAAGvF,QAAQ,CAACwF,CAAC,CAAC;QAChCD,OAAO,CAACN,CAAC,CAAC;MACZ,CAAC,MAAM;QACL9G,YAAY,CACT,uEAAsEqH,CAAE,IAC3E,CAAC;MACH;IACF;EACF;AACF"}