@rockcarver/frodo-cli 2.0.0-9 → 2.0.0

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 (444) hide show
  1. package/.vscode/launch.json +1 -0
  2. package/CHANGELOG.md +1178 -701
  3. package/README.md +2 -2
  4. package/dist/app.cjs +187758 -0
  5. package/dist/app.cjs.map +1 -0
  6. package/dist/app.d.cts +2 -0
  7. package/dist/chunk-MPPKDFVI.cjs +56 -0
  8. package/dist/chunk-MPPKDFVI.cjs.map +1 -0
  9. package/dist/launch.cjs +27 -0
  10. package/dist/launch.cjs.map +1 -0
  11. package/dist/launch.d.cts +1 -0
  12. package/dist/loader.cjs +836 -0
  13. package/dist/loader.cjs.map +1 -0
  14. package/dist/loader.d.cts +3 -0
  15. package/global-jest-setup.js +5 -0
  16. package/package.json +68 -57
  17. package/tsup.config.ts +40 -0
  18. package/esm/app.js +0 -63
  19. package/esm/app.js.map +0 -1
  20. package/esm/cli/FrodoCommand.js +0 -147
  21. package/esm/cli/FrodoCommand.js.map +0 -1
  22. package/esm/cli/_template/something-delete.js +0 -22
  23. package/esm/cli/_template/something-delete.js.map +0 -1
  24. package/esm/cli/_template/something-describe.js +0 -22
  25. package/esm/cli/_template/something-describe.js.map +0 -1
  26. package/esm/cli/_template/something-else-delete.js +0 -22
  27. package/esm/cli/_template/something-else-delete.js.map +0 -1
  28. package/esm/cli/_template/something-else-describe.js +0 -22
  29. package/esm/cli/_template/something-else-describe.js.map +0 -1
  30. package/esm/cli/_template/something-else-export.js +0 -22
  31. package/esm/cli/_template/something-else-export.js.map +0 -1
  32. package/esm/cli/_template/something-else-import.js +0 -22
  33. package/esm/cli/_template/something-else-import.js.map +0 -1
  34. package/esm/cli/_template/something-else-list.js +0 -22
  35. package/esm/cli/_template/something-else-list.js.map +0 -1
  36. package/esm/cli/_template/something-else.js +0 -10
  37. package/esm/cli/_template/something-else.js.map +0 -1
  38. package/esm/cli/_template/something-export.js +0 -22
  39. package/esm/cli/_template/something-export.js.map +0 -1
  40. package/esm/cli/_template/something-import.js +0 -22
  41. package/esm/cli/_template/something-import.js.map +0 -1
  42. package/esm/cli/_template/something-list.js +0 -22
  43. package/esm/cli/_template/something-list.js.map +0 -1
  44. package/esm/cli/_template/something-other-delete.js +0 -22
  45. package/esm/cli/_template/something-other-delete.js.map +0 -1
  46. package/esm/cli/_template/something-other-describe.js +0 -22
  47. package/esm/cli/_template/something-other-describe.js.map +0 -1
  48. package/esm/cli/_template/something-other-export.js +0 -22
  49. package/esm/cli/_template/something-other-export.js.map +0 -1
  50. package/esm/cli/_template/something-other-import.js +0 -22
  51. package/esm/cli/_template/something-other-import.js.map +0 -1
  52. package/esm/cli/_template/something-other-list.js +0 -22
  53. package/esm/cli/_template/something-other-list.js.map +0 -1
  54. package/esm/cli/_template/something-other.js +0 -10
  55. package/esm/cli/_template/something-other.js.map +0 -1
  56. package/esm/cli/_template/something.js +0 -16
  57. package/esm/cli/_template/something.js.map +0 -1
  58. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +0 -27
  59. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +0 -1
  60. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +0 -86
  61. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +0 -1
  62. package/esm/cli/admin/admin-federation-export.js +0 -45
  63. package/esm/cli/admin/admin-federation-export.js.map +0 -1
  64. package/esm/cli/admin/admin-federation-import.js +0 -49
  65. package/esm/cli/admin/admin-federation-import.js.map +0 -1
  66. package/esm/cli/admin/admin-federation-list.js +0 -29
  67. package/esm/cli/admin/admin-federation-list.js.map +0 -1
  68. package/esm/cli/admin/admin-federation.js +0 -13
  69. package/esm/cli/admin/admin-federation.js.map +0 -1
  70. package/esm/cli/admin/admin-get-access-token.js +0 -28
  71. package/esm/cli/admin/admin-get-access-token.js.map +0 -1
  72. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +0 -28
  73. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +0 -1
  74. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +0 -28
  75. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +0 -1
  76. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +0 -30
  77. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +0 -1
  78. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +0 -30
  79. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +0 -1
  80. package/esm/cli/admin/admin-list-static-user-mappings.js +0 -31
  81. package/esm/cli/admin/admin-list-static-user-mappings.js.map +0 -1
  82. package/esm/cli/admin/admin-remove-static-user-mapping.js +0 -27
  83. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +0 -1
  84. package/esm/cli/admin/admin-repair-org-model.js +0 -28
  85. package/esm/cli/admin/admin-repair-org-model.js.map +0 -1
  86. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +0 -28
  87. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +0 -1
  88. package/esm/cli/admin/admin-show-generic-extension-attributes.js +0 -28
  89. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +0 -1
  90. package/esm/cli/admin/admin.js +0 -22
  91. package/esm/cli/admin/admin.js.map +0 -1
  92. package/esm/cli/agent/agent-delete.js +0 -52
  93. package/esm/cli/agent/agent-delete.js.map +0 -1
  94. package/esm/cli/agent/agent-describe.js +0 -22
  95. package/esm/cli/agent/agent-describe.js.map +0 -1
  96. package/esm/cli/agent/agent-export.js +0 -42
  97. package/esm/cli/agent/agent-export.js.map +0 -1
  98. package/esm/cli/agent/agent-gateway-delete.js +0 -52
  99. package/esm/cli/agent/agent-gateway-delete.js.map +0 -1
  100. package/esm/cli/agent/agent-gateway-describe.js +0 -22
  101. package/esm/cli/agent/agent-gateway-describe.js.map +0 -1
  102. package/esm/cli/agent/agent-gateway-export.js +0 -42
  103. package/esm/cli/agent/agent-gateway-export.js.map +0 -1
  104. package/esm/cli/agent/agent-gateway-import.js +0 -47
  105. package/esm/cli/agent/agent-gateway-import.js.map +0 -1
  106. package/esm/cli/agent/agent-gateway-list.js +0 -23
  107. package/esm/cli/agent/agent-gateway-list.js.map +0 -1
  108. package/esm/cli/agent/agent-gateway.js +0 -10
  109. package/esm/cli/agent/agent-gateway.js.map +0 -1
  110. package/esm/cli/agent/agent-import.js +0 -47
  111. package/esm/cli/agent/agent-import.js.map +0 -1
  112. package/esm/cli/agent/agent-java-delete.js +0 -52
  113. package/esm/cli/agent/agent-java-delete.js.map +0 -1
  114. package/esm/cli/agent/agent-java-describe.js +0 -22
  115. package/esm/cli/agent/agent-java-describe.js.map +0 -1
  116. package/esm/cli/agent/agent-java-export.js +0 -42
  117. package/esm/cli/agent/agent-java-export.js.map +0 -1
  118. package/esm/cli/agent/agent-java-import.js +0 -47
  119. package/esm/cli/agent/agent-java-import.js.map +0 -1
  120. package/esm/cli/agent/agent-java-list.js +0 -23
  121. package/esm/cli/agent/agent-java-list.js.map +0 -1
  122. package/esm/cli/agent/agent-java.js +0 -10
  123. package/esm/cli/agent/agent-java.js.map +0 -1
  124. package/esm/cli/agent/agent-list.js +0 -23
  125. package/esm/cli/agent/agent-list.js.map +0 -1
  126. package/esm/cli/agent/agent-web-delete.js +0 -52
  127. package/esm/cli/agent/agent-web-delete.js.map +0 -1
  128. package/esm/cli/agent/agent-web-describe.js +0 -22
  129. package/esm/cli/agent/agent-web-describe.js.map +0 -1
  130. package/esm/cli/agent/agent-web-export.js +0 -42
  131. package/esm/cli/agent/agent-web-export.js.map +0 -1
  132. package/esm/cli/agent/agent-web-import.js +0 -47
  133. package/esm/cli/agent/agent-web-import.js.map +0 -1
  134. package/esm/cli/agent/agent-web-list.js +0 -23
  135. package/esm/cli/agent/agent-web-list.js.map +0 -1
  136. package/esm/cli/agent/agent-web.js +0 -10
  137. package/esm/cli/agent/agent-web.js.map +0 -1
  138. package/esm/cli/agent/agent.js +0 -17
  139. package/esm/cli/agent/agent.js.map +0 -1
  140. package/esm/cli/app/app-delete.js +0 -22
  141. package/esm/cli/app/app-delete.js.map +0 -1
  142. package/esm/cli/app/app-describe.js +0 -22
  143. package/esm/cli/app/app-describe.js.map +0 -1
  144. package/esm/cli/app/app-export.js +0 -52
  145. package/esm/cli/app/app-export.js.map +0 -1
  146. package/esm/cli/app/app-import.js +0 -57
  147. package/esm/cli/app/app-import.js.map +0 -1
  148. package/esm/cli/app/app-list.js +0 -25
  149. package/esm/cli/app/app-list.js.map +0 -1
  150. package/esm/cli/app/app.js +0 -21
  151. package/esm/cli/app/app.js.map +0 -1
  152. package/esm/cli/authz/authz-policy-delete.js +0 -43
  153. package/esm/cli/authz/authz-policy-delete.js.map +0 -1
  154. package/esm/cli/authz/authz-policy-describe.js +0 -30
  155. package/esm/cli/authz/authz-policy-describe.js.map +0 -1
  156. package/esm/cli/authz/authz-policy-export.js +0 -75
  157. package/esm/cli/authz/authz-policy-export.js.map +0 -1
  158. package/esm/cli/authz/authz-policy-import.js +0 -65
  159. package/esm/cli/authz/authz-policy-import.js.map +0 -1
  160. package/esm/cli/authz/authz-policy-list.js +0 -37
  161. package/esm/cli/authz/authz-policy-list.js.map +0 -1
  162. package/esm/cli/authz/authz-policy.js +0 -10
  163. package/esm/cli/authz/authz-policy.js.map +0 -1
  164. package/esm/cli/authz/authz-set-delete.js +0 -37
  165. package/esm/cli/authz/authz-set-delete.js.map +0 -1
  166. package/esm/cli/authz/authz-set-describe.js +0 -30
  167. package/esm/cli/authz/authz-set-describe.js.map +0 -1
  168. package/esm/cli/authz/authz-set-export.js +0 -55
  169. package/esm/cli/authz/authz-set-export.js.map +0 -1
  170. package/esm/cli/authz/authz-set-import.js +0 -61
  171. package/esm/cli/authz/authz-set-import.js.map +0 -1
  172. package/esm/cli/authz/authz-set-list.js +0 -25
  173. package/esm/cli/authz/authz-set-list.js.map +0 -1
  174. package/esm/cli/authz/authz-set.js +0 -10
  175. package/esm/cli/authz/authz-set.js.map +0 -1
  176. package/esm/cli/authz/authz-type-delete.js +0 -43
  177. package/esm/cli/authz/authz-type-delete.js.map +0 -1
  178. package/esm/cli/authz/authz-type-describe.js +0 -34
  179. package/esm/cli/authz/authz-type-describe.js.map +0 -1
  180. package/esm/cli/authz/authz-type-export.js +0 -49
  181. package/esm/cli/authz/authz-type-export.js.map +0 -1
  182. package/esm/cli/authz/authz-type-import.js +0 -55
  183. package/esm/cli/authz/authz-type-import.js.map +0 -1
  184. package/esm/cli/authz/authz-type-list.js +0 -26
  185. package/esm/cli/authz/authz-type-list.js.map +0 -1
  186. package/esm/cli/authz/authz-type.js +0 -10
  187. package/esm/cli/authz/authz-type.js.map +0 -1
  188. package/esm/cli/authz/authz.js +0 -12
  189. package/esm/cli/authz/authz.js.map +0 -1
  190. package/esm/cli/conn/conn-delete.js +0 -14
  191. package/esm/cli/conn/conn-delete.js.map +0 -1
  192. package/esm/cli/conn/conn-describe.js +0 -15
  193. package/esm/cli/conn/conn-describe.js.map +0 -1
  194. package/esm/cli/conn/conn-list.js +0 -15
  195. package/esm/cli/conn/conn-list.js.map +0 -1
  196. package/esm/cli/conn/conn-save.js +0 -107
  197. package/esm/cli/conn/conn-save.js.map +0 -1
  198. package/esm/cli/conn/conn.js +0 -15
  199. package/esm/cli/conn/conn.js.map +0 -1
  200. package/esm/cli/email/email-template-export.js +0 -40
  201. package/esm/cli/email/email-template-export.js.map +0 -1
  202. package/esm/cli/email/email-template-import.js +0 -45
  203. package/esm/cli/email/email-template-import.js.map +0 -1
  204. package/esm/cli/email/email-template-list.js +0 -25
  205. package/esm/cli/email/email-template-list.js.map +0 -1
  206. package/esm/cli/email/email-template.js +0 -8
  207. package/esm/cli/email/email-template.js.map +0 -1
  208. package/esm/cli/email/email.js +0 -11
  209. package/esm/cli/email/email.js.map +0 -1
  210. package/esm/cli/esv/esv-apply.js +0 -62
  211. package/esm/cli/esv/esv-apply.js.map +0 -1
  212. package/esm/cli/esv/esv-secret-create.js +0 -25
  213. package/esm/cli/esv/esv-secret-create.js.map +0 -1
  214. package/esm/cli/esv/esv-secret-delete.js +0 -35
  215. package/esm/cli/esv/esv-secret-delete.js.map +0 -1
  216. package/esm/cli/esv/esv-secret-describe.js +0 -25
  217. package/esm/cli/esv/esv-secret-describe.js.map +0 -1
  218. package/esm/cli/esv/esv-secret-export.js +0 -22
  219. package/esm/cli/esv/esv-secret-export.js.map +0 -1
  220. package/esm/cli/esv/esv-secret-import.js +0 -22
  221. package/esm/cli/esv/esv-secret-import.js.map +0 -1
  222. package/esm/cli/esv/esv-secret-list.js +0 -25
  223. package/esm/cli/esv/esv-secret-list.js.map +0 -1
  224. package/esm/cli/esv/esv-secret-set.js +0 -25
  225. package/esm/cli/esv/esv-secret-set.js.map +0 -1
  226. package/esm/cli/esv/esv-secret-version-activate.js +0 -30
  227. package/esm/cli/esv/esv-secret-version-activate.js.map +0 -1
  228. package/esm/cli/esv/esv-secret-version-create.js +0 -25
  229. package/esm/cli/esv/esv-secret-version-create.js.map +0 -1
  230. package/esm/cli/esv/esv-secret-version-deactivate.js +0 -30
  231. package/esm/cli/esv/esv-secret-version-deactivate.js.map +0 -1
  232. package/esm/cli/esv/esv-secret-version-delete.js +0 -35
  233. package/esm/cli/esv/esv-secret-version-delete.js.map +0 -1
  234. package/esm/cli/esv/esv-secret-version-list.js +0 -25
  235. package/esm/cli/esv/esv-secret-version-list.js.map +0 -1
  236. package/esm/cli/esv/esv-secret-version.js +0 -10
  237. package/esm/cli/esv/esv-secret-version.js.map +0 -1
  238. package/esm/cli/esv/esv-secret.js +0 -16
  239. package/esm/cli/esv/esv-secret.js.map +0 -1
  240. package/esm/cli/esv/esv-variable-create.js +0 -24
  241. package/esm/cli/esv/esv-variable-create.js.map +0 -1
  242. package/esm/cli/esv/esv-variable-delete.js +0 -35
  243. package/esm/cli/esv/esv-variable-delete.js.map +0 -1
  244. package/esm/cli/esv/esv-variable-describe.js +0 -25
  245. package/esm/cli/esv/esv-variable-describe.js.map +0 -1
  246. package/esm/cli/esv/esv-variable-export.js +0 -22
  247. package/esm/cli/esv/esv-variable-export.js.map +0 -1
  248. package/esm/cli/esv/esv-variable-import.js +0 -22
  249. package/esm/cli/esv/esv-variable-import.js.map +0 -1
  250. package/esm/cli/esv/esv-variable-list.js +0 -25
  251. package/esm/cli/esv/esv-variable-list.js.map +0 -1
  252. package/esm/cli/esv/esv-variable-set.js +0 -31
  253. package/esm/cli/esv/esv-variable-set.js.map +0 -1
  254. package/esm/cli/esv/esv-variable.js +0 -15
  255. package/esm/cli/esv/esv-variable.js.map +0 -1
  256. package/esm/cli/esv/esv.js +0 -12
  257. package/esm/cli/esv/esv.js.map +0 -1
  258. package/esm/cli/idm/idm-count.js +0 -25
  259. package/esm/cli/idm/idm-count.js.map +0 -1
  260. package/esm/cli/idm/idm-export.js +0 -42
  261. package/esm/cli/idm/idm-export.js.map +0 -1
  262. package/esm/cli/idm/idm-import.js +0 -45
  263. package/esm/cli/idm/idm-import.js.map +0 -1
  264. package/esm/cli/idm/idm-list.js +0 -29
  265. package/esm/cli/idm/idm-list.js.map +0 -1
  266. package/esm/cli/idm/idm.js +0 -13
  267. package/esm/cli/idm/idm.js.map +0 -1
  268. package/esm/cli/idp/idp-export.js +0 -42
  269. package/esm/cli/idp/idp-export.js.map +0 -1
  270. package/esm/cli/idp/idp-import.js +0 -45
  271. package/esm/cli/idp/idp-import.js.map +0 -1
  272. package/esm/cli/idp/idp-list.js +0 -28
  273. package/esm/cli/idp/idp-list.js.map +0 -1
  274. package/esm/cli/idp/idp.js +0 -12
  275. package/esm/cli/idp/idp.js.map +0 -1
  276. package/esm/cli/info/info.js +0 -54
  277. package/esm/cli/info/info.js.map +0 -1
  278. package/esm/cli/journey/journey-delete.js +0 -34
  279. package/esm/cli/journey/journey-delete.js.map +0 -1
  280. package/esm/cli/journey/journey-describe.js +0 -125
  281. package/esm/cli/journey/journey-describe.js.map +0 -1
  282. package/esm/cli/journey/journey-disable.js +0 -43
  283. package/esm/cli/journey/journey-disable.js.map +0 -1
  284. package/esm/cli/journey/journey-enable.js +0 -43
  285. package/esm/cli/journey/journey-enable.js.map +0 -1
  286. package/esm/cli/journey/journey-export.js +0 -50
  287. package/esm/cli/journey/journey-export.js.map +0 -1
  288. package/esm/cli/journey/journey-import.js +0 -57
  289. package/esm/cli/journey/journey-import.js.map +0 -1
  290. package/esm/cli/journey/journey-list.js +0 -25
  291. package/esm/cli/journey/journey-list.js.map +0 -1
  292. package/esm/cli/journey/journey-prune.js +0 -38
  293. package/esm/cli/journey/journey-prune.js.map +0 -1
  294. package/esm/cli/journey/journey.js +0 -17
  295. package/esm/cli/journey/journey.js.map +0 -1
  296. package/esm/cli/log/log-fetch.js +0 -101
  297. package/esm/cli/log/log-fetch.js.map +0 -1
  298. package/esm/cli/log/log-key-delete.js +0 -35
  299. package/esm/cli/log/log-key-delete.js.map +0 -1
  300. package/esm/cli/log/log-key-describe.js +0 -22
  301. package/esm/cli/log/log-key-describe.js.map +0 -1
  302. package/esm/cli/log/log-key-list.js +0 -26
  303. package/esm/cli/log/log-key-list.js.map +0 -1
  304. package/esm/cli/log/log-key.js +0 -8
  305. package/esm/cli/log/log-key.js.map +0 -1
  306. package/esm/cli/log/log-list.js +0 -59
  307. package/esm/cli/log/log-list.js.map +0 -1
  308. package/esm/cli/log/log-tail.js +0 -56
  309. package/esm/cli/log/log-tail.js.map +0 -1
  310. package/esm/cli/log/log.js +0 -17
  311. package/esm/cli/log/log.js.map +0 -1
  312. package/esm/cli/realm/realm-add-custom-domain.js +0 -25
  313. package/esm/cli/realm/realm-add-custom-domain.js.map +0 -1
  314. package/esm/cli/realm/realm-describe.js +0 -24
  315. package/esm/cli/realm/realm-describe.js.map +0 -1
  316. package/esm/cli/realm/realm-list.js +0 -25
  317. package/esm/cli/realm/realm-list.js.map +0 -1
  318. package/esm/cli/realm/realm-remove-custom-domain.js +0 -27
  319. package/esm/cli/realm/realm-remove-custom-domain.js.map +0 -1
  320. package/esm/cli/realm/realm.js +0 -18
  321. package/esm/cli/realm/realm.js.map +0 -1
  322. package/esm/cli/saml/saml-cot-export.js +0 -43
  323. package/esm/cli/saml/saml-cot-export.js.map +0 -1
  324. package/esm/cli/saml/saml-cot-import.js +0 -49
  325. package/esm/cli/saml/saml-cot-import.js.map +0 -1
  326. package/esm/cli/saml/saml-cot-list.js +0 -26
  327. package/esm/cli/saml/saml-cot-list.js.map +0 -1
  328. package/esm/cli/saml/saml-cot.js +0 -8
  329. package/esm/cli/saml/saml-cot.js.map +0 -1
  330. package/esm/cli/saml/saml-delete.js +0 -38
  331. package/esm/cli/saml/saml-delete.js.map +0 -1
  332. package/esm/cli/saml/saml-describe.js +0 -25
  333. package/esm/cli/saml/saml-describe.js.map +0 -1
  334. package/esm/cli/saml/saml-export.js +0 -40
  335. package/esm/cli/saml/saml-export.js.map +0 -1
  336. package/esm/cli/saml/saml-import.js +0 -45
  337. package/esm/cli/saml/saml-import.js.map +0 -1
  338. package/esm/cli/saml/saml-list.js +0 -25
  339. package/esm/cli/saml/saml-list.js.map +0 -1
  340. package/esm/cli/saml/saml-metadata-export.js +0 -35
  341. package/esm/cli/saml/saml-metadata-export.js.map +0 -1
  342. package/esm/cli/saml/saml-metadata.js +0 -6
  343. package/esm/cli/saml/saml-metadata.js.map +0 -1
  344. package/esm/cli/saml/saml.js +0 -16
  345. package/esm/cli/saml/saml.js.map +0 -1
  346. package/esm/cli/script/script-delete.js +0 -22
  347. package/esm/cli/script/script-delete.js.map +0 -1
  348. package/esm/cli/script/script-describe.js +0 -22
  349. package/esm/cli/script/script-describe.js.map +0 -1
  350. package/esm/cli/script/script-export.js +0 -62
  351. package/esm/cli/script/script-export.js.map +0 -1
  352. package/esm/cli/script/script-import.js +0 -35
  353. package/esm/cli/script/script-import.js.map +0 -1
  354. package/esm/cli/script/script-list.js +0 -26
  355. package/esm/cli/script/script-list.js.map +0 -1
  356. package/esm/cli/script/script.js +0 -18
  357. package/esm/cli/script/script.js.map +0 -1
  358. package/esm/cli/service/service-delete.js +0 -22
  359. package/esm/cli/service/service-delete.js.map +0 -1
  360. package/esm/cli/service/service-export.js +0 -40
  361. package/esm/cli/service/service-export.js.map +0 -1
  362. package/esm/cli/service/service-import.js +0 -47
  363. package/esm/cli/service/service-import.js.map +0 -1
  364. package/esm/cli/service/service-list.js +0 -20
  365. package/esm/cli/service/service-list.js.map +0 -1
  366. package/esm/cli/service/service.js +0 -13
  367. package/esm/cli/service/service.js.map +0 -1
  368. package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
  369. package/esm/cli/theme/theme-delete.js +0 -40
  370. package/esm/cli/theme/theme-delete.js.map +0 -1
  371. package/esm/cli/theme/theme-export.js +0 -45
  372. package/esm/cli/theme/theme-export.js.map +0 -1
  373. package/esm/cli/theme/theme-import.js +0 -50
  374. package/esm/cli/theme/theme-import.js.map +0 -1
  375. package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
  376. package/esm/cli/theme/theme-list.js +0 -25
  377. package/esm/cli/theme/theme-list.js.map +0 -1
  378. package/esm/cli/theme/theme.js +0 -13
  379. package/esm/cli/theme/theme.js.map +0 -1
  380. package/esm/help/SampleData.js +0 -7
  381. package/esm/help/SampleData.js.map +0 -1
  382. package/esm/launch.js +0 -15
  383. package/esm/launch.js.map +0 -1
  384. package/esm/loader.js +0 -40
  385. package/esm/loader.js.map +0 -1
  386. package/esm/ops/AdminFederationOps.js +0 -216
  387. package/esm/ops/AdminFederationOps.js.map +0 -1
  388. package/esm/ops/AgentOps.js +0 -691
  389. package/esm/ops/AgentOps.js.map +0 -1
  390. package/esm/ops/CirclesOfTrustOps.js +0 -260
  391. package/esm/ops/CirclesOfTrustOps.js.map +0 -1
  392. package/esm/ops/ConnectionProfileOps.js +0 -125
  393. package/esm/ops/ConnectionProfileOps.js.map +0 -1
  394. package/esm/ops/EmailTemplateOps.js +0 -361
  395. package/esm/ops/EmailTemplateOps.js.map +0 -1
  396. package/esm/ops/IdmOps.js +0 -360
  397. package/esm/ops/IdmOps.js.map +0 -1
  398. package/esm/ops/IdpOps.js +0 -212
  399. package/esm/ops/IdpOps.js.map +0 -1
  400. package/esm/ops/JourneyOps.js +0 -669
  401. package/esm/ops/JourneyOps.js.map +0 -1
  402. package/esm/ops/LogOps.js +0 -149
  403. package/esm/ops/LogOps.js.map +0 -1
  404. package/esm/ops/NodeOps.js +0 -89
  405. package/esm/ops/NodeOps.js.map +0 -1
  406. package/esm/ops/OAuth2ClientOps.js +0 -271
  407. package/esm/ops/OAuth2ClientOps.js.map +0 -1
  408. package/esm/ops/OrganizationOps.js +0 -34
  409. package/esm/ops/OrganizationOps.js.map +0 -1
  410. package/esm/ops/PolicyOps.js +0 -493
  411. package/esm/ops/PolicyOps.js.map +0 -1
  412. package/esm/ops/PolicySetOps.js +0 -379
  413. package/esm/ops/PolicySetOps.js.map +0 -1
  414. package/esm/ops/RealmOps.js +0 -116
  415. package/esm/ops/RealmOps.js.map +0 -1
  416. package/esm/ops/ResourceTypeOps.js +0 -452
  417. package/esm/ops/ResourceTypeOps.js.map +0 -1
  418. package/esm/ops/Saml2Ops.js +0 -293
  419. package/esm/ops/Saml2Ops.js.map +0 -1
  420. package/esm/ops/Saml2Ops.test_.js.map +0 -1
  421. package/esm/ops/ScriptOps.js +0 -383
  422. package/esm/ops/ScriptOps.js.map +0 -1
  423. package/esm/ops/SecretsOps.js +0 -237
  424. package/esm/ops/SecretsOps.js.map +0 -1
  425. package/esm/ops/ServiceOps.js +0 -213
  426. package/esm/ops/ServiceOps.js.map +0 -1
  427. package/esm/ops/ThemeOps.js +0 -361
  428. package/esm/ops/ThemeOps.js.map +0 -1
  429. package/esm/ops/VariablesOps.js +0 -144
  430. package/esm/ops/VariablesOps.js.map +0 -1
  431. package/esm/ops/utils/OpsUtils.js +0 -9
  432. package/esm/ops/utils/OpsUtils.js.map +0 -1
  433. package/esm/ops/utils/Wordwrap.js +0 -5
  434. package/esm/ops/utils/Wordwrap.js.map +0 -1
  435. package/esm/storage/StaticStorage.js +0 -12
  436. package/esm/storage/StaticStorage.js.map +0 -1
  437. package/esm/utils/Config.js +0 -43
  438. package/esm/utils/Config.js.map +0 -1
  439. package/esm/utils/Console.js +0 -537
  440. package/esm/utils/Console.js.map +0 -1
  441. package/esm/utils/ExportImportUtils.js +0 -93
  442. package/esm/utils/ExportImportUtils.js.map +0 -1
  443. package/esm/utils/Version.js +0 -138
  444. package/esm/utils/Version.js.map +0 -1
