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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/.vscode/launch.json +1 -0
  2. package/CHANGELOG.md +10 -1
  3. package/dist/app.cjs +187368 -0
  4. package/dist/app.cjs.map +1 -0
  5. package/dist/app.d.cts +2 -0
  6. package/dist/chunk-MPPKDFVI.cjs +56 -0
  7. package/dist/chunk-MPPKDFVI.cjs.map +1 -0
  8. package/dist/launch.cjs +27 -0
  9. package/dist/launch.cjs.map +1 -0
  10. package/dist/launch.d.cts +1 -0
  11. package/dist/loader.cjs +836 -0
  12. package/dist/loader.cjs.map +1 -0
  13. package/dist/loader.d.cts +3 -0
  14. package/package.json +37 -53
  15. package/tsup.config.ts +40 -0
  16. package/esm/app.js +0 -80
  17. package/esm/app.js.map +0 -1
  18. package/esm/cli/FrodoCommand.js +0 -181
  19. package/esm/cli/FrodoCommand.js.map +0 -1
  20. package/esm/cli/_template/something-delete.js +0 -20
  21. package/esm/cli/_template/something-delete.js.map +0 -1
  22. package/esm/cli/_template/something-describe.js +0 -20
  23. package/esm/cli/_template/something-describe.js.map +0 -1
  24. package/esm/cli/_template/something-else-delete.js +0 -20
  25. package/esm/cli/_template/something-else-delete.js.map +0 -1
  26. package/esm/cli/_template/something-else-describe.js +0 -20
  27. package/esm/cli/_template/something-else-describe.js.map +0 -1
  28. package/esm/cli/_template/something-else-export.js +0 -20
  29. package/esm/cli/_template/something-else-export.js.map +0 -1
  30. package/esm/cli/_template/something-else-import.js +0 -20
  31. package/esm/cli/_template/something-else-import.js.map +0 -1
  32. package/esm/cli/_template/something-else-list.js +0 -20
  33. package/esm/cli/_template/something-else-list.js.map +0 -1
  34. package/esm/cli/_template/something-else.js +0 -17
  35. package/esm/cli/_template/something-else.js.map +0 -1
  36. package/esm/cli/_template/something-export.js +0 -20
  37. package/esm/cli/_template/something-export.js.map +0 -1
  38. package/esm/cli/_template/something-import.js +0 -20
  39. package/esm/cli/_template/something-import.js.map +0 -1
  40. package/esm/cli/_template/something-list.js +0 -20
  41. package/esm/cli/_template/something-list.js.map +0 -1
  42. package/esm/cli/_template/something-other-delete.js +0 -20
  43. package/esm/cli/_template/something-other-delete.js.map +0 -1
  44. package/esm/cli/_template/something-other-describe.js +0 -20
  45. package/esm/cli/_template/something-other-describe.js.map +0 -1
  46. package/esm/cli/_template/something-other-export.js +0 -20
  47. package/esm/cli/_template/something-other-export.js.map +0 -1
  48. package/esm/cli/_template/something-other-import.js +0 -20
  49. package/esm/cli/_template/something-other-import.js.map +0 -1
  50. package/esm/cli/_template/something-other-list.js +0 -20
  51. package/esm/cli/_template/something-other-list.js.map +0 -1
  52. package/esm/cli/_template/something-other.js +0 -17
  53. package/esm/cli/_template/something-other.js.map +0 -1
  54. package/esm/cli/_template/something.js +0 -20
  55. package/esm/cli/_template/something.js.map +0 -1
  56. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +0 -23
  57. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +0 -1
  58. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +0 -80
  59. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +0 -1
  60. package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js +0 -40
  61. package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js.map +0 -1
  62. package/esm/cli/admin/admin-federation-export.js +0 -43
  63. package/esm/cli/admin/admin-federation-export.js.map +0 -1
  64. package/esm/cli/admin/admin-federation-import.js +0 -47
  65. package/esm/cli/admin/admin-federation-import.js.map +0 -1
  66. package/esm/cli/admin/admin-federation-list.js +0 -27
  67. package/esm/cli/admin/admin-federation-list.js.map +0 -1
  68. package/esm/cli/admin/admin-federation.js +0 -21
  69. package/esm/cli/admin/admin-federation.js.map +0 -1
  70. package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artefacts.js +0 -43
  71. package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artefacts.js.map +0 -1
  72. package/esm/cli/admin/admin-get-access-token.js +0 -27
  73. package/esm/cli/admin/admin-get-access-token.js.map +0 -1
  74. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +0 -25
  75. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +0 -1
  76. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +0 -25
  77. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +0 -1
  78. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +0 -24
  79. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +0 -1
  80. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +0 -24
  81. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +0 -1
  82. package/esm/cli/admin/admin-list-static-user-mappings.js +0 -24
  83. package/esm/cli/admin/admin-list-static-user-mappings.js.map +0 -1
  84. package/esm/cli/admin/admin-remove-static-user-mapping.js +0 -24
  85. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +0 -1
  86. package/esm/cli/admin/admin-repair-org-model.js +0 -25
  87. package/esm/cli/admin/admin-repair-org-model.js.map +0 -1
  88. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +0 -25
  89. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +0 -1
  90. package/esm/cli/admin/admin-show-generic-extension-attributes.js +0 -25
  91. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +0 -1
  92. package/esm/cli/admin/admin-train-auto-access-model.js +0 -32
  93. package/esm/cli/admin/admin-train-auto-access-model.js.map +0 -1
  94. package/esm/cli/admin/admin.js +0 -41
  95. package/esm/cli/admin/admin.js.map +0 -1
  96. package/esm/cli/agent/agent-delete.js +0 -38
  97. package/esm/cli/agent/agent-delete.js.map +0 -1
  98. package/esm/cli/agent/agent-describe.js +0 -20
  99. package/esm/cli/agent/agent-describe.js.map +0 -1
  100. package/esm/cli/agent/agent-export.js +0 -43
  101. package/esm/cli/agent/agent-export.js.map +0 -1
  102. package/esm/cli/agent/agent-gateway-delete.js +0 -38
  103. package/esm/cli/agent/agent-gateway-delete.js.map +0 -1
  104. package/esm/cli/agent/agent-gateway-describe.js +0 -20
  105. package/esm/cli/agent/agent-gateway-describe.js.map +0 -1
  106. package/esm/cli/agent/agent-gateway-export.js +0 -43
  107. package/esm/cli/agent/agent-gateway-export.js.map +0 -1
  108. package/esm/cli/agent/agent-gateway-import.js +0 -49
  109. package/esm/cli/agent/agent-gateway-import.js.map +0 -1
  110. package/esm/cli/agent/agent-gateway-list.js +0 -22
  111. package/esm/cli/agent/agent-gateway-list.js.map +0 -1
  112. package/esm/cli/agent/agent-gateway.js +0 -17
  113. package/esm/cli/agent/agent-gateway.js.map +0 -1
  114. package/esm/cli/agent/agent-import.js +0 -49
  115. package/esm/cli/agent/agent-import.js.map +0 -1
  116. package/esm/cli/agent/agent-java-delete.js +0 -38
  117. package/esm/cli/agent/agent-java-delete.js.map +0 -1
  118. package/esm/cli/agent/agent-java-describe.js +0 -20
  119. package/esm/cli/agent/agent-java-describe.js.map +0 -1
  120. package/esm/cli/agent/agent-java-export.js +0 -43
  121. package/esm/cli/agent/agent-java-export.js.map +0 -1
  122. package/esm/cli/agent/agent-java-import.js +0 -49
  123. package/esm/cli/agent/agent-java-import.js.map +0 -1
  124. package/esm/cli/agent/agent-java-list.js +0 -22
  125. package/esm/cli/agent/agent-java-list.js.map +0 -1
  126. package/esm/cli/agent/agent-java.js +0 -17
  127. package/esm/cli/agent/agent-java.js.map +0 -1
  128. package/esm/cli/agent/agent-list.js +0 -22
  129. package/esm/cli/agent/agent-list.js.map +0 -1
  130. package/esm/cli/agent/agent-web-delete.js +0 -38
  131. package/esm/cli/agent/agent-web-delete.js.map +0 -1
  132. package/esm/cli/agent/agent-web-describe.js +0 -20
  133. package/esm/cli/agent/agent-web-describe.js.map +0 -1
  134. package/esm/cli/agent/agent-web-export.js +0 -43
  135. package/esm/cli/agent/agent-web-export.js.map +0 -1
  136. package/esm/cli/agent/agent-web-import.js +0 -49
  137. package/esm/cli/agent/agent-web-import.js.map +0 -1
  138. package/esm/cli/agent/agent-web-list.js +0 -22
  139. package/esm/cli/agent/agent-web-list.js.map +0 -1
  140. package/esm/cli/agent/agent-web.js +0 -17
  141. package/esm/cli/agent/agent-web.js.map +0 -1
  142. package/esm/cli/agent/agent.js +0 -22
  143. package/esm/cli/agent/agent.js.map +0 -1
  144. package/esm/cli/app/app-delete.js +0 -36
  145. package/esm/cli/app/app-delete.js.map +0 -1
  146. package/esm/cli/app/app-describe.js +0 -21
  147. package/esm/cli/app/app-describe.js.map +0 -1
  148. package/esm/cli/app/app-export.js +0 -51
  149. package/esm/cli/app/app-export.js.map +0 -1
  150. package/esm/cli/app/app-import.js +0 -56
  151. package/esm/cli/app/app-import.js.map +0 -1
  152. package/esm/cli/app/app-list.js +0 -25
  153. package/esm/cli/app/app-list.js.map +0 -1
  154. package/esm/cli/app/app.js +0 -18
  155. package/esm/cli/app/app.js.map +0 -1
  156. package/esm/cli/authn/authn-describe.js +0 -28
  157. package/esm/cli/authn/authn-describe.js.map +0 -1
  158. package/esm/cli/authn/authn-export.js +0 -24
  159. package/esm/cli/authn/authn-export.js.map +0 -1
  160. package/esm/cli/authn/authn-import.js +0 -24
  161. package/esm/cli/authn/authn-import.js.map +0 -1
  162. package/esm/cli/authn/authn.js +0 -12
  163. package/esm/cli/authn/authn.js.map +0 -1
  164. package/esm/cli/authz/authz-policy-delete.js +0 -41
  165. package/esm/cli/authz/authz-policy-delete.js.map +0 -1
  166. package/esm/cli/authz/authz-policy-describe.js +0 -28
  167. package/esm/cli/authz/authz-policy-describe.js.map +0 -1
  168. package/esm/cli/authz/authz-policy-export.js +0 -73
  169. package/esm/cli/authz/authz-policy-export.js.map +0 -1
  170. package/esm/cli/authz/authz-policy-import.js +0 -63
  171. package/esm/cli/authz/authz-policy-import.js.map +0 -1
  172. package/esm/cli/authz/authz-policy-list.js +0 -35
  173. package/esm/cli/authz/authz-policy-list.js.map +0 -1
  174. package/esm/cli/authz/authz-policy.js +0 -17
  175. package/esm/cli/authz/authz-policy.js.map +0 -1
  176. package/esm/cli/authz/authz-set-delete.js +0 -35
  177. package/esm/cli/authz/authz-set-delete.js.map +0 -1
  178. package/esm/cli/authz/authz-set-describe.js +0 -28
  179. package/esm/cli/authz/authz-set-describe.js.map +0 -1
  180. package/esm/cli/authz/authz-set-export.js +0 -53
  181. package/esm/cli/authz/authz-set-export.js.map +0 -1
  182. package/esm/cli/authz/authz-set-import.js +0 -59
  183. package/esm/cli/authz/authz-set-import.js.map +0 -1
  184. package/esm/cli/authz/authz-set-list.js +0 -23
  185. package/esm/cli/authz/authz-set-list.js.map +0 -1
  186. package/esm/cli/authz/authz-set.js +0 -17
  187. package/esm/cli/authz/authz-set.js.map +0 -1
  188. package/esm/cli/authz/authz-type-delete.js +0 -41
  189. package/esm/cli/authz/authz-type-delete.js.map +0 -1
  190. package/esm/cli/authz/authz-type-describe.js +0 -32
  191. package/esm/cli/authz/authz-type-describe.js.map +0 -1
  192. package/esm/cli/authz/authz-type-export.js +0 -47
  193. package/esm/cli/authz/authz-type-export.js.map +0 -1
  194. package/esm/cli/authz/authz-type-import.js +0 -53
  195. package/esm/cli/authz/authz-type-import.js.map +0 -1
  196. package/esm/cli/authz/authz-type-list.js +0 -24
  197. package/esm/cli/authz/authz-type-list.js.map +0 -1
  198. package/esm/cli/authz/authz-type.js +0 -17
  199. package/esm/cli/authz/authz-type.js.map +0 -1
  200. package/esm/cli/authz/authz.js +0 -12
  201. package/esm/cli/authz/authz.js.map +0 -1
  202. package/esm/cli/config/config-delete.js +0 -20
  203. package/esm/cli/config/config-delete.js.map +0 -1
  204. package/esm/cli/config/config-describe.js +0 -20
  205. package/esm/cli/config/config-describe.js.map +0 -1
  206. package/esm/cli/config/config-export.js +0 -52
  207. package/esm/cli/config/config-export.js.map +0 -1
  208. package/esm/cli/config/config-import.js +0 -62
  209. package/esm/cli/config/config-import.js.map +0 -1
  210. package/esm/cli/config/config-list.js +0 -20
  211. package/esm/cli/config/config-list.js.map +0 -1
  212. package/esm/cli/config/config.js +0 -22
  213. package/esm/cli/config/config.js.map +0 -1
  214. package/esm/cli/conn/conn-delete.js +0 -21
  215. package/esm/cli/conn/conn-delete.js.map +0 -1
  216. package/esm/cli/conn/conn-describe.js +0 -16
  217. package/esm/cli/conn/conn-describe.js.map +0 -1
  218. package/esm/cli/conn/conn-list.js +0 -16
  219. package/esm/cli/conn/conn-list.js.map +0 -1
  220. package/esm/cli/conn/conn-save.js +0 -106
  221. package/esm/cli/conn/conn-save.js.map +0 -1
  222. package/esm/cli/conn/conn.js +0 -16
  223. package/esm/cli/conn/conn.js.map +0 -1
  224. package/esm/cli/email/email-template-export.js +0 -42
  225. package/esm/cli/email/email-template-export.js.map +0 -1
  226. package/esm/cli/email/email-template-import.js +0 -47
  227. package/esm/cli/email/email-template-import.js.map +0 -1
  228. package/esm/cli/email/email-template-list.js +0 -24
  229. package/esm/cli/email/email-template-list.js.map +0 -1
  230. package/esm/cli/email/email-template.js +0 -13
  231. package/esm/cli/email/email-template.js.map +0 -1
  232. package/esm/cli/email/email.js +0 -9
  233. package/esm/cli/email/email.js.map +0 -1
  234. package/esm/cli/esv/esv-apply.js +0 -61
  235. package/esm/cli/esv/esv-apply.js.map +0 -1
  236. package/esm/cli/esv/esv-secret-create.js +0 -29
  237. package/esm/cli/esv/esv-secret-create.js.map +0 -1
  238. package/esm/cli/esv/esv-secret-delete.js +0 -34
  239. package/esm/cli/esv/esv-secret-delete.js.map +0 -1
  240. package/esm/cli/esv/esv-secret-describe.js +0 -24
  241. package/esm/cli/esv/esv-secret-describe.js.map +0 -1
  242. package/esm/cli/esv/esv-secret-export.js +0 -34
  243. package/esm/cli/esv/esv-secret-export.js.map +0 -1
  244. package/esm/cli/esv/esv-secret-import.js +0 -20
  245. package/esm/cli/esv/esv-secret-import.js.map +0 -1
  246. package/esm/cli/esv/esv-secret-list.js +0 -24
  247. package/esm/cli/esv/esv-secret-list.js.map +0 -1
  248. package/esm/cli/esv/esv-secret-set.js +0 -24
  249. package/esm/cli/esv/esv-secret-set.js.map +0 -1
  250. package/esm/cli/esv/esv-secret-version-activate.js +0 -28
  251. package/esm/cli/esv/esv-secret-version-activate.js.map +0 -1
  252. package/esm/cli/esv/esv-secret-version-create.js +0 -29
  253. package/esm/cli/esv/esv-secret-version-create.js.map +0 -1
  254. package/esm/cli/esv/esv-secret-version-deactivate.js +0 -28
  255. package/esm/cli/esv/esv-secret-version-deactivate.js.map +0 -1
  256. package/esm/cli/esv/esv-secret-version-delete.js +0 -34
  257. package/esm/cli/esv/esv-secret-version-delete.js.map +0 -1
  258. package/esm/cli/esv/esv-secret-version-list.js +0 -24
  259. package/esm/cli/esv/esv-secret-version-list.js.map +0 -1
  260. package/esm/cli/esv/esv-secret-version.js +0 -17
  261. package/esm/cli/esv/esv-secret-version.js.map +0 -1
  262. package/esm/cli/esv/esv-secret.js +0 -25
  263. package/esm/cli/esv/esv-secret.js.map +0 -1
  264. package/esm/cli/esv/esv-variable-create.js +0 -24
  265. package/esm/cli/esv/esv-variable-create.js.map +0 -1
  266. package/esm/cli/esv/esv-variable-delete.js +0 -35
  267. package/esm/cli/esv/esv-variable-delete.js.map +0 -1
  268. package/esm/cli/esv/esv-variable-describe.js +0 -24
  269. package/esm/cli/esv/esv-variable-describe.js.map +0 -1
  270. package/esm/cli/esv/esv-variable-export.js +0 -35
  271. package/esm/cli/esv/esv-variable-export.js.map +0 -1
  272. package/esm/cli/esv/esv-variable-import.js +0 -20
  273. package/esm/cli/esv/esv-variable-import.js.map +0 -1
  274. package/esm/cli/esv/esv-variable-list.js +0 -24
  275. package/esm/cli/esv/esv-variable-list.js.map +0 -1
  276. package/esm/cli/esv/esv-variable-set.js +0 -31
  277. package/esm/cli/esv/esv-variable-set.js.map +0 -1
  278. package/esm/cli/esv/esv-variable.js +0 -23
  279. package/esm/cli/esv/esv-variable.js.map +0 -1
  280. package/esm/cli/esv/esv.js +0 -12
  281. package/esm/cli/esv/esv.js.map +0 -1
  282. package/esm/cli/idm/idm-count.js +0 -24
  283. package/esm/cli/idm/idm-count.js.map +0 -1
  284. package/esm/cli/idm/idm-export.js +0 -50
  285. package/esm/cli/idm/idm-export.js.map +0 -1
  286. package/esm/cli/idm/idm-import.js +0 -54
  287. package/esm/cli/idm/idm-import.js.map +0 -1
  288. package/esm/cli/idm/idm-list.js +0 -28
  289. package/esm/cli/idm/idm-list.js.map +0 -1
  290. package/esm/cli/idm/idm.js +0 -14
  291. package/esm/cli/idm/idm.js.map +0 -1
  292. package/esm/cli/idp/idp-export.js +0 -44
  293. package/esm/cli/idp/idp-export.js.map +0 -1
  294. package/esm/cli/idp/idp-import.js +0 -56
  295. package/esm/cli/idp/idp-import.js.map +0 -1
  296. package/esm/cli/idp/idp-list.js +0 -28
  297. package/esm/cli/idp/idp-list.js.map +0 -1
  298. package/esm/cli/idp/idp.js +0 -12
  299. package/esm/cli/idp/idp.js.map +0 -1
  300. package/esm/cli/info/info.js +0 -52
  301. package/esm/cli/info/info.js.map +0 -1
  302. package/esm/cli/journey/journey-delete.js +0 -36
  303. package/esm/cli/journey/journey-delete.js.map +0 -1
  304. package/esm/cli/journey/journey-describe.js +0 -133
  305. package/esm/cli/journey/journey-describe.js.map +0 -1
  306. package/esm/cli/journey/journey-disable.js +0 -35
  307. package/esm/cli/journey/journey-disable.js.map +0 -1
  308. package/esm/cli/journey/journey-enable.js +0 -35
  309. package/esm/cli/journey/journey-enable.js.map +0 -1
  310. package/esm/cli/journey/journey-export.js +0 -63
  311. package/esm/cli/journey/journey-export.js.map +0 -1
  312. package/esm/cli/journey/journey-import.js +0 -59
  313. package/esm/cli/journey/journey-import.js.map +0 -1
  314. package/esm/cli/journey/journey-list.js +0 -25
  315. package/esm/cli/journey/journey-list.js.map +0 -1
  316. package/esm/cli/journey/journey-prune.js +0 -42
  317. package/esm/cli/journey/journey-prune.js.map +0 -1
  318. package/esm/cli/journey/journey.js +0 -22
  319. package/esm/cli/journey/journey.js.map +0 -1
  320. package/esm/cli/log/log-fetch.js +0 -127
  321. package/esm/cli/log/log-fetch.js.map +0 -1
  322. package/esm/cli/log/log-key-delete.js +0 -33
  323. package/esm/cli/log/log-key-delete.js.map +0 -1
  324. package/esm/cli/log/log-key-describe.js +0 -20
  325. package/esm/cli/log/log-key-describe.js.map +0 -1
  326. package/esm/cli/log/log-key-list.js +0 -24
  327. package/esm/cli/log/log-key-list.js.map +0 -1
  328. package/esm/cli/log/log-key.js +0 -13
  329. package/esm/cli/log/log-key.js.map +0 -1
  330. package/esm/cli/log/log-list.js +0 -89
  331. package/esm/cli/log/log-list.js.map +0 -1
  332. package/esm/cli/log/log-tail.js +0 -81
  333. package/esm/cli/log/log-tail.js.map +0 -1
  334. package/esm/cli/log/log.js +0 -18
  335. package/esm/cli/log/log.js.map +0 -1
  336. package/esm/cli/oauth/oauth-client-delete.js +0 -20
  337. package/esm/cli/oauth/oauth-client-delete.js.map +0 -1
  338. package/esm/cli/oauth/oauth-client-describe.js +0 -20
  339. package/esm/cli/oauth/oauth-client-describe.js.map +0 -1
  340. package/esm/cli/oauth/oauth-client-export.js +0 -50
  341. package/esm/cli/oauth/oauth-client-export.js.map +0 -1
  342. package/esm/cli/oauth/oauth-client-import.js +0 -55
  343. package/esm/cli/oauth/oauth-client-import.js.map +0 -1
  344. package/esm/cli/oauth/oauth-client-list.js +0 -24
  345. package/esm/cli/oauth/oauth-client-list.js.map +0 -1
  346. package/esm/cli/oauth/oauth-client.js +0 -22
  347. package/esm/cli/oauth/oauth-client.js.map +0 -1
  348. package/esm/cli/oauth/oauth.js +0 -11
  349. package/esm/cli/oauth/oauth.js.map +0 -1
  350. package/esm/cli/realm/realm-add-custom-domain.js +0 -24
  351. package/esm/cli/realm/realm-add-custom-domain.js.map +0 -1
  352. package/esm/cli/realm/realm-describe.js +0 -23
  353. package/esm/cli/realm/realm-describe.js.map +0 -1
  354. package/esm/cli/realm/realm-list.js +0 -23
  355. package/esm/cli/realm/realm-list.js.map +0 -1
  356. package/esm/cli/realm/realm-remove-custom-domain.js +0 -26
  357. package/esm/cli/realm/realm-remove-custom-domain.js.map +0 -1
  358. package/esm/cli/realm/realm.js +0 -21
  359. package/esm/cli/realm/realm.js.map +0 -1
  360. package/esm/cli/saml/saml-cot-export.js +0 -42
  361. package/esm/cli/saml/saml-cot-export.js.map +0 -1
  362. package/esm/cli/saml/saml-cot-import.js +0 -48
  363. package/esm/cli/saml/saml-cot-import.js.map +0 -1
  364. package/esm/cli/saml/saml-cot-list.js +0 -25
  365. package/esm/cli/saml/saml-cot-list.js.map +0 -1
  366. package/esm/cli/saml/saml-cot.js +0 -13
  367. package/esm/cli/saml/saml-cot.js.map +0 -1
  368. package/esm/cli/saml/saml-delete.js +0 -37
  369. package/esm/cli/saml/saml-delete.js.map +0 -1
  370. package/esm/cli/saml/saml-describe.js +0 -25
  371. package/esm/cli/saml/saml-describe.js.map +0 -1
  372. package/esm/cli/saml/saml-export.js +0 -48
  373. package/esm/cli/saml/saml-export.js.map +0 -1
  374. package/esm/cli/saml/saml-import.js +0 -56
  375. package/esm/cli/saml/saml-import.js.map +0 -1
  376. package/esm/cli/saml/saml-list.js +0 -25
  377. package/esm/cli/saml/saml-list.js.map +0 -1
  378. package/esm/cli/saml/saml-metadata-export.js +0 -42
  379. package/esm/cli/saml/saml-metadata-export.js.map +0 -1
  380. package/esm/cli/saml/saml-metadata.js +0 -9
  381. package/esm/cli/saml/saml-metadata.js.map +0 -1
  382. package/esm/cli/saml/saml.js +0 -20
  383. package/esm/cli/saml/saml.js.map +0 -1
  384. package/esm/cli/script/script-delete.js +0 -37
  385. package/esm/cli/script/script-delete.js.map +0 -1
  386. package/esm/cli/script/script-describe.js +0 -20
  387. package/esm/cli/script/script-describe.js.map +0 -1
  388. package/esm/cli/script/script-export.js +0 -52
  389. package/esm/cli/script/script-export.js.map +0 -1
  390. package/esm/cli/script/script-import.js +0 -45
  391. package/esm/cli/script/script-import.js.map +0 -1
  392. package/esm/cli/script/script-list.js +0 -25
  393. package/esm/cli/script/script-list.js.map +0 -1
  394. package/esm/cli/script/script.js +0 -18
  395. package/esm/cli/script/script.js.map +0 -1
  396. package/esm/cli/service/service-delete.js +0 -23
  397. package/esm/cli/service/service-delete.js.map +0 -1
  398. package/esm/cli/service/service-export.js +0 -41
  399. package/esm/cli/service/service-export.js.map +0 -1
  400. package/esm/cli/service/service-import.js +0 -65
  401. package/esm/cli/service/service-import.js.map +0 -1
  402. package/esm/cli/service/service-list.js +0 -20
  403. package/esm/cli/service/service-list.js.map +0 -1
  404. package/esm/cli/service/service.js +0 -14
  405. package/esm/cli/service/service.js.map +0 -1
  406. package/esm/cli/shell/shell.js +0 -53
  407. package/esm/cli/shell/shell.js.map +0 -1
  408. package/esm/cli/theme/theme-delete.js +0 -42
  409. package/esm/cli/theme/theme-delete.js.map +0 -1
  410. package/esm/cli/theme/theme-export.js +0 -48
  411. package/esm/cli/theme/theme-export.js.map +0 -1
  412. package/esm/cli/theme/theme-import.js +0 -54
  413. package/esm/cli/theme/theme-import.js.map +0 -1
  414. package/esm/cli/theme/theme-list.js +0 -25
  415. package/esm/cli/theme/theme-list.js.map +0 -1
  416. package/esm/cli/theme/theme.js +0 -14
  417. package/esm/cli/theme/theme.js.map +0 -1
  418. package/esm/help/SampleData.js +0 -7
  419. package/esm/help/SampleData.js.map +0 -1
  420. package/esm/launch.js +0 -15
  421. package/esm/launch.js.map +0 -1
  422. package/esm/loader.js +0 -40
  423. package/esm/loader.js.map +0 -1
  424. package/esm/ops/AdminOps.js +0 -936
  425. package/esm/ops/AdminOps.js.map +0 -1
  426. package/esm/ops/AgentOps.js +0 -1061
  427. package/esm/ops/AgentOps.js.map +0 -1
  428. package/esm/ops/ApplicationOps.js +0 -336
  429. package/esm/ops/ApplicationOps.js.map +0 -1
  430. package/esm/ops/AuthenticateOps.js +0 -23
  431. package/esm/ops/AuthenticateOps.js.map +0 -1
  432. package/esm/ops/AuthenticationSettingsOps.js +0 -89
  433. package/esm/ops/AuthenticationSettingsOps.js.map +0 -1
  434. package/esm/ops/CirclesOfTrustOps.js +0 -265
  435. package/esm/ops/CirclesOfTrustOps.js.map +0 -1
  436. package/esm/ops/ConfigOps.js +0 -213
  437. package/esm/ops/ConfigOps.js.map +0 -1
  438. package/esm/ops/ConnectionProfileOps.js +0 -132
  439. package/esm/ops/ConnectionProfileOps.js.map +0 -1
  440. package/esm/ops/EmailTemplateOps.js +0 -365
  441. package/esm/ops/EmailTemplateOps.js.map +0 -1
  442. package/esm/ops/IdmOps.js +0 -303
  443. package/esm/ops/IdmOps.js.map +0 -1
  444. package/esm/ops/IdpOps.js +0 -267
  445. package/esm/ops/IdpOps.js.map +0 -1
  446. package/esm/ops/JourneyOps.js +0 -815
  447. package/esm/ops/JourneyOps.js.map +0 -1
  448. package/esm/ops/LogOps.js +0 -141
  449. package/esm/ops/LogOps.js.map +0 -1
  450. package/esm/ops/NodeOps.js +0 -97
  451. package/esm/ops/NodeOps.js.map +0 -1
  452. package/esm/ops/OAuth2ClientOps.js +0 -287
  453. package/esm/ops/OAuth2ClientOps.js.map +0 -1
  454. package/esm/ops/OrganizationOps.js +0 -20
  455. package/esm/ops/OrganizationOps.js.map +0 -1
  456. package/esm/ops/PolicyOps.js +0 -515
  457. package/esm/ops/PolicyOps.js.map +0 -1
  458. package/esm/ops/PolicySetOps.js +0 -388
  459. package/esm/ops/PolicySetOps.js.map +0 -1
  460. package/esm/ops/RealmOps.js +0 -116
  461. package/esm/ops/RealmOps.js.map +0 -1
  462. package/esm/ops/ResourceTypeOps.js +0 -439
  463. package/esm/ops/ResourceTypeOps.js.map +0 -1
  464. package/esm/ops/Saml2Ops.js +0 -364
  465. package/esm/ops/Saml2Ops.js.map +0 -1
  466. package/esm/ops/Saml2Ops.test_.js.map +0 -1
  467. package/esm/ops/ScriptOps.js +0 -520
  468. package/esm/ops/ScriptOps.js.map +0 -1
  469. package/esm/ops/ServiceOps.js +0 -275
  470. package/esm/ops/ServiceOps.js.map +0 -1
  471. package/esm/ops/ThemeOps.js +0 -382
  472. package/esm/ops/ThemeOps.js.map +0 -1
  473. package/esm/ops/cloud/AdminFederationOps.js +0 -225
  474. package/esm/ops/cloud/AdminFederationOps.js.map +0 -1
  475. package/esm/ops/cloud/SecretsOps.js +0 -471
  476. package/esm/ops/cloud/SecretsOps.js.map +0 -1
  477. package/esm/ops/cloud/VariablesOps.js +0 -316
  478. package/esm/ops/cloud/VariablesOps.js.map +0 -1
  479. package/esm/ops/templates/GenericExtensionAttributesTemplate.json +0 -412
  480. package/esm/ops/templates/OAuth2ClientTemplate.json +0 -270
  481. package/esm/ops/templates/OAuth2TrustedJwtIssuerTemplate.json +0 -38
  482. package/esm/ops/templates/OrgModelUserAttributesTemplate.json +0 -149
  483. package/esm/ops/templates/autoaccess/IPAddresses.json +0 -202
  484. package/esm/ops/templates/autoaccess/UserAgents.json +0 -35
  485. package/esm/ops/templates/autoaccess/Usernames.json +0 -203
  486. package/esm/ops/templates/cloud/managed.json +0 -4119
  487. package/esm/ops/utils/OpsUtils.js +0 -9
  488. package/esm/ops/utils/OpsUtils.js.map +0 -1
  489. package/esm/ops/utils/Wordwrap.js +0 -5
  490. package/esm/ops/utils/Wordwrap.js.map +0 -1
  491. package/esm/storage/StaticStorage.js +0 -12
  492. package/esm/storage/StaticStorage.js.map +0 -1
  493. package/esm/utils/Config.js +0 -200
  494. package/esm/utils/Config.js.map +0 -1
  495. package/esm/utils/Console.js +0 -614
  496. package/esm/utils/Console.js.map +0 -1
  497. package/esm/utils/Version.js +0 -138
  498. package/esm/utils/Version.js.map +0 -1
