@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,452 +0,0 @@
1
- import { frodo, state } from '@rockcarver/frodo-lib';
2
- import fs from 'fs';
3
- import { createObjectTable, createProgressBar, createTable, 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
- getResourceTypes,
10
- getResourceType,
11
- getResourceTypeByName,
12
- exportResourceType,
13
- exportResourceTypeByName,
14
- exportResourceTypes,
15
- importResourceType,
16
- importResourceTypeByName,
17
- importFirstResourceType,
18
- importResourceTypes
19
- } = frodo.authz.resourceType;
20
-
21
- /**
22
- * List resource types
23
- * @param {boolean} long more fields
24
- * @returns {Promise<boolean>} true if successful, false otherwise
25
- */
26
- export async function listResourceTypes(long = false) {
27
- let outcome = false;
28
- try {
29
- const resourceTypes = await getResourceTypes();
30
- resourceTypes.sort((a, b) => a.name.localeCompare(b.name));
31
- if (long) {
32
- const table = createTable(['Name', 'Description', 'Uuid']);
33
- for (const resourceType of resourceTypes) {
34
- table.push([`${resourceType.name}`, `${resourceType.description}`, `${resourceType.uuid}`]);
35
- }
36
- printMessage(table.toString(), 'data');
37
- } else {
38
- for (const resourceType of resourceTypes) {
39
- printMessage(`${resourceType.name}`, 'data');
40
- }
41
- }
42
- outcome = true;
43
- } catch (err) {
44
- printMessage(`listResourceTypes ERROR: ${err.message}`, 'error');
45
- printMessage(err, 'error');
46
- }
47
- return outcome;
48
- }
49
-
50
- /**
51
- * Describe resource type by uuid
52
- * @param {string} resourceTypeUuid resource type uuid
53
- * @param {boolean} json JSON output
54
- * @returns {Promise<boolean>} true if successful, false otherwise
55
- */
56
- export async function describeResourceType(resourceTypeUuid, json = false) {
57
- let outcome = false;
58
- try {
59
- const resourceType = await getResourceType(resourceTypeUuid);
60
- if (json) {
61
- printMessage(resourceType, 'data');
62
- } else {
63
- const table = createObjectTable(resourceType);
64
- printMessage(table.toString(), 'data');
65
- }
66
- outcome = true;
67
- } catch (error) {
68
- var _error$response;
69
- if (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 404) {
70
- printMessage(`Resource Type with uuid ${resourceTypeUuid} does not exist in realm ${state.getRealm()}`, 'error');
71
- } else {
72
- var _error$response2, _error$response2$data;
73
- printMessage(((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.message) || error.message, 'error');
74
- }
75
- }
76
- return outcome;
77
- }
78
-
79
- /**
80
- * Describe resource type by name
81
- * @param {string} resourceTypeName resource type name
82
- * @param {boolean} json JSON output
83
- * @returns {Promise<boolean>} true if successful, false otherwise
84
- */
85
- export async function describeResourceTypeByName(resourceTypeName, json = false) {
86
- let outcome = false;
87
- try {
88
- const resourceType = await getResourceTypeByName(resourceTypeName);
89
- if (json) {
90
- printMessage(resourceType, 'data');
91
- } else {
92
- const table = createObjectTable(resourceType);
93
- printMessage(table.toString(), 'data');
94
- }
95
- outcome = true;
96
- } catch (error) {
97
- var _error$response3;
98
- if (((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.status) === 404) {
99
- printMessage(`Resource Type with name ${resourceTypeName} does not exist in realm ${state.getRealm()}`, 'error');
100
- } else {
101
- var _error$response4, _error$response4$data;
102
- printMessage(((_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : (_error$response4$data = _error$response4.data) === null || _error$response4$data === void 0 ? void 0 : _error$response4$data.message) || error.message, 'error');
103
- }
104
- }
105
- return outcome;
106
- }
107
-
108
- /**
109
- * Delete resource type by uuid
110
- * @param {string} resourceTypeUuid resource type uuid
111
- * @returns {Promise<boolean>} true if successful, false otherwise
112
- */
113
- export async function deleteResourceType(resourceTypeUuid) {
114
- debugMessage(`cli.ResourceTypeOps.deleteResourceType: begin`);
115
- showSpinner(`Deleting ${resourceTypeUuid}...`);
116
- let outcome = false;
117
- const errors = [];
118
- try {
119
- debugMessage(`Deleting resource type ${resourceTypeUuid}`);
120
- await deleteResourceType(resourceTypeUuid);
121
- } catch (error) {
122
- errors.push(error);
123
- }
124
- if (errors.length) {
125
- const errorMessages = errors.map(error => {
126
- var _error$response5, _error$response5$data;
127
- return ((_error$response5 = error.response) === null || _error$response5 === void 0 ? void 0 : (_error$response5$data = _error$response5.data) === null || _error$response5$data === void 0 ? void 0 : _error$response5$data.message) || error.message;
128
- }).join('\n');
129
- failSpinner(`Error deleting ${resourceTypeUuid}: ${errorMessages}`);
130
- } else {
131
- succeedSpinner(`Deleted ${resourceTypeUuid}.`);
132
- outcome = true;
133
- }
134
- debugMessage(`cli.ResourceTypeOps.deleteResourceType: end [outcome=${outcome}]`);
135
- return outcome;
136
- }
137
-
138
- /**
139
- * Delete resource type by name
140
- * @param {string} resourceTypeName resource type name
141
- * @returns {Promise<boolean>} true if successful, false otherwise
142
- */
143
- export async function deleteResourceTypeByName(resourceTypeName) {
144
- debugMessage(`cli.ResourceTypeOps.deleteResourceTypeByName: begin`);
145
- showSpinner(`Deleting ${resourceTypeName}...`);
146
- let outcome = false;
147
- const errors = [];
148
- try {
149
- debugMessage(`Deleting resource type ${resourceTypeName}`);
150
- await deleteResourceTypeByName(resourceTypeName);
151
- } catch (error) {
152
- errors.push(error);
153
- }
154
- if (errors.length) {
155
- const errorMessages = errors.map(error => {
156
- var _error$response6, _error$response6$data;
157
- return ((_error$response6 = error.response) === null || _error$response6 === void 0 ? void 0 : (_error$response6$data = _error$response6.data) === null || _error$response6$data === void 0 ? void 0 : _error$response6$data.message) || error.message;
158
- }).join('\n');
159
- failSpinner(`Error deleting ${resourceTypeName}: ${errorMessages}`);
160
- } else {
161
- succeedSpinner(`Deleted ${resourceTypeName}.`);
162
- outcome = true;
163
- }
164
- debugMessage(`cli.ResourceTypeOps.deleteResourceTypeByName: end [outcome=${outcome}]`);
165
- return outcome;
166
- }
167
-
168
- /**
169
- * Delete all resource types
170
- * @returns {Promise<boolean>} true if successful, false otherwise
171
- */
172
- export async function deleteResourceTypes() {
173
- debugMessage(`cli.ResourceTypeOps.deleteResourceTypes: begin`);
174
- let outcome = false;
175
- const errors = [];
176
- let resourceTypes = [];
177
- try {
178
- showSpinner(`Retrieving all resource types...`);
179
- try {
180
- resourceTypes = await getResourceTypes();
181
- succeedSpinner(`Found ${resourceTypes.length} resource types.`);
182
- } catch (error) {
183
- error.message = `Error retrieving all resource types: ${error.message}`;
184
- failSpinner(error.message);
185
- throw error;
186
- }
187
- if (resourceTypes.length) createProgressBar(resourceTypes.length, `Deleting ${resourceTypes.length} resource types...`);
188
- for (const resourceType of resourceTypes) {
189
- const resourceTypeId = resourceType.uuid;
190
- try {
191
- debugMessage(`Deleting resource type ${resourceTypeId}`);
192
- await deleteResourceType(resourceTypeId);
193
- updateProgressBar(`Deleted ${resourceTypeId}`);
194
- } catch (error) {
195
- error.message = `Error deleting resource type ${resourceTypeId}: ${error}`;
196
- updateProgressBar(error.message);
197
- errors.push(error);
198
- }
199
- }
200
- } catch (error) {
201
- error.message = `Error deleting resource types: ${error}`;
202
- errors.push(error);
203
- } finally {
204
- if (errors.length) {
205
- const errorMessages = errors.map(error => error.message).join('\n');
206
- if (resourceTypes.length) stopProgressBar(`Error deleting all resource types: ${errorMessages}`);
207
- } else {
208
- if (resourceTypes.length) stopProgressBar(`Deleted ${resourceTypes.length} resource types.`);
209
- outcome = true;
210
- }
211
- }
212
- debugMessage(`cli.ResourceTypeOps.deleteResourceTypes: end [outcome=${outcome}]`);
213
- return outcome;
214
- }
215
-
216
- /**
217
- * Export resource type to file
218
- * @param {string} resourceTypeUuid resource type uuid
219
- * @param {string} file file name
220
- * @returns {Promise<boolean>} true if successful, false otherwise
221
- */
222
- export async function exportResourceTypeToFile(resourceTypeUuid, file) {
223
- let outcome = false;
224
- debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: begin`);
225
- showSpinner(`Exporting ${resourceTypeUuid}...`);
226
- try {
227
- let fileName = getTypedFilename(resourceTypeUuid, 'resourcetype.authz');
228
- if (file) {
229
- fileName = file;
230
- }
231
- const exportData = await exportResourceType(resourceTypeUuid);
232
- saveJsonToFile(exportData, fileName);
233
- succeedSpinner(`Exported ${resourceTypeUuid} to ${fileName}.`);
234
- outcome = true;
235
- } catch (error) {
236
- failSpinner(`Error exporting ${resourceTypeUuid}: ${error.message}`);
237
- }
238
- debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: end`);
239
- return outcome;
240
- }
241
-
242
- /**
243
- * Export resource type by name to file
244
- * @param {string} resourceTypeName resource type name
245
- * @param {string} file file name
246
- * @returns {Promise<boolean>} true if successful, false otherwise
247
- */
248
- export async function exportResourceTypeByNameToFile(resourceTypeName, file) {
249
- let outcome = false;
250
- debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: begin`);
251
- showSpinner(`Exporting ${resourceTypeName}...`);
252
- try {
253
- let fileName = getTypedFilename(resourceTypeName, 'resourcetype.authz');
254
- if (file) {
255
- fileName = file;
256
- }
257
- const exportData = await exportResourceTypeByName(resourceTypeName);
258
- saveJsonToFile(exportData, fileName);
259
- succeedSpinner(`Exported ${resourceTypeName} to ${fileName}.`);
260
- outcome = true;
261
- } catch (error) {
262
- failSpinner(`Error exporting ${resourceTypeName}: ${error.message}`);
263
- }
264
- debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: end`);
265
- return outcome;
266
- }
267
-
268
- /**
269
- * Export resource types to file
270
- * @param {string} file file name
271
- * @returns {Promise<boolean>} true if successful, false otherwise
272
- */
273
- export async function exportResourceTypesToFile(file) {
274
- let outcome = false;
275
- debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: begin`);
276
- showSpinner(`Exporting all resource types...`);
277
- try {
278
- let fileName = getTypedFilename(`all${titleCase(getRealmName(state.getRealm()))}ResourceTypes`, 'resourcetype.authz');
279
- if (file) {
280
- fileName = file;
281
- }
282
- const exportData = await exportResourceTypes();
283
- saveJsonToFile(exportData, fileName);
284
- succeedSpinner(`Exported all resource types to ${fileName}.`);
285
- outcome = true;
286
- } catch (error) {
287
- failSpinner(`Error exporting resource types: ${error.message}`);
288
- }
289
- debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: end`);
290
- return outcome;
291
- }
292
-
293
- /**
294
- * Export all resource types to separate files
295
- * @returns {Promise<boolean>} true if successful, false otherwise
296
- */
297
- export async function exportResourceTypesToFiles() {
298
- debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: begin`);
299
- const errors = [];
300
- try {
301
- const resourceTypes = await getResourceTypes();
302
- createProgressBar(resourceTypes.length, 'Exporting resource types...');
303
- for (const resourceType of resourceTypes) {
304
- const file = getTypedFilename(resourceType.name, 'resourcetype.authz');
305
- try {
306
- const exportData = await exportResourceType(resourceType.uuid);
307
- saveJsonToFile(exportData, file);
308
- updateProgressBar(`Exported ${resourceType.name}.`);
309
- } catch (error) {
310
- errors.push(error);
311
- updateProgressBar(`Error exporting ${resourceType.name}.`);
312
- }
313
- }
314
- stopProgressBar(`Export complete.`);
315
- } catch (error) {
316
- errors.push(error);
317
- stopProgressBar(`Error exporting resource types to files`);
318
- }
319
- debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: end`);
320
- return 0 === errors.length;
321
- }
322
-
323
- /**
324
- * Import resource type from file
325
- * @param {string} resourceTypeId resource type id
326
- * @param {string} file file name
327
- * @returns {Promise<boolean>} true if successful, false otherwise
328
- */
329
- export async function importResourceTypeFromFile(resourceTypeId, file) {
330
- let outcome = false;
331
- debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: begin`);
332
- showSpinner(`Importing ${resourceTypeId}...`);
333
- try {
334
- const data = fs.readFileSync(file, 'utf8');
335
- const fileData = JSON.parse(data);
336
- await importResourceType(resourceTypeId, fileData);
337
- outcome = true;
338
- succeedSpinner(`Imported ${resourceTypeId}.`);
339
- } catch (error) {
340
- failSpinner(`Error importing ${resourceTypeId}: ${error.message}`);
341
- printMessage(error, 'error');
342
- }
343
- debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: end`);
344
- return outcome;
345
- }
346
-
347
- /**
348
- * Import resource type by name from file
349
- * @param {string} resourceTypeName resource type name
350
- * @param {string} file file name
351
- * @returns {Promise<boolean>} true if successful, false otherwise
352
- */
353
- export async function importResourceTypeByNameFromFile(resourceTypeName, file) {
354
- let outcome = false;
355
- debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: begin`);
356
- showSpinner(`Importing ${resourceTypeName}...`);
357
- try {
358
- const data = fs.readFileSync(file, 'utf8');
359
- const fileData = JSON.parse(data);
360
- await importResourceTypeByName(resourceTypeName, fileData);
361
- outcome = true;
362
- succeedSpinner(`Imported ${resourceTypeName}.`);
363
- } catch (error) {
364
- failSpinner(`Error importing ${resourceTypeName}: ${error.message}`);
365
- printMessage(error, 'error');
366
- }
367
- debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: end`);
368
- return outcome;
369
- }
370
-
371
- /**
372
- * Import first resource type from file
373
- * @param {string} file file name
374
- * @returns {Promise<boolean>} true if successful, false otherwise
375
- */
376
- export async function importFirstResourceTypeFromFile(file) {
377
- let outcome = false;
378
- debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: begin`);
379
- showSpinner(`Importing ${file}...`);
380
- try {
381
- const data = fs.readFileSync(file, 'utf8');
382
- const fileData = JSON.parse(data);
383
- await importFirstResourceType(fileData);
384
- outcome = true;
385
- succeedSpinner(`Imported ${file}.`);
386
- } catch (error) {
387
- failSpinner(`Error importing ${file}.`);
388
- printMessage(error, 'error');
389
- }
390
- debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: end`);
391
- return outcome;
392
- }
393
-
394
- /**
395
- * Import resource types from file
396
- * @param {string} file file name
397
- * @returns {Promise<boolean>} true if successful, false otherwise
398
- */
399
- export async function importResourceTypesFromFile(file) {
400
- let outcome = false;
401
- debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: begin`);
402
- showSpinner(`Importing ${file}...`);
403
- try {
404
- const data = fs.readFileSync(file, 'utf8');
405
- const fileData = JSON.parse(data);
406
- await importResourceTypes(fileData);
407
- outcome = true;
408
- succeedSpinner(`Imported ${file}.`);
409
- } catch (error) {
410
- failSpinner(`Error importing ${file}.`);
411
- printMessage(error, 'error');
412
- }
413
- debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: end`);
414
- return outcome;
415
- }
416
-
417
- /**
418
- * Import resource types from files
419
- * @returns {Promise<boolean>} true if successful, false otherwise
420
- */
421
- export async function importResourceTypesFromFiles() {
422
- const errors = [];
423
- try {
424
- debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: begin`);
425
- const names = fs.readdirSync('.');
426
- const files = names.filter(name => name.toLowerCase().endsWith('.resourcetype.authz.json'));
427
- createProgressBar(files.length, 'Importing resource types...');
428
- let total = 0;
429
- for (const file of files) {
430
- try {
431
- const data = fs.readFileSync(file, 'utf8');
432
- const fileData = JSON.parse(data);
433
- const count = Object.keys(fileData.resourcetype).length;
434
- total += count;
435
- await importResourceTypes(fileData);
436
- updateProgressBar(`Imported ${count} resource types from ${file}`);
437
- } catch (error) {
438
- errors.push(error);
439
- updateProgressBar(`Error importing resource types from ${file}`);
440
- printMessage(error, 'error');
441
- }
442
- }
443
- stopProgressBar(`Finished importing ${total} resource types from ${files.length} files.`);
444
- } catch (error) {
445
- errors.push(error);
446
- stopProgressBar(`Error importing resource types from files.`);
447
- printMessage(error, 'error');
448
- }
449
- debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: end`);
450
- return 0 === errors.length;
451
- }
452
- //# sourceMappingURL=ResourceTypeOps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResourceTypeOps.js","names":["frodo","state","fs","createObjectTable","createProgressBar","createTable","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","getRealmName","helper","utils","getResourceTypes","getResourceType","getResourceTypeByName","exportResourceType","exportResourceTypeByName","exportResourceTypes","importResourceType","importResourceTypeByName","importFirstResourceType","importResourceTypes","authz","resourceType","listResourceTypes","long","outcome","resourceTypes","sort","a","b","name","localeCompare","table","push","description","uuid","toString","err","message","describeResourceType","resourceTypeUuid","json","error","_error$response","response","status","getRealm","_error$response2","_error$response2$data","data","describeResourceTypeByName","resourceTypeName","_error$response3","_error$response4","_error$response4$data","deleteResourceType","errors","length","errorMessages","map","_error$response5","_error$response5$data","join","deleteResourceTypeByName","_error$response6","_error$response6$data","deleteResourceTypes","resourceTypeId","exportResourceTypeToFile","file","fileName","exportData","exportResourceTypeByNameToFile","exportResourceTypesToFile","exportResourceTypesToFiles","importResourceTypeFromFile","readFileSync","fileData","JSON","parse","importResourceTypeByNameFromFile","importFirstResourceTypeFromFile","importResourceTypesFromFile","importResourceTypesFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","resourcetype"],"sources":["../../src/ops/ResourceTypeOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport type { ResourceTypeSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\n createObjectTable,\n createProgressBar,\n createTable,\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 { ResourceTypeExportInterface } from '@rockcarver/frodo-lib/types/ops/ResourceTypeOps';\n\nconst { getRealmName } = frodo.helper.utils;\nconst {\n getResourceTypes,\n getResourceType,\n getResourceTypeByName,\n exportResourceType,\n exportResourceTypeByName,\n exportResourceTypes,\n importResourceType,\n importResourceTypeByName,\n importFirstResourceType,\n importResourceTypes,\n} = frodo.authz.resourceType;\n\n/**\n * List resource types\n * @param {boolean} long more fields\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listResourceTypes(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const resourceTypes = await getResourceTypes();\n resourceTypes.sort((a, b) => a.name.localeCompare(b.name));\n if (long) {\n const table = createTable(['Name', 'Description', 'Uuid']);\n for (const resourceType of resourceTypes) {\n table.push([\n `${resourceType.name}`,\n `${resourceType.description}`,\n `${resourceType.uuid}`,\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const resourceType of resourceTypes) {\n printMessage(`${resourceType.name}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listResourceTypes ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe resource type by uuid\n * @param {string} resourceTypeUuid resource type uuid\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeResourceType(\n resourceTypeUuid: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const resourceType = await getResourceType(resourceTypeUuid);\n if (json) {\n printMessage(resourceType, 'data');\n } else {\n const table = createObjectTable(resourceType);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n if (error.response?.status === 404) {\n printMessage(\n `Resource Type with uuid ${resourceTypeUuid} does not exist in realm ${state.getRealm()}`,\n 'error'\n );\n } else {\n printMessage(error.response?.data?.message || error.message, 'error');\n }\n }\n return outcome;\n}\n\n/**\n * Describe resource type by name\n * @param {string} resourceTypeName resource type name\n * @param {boolean} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describeResourceTypeByName(\n resourceTypeName: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const resourceType = await getResourceTypeByName(resourceTypeName);\n if (json) {\n printMessage(resourceType, 'data');\n } else {\n const table = createObjectTable(resourceType);\n printMessage(table.toString(), 'data');\n }\n outcome = true;\n } catch (error) {\n if (error.response?.status === 404) {\n printMessage(\n `Resource Type with name ${resourceTypeName} does not exist in realm ${state.getRealm()}`,\n 'error'\n );\n } else {\n printMessage(error.response?.data?.message || error.message, 'error');\n }\n }\n return outcome;\n}\n\n/**\n * Delete resource type by uuid\n * @param {string} resourceTypeUuid resource type uuid\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceType(\n resourceTypeUuid: string\n): Promise<boolean | ResourceTypeSkeleton> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceType: begin`);\n showSpinner(`Deleting ${resourceTypeUuid}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting resource type ${resourceTypeUuid}`);\n await deleteResourceType(resourceTypeUuid);\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n failSpinner(`Error deleting ${resourceTypeUuid}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${resourceTypeUuid}.`);\n outcome = true;\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceType: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Delete resource type by name\n * @param {string} resourceTypeName resource type name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceTypeByName(\n resourceTypeName: string\n): Promise<boolean | ResourceTypeSkeleton> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceTypeByName: begin`);\n showSpinner(`Deleting ${resourceTypeName}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting resource type ${resourceTypeName}`);\n await deleteResourceTypeByName(resourceTypeName);\n } catch (error) {\n errors.push(error);\n }\n if (errors.length) {\n const errorMessages = errors\n .map((error) => error.response?.data?.message || error.message)\n .join('\\n');\n failSpinner(`Error deleting ${resourceTypeName}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${resourceTypeName}.`);\n outcome = true;\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceTypeByName: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Delete all resource types\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deleteResourceTypes(): Promise<\n boolean | ResourceTypeSkeleton\n> {\n debugMessage(`cli.ResourceTypeOps.deleteResourceTypes: begin`);\n let outcome = false;\n const errors = [];\n let resourceTypes: ResourceTypeSkeleton[] = [];\n try {\n showSpinner(`Retrieving all resource types...`);\n try {\n resourceTypes = await getResourceTypes();\n succeedSpinner(`Found ${resourceTypes.length} resource types.`);\n } catch (error) {\n error.message = `Error retrieving all resource types: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (resourceTypes.length)\n createProgressBar(\n resourceTypes.length,\n `Deleting ${resourceTypes.length} resource types...`\n );\n for (const resourceType of resourceTypes) {\n const resourceTypeId = resourceType.uuid;\n try {\n debugMessage(`Deleting resource type ${resourceTypeId}`);\n await deleteResourceType(resourceTypeId);\n updateProgressBar(`Deleted ${resourceTypeId}`);\n } catch (error) {\n error.message = `Error deleting resource type ${resourceTypeId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting resource types: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (resourceTypes.length)\n stopProgressBar(`Error deleting all resource types: ${errorMessages}`);\n } else {\n if (resourceTypes.length)\n stopProgressBar(`Deleted ${resourceTypes.length} resource types.`);\n outcome = true;\n }\n }\n debugMessage(\n `cli.ResourceTypeOps.deleteResourceTypes: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export resource type to file\n * @param {string} resourceTypeUuid resource type uuid\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypeToFile(\n resourceTypeUuid: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: begin`);\n showSpinner(`Exporting ${resourceTypeUuid}...`);\n try {\n let fileName = getTypedFilename(resourceTypeUuid, 'resourcetype.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceType(resourceTypeUuid);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${resourceTypeUuid} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${resourceTypeUuid}: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeToFile: end`);\n return outcome;\n}\n\n/**\n * Export resource type by name to file\n * @param {string} resourceTypeName resource type name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypeByNameToFile(\n resourceTypeName: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: begin`);\n showSpinner(`Exporting ${resourceTypeName}...`);\n try {\n let fileName = getTypedFilename(resourceTypeName, 'resourcetype.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceTypeByName(resourceTypeName);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${resourceTypeName} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${resourceTypeName}: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypeByNameToFile: end`);\n return outcome;\n}\n\n/**\n * Export resource types to file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypesToFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: begin`);\n showSpinner(`Exporting all resource types...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}ResourceTypes`,\n 'resourcetype.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportResourceTypes();\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all resource types to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting resource types: ${error.message}`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all resource types to separate files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportResourceTypesToFiles(): Promise<boolean> {\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: begin`);\n const errors = [];\n try {\n const resourceTypes: ResourceTypeSkeleton[] = await getResourceTypes();\n createProgressBar(resourceTypes.length, 'Exporting resource types...');\n for (const resourceType of resourceTypes) {\n const file = getTypedFilename(resourceType.name, 'resourcetype.authz');\n try {\n const exportData: ResourceTypeExportInterface =\n await exportResourceType(resourceType.uuid);\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${resourceType.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${resourceType.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting resource types to files`);\n }\n debugMessage(`cli.ResourceTypeOps.exportResourceTypesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import resource type from file\n * @param {string} resourceTypeId resource type id\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypeFromFile(\n resourceTypeId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: begin`);\n showSpinner(`Importing ${resourceTypeId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceType(resourceTypeId, fileData);\n outcome = true;\n succeedSpinner(`Imported ${resourceTypeId}.`);\n } catch (error) {\n failSpinner(`Error importing ${resourceTypeId}: ${error.message}`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypeFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource type by name from file\n * @param {string} resourceTypeName resource type name\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypeByNameFromFile(\n resourceTypeName: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: begin`);\n showSpinner(`Importing ${resourceTypeName}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceTypeByName(resourceTypeName, fileData);\n outcome = true;\n succeedSpinner(`Imported ${resourceTypeName}.`);\n } catch (error) {\n failSpinner(`Error importing ${resourceTypeName}: ${error.message}`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypeByNameFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first resource type from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstResourceTypeFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstResourceType(fileData);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importFirstResourceTypeFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource types from file\n * @param {string} file file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypesFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importResourceTypes(fileData);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import resource types from files\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importResourceTypesFromFiles(): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.resourcetype.authz.json')\n );\n createProgressBar(files.length, 'Importing resource types...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: ResourceTypeExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.resourcetype).length;\n total += count;\n await importResourceTypes(fileData);\n updateProgressBar(`Imported ${count} resource types from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing resource types from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} resource types from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing resource types from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.ResourceTypeOps.importResourceTypesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}