@@ -1,379 +0,0 @@
1
- import { frodo, state } from '@rockcarver/frodo-lib';
2
- import fs from 'fs';
3
- import { createObjectTable, createProgressBar, debugMessage, failSpinner, printMessage, showSpinner, stopProgressBar, succeedSpinner, updateProgressBar } from '../utils/Console';
4
- import { getTypedFilename, saveJsonToFile, titleCase } from '../utils/ExportImportUtils';
5
- const {
6
- getRealmName
7
- } = frodo.helper.utils;
8
- const {
9
- getPoliciesByPolicySet,
10
- deletePolicy
11
- } = frodo.authz.policy;
12
- const {
13
- getPolicySets,
14
- getPolicySet,
15
- exportPolicySet,
16
- exportPolicySets,
17
- importPolicySet,
18
- importFirstPolicySet,
19
- importPolicySets
20
- } = frodo.authz.policySet;
21
-
22
- /**
23
- * List policy sets
24
- * @returns {Promise<boolean>} true if successful, false otherwise
25
- */
26
- export async function listPolicySets() {
27
- let outcome = false;
28
- try {
29
- const policySets = await getPolicySets();
30
- policySets.sort((a, b) => a.name.localeCompare(b.name));
31
- for (const policySet of policySets) {
32
- printMessage(`${policySet.name}`, 'data');
33
- }
34
- outcome = true;
35
- } catch (err) {
36
- printMessage(`listPolicySets ERROR: ${err.message}`, 'error');
37
- printMessage(err, 'error');
38
- }
39
- return outcome;
40
- }
41
-
42
- /**
43
- * Describe policy set
44
- * @param {string} policySetId policy set id/name
45
- * @param {Object} json JSON output
46
- * @returns {Promise<boolean>} true if successful, false otherwise
47
- */
48
- export async function describePolicySet(policySetId, json = false) {
49
- let outcome = false;
50
- const policySet = await getPolicySet(policySetId);
51
- outcome = true;
52
- if (json) {
53
- printMessage(policySet, 'data');
54
- } else {
55
- const table = createObjectTable(policySet);
56
- printMessage(table.toString(), 'data');
57
- }
58
- return outcome;
59
- }
60
-
61
- /**
62
- * Delete policy set
63
- * @param {string} policySetId policy set id/name
64
- * @returns {Promise<boolean>} true if successful, false otherwise
65
- */
66
- export async function deletePolicySet(policySetId) {
67
- debugMessage(`cli.PolicySetOps.deletePolicySet: begin`);
68
- showSpinner(`Deleting ${policySetId}...`);
69
- let outcome = false;
70
- const errors = [];
71
- const policies = await getPoliciesByPolicySet(policySetId);
72
- for (const policy of policies) {
73
- try {
74
- debugMessage(`Deleting policy ${policy._id}`);
75
- await deletePolicy(policy._id);
76
- } catch (error) {
77
- error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;
78
- printMessage(error.message, 'error');
79
- errors.push(error);
80
- }
81
- }
82
- try {
83
- debugMessage(`Deleting policy set ${policySetId}`);
84
- await deletePolicySet(policySetId);
85
- } catch (error) {
86
- printMessage(`Error deleting policy set ${policySetId}: ${error}`, 'error');
87
- }
88
- if (errors.length) {
89
- const errorMessages = errors.map(error => error.message).join('\n');
90
- failSpinner(`Error deleting ${policySetId}: ${errorMessages}`);
91
- } else {
92
- succeedSpinner(`Deleted ${policySetId}.`);
93
- outcome = true;
94
- }
95
- debugMessage(`cli.PolicySetOps.deletePolicySet: end [outcome=${outcome}]`);
96
- return outcome;
97
- }
98
-
99
- /**
100
- * Delete all policy sets
101
- * @returns {Promise<boolean>} true if successful, false otherwise
102
- */
103
- export async function deletePolicySets() {
104
- debugMessage(`cli.PolicySetOps.deletePolicySets: begin`);
105
- let outcome = false;
106
- const errors = [];
107
- let policySets = [];
108
- try {
109
- showSpinner(`Retrieving all policy sets...`);
110
- try {
111
- policySets = await getPolicySets();
112
- succeedSpinner(`Found ${policySets.length} policy sets.`);
113
- } catch (error) {
114
- error.message = `Error retrieving all policy sets: ${error.message}`;
115
- failSpinner(error.message);
116
- throw error;
117
- }
118
- if (policySets.length) createProgressBar(policySets.length, `Deleting ${policySets.length} policy sets...`);
119
- for (const policySet of policySets) {
120
- const policySetId = policySet.name;
121
- try {
122
- const policies = await getPoliciesByPolicySet(policySetId);
123
- for (const policy of policies) {
124
- try {
125
- debugMessage(`Deleting policy ${policy._id}`);
126
- await deletePolicy(policy._id);
127
- } catch (error) {
128
- error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;
129
- printMessage(error.message, 'error');
130
- errors.push(error);
131
- }
132
- }
133
- } catch (error) {
134
- errors.push(error);
135
- }
136
- try {
137
- debugMessage(`Deleting policy set ${policySetId}`);
138
- await deletePolicySet(policySetId);
139
- updateProgressBar(`Deleted ${policySetId}`);
140
- } catch (error) {
141
- error.message = `Error deleting policy set ${policySetId}: ${error}`;
142
- updateProgressBar(error.message);
143
- errors.push(error);
144
- }
145
- }
146
- } catch (error) {
147
- error.message = `Error deleting policy sets: ${error}`;
148
- errors.push(error);
149
- } finally {
150
- if (errors.length) {
151
- const errorMessages = errors.map(error => error.message).join('\n');
152
- if (policySets.length) stopProgressBar(`Error deleting all policy sets: ${errorMessages}`);
153
- } else {
154
- if (policySets.length) stopProgressBar(`Deleted ${policySets.length} policy sets.`);
155
- outcome = true;
156
- }
157
- }
158
- debugMessage(`cli.PolicySetOps.deletePolicySets: end [outcome=${outcome}]`);
159
- return outcome;
160
- }
161
-
162
- /**
163
- * Export policy set to file
164
- * @param {string} policySetId policy set id/name
165
- * @param {string} file file name
166
- * @param {PolicySetExportOptions} options export options
167
- * @returns {Promise<boolean>} true if successful, false otherwise
168
- */
169
- export async function exportPolicySetToFile(policySetId, file, options = {
170
- deps: true,
171
- prereqs: false,
172
- useStringArrays: true
173
- }) {
174
- let outcome = false;
175
- debugMessage(`cli.PolicySetOps.exportPolicySetToFile: begin`);
176
- showSpinner(`Exporting ${policySetId}...`);
177
- try {
178
- let fileName = getTypedFilename(policySetId, 'policyset.authz');
179
- if (file) {
180
- fileName = file;
181
- }
182
- const exportData = await exportPolicySet(policySetId, options);
183
- saveJsonToFile(exportData, fileName);
184
- succeedSpinner(`Exported ${policySetId} to ${fileName}.`);
185
- outcome = true;
186
- } catch (error) {
187
- failSpinner(`Error exporting ${policySetId}: ${error.message}`);
188
- }
189
- debugMessage(`cli.PolicySetOps.exportPolicySetToFile: end`);
190
- return outcome;
191
- }
192
-
193
- /**
194
- * Export policy sets to file
195
- * @param {string} file file name
196
- * @param {PolicySetExportOptions} options export options
197
- * @returns {Promise<boolean>} true if successful, false otherwise
198
- */
199
- export async function exportPolicySetsToFile(file, options = {
200
- deps: true,
201
- prereqs: false,
202
- useStringArrays: true
203
- }) {
204
- let outcome = false;
205
- debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: begin`);
206
- showSpinner(`Exporting all policy sets...`);
207
- try {
208
- let fileName = getTypedFilename(`all${titleCase(getRealmName(state.getRealm()))}PolicySets`, 'policyset.authz');
209
- if (file) {
210
- fileName = file;
211
- }
212
- const exportData = await exportPolicySets(options);
213
- saveJsonToFile(exportData, fileName);
214
- succeedSpinner(`Exported all policy sets to ${fileName}.`);
215
- outcome = true;
216
- } catch (error) {
217
- failSpinner(`Error exporting policy sets: ${error.message}`);
218
- }
219
- debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: end`);
220
- return outcome;
221
- }
222
-
223
- /**
224
- * Export all policy sets to separate files
225
- * @param {PolicySetExportOptions} options export options
226
- * @returns {Promise<boolean>} true if successful, false otherwise
227
- */
228
- export async function exportPolicySetsToFiles(options = {
229
- deps: true,
230
- prereqs: false,
231
- useStringArrays: true
232
- }) {
233
- debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: begin`);
234
- const errors = [];
235
- try {
236
- const policySets = await getPolicySets();
237
- createProgressBar(policySets.length, 'Exporting policy sets...');
238
- for (const policySet of policySets) {
239
- const file = getTypedFilename(policySet.name, 'policyset.authz');
240
- try {
241
- const exportData = await exportPolicySet(policySet.name, options);
242
- saveJsonToFile(exportData, file);
243
- updateProgressBar(`Exported ${policySet.name}.`);
244
- } catch (error) {
245
- errors.push(error);
246
- updateProgressBar(`Error exporting ${policySet.name}.`);
247
- }
248
- }
249
- stopProgressBar(`Export complete.`);
250
- } catch (error) {
251
- errors.push(error);
252
- stopProgressBar(`Error exporting policy sets to files`);
253
- }
254
- debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: end`);
255
- return 0 === errors.length;
256
- }
257
-
258
- /**
259
- * Import policy set from file
260
- * @param {string} policySetId policy set id/name
261
- * @param {string} file file name
262
- * @param {PolicySetImportOptions} options import options
263
- * @returns {Promise<boolean>} true if successful, false otherwise
264
- */
265
- export async function importPolicySetFromFile(policySetId, file, options = {
266
- deps: true,
267
- prereqs: false
268
- }) {
269
- let outcome = false;
270
- debugMessage(`cli.PolicySetOps.importPolicySetFromFile: begin`);
271
- showSpinner(`Importing ${policySetId}...`);
272
- try {
273
- const data = fs.readFileSync(file, 'utf8');
274
- const fileData = JSON.parse(data);
275
- await importPolicySet(policySetId, fileData, options);
276
- outcome = true;
277
- succeedSpinner(`Imported ${policySetId}.`);
278
- } catch (error) {
279
- failSpinner(`Error importing ${policySetId}.`);
280
- printMessage(error, 'error');
281
- }
282
- debugMessage(`cli.PolicySetOps.importPolicySetFromFile: end`);
283
- return outcome;
284
- }
285
-
286
- /**
287
- * Import first policy set from file
288
- * @param {string} file file name
289
- * @param {PolicySetImportOptions} options import options
290
- * @returns {Promise<boolean>} true if successful, false otherwise
291
- */
292
- export async function importFirstPolicySetFromFile(file, options = {
293
- deps: true,
294
- prereqs: false
295
- }) {
296
- let outcome = false;
297
- debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: begin`);
298
- showSpinner(`Importing ${file}...`);
299
- try {
300
- const data = fs.readFileSync(file, 'utf8');
301
- const fileData = JSON.parse(data);
302
- await importFirstPolicySet(fileData, options);
303
- outcome = true;
304
- succeedSpinner(`Imported ${file}.`);
305
- } catch (error) {
306
- failSpinner(`Error importing ${file}.`);
307
- printMessage(error, 'error');
308
- }
309
- debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: end`);
310
- return outcome;
311
- }
312
-
313
- /**
314
- * Import policy sets from file
315
- * @param {string} file file name
316
- * @param {PolicySetImportOptions} options import options
317
- * @returns {Promise<boolean>} true if successful, false otherwise
318
- */
319
- export async function importPolicySetsFromFile(file, options = {
320
- deps: true,
321
- prereqs: false
322
- }) {
323
- let outcome = false;
324
- debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: begin`);
325
- showSpinner(`Importing ${file}...`);
326
- try {
327
- const data = fs.readFileSync(file, 'utf8');
328
- const fileData = JSON.parse(data);
329
- await importPolicySets(fileData, options);
330
- outcome = true;
331
- succeedSpinner(`Imported ${file}.`);
332
- } catch (error) {
333
- failSpinner(`Error importing ${file}.`);
334
- printMessage(error, 'error');
335
- }
336
- debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: end`);
337
- return outcome;
338
- }
339
-
340
- /**
341
- * Import policy sets from files
342
- * @param {OAuth2ClientImportOptions} options import options
343
- * @returns {Promise<boolean>} true if successful, false otherwise
344
- */
345
- export async function importPolicySetsFromFiles(options = {
346
- deps: true,
347
- prereqs: false
348
- }) {
349
- const errors = [];
350
- try {
351
- debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: begin`);
352
- const names = fs.readdirSync('.');
353
- const files = names.filter(name => name.toLowerCase().endsWith('.policyset.authz.json'));
354
- createProgressBar(files.length, 'Importing policy sets...');
355
- let total = 0;
356
- for (const file of files) {
357
- try {
358
- const data = fs.readFileSync(file, 'utf8');
359
- const fileData = JSON.parse(data);
360
- const count = Object.keys(fileData.policyset).length;
361
- total += count;
362
- await importPolicySets(fileData, options);
363
- updateProgressBar(`Imported ${count} policy sets from ${file}`);
364
- } catch (error) {
365
- errors.push(error);
366
- updateProgressBar(`Error importing policy sets from ${file}`);
367
- printMessage(error, 'error');
368
- }
369
- }
370
- stopProgressBar(`Finished importing ${total} policy sets from ${files.length} files.`);
371
- } catch (error) {
372
- errors.push(error);
373
- stopProgressBar(`Error importing policy sets from files.`);
374
- printMessage(error, 'error');
375
- }
376
- debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: end`);
377
- return 0 === errors.length;
378
- }
379
- //# sourceMappingURL=PolicySetOps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PolicySetOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getRealmName","helper","utils","getPoliciesByPolicySet","deletePolicy","authz","policy","getPolicySets","getPolicySet","exportPolicySet","exportPolicySets","importPolicySet","importFirstPolicySet","importPolicySets","policySet","listPolicySets","outcome","policySets","sort","a","b","name","localeCompare","err","message","describePolicySet","policySetId","json","table","toString","deletePolicySet","errors","policies","_id","error","push","length","errorMessages","map","join","deletePolicySets","exportPolicySetToFile","file","options","deps","prereqs","useStringArrays","fileName","exportData","exportPolicySetsToFile","getRealm","exportPolicySetsToFiles","importPolicySetFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicySetFromFile","importPolicySetsFromFile","importPolicySetsFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["../../src/ops/PolicySetOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport type {\n PolicySetSkeleton,\n PolicySkeleton,\n} from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\n createObjectTable,\n createProgressBar,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport {\n PolicySetExportInterface,\n PolicySetExportOptions,\n PolicySetImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/PolicySetOps';\n\nconst { getRealmName } = frodo.helper.utils;\nconst { getPoliciesByPolicySet, deletePolicy } = frodo.authz.policy;\nconst {\n getPolicySets,\n getPolicySet,\n exportPolicySet,\n exportPolicySets,\n importPolicySet,\n importFirstPolicySet,\n importPolicySets,\n} = frodo.authz.policySet;\n\n/**\n * List policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicySets(): Promise<boolean> {\n let outcome = false;\n try {\n const policySets = await getPolicySets();\n policySets.sort((a, b) => a.name.localeCompare(b.name));\n for (const policySet of policySets) {\n printMessage(`${policySet.name}`, 'data');\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicySets ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy set\n * @param {string} policySetId policy set id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicySet(\n policySetId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await getPolicySet(policySetId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySet(policySetId: string): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySet: begin`);\n showSpinner(`Deleting ${policySetId}...`);\n let outcome = false;\n const errors = [];\n const policies: PolicySkeleton[] = await getPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await deletePolicySet(policySetId);\n } catch (error) {\n printMessage(`Error deleting policy set ${policySetId}: ${error}`, 'error');\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n failSpinner(`Error deleting ${policySetId}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${policySetId}.`);\n outcome = true;\n }\n debugMessage(`cli.PolicySetOps.deletePolicySet: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySets(): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySets: begin`);\n let outcome = false;\n const errors = [];\n let policySets: PolicySetSkeleton[] = [];\n try {\n showSpinner(`Retrieving all policy sets...`);\n try {\n policySets = await getPolicySets();\n succeedSpinner(`Found ${policySets.length} policy sets.`);\n } catch (error) {\n error.message = `Error retrieving all policy sets: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policySets.length)\n createProgressBar(\n policySets.length,\n `Deleting ${policySets.length} policy sets...`\n );\n for (const policySet of policySets) {\n const policySetId = policySet.name;\n try {\n const policies: PolicySkeleton[] = await getPoliciesByPolicySet(\n policySetId\n );\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await deletePolicySet(policySetId);\n updateProgressBar(`Deleted ${policySetId}`);\n } catch (error) {\n error.message = `Error deleting policy set ${policySetId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policy sets: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policySets.length)\n stopProgressBar(`Error deleting all policy sets: ${errorMessages}`);\n } else {\n if (policySets.length)\n stopProgressBar(`Deleted ${policySets.length} policy sets.`);\n outcome = true;\n }\n }\n debugMessage(`cli.PolicySetOps.deletePolicySets: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Export policy set to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: begin`);\n showSpinner(`Exporting ${policySetId}...`);\n try {\n let fileName = getTypedFilename(policySetId, 'policyset.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicySet(policySetId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${policySetId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policySetId}: ${error.message}`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: end`);\n return outcome;\n}\n\n/**\n * Export policy sets to file\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFile(\n file: string,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}PolicySets`,\n 'policyset.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicySets(options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policy sets to separate files\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFiles(\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: begin`);\n const errors = [];\n try {\n const policySets: PolicySetSkeleton[] = await getPolicySets();\n createProgressBar(policySets.length, 'Exporting policy sets...');\n for (const policySet of policySets) {\n const file = getTypedFilename(policySet.name, 'policyset.authz');\n try {\n const exportData: PolicySetExportInterface = await exportPolicySet(\n policySet.name,\n options\n );\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policySet.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policySet.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy set from file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetFromFile(\n policySetId: string,\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: begin`);\n showSpinner(`Importing ${policySetId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySet(policySetId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policySetId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policySetId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy set from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicySetFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstPolicySet(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySets(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFiles(\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.policyset.authz.json')\n );\n createProgressBar(files.length, 'Importing policy sets...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicySetExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicySets(fileData, options);\n updateProgressBar(`Imported ${count} policy sets from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing policy sets from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} policy sets from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing policy sets from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
@@ -1,116 +0,0 @@
1
- import { frodo } from '@rockcarver/frodo-lib';
2
- import { createKeyValueTable, createTable, printMessage } from '../utils/Console';
3
- const {
4
- getRealms,
5
- getRealmByName,
6
- putRealm
7
- } = frodo.realm;
8
-
9
- /**
10
- * List realms
11
- * @param {boolean} long Long list format with details
12
- */
13
- export async function listRealms(long = false) {
14
- try {
15
- const realms = (await getRealms()).result;
16
- if (long) {
17
- const table = createTable(['Name'['brightCyan'], 'Status'['brightCyan'], 'Custom Domains'['brightCyan'], 'Parent'['brightCyan']]);
18
- realms.forEach(realmConfig => {
19
- table.push([realmConfig.name, realmConfig.active ? 'active'['brightGreen'] : 'inactive'['brightRed'], realmConfig.aliases.join('\n'), realmConfig.parentPath]);
20
- });
21
- printMessage(table.toString());
22
- } else {
23
- realms.forEach(realmConfig => {
24
- printMessage(realmConfig.name, 'info');
25
- });
26
- }
27
- } catch (error) {
28
- var _error$response;
29
- printMessage(error, 'error');
30
- printMessage(`Error listing realms: ${error.rmessage}`, 'error');
31
- printMessage((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data, 'error');
32
- }
33
- }
34
-
35
- /**
36
- * Describe realm
37
- * @param {String} realm realm name
38
- */
39
- export async function describeRealm(realm) {
40
- try {
41
- const realmConfig = await getRealmByName(realm);
42
- const table = createKeyValueTable();
43
- table.push(['Name'['brightCyan'], realmConfig.name]);
44
- table.push(['Status'['brightCyan'], realmConfig.active ? 'active'['brightGreen'] : 'inactive'['brightRed']]);
45
- table.push(['Custom Domains'['brightCyan'], realmConfig.aliases.join('\n')]);
46
- table.push(['Parent'['brightCyan'], realmConfig.parentPath]);
47
- table.push(['Id'['brightCyan'], realmConfig._id]);
48
- printMessage(table.toString());
49
- } catch (error) {
50
- printMessage(`Realm ${realm} not found!`, 'error');
51
- }
52
- }
53
-
54
- /**
55
- * Add custom DNS domain name (realm DNS alias)
56
- * @param {String} realm realm name
57
- * @param {String} domain domain name
58
- */
59
- export async function addCustomDomain(realm, domain) {
60
- try {
61
- let realmConfig = await getRealmByName(realm);
62
- let exists = false;
63
- realmConfig.aliases.forEach(alias => {
64
- if (domain.toLowerCase() === alias.toLowerCase()) {
65
- exists = true;
66
- }
67
- });
68
- if (!exists) {
69
- try {
70
- realmConfig.aliases.push(domain.toLowerCase());
71
- realmConfig = await putRealm(realmConfig._id, realmConfig);
72
- const table = createKeyValueTable();
73
- table.push(['Name'['brightCyan'], realmConfig.name]);
74
- table.push(['Status'['brightCyan'], realmConfig.active ? 'active'['brightGreen'] : 'inactive'['brightRed']]);
75
- table.push(['Custom Domains'['brightCyan'], realmConfig.aliases.join('\n')]);
76
- table.push(['Parent'['brightCyan'], realmConfig.parentPath]);
77
- table.push(['Id'['brightCyan'], realmConfig._id]);
78
- printMessage(table.toString());
79
- } catch (error) {
80
- printMessage(`Error adding custom domain: ${error.message}`, 'error');
81
- }
82
- }
83
- } catch (error) {
84
- printMessage(`${error.message}`, 'error');
85
- }
86
- }
87
-
88
- /**
89
- * Remove custom DNS domain name (realm DNS alias)
90
- * @param {String} realm realm name
91
- * @param {String} domain domain name
92
- */
93
- export async function removeCustomDomain(realm, domain) {
94
- try {
95
- let realmConfig = await getRealmByName(realm);
96
- const aliases = realmConfig.aliases.filter(alias => domain.toLowerCase() !== alias.toLowerCase());
97
- if (aliases.length < realmConfig.aliases.length) {
98
- try {
99
- realmConfig.aliases = aliases;
100
- realmConfig = await putRealm(realmConfig._id, realmConfig);
101
- const table = createKeyValueTable();
102
- table.push(['Name'['brightCyan'], realmConfig.name]);
103
- table.push(['Status'['brightCyan'], realmConfig.active ? 'active'['brightGreen'] : 'inactive'['brightRed']]);
104
- table.push(['Custom Domains'['brightCyan'], realmConfig.aliases.join('\n')]);
105
- table.push(['Parent'['brightCyan'], realmConfig.parentPath]);
106
- table.push(['Id'['brightCyan'], realmConfig._id]);
107
- printMessage(table.toString());
108
- } catch (error) {
109
- printMessage(`Error removing custom domain: ${error.message}`, 'error');
110
- }
111
- }
112
- } catch (error) {
113
- printMessage(`${error.message}`, 'error');
114
- }
115
- }
116
- //# sourceMappingURL=RealmOps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RealmOps.js","names":["frodo","createKeyValueTable","createTable","printMessage","getRealms","getRealmByName","putRealm","realm","listRealms","long","realms","result","table","forEach","realmConfig","push","name","active","aliases","join","parentPath","toString","error","_error$response","rmessage","response","data","describeRealm","_id","addCustomDomain","domain","exists","alias","toLowerCase","message","removeCustomDomain","filter","length"],"sources":["../../src/ops/RealmOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport {\n createKeyValueTable,\n createTable,\n printMessage,\n} from '../utils/Console';\n\nconst { getRealms, getRealmByName, putRealm } = frodo.realm;\n\n/**\n * List realms\n * @param {boolean} long Long list format with details\n */\nexport async function listRealms(long = false) {\n try {\n const realms = (await getRealms()).result;\n if (long) {\n const table = createTable([\n 'Name'['brightCyan'],\n 'Status'['brightCyan'],\n 'Custom Domains'['brightCyan'],\n 'Parent'['brightCyan'],\n ]);\n realms.forEach((realmConfig) => {\n table.push([\n realmConfig.name,\n realmConfig.active\n ? 'active'['brightGreen']\n : 'inactive'['brightRed'],\n realmConfig.aliases.join('\\n'),\n realmConfig.parentPath,\n ]);\n });\n printMessage(table.toString());\n } else {\n realms.forEach((realmConfig) => {\n printMessage(realmConfig.name, 'info');\n });\n }\n } catch (error) {\n printMessage(error, 'error');\n printMessage(`Error listing realms: ${error.rmessage}`, 'error');\n printMessage(error.response?.data, 'error');\n }\n}\n\n/**\n * Describe realm\n * @param {String} realm realm name\n */\nexport async function describeRealm(realm: string) {\n try {\n const realmConfig = await getRealmByName(realm);\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], realmConfig.name]);\n table.push([\n 'Status'['brightCyan'],\n realmConfig.active ? 'active'['brightGreen'] : 'inactive'['brightRed'],\n ]);\n table.push([\n 'Custom Domains'['brightCyan'],\n realmConfig.aliases.join('\\n'),\n ]);\n table.push(['Parent'['brightCyan'], realmConfig.parentPath]);\n table.push(['Id'['brightCyan'], realmConfig._id]);\n printMessage(table.toString());\n } catch (error) {\n printMessage(`Realm ${realm} not found!`, 'error');\n }\n}\n\n/**\n * Add custom DNS domain name (realm DNS alias)\n * @param {String} realm realm name\n * @param {String} domain domain name\n */\nexport async function addCustomDomain(realm: string, domain: string) {\n try {\n let realmConfig = await getRealmByName(realm);\n let exists = false;\n realmConfig.aliases.forEach((alias) => {\n if (domain.toLowerCase() === alias.toLowerCase()) {\n exists = true;\n }\n });\n if (!exists) {\n try {\n realmConfig.aliases.push(domain.toLowerCase());\n realmConfig = await putRealm(realmConfig._id, realmConfig);\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], realmConfig.name]);\n table.push([\n 'Status'['brightCyan'],\n realmConfig.active\n ? 'active'['brightGreen']\n : 'inactive'['brightRed'],\n ]);\n table.push([\n 'Custom Domains'['brightCyan'],\n realmConfig.aliases.join('\\n'),\n ]);\n table.push(['Parent'['brightCyan'], realmConfig.parentPath]);\n table.push(['Id'['brightCyan'], realmConfig._id]);\n printMessage(table.toString());\n } catch (error) {\n printMessage(`Error adding custom domain: ${error.message}`, 'error');\n }\n }\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n }\n}\n\n/**\n * Remove custom DNS domain name (realm DNS alias)\n * @param {String} realm realm name\n * @param {String} domain domain name\n */\nexport async function removeCustomDomain(realm: string, domain: string) {\n try {\n let realmConfig = await getRealmByName(realm);\n const aliases = realmConfig.aliases.filter(\n (alias) => domain.toLowerCase() !== alias.toLowerCase()\n );\n if (aliases.length < realmConfig.aliases.length) {\n try {\n realmConfig.aliases = aliases;\n realmConfig = await putRealm(realmConfig._id, realmConfig);\n const table = createKeyValueTable();\n table.push(['Name'['brightCyan'], realmConfig.name]);\n table.push([\n 'Status'['brightCyan'],\n realmConfig.active\n ? 'active'['brightGreen']\n : 'inactive'['brightRed'],\n ]);\n table.push([\n 'Custom Domains'['brightCyan'],\n realmConfig.aliases.join('\\n'),\n ]);\n table.push(['Parent'['brightCyan'], realmConfig.parentPath]);\n table.push(['Id'['brightCyan'], realmConfig._id]);\n printMessage(table.toString());\n } catch (error) {\n printMessage(`Error removing custom domain: ${error.message}`, 'error');\n }\n }\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n }\n}\n"],"mappings":"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"}