@@ -1,364 +0,0 @@
1
- import { frodo, FrodoError } from '@rockcarver/frodo-lib';
2
- import fs from 'fs';
3
- import { createObjectTable, createProgressIndicator, createTable, debugMessage, printError, printMessage, stopProgressIndicator, updateProgressIndicator } from '../utils/Console';
4
- const {
5
- decodeBase64,
6
- saveTextToFile,
7
- getFilePath,
8
- getWorkingDirectory
9
- } = frodo.utils;
10
- const {
11
- getTypedFilename,
12
- saveJsonToFile,
13
- getRealmString
14
- } = frodo.utils;
15
- const {
16
- readSaml2ProviderStubs,
17
- readSaml2Provider,
18
- readSaml2ProviderStub,
19
- getSaml2ProviderMetadataUrl,
20
- getSaml2ProviderMetadata,
21
- exportSaml2Provider,
22
- exportSaml2Providers,
23
- importSaml2Provider,
24
- importSaml2Providers
25
- } = frodo.saml2.entityProvider;
26
- const roleMap = {
27
- identityProvider: 'IDP',
28
- serviceProvider: 'SP',
29
- attributeQueryProvider: 'AttrQuery',
30
- xacmlPolicyEnforcementPoint: 'XACML PEP'
31
- };
32
-
33
- /**
34
- * Get a one-line description of the saml2 provider object
35
- * @param {Saml2ProviderSkeleton} saml2ProviderObj saml2 provider object to describe
36
- * @returns {string} a one-line description
37
- */
38
- export function getOneLineDescription(saml2ProviderObj) {
39
- const roles = [];
40
- for (const [key, value] of Object.entries(roleMap)) {
41
- if (saml2ProviderObj[key]) {
42
- roles.push(value);
43
- }
44
- }
45
- const description = `[${saml2ProviderObj.entityId['brightCyan']}]${' (' + saml2ProviderObj.entityLocation}${roles.length ? ' ' + roles.join(', ') + ')' : ')'}`;
46
- return description;
47
- }
48
-
49
- /**
50
- * Get markdown table header
51
- * @returns {string} markdown table header
52
- */
53
- export function getTableHeaderMd() {
54
- let markdown = '';
55
- markdown += '| Entity Id | Location | Role(s) |\n';
56
- markdown += '| --------- | -------- | ------- |';
57
- return markdown;
58
- }
59
-
60
- /**
61
- * Get a table-row of the saml2 provider in markdown
62
- * @param {Saml2ProviderSkeleton} saml2ProviderObj saml2 provider object to describe
63
- * @returns {string} a table-row of the saml2 provider in markdown
64
- */
65
- export function getTableRowMd(saml2ProviderObj) {
66
- const roles = [];
67
- for (const [key, value] of Object.entries(roleMap)) {
68
- if (saml2ProviderObj[key]) {
69
- roles.push(value);
70
- }
71
- }
72
- const row = `| ${saml2ProviderObj.entityId} | ${saml2ProviderObj.entityLocation} | ${roles.length ? roles.join(', ') : ''} |`;
73
- return row;
74
- }
75
-
76
- /**
77
- * List entity providers
78
- * @param {boolean} long Long list format with details
79
- * @returns {Promise<boolean>} true if successful, false otherwise
80
- */
81
- export async function listSaml2Providers(long = false) {
82
- try {
83
- const providerList = await readSaml2ProviderStubs();
84
- providerList.sort((a, b) => a._id.localeCompare(b._id));
85
- if (!long) {
86
- for (const provider of providerList) {
87
- printMessage(`${provider.entityId}`, 'data');
88
- }
89
- return true;
90
- } else {
91
- const table = createTable(['Entity Id'['brightCyan'], 'Location'['brightCyan'], 'Role(s)'['brightCyan']]);
92
- for (const provider of providerList) {
93
- table.push([provider.entityId, provider.location, provider.roles.map(role => roleMap[role]).join(', ')]);
94
- }
95
- printMessage(table.toString(), 'data');
96
- return true;
97
- }
98
- } catch (error) {
99
- printError(error);
100
- }
101
- return false;
102
- }
103
-
104
- /**
105
- * Describe an entity provider's configuration
106
- * @param {String} entityId Provider entity id
107
- * @returns {Promise<boolean>} true if successful, false otherwise
108
- */
109
- export async function describeSaml2Provider(entityId) {
110
- try {
111
- const stub = await readSaml2ProviderStub(entityId);
112
- const {
113
- location
114
- } = stub;
115
- const roles = stub.roles.map(role => roleMap[role]).join(', ');
116
- const rawProviderData = await readSaml2Provider(entityId);
117
- delete rawProviderData._id;
118
- delete rawProviderData._rev;
119
- rawProviderData.location = location;
120
- rawProviderData.roles = roles;
121
- rawProviderData.metadataUrl = getSaml2ProviderMetadataUrl(entityId);
122
- const table = createObjectTable(rawProviderData);
123
- printMessage(table.toString(), 'data');
124
- return true;
125
- } catch (error) {
126
- printError(error);
127
- }
128
- return false;
129
- }
130
-
131
- /**
132
- * Export provider metadata to file
133
- * @param {String} entityId Provider entity id
134
- * @param {String} file Optional filename
135
- * @returns {Promise<boolean>} true if successful, false otherwise
136
- */
137
- export async function exportSaml2MetadataToFile(entityId, file = null) {
138
- let indicatorId;
139
- try {
140
- if (!file) {
141
- file = getTypedFilename(entityId, 'metadata', 'xml');
142
- }
143
- const filePath = getFilePath(file, true);
144
- indicatorId = createProgressIndicator('determinate', 1, `Exporting metadata for: ${entityId}`);
145
- updateProgressIndicator(indicatorId, `Writing file ${filePath}`);
146
- const metaData = await getSaml2ProviderMetadata(entityId);
147
- saveTextToFile(metaData, filePath);
148
- updateProgressIndicator(indicatorId, `Exported provider ${entityId}`);
149
- stopProgressIndicator(indicatorId, `Exported ${entityId['brightCyan']} metadata to ${filePath['brightCyan']}.`);
150
- return true;
151
- } catch (error) {
152
- stopProgressIndicator(indicatorId, `Error exporting saml2 metadata`, 'fail');
153
- printError(error);
154
- }
155
- return false;
156
- }
157
-
158
- /**
159
- * Export a single entity provider to file
160
- * @param {String} entityId Provider entity id
161
- * @param {String} file Optional filename
162
- * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
163
- * @returns {Promise<boolean>} true if successful, false otherwise
164
- */
165
- export async function exportSaml2ProviderToFile(entityId, file = null, includeMeta = true, options = {
166
- deps: true
167
- }) {
168
- debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: start [entityId=${entityId}, file=${file}]`);
169
- let indicatorId;
170
- try {
171
- if (!file) {
172
- file = getTypedFilename(entityId, 'saml');
173
- }
174
- const filePath = getFilePath(file, true);
175
- indicatorId = createProgressIndicator('determinate', 1, `Exporting provider ${entityId}`);
176
- const fileData = await exportSaml2Provider(entityId, options);
177
- saveJsonToFile(fileData, filePath, includeMeta);
178
- updateProgressIndicator(indicatorId, `Exported provider ${entityId}`);
179
- stopProgressIndicator(indicatorId,
180
- // @ts-expect-error - brightCyan colors the string, even though it is not a property of string
181
- `Exported ${entityId.brightCyan} to ${filePath.brightCyan}.`);
182
- debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: end [entityId=${entityId}, file=${filePath}]`);
183
- return true;
184
- } catch (error) {
185
- stopProgressIndicator(indicatorId, `Error exporting saml2 provider`, 'fail');
186
- printError(error);
187
- }
188
- return false;
189
- }
190
-
191
- /**
192
- * Export all entity providers to one file
193
- * @param {String} file Optional filename
194
- * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
195
- * @returns {Promise<boolean>} true if successful, false otherwise
196
- */
197
- export async function exportSaml2ProvidersToFile(file = null, includeMeta = true, options = {
198
- deps: true
199
- }) {
200
- debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: start [file=${file}]`);
201
- try {
202
- if (!file) {
203
- file = getTypedFilename(`all${getRealmString()}Providers`, 'saml');
204
- }
205
- const exportData = await exportSaml2Providers(options);
206
- saveJsonToFile(exportData, getFilePath(file, true), includeMeta);
207
- debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: end [file=${file}]`);
208
- return true;
209
- } catch (error) {
210
- printError(error);
211
- }
212
- return false;
213
- }
214
-
215
- /**
216
- * Export all entity providers to individual files
217
- * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true
218
- * @returns {Promise<boolean>} true if successful, false otherwise
219
- */
220
- export async function exportSaml2ProvidersToFiles(includeMeta = true, options = {
221
- deps: true
222
- }) {
223
- const errors = [];
224
- let indicatorId;
225
- try {
226
- const stubs = await readSaml2ProviderStubs();
227
- if (stubs.length > 0) {
228
- indicatorId = createProgressIndicator('determinate', stubs.length, 'Exporting providers');
229
- for (const stub of stubs) {
230
- try {
231
- const file = getFilePath(getTypedFilename(stub.entityId, 'saml'), true);
232
- const fileData = await exportSaml2Provider(stub.entityId, options);
233
- saveJsonToFile(fileData, file, includeMeta);
234
- updateProgressIndicator(indicatorId, `Exported provider ${stub.entityId}`);
235
- } catch (error) {
236
- errors.push(error);
237
- }
238
- }
239
- if (errors.length > 0) {
240
- throw new FrodoError(`Error exporting providers`, errors);
241
- }
242
- stopProgressIndicator(indicatorId, `${stubs.length} providers exported.`);
243
- return true;
244
- } else {
245
- printMessage('No entity providers found.', 'info');
246
- return true;
247
- }
248
- } catch (error) {
249
- stopProgressIndicator(indicatorId, `Error exporting providers`, 'fail');
250
- printError(error);
251
- }
252
- return false;
253
- }
254
-
255
- /**
256
- * Import a SAML entity provider by entity id from file
257
- * @param {String} entityId Provider entity id
258
- * @param {String} file Import file name
259
- * @param {Saml2ProviderImportOptions} options import options
260
- * @returns {Promise<boolean>} true if successful, false otherwise
261
- */
262
- export async function importSaml2ProviderFromFile(entityId, file, options = {
263
- deps: true
264
- }) {
265
- let indicatorId;
266
- try {
267
- const data = fs.readFileSync(getFilePath(file), 'utf8');
268
- const fileData = JSON.parse(data);
269
- indicatorId = createProgressIndicator('indeterminate', 0, `Importing ${entityId}...`);
270
- await importSaml2Provider(entityId, fileData, options);
271
- stopProgressIndicator(indicatorId, `Imported ${entityId}.`, 'success');
272
- return true;
273
- } catch (error) {
274
- stopProgressIndicator(indicatorId, `Error importing provider ${entityId}`, 'fail');
275
- printError(error);
276
- }
277
- return false;
278
- }
279
-
280
- /**
281
- * Import a SAML entity provider by entity id from file
282
- * @param {String} file Import file name
283
- * @param {Saml2ProviderImportOptions} options import options
284
- * @returns {Promise<boolean>} true if successful, false otherwise
285
- */
286
- export async function importFirstSaml2ProviderFromFile(file, options = {
287
- deps: true
288
- }) {
289
- let indicatorId;
290
- try {
291
- const data = fs.readFileSync(getFilePath(file), 'utf8');
292
- const fileData = JSON.parse(data);
293
- // pick the first provider and run with it
294
- const entityId64 = Object.keys(fileData.saml.remote)[0] || Object.keys(fileData.saml.hosted)[0];
295
- const entityId = decodeBase64(entityId64);
296
- indicatorId = createProgressIndicator('indeterminate', 0, `Importing ${entityId}...`);
297
- await importSaml2Provider(entityId, fileData, options);
298
- stopProgressIndicator(indicatorId, `Imported ${entityId}.`, 'success');
299
- return true;
300
- } catch (error) {
301
- stopProgressIndicator(indicatorId, `Error importing provider`, 'fail');
302
- printError(error);
303
- }
304
- return false;
305
- }
306
-
307
- /**
308
- * Import all SAML entity providers from file
309
- * @param {String} file Import file name
310
- * @param {Saml2ProviderImportOptions} options import options
311
- * @returns {Promise<boolean>} true if successful, false otherwise
312
- */
313
- export async function importSaml2ProvidersFromFile(file, options = {
314
- deps: true
315
- }) {
316
- try {
317
- const data = fs.readFileSync(getFilePath(file), 'utf8');
318
- const fileData = JSON.parse(data);
319
- await importSaml2Providers(fileData, options);
320
- return true;
321
- } catch (error) {
322
- printError(error);
323
- }
324
- return false;
325
- }
326
-
327
- /**
328
- * Import all SAML entity providers from all *.saml.json files in the current directory
329
- * @param {Saml2ProviderImportOptions} options import options
330
- * @returns {Promise<boolean>} true if successful, false otherwise
331
- */
332
- export async function importSaml2ProvidersFromFiles(options = {
333
- deps: true
334
- }) {
335
- const errors = [];
336
- let indicatorId;
337
- try {
338
- const names = fs.readdirSync(getWorkingDirectory());
339
- const jsonFiles = names.filter(name => name.toLowerCase().endsWith('.saml.json')).map(name => getFilePath(name));
340
- indicatorId = createProgressIndicator('determinate', jsonFiles.length, 'Importing providers...');
341
- let total = 0;
342
- for (const file of jsonFiles) {
343
- try {
344
- const data = fs.readFileSync(file, 'utf8');
345
- const fileData = JSON.parse(data);
346
- const result = await importSaml2Providers(fileData, options);
347
- total += result.length;
348
- updateProgressIndicator(indicatorId, `Imported ${result.length} provider(s) from ${file}.`);
349
- } catch (error) {
350
- errors.push(error);
351
- }
352
- }
353
- if (errors.length > 0) {
354
- throw new FrodoError(`Error importing providers`, errors);
355
- }
356
- stopProgressIndicator(indicatorId, `Imported ${total} provider(s) from ${jsonFiles.length} file(s).`);
357
- return true;
358
- } catch (error) {
359
- stopProgressIndicator(indicatorId, `Error importing providers`);
360
- printError(error);
361
- }
362
- return false;
363
- }
364
- //# sourceMappingURL=Saml2Ops.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Saml2Ops.js","names":["frodo","FrodoError","fs","createObjectTable","createProgressIndicator","createTable","debugMessage","printError","printMessage","stopProgressIndicator","updateProgressIndicator","decodeBase64","saveTextToFile","getFilePath","getWorkingDirectory","utils","getTypedFilename","saveJsonToFile","getRealmString","readSaml2ProviderStubs","readSaml2Provider","readSaml2ProviderStub","getSaml2ProviderMetadataUrl","getSaml2ProviderMetadata","exportSaml2Provider","exportSaml2Providers","importSaml2Provider","importSaml2Providers","saml2","entityProvider","roleMap","identityProvider","serviceProvider","attributeQueryProvider","xacmlPolicyEnforcementPoint","getOneLineDescription","saml2ProviderObj","roles","key","value","Object","entries","push","description","entityId","entityLocation","length","join","getTableHeaderMd","markdown","getTableRowMd","row","listSaml2Providers","long","providerList","sort","a","b","_id","localeCompare","provider","table","location","map","role","toString","error","describeSaml2Provider","stub","rawProviderData","_rev","metadataUrl","exportSaml2MetadataToFile","file","indicatorId","filePath","metaData","exportSaml2ProviderToFile","includeMeta","options","deps","fileData","brightCyan","exportSaml2ProvidersToFile","exportData","exportSaml2ProvidersToFiles","errors","stubs","importSaml2ProviderFromFile","data","readFileSync","JSON","parse","importFirstSaml2ProviderFromFile","entityId64","keys","saml","remote","hosted","importSaml2ProvidersFromFile","importSaml2ProvidersFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","total","result"],"sources":["../../src/ops/Saml2Ops.ts"],"sourcesContent":["import { frodo, FrodoError } from '@rockcarver/frodo-lib';\nimport { type Saml2ProviderSkeleton } from '@rockcarver/frodo-lib/types/api/Saml2Api';\nimport type {\n Saml2EntitiesExportOptions,\n Saml2EntitiesImportOptions,\n Saml2ExportInterface,\n} from '@rockcarver/frodo-lib/types/ops/Saml2Ops';\nimport fs from 'fs';\n\nimport {\n createObjectTable,\n createProgressIndicator,\n createTable,\n debugMessage,\n printError,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from '../utils/Console';\n\nconst { decodeBase64, saveTextToFile, getFilePath, getWorkingDirectory } =\n frodo.utils;\nconst { getTypedFilename, saveJsonToFile, getRealmString } = frodo.utils;\nconst {\n readSaml2ProviderStubs,\n readSaml2Provider,\n readSaml2ProviderStub,\n getSaml2ProviderMetadataUrl,\n getSaml2ProviderMetadata,\n exportSaml2Provider,\n exportSaml2Providers,\n importSaml2Provider,\n importSaml2Providers,\n} = frodo.saml2.entityProvider;\n\nconst roleMap = {\n identityProvider: 'IDP',\n serviceProvider: 'SP',\n attributeQueryProvider: 'AttrQuery',\n xacmlPolicyEnforcementPoint: 'XACML PEP',\n};\n\n/**\n * Get a one-line description of the saml2 provider object\n * @param {Saml2ProviderSkeleton} saml2ProviderObj saml2 provider object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(\n saml2ProviderObj: Saml2ProviderSkeleton\n): string {\n const roles: string[] = [];\n for (const [key, value] of Object.entries(roleMap)) {\n if (saml2ProviderObj[key]) {\n roles.push(value);\n }\n }\n const description = `[${saml2ProviderObj.entityId['brightCyan']}]${\n ' (' + saml2ProviderObj.entityLocation\n }${roles.length ? ' ' + roles.join(', ') + ')' : ')'}`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Entity Id | Location | Role(s) |\\n';\n markdown += '| --------- | -------- | ------- |';\n return markdown;\n}\n\n/**\n * Get a table-row of the saml2 provider in markdown\n * @param {Saml2ProviderSkeleton} saml2ProviderObj saml2 provider object to describe\n * @returns {string} a table-row of the saml2 provider in markdown\n */\nexport function getTableRowMd(saml2ProviderObj: Saml2ProviderSkeleton): string {\n const roles: string[] = [];\n for (const [key, value] of Object.entries(roleMap)) {\n if (saml2ProviderObj[key]) {\n roles.push(value);\n }\n }\n const row = `| ${saml2ProviderObj.entityId} | ${\n saml2ProviderObj.entityLocation\n } | ${roles.length ? roles.join(', ') : ''} |`;\n return row;\n}\n\n/**\n * List entity providers\n * @param {boolean} long Long list format with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listSaml2Providers(\n long: boolean = false\n): Promise<boolean> {\n try {\n const providerList = await readSaml2ProviderStubs();\n providerList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n for (const provider of providerList) {\n printMessage(`${provider.entityId}`, 'data');\n }\n return true;\n } else {\n const table = createTable([\n 'Entity Id'['brightCyan'],\n 'Location'['brightCyan'],\n 'Role(s)'['brightCyan'],\n ]);\n for (const provider of providerList) {\n table.push([\n provider.entityId,\n provider.location,\n provider.roles.map((role) => roleMap[role]).join(', '),\n ]);\n }\n printMessage(table.toString(), 'data');\n return true;\n }\n } catch (error) {\n printError(error);\n }\n return false;\n}\n\n/**\n * Describe an entity provider's configuration\n * @param {String} entityId Provider entity id\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeSaml2Provider(\n entityId: string\n): Promise<boolean> {\n try {\n const stub = await readSaml2ProviderStub(entityId);\n const { location } = stub;\n const roles = stub.roles.map((role: string) => roleMap[role]).join(', ');\n const rawProviderData = await readSaml2Provider(entityId);\n delete rawProviderData._id;\n delete rawProviderData._rev;\n rawProviderData.location = location;\n rawProviderData.roles = roles;\n rawProviderData.metadataUrl = getSaml2ProviderMetadataUrl(entityId);\n const table = createObjectTable(rawProviderData);\n printMessage(table.toString(), 'data');\n return true;\n } catch (error) {\n printError(error);\n }\n return false;\n}\n\n/**\n * Export provider metadata to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportSaml2MetadataToFile(\n entityId: string,\n file: string = null\n): Promise<boolean> {\n let indicatorId: string;\n try {\n if (!file) {\n file = getTypedFilename(entityId, 'metadata', 'xml');\n }\n const filePath = getFilePath(file, true);\n indicatorId = createProgressIndicator(\n 'determinate',\n 1,\n `Exporting metadata for: ${entityId}`\n );\n updateProgressIndicator(indicatorId, `Writing file ${filePath}`);\n const metaData = await getSaml2ProviderMetadata(entityId);\n saveTextToFile(metaData, filePath);\n updateProgressIndicator(indicatorId, `Exported provider ${entityId}`);\n stopProgressIndicator(\n indicatorId,\n `Exported ${entityId['brightCyan']} metadata to ${filePath['brightCyan']}.`\n );\n return true;\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error exporting saml2 metadata`,\n 'fail'\n );\n printError(error);\n }\n return false;\n}\n\n/**\n * Export a single entity provider to file\n * @param {String} entityId Provider entity id\n * @param {String} file Optional filename\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportSaml2ProviderToFile(\n entityId: string,\n file: string = null,\n includeMeta: boolean = true,\n options: Saml2EntitiesExportOptions = { deps: true }\n): Promise<boolean> {\n debugMessage(\n `cli.Saml2Ops.exportSaml2ProviderToFile: start [entityId=${entityId}, file=${file}]`\n );\n let indicatorId: string;\n try {\n if (!file) {\n file = getTypedFilename(entityId, 'saml');\n }\n const filePath = getFilePath(file, true);\n indicatorId = createProgressIndicator(\n 'determinate',\n 1,\n `Exporting provider ${entityId}`\n );\n const fileData = await exportSaml2Provider(entityId, options);\n saveJsonToFile(fileData, filePath, includeMeta);\n updateProgressIndicator(indicatorId, `Exported provider ${entityId}`);\n stopProgressIndicator(\n indicatorId,\n // @ts-expect-error - brightCyan colors the string, even though it is not a property of string\n `Exported ${entityId.brightCyan} to ${filePath.brightCyan}.`\n );\n debugMessage(\n `cli.Saml2Ops.exportSaml2ProviderToFile: end [entityId=${entityId}, file=${filePath}]`\n );\n return true;\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error exporting saml2 provider`,\n 'fail'\n );\n printError(error);\n }\n return false;\n}\n\n/**\n * Export all entity providers to one file\n * @param {String} file Optional filename\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportSaml2ProvidersToFile(\n file: string = null,\n includeMeta: boolean = true,\n options: Saml2EntitiesExportOptions = { deps: true }\n): Promise<boolean> {\n debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: start [file=${file}]`);\n try {\n if (!file) {\n file = getTypedFilename(`all${getRealmString()}Providers`, 'saml');\n }\n const exportData = await exportSaml2Providers(options);\n saveJsonToFile(exportData, getFilePath(file, true), includeMeta);\n debugMessage(`cli.Saml2Ops.exportSaml2ProviderToFile: end [file=${file}]`);\n return true;\n } catch (error) {\n printError(error);\n }\n return false;\n}\n\n/**\n * Export all entity providers to individual files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportSaml2ProvidersToFiles(\n includeMeta: boolean = true,\n options: Saml2EntitiesExportOptions = { deps: true }\n): Promise<boolean> {\n const errors: Error[] = [];\n let indicatorId: string;\n try {\n const stubs = await readSaml2ProviderStubs();\n if (stubs.length > 0) {\n indicatorId = createProgressIndicator(\n 'determinate',\n stubs.length,\n 'Exporting providers'\n );\n for (const stub of stubs) {\n try {\n const file = getFilePath(\n getTypedFilename(stub.entityId, 'saml'),\n true\n );\n const fileData = await exportSaml2Provider(stub.entityId, options);\n saveJsonToFile(fileData, file, includeMeta);\n updateProgressIndicator(\n indicatorId,\n `Exported provider ${stub.entityId}`\n );\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length > 0) {\n throw new FrodoError(`Error exporting providers`, errors);\n }\n stopProgressIndicator(indicatorId, `${stubs.length} providers exported.`);\n return true;\n } else {\n printMessage('No entity providers found.', 'info');\n return true;\n }\n } catch (error) {\n stopProgressIndicator(indicatorId, `Error exporting providers`, 'fail');\n printError(error);\n }\n return false;\n}\n\n/**\n * Import a SAML entity provider by entity id from file\n * @param {String} entityId Provider entity id\n * @param {String} file Import file name\n * @param {Saml2ProviderImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importSaml2ProviderFromFile(\n entityId: string,\n file: string,\n options: Saml2EntitiesImportOptions = { deps: true }\n): Promise<boolean> {\n let indicatorId: string;\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing ${entityId}...`\n );\n await importSaml2Provider(entityId, fileData, options);\n stopProgressIndicator(indicatorId, `Imported ${entityId}.`, 'success');\n return true;\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error importing provider ${entityId}`,\n 'fail'\n );\n printError(error);\n }\n return false;\n}\n\n/**\n * Import a SAML entity provider by entity id from file\n * @param {String} file Import file name\n * @param {Saml2ProviderImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstSaml2ProviderFromFile(\n file: string,\n options: Saml2EntitiesImportOptions = { deps: true }\n): Promise<boolean> {\n let indicatorId: string;\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data) as Saml2ExportInterface;\n // pick the first provider and run with it\n const entityId64 =\n Object.keys(fileData.saml.remote)[0] ||\n Object.keys(fileData.saml.hosted)[0];\n const entityId = decodeBase64(entityId64);\n indicatorId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing ${entityId}...`\n );\n await importSaml2Provider(entityId, fileData, options);\n stopProgressIndicator(indicatorId, `Imported ${entityId}.`, 'success');\n return true;\n } catch (error) {\n stopProgressIndicator(indicatorId, `Error importing provider`, 'fail');\n printError(error);\n }\n return false;\n}\n\n/**\n * Import all SAML entity providers from file\n * @param {String} file Import file name\n * @param {Saml2ProviderImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importSaml2ProvidersFromFile(\n file: string,\n options: Saml2EntitiesImportOptions = { deps: true }\n): Promise<boolean> {\n try {\n const data = fs.readFileSync(getFilePath(file), 'utf8');\n const fileData = JSON.parse(data);\n await importSaml2Providers(fileData, options);\n return true;\n } catch (error) {\n printError(error);\n }\n return false;\n}\n\n/**\n * Import all SAML entity providers from all *.saml.json files in the current directory\n * @param {Saml2ProviderImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importSaml2ProvidersFromFiles(\n options: Saml2EntitiesImportOptions = { deps: true }\n): Promise<boolean> {\n const errors: Error[] = [];\n let indicatorId: string;\n try {\n const names = fs.readdirSync(getWorkingDirectory());\n const jsonFiles = names\n .filter((name) => name.toLowerCase().endsWith('.saml.json'))\n .map((name) => getFilePath(name));\n indicatorId = createProgressIndicator(\n 'determinate',\n jsonFiles.length,\n 'Importing providers...'\n );\n let total = 0;\n for (const file of jsonFiles) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n const result = await importSaml2Providers(fileData, options);\n total += result.length;\n updateProgressIndicator(\n indicatorId,\n `Imported ${result.length} provider(s) from ${file}.`\n );\n } catch (error) {\n errors.push(error);\n }\n }\n if (errors.length > 0) {\n throw new FrodoError(`Error importing providers`, errors);\n }\n stopProgressIndicator(\n indicatorId,\n `Imported ${total} provider(s) from ${jsonFiles.length} file(s).`\n );\n return true;\n } catch (error) {\n stopProgressIndicator(indicatorId, `Error importing providers`);\n printError(error);\n }\n return false;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Saml2Ops.test_.js","names":["Saml2","describe","test","expect","listSaml2Providers","toBeDefined","exportSaml2ProviderToFile","exportSaml2MetadataToFile","describeSaml2Provider","exportSaml2ProvidersToFile","exportSaml2ProvidersToFiles","importSaml2ProviderFromFile","importFirstSaml2ProviderFromFile","importSaml2ProvidersFromFile","importSaml2ProvidersFromFiles","exportRawSaml2ProviderToFile","exportRawSaml2ProvidersToFile","exportRawSaml2ProvidersToFiles","importRawSaml2ProvidersFromFile","importRawSaml2ProvidersFromFiles","importRawSaml2ProviderFromFile"],"sources":["../../src/ops/Saml2Ops.test_.ts"],"sourcesContent":["import * as Saml2 from './Saml2Ops';\n\ndescribe('Saml2Ops - listSaml2Providers()', () => {\n test('listSaml2Providers() 0: Method is implemented', async () => {\n expect(Saml2.listSaml2Providers).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportSaml2ProviderToFile()', () => {\n test('exportSaml2ProviderToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2ProviderToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportSaml2MetadataToFile()', () => {\n test('exportSaml2MetadataToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2MetadataToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - describeSaml2Provider()', () => {\n test('describeSaml2Provider() 0: Method is implemented', async () => {\n expect(Saml2.describeSaml2Provider).toBeDefined();\n });\n\n // test('describeSaml2Provider() 1: Describe saml2 entity provider', async () => {\n // mockFindSaml2Providers(mock);\n // mockGetSaml2ProviderByLocationAndId(mock);\n // mockGetSaml2ProviderMetadata(mock);\n // expect.assertions(2);\n // await Saml2.describeSaml2Provider('iSPAzure');\n // expect(true).toBeTruthy();\n // });\n});\n\ndescribe('Saml2Ops - exportSaml2ProvidersToFile()', () => {\n test('exportSaml2ProvidersToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2ProvidersToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportSaml2ProvidersToFiles()', () => {\n test('exportSaml2ProvidersToFiles() 0: Method is implemented', async () => {\n expect(Saml2.exportSaml2ProvidersToFiles).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importSaml2ProviderFromFile()', () => {\n test('importSaml2ProviderFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importSaml2ProviderFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importFirstSaml2ProviderFromFile()', () => {\n test('importFirstSaml2ProviderFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importFirstSaml2ProviderFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importSaml2ProvidersFromFile()', () => {\n test('importSaml2ProvidersFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importSaml2ProvidersFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importSaml2ProvidersFromFiles()', () => {\n test('importSaml2ProvidersFromFiles() 0: Method is implemented', async () => {\n expect(Saml2.importSaml2ProvidersFromFiles).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportRawSaml2ProviderToFile()', () => {\n test('exportRawSaml2ProviderToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportRawSaml2ProviderToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportRawSaml2ProvidersToFile()', () => {\n test('exportRawSaml2ProvidersToFile() 0: Method is implemented', async () => {\n expect(Saml2.exportRawSaml2ProvidersToFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - exportRawSaml2ProvidersToFiles()', () => {\n test('exportRawSaml2ProvidersToFiles() 0: Method is implemented', async () => {\n expect(Saml2.exportRawSaml2ProvidersToFiles).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importRawSaml2ProvidersFromFile()', () => {\n test('importRawSaml2ProvidersFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importRawSaml2ProvidersFromFile).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importRawSaml2ProvidersFromFiles()', () => {\n test('importRawSaml2ProvidersFromFiles() 0: Method is implemented', async () => {\n expect(Saml2.importRawSaml2ProvidersFromFiles).toBeDefined();\n });\n});\n\ndescribe('Saml2Ops - importRawSaml2ProviderFromFile()', () => {\n test('importRawSaml2ProviderFromFile() 0: Method is implemented', async () => {\n expect(Saml2.importRawSaml2ProviderFromFile).toBeDefined();\n });\n});\n"],"mappings":"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"}