@rockcarver/frodo-cli 2.0.0-5 → 2.0.0-51

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 (482) hide show
  1. package/CHANGELOG.md +365 -6
  2. package/esm/app.js +20 -3
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/FrodoCommand.js +33 -7
  5. package/esm/cli/FrodoCommand.js.map +1 -1
  6. package/esm/cli/_template/something-delete.js +4 -5
  7. package/esm/cli/_template/something-delete.js.map +1 -1
  8. package/esm/cli/_template/something-describe.js +4 -5
  9. package/esm/cli/_template/something-describe.js.map +1 -1
  10. package/esm/cli/_template/something-else-delete.js +4 -5
  11. package/esm/cli/_template/something-else-delete.js.map +1 -1
  12. package/esm/cli/_template/something-else-describe.js +4 -5
  13. package/esm/cli/_template/something-else-describe.js.map +1 -1
  14. package/esm/cli/_template/something-else-export.js +5 -6
  15. package/esm/cli/_template/something-else-export.js.map +1 -1
  16. package/esm/cli/_template/something-else-import.js +4 -5
  17. package/esm/cli/_template/something-else-import.js.map +1 -1
  18. package/esm/cli/_template/something-else-list.js +4 -5
  19. package/esm/cli/_template/something-else-list.js.map +1 -1
  20. package/esm/cli/_template/something-else.js +1 -1
  21. package/esm/cli/_template/something-else.js.map +1 -1
  22. package/esm/cli/_template/something-export.js +5 -6
  23. package/esm/cli/_template/something-export.js.map +1 -1
  24. package/esm/cli/_template/something-import.js +4 -5
  25. package/esm/cli/_template/something-import.js.map +1 -1
  26. package/esm/cli/_template/something-list.js +4 -5
  27. package/esm/cli/_template/something-list.js.map +1 -1
  28. package/esm/cli/_template/something-other-delete.js +4 -5
  29. package/esm/cli/_template/something-other-delete.js.map +1 -1
  30. package/esm/cli/_template/something-other-describe.js +4 -5
  31. package/esm/cli/_template/something-other-describe.js.map +1 -1
  32. package/esm/cli/_template/something-other-export.js +5 -6
  33. package/esm/cli/_template/something-other-export.js.map +1 -1
  34. package/esm/cli/_template/something-other-import.js +4 -5
  35. package/esm/cli/_template/something-other-import.js.map +1 -1
  36. package/esm/cli/_template/something-other-list.js +4 -5
  37. package/esm/cli/_template/something-other-list.js.map +1 -1
  38. package/esm/cli/_template/something-other.js +1 -1
  39. package/esm/cli/_template/something-other.js.map +1 -1
  40. package/esm/cli/_template/something.js +2 -2
  41. package/esm/cli/_template/something.js.map +1 -1
  42. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +8 -5
  43. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
  44. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +12 -8
  45. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  46. package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js +38 -0
  47. package/esm/cli/admin/admin-execute-rfc7523-authz-grant-flow.js.map +1 -0
  48. package/esm/cli/admin/admin-federation-export.js +41 -0
  49. package/esm/cli/admin/admin-federation-export.js.map +1 -0
  50. package/esm/cli/admin/admin-federation-import.js +45 -0
  51. package/esm/cli/admin/admin-federation-import.js.map +1 -0
  52. package/esm/cli/admin/admin-federation-list.js +25 -0
  53. package/esm/cli/admin/admin-federation-list.js.map +1 -0
  54. package/esm/cli/admin/admin-federation.js +13 -0
  55. package/esm/cli/admin/admin-federation.js.map +1 -0
  56. package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artefacts.js +41 -0
  57. package/esm/cli/admin/admin-generate-rfc7523-authz-grant-artefacts.js.map +1 -0
  58. package/esm/cli/admin/admin-get-access-token.js +10 -7
  59. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  60. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +11 -8
  61. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  62. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +9 -6
  63. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  64. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +9 -6
  65. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  66. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +9 -6
  67. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  68. package/esm/cli/admin/admin-list-static-user-mappings.js +10 -7
  69. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  70. package/esm/cli/admin/admin-remove-static-user-mapping.js +10 -6
  71. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  72. package/esm/cli/admin/admin-repair-org-model.js +9 -6
  73. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  74. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +10 -7
  75. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  76. package/esm/cli/admin/admin-show-generic-extension-attributes.js +9 -6
  77. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  78. package/esm/cli/admin/admin-train-auto-access-model.js +30 -0
  79. package/esm/cli/admin/admin-train-auto-access-model.js.map +1 -0
  80. package/esm/cli/admin/admin.js +8 -2
  81. package/esm/cli/admin/admin.js.map +1 -1
  82. package/esm/cli/agent/agent-delete.js +11 -7
  83. package/esm/cli/agent/agent-delete.js.map +1 -1
  84. package/esm/cli/agent/agent-describe.js +4 -5
  85. package/esm/cli/agent/agent-describe.js.map +1 -1
  86. package/esm/cli/agent/agent-export.js +9 -10
  87. package/esm/cli/agent/agent-export.js.map +1 -1
  88. package/esm/cli/agent/agent-gateway-delete.js +11 -7
  89. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  90. package/esm/cli/agent/agent-gateway-describe.js +4 -5
  91. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  92. package/esm/cli/agent/agent-gateway-export.js +9 -10
  93. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  94. package/esm/cli/agent/agent-gateway-import.js +5 -6
  95. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  96. package/esm/cli/agent/agent-gateway-list.js +4 -5
  97. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  98. package/esm/cli/agent/agent-gateway.js +1 -1
  99. package/esm/cli/agent/agent-gateway.js.map +1 -1
  100. package/esm/cli/agent/agent-import.js +5 -6
  101. package/esm/cli/agent/agent-import.js.map +1 -1
  102. package/esm/cli/agent/agent-java-delete.js +11 -7
  103. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  104. package/esm/cli/agent/agent-java-describe.js +4 -5
  105. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  106. package/esm/cli/agent/agent-java-export.js +9 -10
  107. package/esm/cli/agent/agent-java-export.js.map +1 -1
  108. package/esm/cli/agent/agent-java-import.js +5 -6
  109. package/esm/cli/agent/agent-java-import.js.map +1 -1
  110. package/esm/cli/agent/agent-java-list.js +4 -5
  111. package/esm/cli/agent/agent-java-list.js.map +1 -1
  112. package/esm/cli/agent/agent-java.js +1 -1
  113. package/esm/cli/agent/agent-java.js.map +1 -1
  114. package/esm/cli/agent/agent-list.js +4 -5
  115. package/esm/cli/agent/agent-list.js.map +1 -1
  116. package/esm/cli/agent/agent-web-delete.js +11 -7
  117. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  118. package/esm/cli/agent/agent-web-describe.js +4 -5
  119. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  120. package/esm/cli/agent/agent-web-export.js +9 -10
  121. package/esm/cli/agent/agent-web-export.js.map +1 -1
  122. package/esm/cli/agent/agent-web-import.js +5 -6
  123. package/esm/cli/agent/agent-web-import.js.map +1 -1
  124. package/esm/cli/agent/agent-web-list.js +4 -5
  125. package/esm/cli/agent/agent-web-list.js.map +1 -1
  126. package/esm/cli/agent/agent-web.js +3 -3
  127. package/esm/cli/agent/agent-web.js.map +1 -1
  128. package/esm/cli/agent/agent.js +2 -2
  129. package/esm/cli/agent/agent.js.map +1 -1
  130. package/esm/cli/app/app-delete.js +24 -9
  131. package/esm/cli/app/app-delete.js.map +1 -1
  132. package/esm/cli/app/app-describe.js +6 -6
  133. package/esm/cli/app/app-describe.js.map +1 -1
  134. package/esm/cli/app/app-export.js +14 -14
  135. package/esm/cli/app/app-export.js.map +1 -1
  136. package/esm/cli/app/app-import.js +18 -18
  137. package/esm/cli/app/app-import.js.map +1 -1
  138. package/esm/cli/app/app-list.js +9 -9
  139. package/esm/cli/app/app-list.js.map +1 -1
  140. package/esm/cli/app/app.js +8 -12
  141. package/esm/cli/app/app.js.map +1 -1
  142. package/esm/cli/authn/authn-describe.js +26 -0
  143. package/esm/cli/authn/authn-describe.js.map +1 -0
  144. package/esm/cli/authn/authn-export.js +22 -0
  145. package/esm/cli/authn/authn-export.js.map +1 -0
  146. package/esm/cli/authn/authn-import.js +22 -0
  147. package/esm/cli/authn/authn-import.js.map +1 -0
  148. package/esm/cli/authn/authn.js +12 -0
  149. package/esm/cli/authn/authn.js.map +1 -0
  150. package/esm/cli/authz/authz-policy-delete.js +8 -9
  151. package/esm/cli/authz/authz-policy-delete.js.map +1 -1
  152. package/esm/cli/authz/authz-policy-describe.js +5 -6
  153. package/esm/cli/authz/authz-policy-describe.js.map +1 -1
  154. package/esm/cli/authz/authz-policy-export.js +15 -16
  155. package/esm/cli/authz/authz-policy-export.js.map +1 -1
  156. package/esm/cli/authz/authz-policy-import.js +8 -9
  157. package/esm/cli/authz/authz-policy-import.js.map +1 -1
  158. package/esm/cli/authz/authz-policy-list.js +8 -9
  159. package/esm/cli/authz/authz-policy-list.js.map +1 -1
  160. package/esm/cli/authz/authz-policy.js +1 -1
  161. package/esm/cli/authz/authz-policy.js.map +1 -1
  162. package/esm/cli/authz/authz-set-delete.js +8 -9
  163. package/esm/cli/authz/authz-set-delete.js.map +1 -1
  164. package/esm/cli/authz/authz-set-describe.js +5 -6
  165. package/esm/cli/authz/authz-set-describe.js.map +1 -1
  166. package/esm/cli/authz/authz-set-export.js +11 -12
  167. package/esm/cli/authz/authz-set-export.js.map +1 -1
  168. package/esm/cli/authz/authz-set-import.js +8 -9
  169. package/esm/cli/authz/authz-set-import.js.map +1 -1
  170. package/esm/cli/authz/authz-set-list.js +6 -7
  171. package/esm/cli/authz/authz-set-list.js.map +1 -1
  172. package/esm/cli/authz/authz-set.js +1 -1
  173. package/esm/cli/authz/authz-set.js.map +1 -1
  174. package/esm/cli/authz/authz-type-delete.js +10 -11
  175. package/esm/cli/authz/authz-type-delete.js.map +1 -1
  176. package/esm/cli/authz/authz-type-describe.js +6 -7
  177. package/esm/cli/authz/authz-type-describe.js.map +1 -1
  178. package/esm/cli/authz/authz-type-export.js +13 -14
  179. package/esm/cli/authz/authz-type-export.js.map +1 -1
  180. package/esm/cli/authz/authz-type-import.js +11 -12
  181. package/esm/cli/authz/authz-type-import.js.map +1 -1
  182. package/esm/cli/authz/authz-type-list.js +6 -7
  183. package/esm/cli/authz/authz-type-list.js.map +1 -1
  184. package/esm/cli/authz/authz-type.js +1 -1
  185. package/esm/cli/authz/authz-type.js.map +1 -1
  186. package/esm/cli/authz/authz.js +2 -2
  187. package/esm/cli/authz/authz.js.map +1 -1
  188. package/esm/cli/config/config-delete.js +18 -0
  189. package/esm/cli/config/config-delete.js.map +1 -0
  190. package/esm/cli/config/config-describe.js +18 -0
  191. package/esm/cli/config/config-describe.js.map +1 -0
  192. package/esm/cli/config/config-export.js +45 -0
  193. package/esm/cli/config/config-export.js.map +1 -0
  194. package/esm/cli/config/config-import.js +54 -0
  195. package/esm/cli/config/config-import.js.map +1 -0
  196. package/esm/cli/config/config-list.js +18 -0
  197. package/esm/cli/config/config-list.js.map +1 -0
  198. package/esm/cli/config/config.js +19 -0
  199. package/esm/cli/config/config.js.map +1 -0
  200. package/esm/cli/conn/conn-delete.js +2 -3
  201. package/esm/cli/conn/conn-delete.js.map +1 -1
  202. package/esm/cli/conn/conn-describe.js +2 -3
  203. package/esm/cli/conn/conn-describe.js.map +1 -1
  204. package/esm/cli/conn/conn-list.js +2 -3
  205. package/esm/cli/conn/conn-list.js.map +1 -1
  206. package/esm/cli/conn/conn-save.js +25 -15
  207. package/esm/cli/conn/conn-save.js.map +1 -1
  208. package/esm/cli/conn/conn.js +2 -2
  209. package/esm/cli/conn/conn.js.map +1 -1
  210. package/esm/cli/email/email-template-export.js +12 -12
  211. package/esm/cli/email/email-template-export.js.map +1 -1
  212. package/esm/cli/email/email-template-import.js +12 -13
  213. package/esm/cli/email/email-template-import.js.map +1 -1
  214. package/esm/cli/email/email-template-list.js +6 -7
  215. package/esm/cli/email/email-template-list.js.map +1 -1
  216. package/esm/cli/email/email-template.js +1 -1
  217. package/esm/cli/email/email-template.js.map +1 -1
  218. package/esm/cli/email/email.js +2 -2
  219. package/esm/cli/email/email.js.map +1 -1
  220. package/esm/cli/esv/esv-apply.js +16 -9
  221. package/esm/cli/esv/esv-apply.js.map +1 -1
  222. package/esm/cli/esv/esv-secret-create.js +13 -8
  223. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  224. package/esm/cli/esv/esv-secret-delete.js +10 -10
  225. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  226. package/esm/cli/esv/esv-secret-describe.js +7 -7
  227. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  228. package/esm/cli/esv/esv-secret-export.js +20 -7
  229. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  230. package/esm/cli/esv/esv-secret-import.js +4 -5
  231. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  232. package/esm/cli/esv/esv-secret-list.js +8 -8
  233. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  234. package/esm/cli/esv/esv-secret-set.js +7 -7
  235. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  236. package/esm/cli/esv/esv-secret-version-activate.js +7 -8
  237. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  238. package/esm/cli/esv/esv-secret-version-create.js +13 -8
  239. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  240. package/esm/cli/esv/esv-secret-version-deactivate.js +7 -8
  241. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  242. package/esm/cli/esv/esv-secret-version-delete.js +10 -10
  243. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  244. package/esm/cli/esv/esv-secret-version-list.js +7 -7
  245. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  246. package/esm/cli/esv/esv-secret-version.js +1 -1
  247. package/esm/cli/esv/esv-secret-version.js.map +1 -1
  248. package/esm/cli/esv/esv-secret.js +2 -3
  249. package/esm/cli/esv/esv-secret.js.map +1 -1
  250. package/esm/cli/esv/esv-variable-create.js +9 -8
  251. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  252. package/esm/cli/esv/esv-variable-delete.js +10 -9
  253. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  254. package/esm/cli/esv/esv-variable-describe.js +8 -8
  255. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  256. package/esm/cli/esv/esv-variable-export.js +21 -7
  257. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  258. package/esm/cli/esv/esv-variable-import.js +4 -5
  259. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  260. package/esm/cli/esv/esv-variable-list.js +8 -8
  261. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  262. package/esm/cli/esv/esv-variable-set.js +10 -9
  263. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  264. package/esm/cli/esv/esv-variable.js +2 -3
  265. package/esm/cli/esv/esv-variable.js.map +1 -1
  266. package/esm/cli/esv/esv.js +2 -2
  267. package/esm/cli/esv/esv.js.map +1 -1
  268. package/esm/cli/idm/idm-count.js +7 -8
  269. package/esm/cli/idm/idm-count.js.map +1 -1
  270. package/esm/cli/idm/idm-export.js +22 -16
  271. package/esm/cli/idm/idm-export.js.map +1 -1
  272. package/esm/cli/idm/idm-import.js +20 -14
  273. package/esm/cli/idm/idm-import.js.map +1 -1
  274. package/esm/cli/idm/idm-list.js +7 -8
  275. package/esm/cli/idm/idm-list.js.map +1 -1
  276. package/esm/cli/idm/idm.js +2 -2
  277. package/esm/cli/idm/idm.js.map +1 -1
  278. package/esm/cli/idp/idp-export.js +10 -10
  279. package/esm/cli/idp/idp-export.js.map +1 -1
  280. package/esm/cli/idp/idp-import.js +22 -14
  281. package/esm/cli/idp/idp-import.js.map +1 -1
  282. package/esm/cli/idp/idp-list.js +7 -7
  283. package/esm/cli/idp/idp-list.js.map +1 -1
  284. package/esm/cli/idp/idp.js +2 -2
  285. package/esm/cli/idp/idp.js.map +1 -1
  286. package/esm/cli/info/info.js +11 -7
  287. package/esm/cli/info/info.js.map +1 -1
  288. package/esm/cli/journey/journey-delete.js +12 -8
  289. package/esm/cli/journey/journey-delete.js.map +1 -1
  290. package/esm/cli/journey/journey-describe.js +20 -12
  291. package/esm/cli/journey/journey-describe.js.map +1 -1
  292. package/esm/cli/journey/journey-disable.js +8 -12
  293. package/esm/cli/journey/journey-disable.js.map +1 -1
  294. package/esm/cli/journey/journey-enable.js +8 -12
  295. package/esm/cli/journey/journey-enable.js.map +1 -1
  296. package/esm/cli/journey/journey-export.js +27 -16
  297. package/esm/cli/journey/journey-export.js.map +1 -1
  298. package/esm/cli/journey/journey-import.js +12 -13
  299. package/esm/cli/journey/journey-import.js.map +1 -1
  300. package/esm/cli/journey/journey-list.js +6 -6
  301. package/esm/cli/journey/journey-list.js.map +1 -1
  302. package/esm/cli/journey/journey-prune.js +21 -13
  303. package/esm/cli/journey/journey-prune.js.map +1 -1
  304. package/esm/cli/journey/journey.js +2 -2
  305. package/esm/cli/journey/journey.js.map +1 -1
  306. package/esm/cli/log/log-fetch.js +65 -35
  307. package/esm/cli/log/log-fetch.js.map +1 -1
  308. package/esm/cli/log/log-key-delete.js +6 -7
  309. package/esm/cli/log/log-key-delete.js.map +1 -1
  310. package/esm/cli/log/log-key-describe.js +4 -5
  311. package/esm/cli/log/log-key-describe.js.map +1 -1
  312. package/esm/cli/log/log-key-list.js +4 -5
  313. package/esm/cli/log/log-key-list.js.map +1 -1
  314. package/esm/cli/log/log-key.js +1 -1
  315. package/esm/cli/log/log-key.js.map +1 -1
  316. package/esm/cli/log/log-list.js +62 -33
  317. package/esm/cli/log/log-list.js.map +1 -1
  318. package/esm/cli/log/log-tail.js +63 -34
  319. package/esm/cli/log/log-tail.js.map +1 -1
  320. package/esm/cli/log/log.js +2 -2
  321. package/esm/cli/log/log.js.map +1 -1
  322. package/esm/cli/oauth/oauth-client-delete.js +18 -0
  323. package/esm/cli/oauth/oauth-client-delete.js.map +1 -0
  324. package/esm/cli/oauth/oauth-client-describe.js +18 -0
  325. package/esm/cli/oauth/oauth-client-describe.js.map +1 -0
  326. package/esm/cli/oauth/oauth-client-export.js +48 -0
  327. package/esm/cli/oauth/oauth-client-export.js.map +1 -0
  328. package/esm/cli/oauth/oauth-client-import.js +53 -0
  329. package/esm/cli/oauth/oauth-client-import.js.map +1 -0
  330. package/esm/cli/oauth/oauth-client-list.js +21 -0
  331. package/esm/cli/oauth/oauth-client-list.js.map +1 -0
  332. package/esm/cli/oauth/oauth-client.js +14 -0
  333. package/esm/cli/oauth/oauth-client.js.map +1 -0
  334. package/esm/cli/oauth/oauth.js +13 -0
  335. package/esm/cli/oauth/oauth.js.map +1 -0
  336. package/esm/cli/realm/realm-add-custom-domain.js +6 -6
  337. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  338. package/esm/cli/realm/realm-describe.js +6 -6
  339. package/esm/cli/realm/realm-describe.js.map +1 -1
  340. package/esm/cli/realm/realm-list.js +5 -6
  341. package/esm/cli/realm/realm-list.js.map +1 -1
  342. package/esm/cli/realm/realm-remove-custom-domain.js +9 -6
  343. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  344. package/esm/cli/realm/realm.js +2 -2
  345. package/esm/cli/realm/realm.js.map +1 -1
  346. package/esm/cli/saml/saml-cot-export.js +12 -12
  347. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  348. package/esm/cli/saml/saml-cot-import.js +13 -13
  349. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  350. package/esm/cli/saml/saml-cot-list.js +7 -7
  351. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  352. package/esm/cli/saml/saml-cot.js +1 -1
  353. package/esm/cli/saml/saml-cot.js.map +1 -1
  354. package/esm/cli/saml/saml-delete.js +12 -8
  355. package/esm/cli/saml/saml-delete.js.map +1 -1
  356. package/esm/cli/saml/saml-describe.js +7 -7
  357. package/esm/cli/saml/saml-describe.js.map +1 -1
  358. package/esm/cli/saml/saml-export.js +18 -12
  359. package/esm/cli/saml/saml-export.js.map +1 -1
  360. package/esm/cli/saml/saml-import.js +22 -14
  361. package/esm/cli/saml/saml-import.js.map +1 -1
  362. package/esm/cli/saml/saml-list.js +7 -7
  363. package/esm/cli/saml/saml-list.js.map +1 -1
  364. package/esm/cli/saml/saml-metadata-export.js +8 -8
  365. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  366. package/esm/cli/saml/saml-metadata.js +1 -1
  367. package/esm/cli/saml/saml-metadata.js.map +1 -1
  368. package/esm/cli/saml/saml.js +2 -2
  369. package/esm/cli/saml/saml.js.map +1 -1
  370. package/esm/cli/script/script-delete.js +19 -8
  371. package/esm/cli/script/script-delete.js.map +1 -1
  372. package/esm/cli/script/script-describe.js +4 -5
  373. package/esm/cli/script/script-describe.js.map +1 -1
  374. package/esm/cli/script/script-export.js +10 -15
  375. package/esm/cli/script/script-export.js.map +1 -1
  376. package/esm/cli/script/script-import.js +16 -10
  377. package/esm/cli/script/script-import.js.map +1 -1
  378. package/esm/cli/script/script-list.js +8 -8
  379. package/esm/cli/script/script-list.js.map +1 -1
  380. package/esm/cli/script/script.js +3 -5
  381. package/esm/cli/script/script.js.map +1 -1
  382. package/esm/cli/service/service-delete.js +5 -5
  383. package/esm/cli/service/service-delete.js.map +1 -1
  384. package/esm/cli/service/service-export.js +10 -11
  385. package/esm/cli/service/service-export.js.map +1 -1
  386. package/esm/cli/service/service-import.js +29 -14
  387. package/esm/cli/service/service-import.js.map +1 -1
  388. package/esm/cli/service/service-list.js +4 -4
  389. package/esm/cli/service/service-list.js.map +1 -1
  390. package/esm/cli/service/service.js +2 -2
  391. package/esm/cli/service/service.js.map +1 -1
  392. package/esm/cli/shell/shell.js +55 -0
  393. package/esm/cli/shell/shell.js.map +1 -0
  394. package/esm/cli/theme/theme-delete.js +11 -11
  395. package/esm/cli/theme/theme-delete.js.map +1 -1
  396. package/esm/cli/theme/theme-export.js +14 -14
  397. package/esm/cli/theme/theme-export.js.map +1 -1
  398. package/esm/cli/theme/theme-import.js +14 -14
  399. package/esm/cli/theme/theme-import.js.map +1 -1
  400. package/esm/cli/theme/theme-list.js +6 -6
  401. package/esm/cli/theme/theme-list.js.map +1 -1
  402. package/esm/cli/theme/theme.js +2 -2
  403. package/esm/cli/theme/theme.js.map +1 -1
  404. package/esm/help/SampleData.js +1 -1
  405. package/esm/help/SampleData.js.map +1 -1
  406. package/esm/launch.js +1 -1
  407. package/esm/launch.js.map +1 -1
  408. package/esm/loader.js +2 -2
  409. package/esm/loader.js.map +1 -1
  410. package/esm/ops/AdminFederationOps.js +231 -0
  411. package/esm/ops/AdminFederationOps.js.map +1 -0
  412. package/esm/ops/AdminOps.js +151 -0
  413. package/esm/ops/AdminOps.js.map +1 -0
  414. package/esm/ops/AgentOps.js +213 -150
  415. package/esm/ops/AgentOps.js.map +1 -1
  416. package/esm/ops/ApplicationOps.js +324 -0
  417. package/esm/ops/ApplicationOps.js.map +1 -0
  418. package/esm/ops/AuthenticateOps.js +28 -0
  419. package/esm/ops/AuthenticateOps.js.map +1 -0
  420. package/esm/ops/AuthenticationSettingsOps.js +90 -0
  421. package/esm/ops/AuthenticationSettingsOps.js.map +1 -0
  422. package/esm/ops/CirclesOfTrustOps.js +98 -78
  423. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  424. package/esm/ops/ConfigOps.js +168 -0
  425. package/esm/ops/ConfigOps.js.map +1 -0
  426. package/esm/ops/ConnectionProfileOps.js +13 -6
  427. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  428. package/esm/ops/EmailTemplateOps.js +122 -127
  429. package/esm/ops/EmailTemplateOps.js.map +1 -1
  430. package/esm/ops/IdmOps.js +101 -182
  431. package/esm/ops/IdmOps.js.map +1 -1
  432. package/esm/ops/IdpOps.js +108 -75
  433. package/esm/ops/IdpOps.js.map +1 -1
  434. package/esm/ops/JourneyOps.js +182 -116
  435. package/esm/ops/JourneyOps.js.map +1 -1
  436. package/esm/ops/LogOps.js +22 -12
  437. package/esm/ops/LogOps.js.map +1 -1
  438. package/esm/ops/NodeOps.js +14 -3
  439. package/esm/ops/NodeOps.js.map +1 -1
  440. package/esm/ops/OAuth2ClientOps.js +71 -49
  441. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  442. package/esm/ops/OrganizationOps.js +14 -22
  443. package/esm/ops/OrganizationOps.js.map +1 -1
  444. package/esm/ops/PolicyOps.js +127 -86
  445. package/esm/ops/PolicyOps.js.map +1 -1
  446. package/esm/ops/PolicySetOps.js +108 -76
  447. package/esm/ops/PolicySetOps.js.map +1 -1
  448. package/esm/ops/RealmOps.js +15 -10
  449. package/esm/ops/RealmOps.js.map +1 -1
  450. package/esm/ops/ResourceTypeOps.js +105 -87
  451. package/esm/ops/ResourceTypeOps.js.map +1 -1
  452. package/esm/ops/Saml2Ops.js +138 -91
  453. package/esm/ops/Saml2Ops.js.map +1 -1
  454. package/esm/ops/Saml2Ops.test_.js.map +1 -1
  455. package/esm/ops/ScriptOps.js +222 -90
  456. package/esm/ops/ScriptOps.js.map +1 -1
  457. package/esm/ops/SecretsOps.js +333 -79
  458. package/esm/ops/SecretsOps.js.map +1 -1
  459. package/esm/ops/ServiceOps.js +97 -54
  460. package/esm/ops/ServiceOps.js.map +1 -1
  461. package/esm/ops/ThemeOps.js +164 -158
  462. package/esm/ops/ThemeOps.js.map +1 -1
  463. package/esm/ops/VariablesOps.js +252 -65
  464. package/esm/ops/VariablesOps.js.map +1 -1
  465. package/esm/ops/utils/OpsUtils.js +1 -1
  466. package/esm/ops/utils/OpsUtils.js.map +1 -1
  467. package/esm/ops/utils/Wordwrap.js +1 -1
  468. package/esm/ops/utils/Wordwrap.js.map +1 -1
  469. package/esm/storage/StaticStorage.js +1 -1
  470. package/esm/storage/StaticStorage.js.map +1 -1
  471. package/esm/utils/Config.js +164 -4
  472. package/esm/utils/Config.js.map +1 -1
  473. package/esm/utils/Console.js +78 -35
  474. package/esm/utils/Console.js.map +1 -1
  475. package/esm/utils/Version.js +20 -17
  476. package/esm/utils/Version.js.map +1 -1
  477. package/global-jest-setup.js +5 -0
  478. package/package.json +56 -37
  479. package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
  480. package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
  481. package/esm/utils/ExportImportUtils.js +0 -90
  482. package/esm/utils/ExportImportUtils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"script-import.js","names":["FrodoCommand","Option","frodo","state","printMessage","verboseMessage","importScriptsFromFile","importScriptsFromFiles","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","tokens","login","getTokens","help","process","exitCode","getRealm","scriptName","outcome","script","file","reUuid","allSeparate","watch","parse"],"sources":["cli/script/script-import.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { frodo, state } from '@rockcarver/frodo-lib';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport {\n importScriptsFromFile,\n importScriptsFromFiles,\n} from '../../ops/ScriptOps';\n\nconst program = new FrodoCommand('frodo script import');\n\nprogram\n .description('Import scripts.')\n .addOption(new Option('-f, --file <file>', 'Name of the file to import.'))\n .addOption(\n new Option(\n '-n, --script-name <name>',\n 'Name of the script. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '--re-uuid',\n 'Re-UUID. Create a new UUID for the script upon import. Use this to duplicate a script or create a new version of the same script. Note that you must also choose a new name using -n/--script-name to avoid import errors.'\n ).default(false, 'false')\n )\n // deprecated option\n .addOption(\n new Option(\n '-s, --script <script>',\n 'DEPRECATED! Use -n/--script-name instead. Name of the script.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all scripts from separate files (*.script.json) in the current directory. Ignored with -n.'\n )\n )\n .addOption(\n new Option(\n '-w, --watch',\n 'Watch for changes to the script files and import the scripts automatically when the file changes. Can only be used with -A.'\n ).default(false, 'false')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n const tokens = await frodo.login.getTokens();\n if (!tokens) {\n printMessage('Unable to get tokens. Exiting...', 'error');\n program.help();\n process.exitCode = 1;\n return;\n }\n\n verboseMessage(`Importing script(s) into realm \"${state.getRealm()}\"...`);\n\n if (options.scriptName) {\n const outcome = await importScriptsFromFile(\n options.scriptName || options.script,\n options.file,\n options.reUuid\n );\n if (!outcome) process.exitCode = 1;\n } else if (options.allSeparate) {\n await importScriptsFromFiles(options.watch, options.reUuid, true);\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AACpD,SAASC,YAAY,EAAEC,cAAc,QAAQ,qBAAqB;AAClE,SACEC,qBAAqB,EACrBC,sBAAsB,QACjB,qBAAqB;AAE5B,MAAMC,OAAO,GAAG,IAAIR,YAAY,CAAC,qBAAqB,CAAC;AAEvDQ,OAAO,CACJC,WAAW,CAAC,iBAAiB,CAAC,CAC9BC,SAAS,CAAC,IAAIT,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAC,CACzES,SAAS,CACR,IAAIT,MAAM,CACR,0BAA0B,EAC1B,0DACF,CACF,CAAC,CACAS,SAAS,CACR,IAAIT,MAAM,CACR,WAAW,EACX,4NACF,CAAC,CAACU,OAAO,CAAC,KAAK,EAAE,OAAO,CAC1B;AACA;AAAA,CACCD,SAAS,CACR,IAAIT,MAAM,CACR,uBAAuB,EACvB,+DACF,CACF,CAAC,CACAS,SAAS,CACR,IAAIT,MAAM,CACR,oBAAoB,EACpB,mGACF,CACF,CAAC,CACAS,SAAS,CACR,IAAIT,MAAM,CACR,aAAa,EACb,6HACF,CAAC,CAACU,OAAO,CAAC,KAAK,EAAE,OAAO,CAC1B,CAAC,CACAC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,MAAME,MAAM,GAAG,MAAMlB,KAAK,CAACmB,KAAK,CAACC,SAAS,CAAC,CAAC;EAC5C,IAAI,CAACF,MAAM,EAAE;IACXhB,YAAY,CAAC,kCAAkC,EAAE,OAAO,CAAC;IACzDI,OAAO,CAACe,IAAI,CAAC,CAAC;IACdC,OAAO,CAACC,QAAQ,GAAG,CAAC;IACpB;EACF;EAEApB,cAAc,CAAE,mCAAkCF,KAAK,CAACuB,QAAQ,CAAC,CAAE,MAAK,CAAC;EAEzE,IAAIT,OAAO,CAACU,UAAU,EAAE;IACtB,MAAMC,OAAO,GAAG,MAAMtB,qBAAqB,CACzCW,OAAO,CAACU,UAAU,IAAIV,OAAO,CAACY,MAAM,EACpCZ,OAAO,CAACa,IAAI,EACZb,OAAO,CAACc,MACV,CAAC;IACD,IAAI,CAACH,OAAO,EAAEJ,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC,CAAC,MAAM,IAAIR,OAAO,CAACe,WAAW,EAAE;IAC9B,MAAMzB,sBAAsB,CAACU,OAAO,CAACgB,KAAK,EAAEhB,OAAO,CAACc,MAAM,EAAE,IAAI,CAAC;EACnE;AACF;AACA;AACF,CAAC;;AAEHvB,OAAO,CAAC0B,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"script-import.js","names":["state","Option","getTokens","importScriptsFromFile","importScriptsFromFiles","printMessage","verboseMessage","FrodoCommand","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","tokens","help","process","exitCode","getRealm","file","outcome","scriptName","script","reUuid","includeDefault","allSeparate","watch","parse"],"sources":["../../../src/cli/script/script-import.ts"],"sourcesContent":["import { state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport {\n importScriptsFromFile,\n importScriptsFromFiles,\n} from '../../ops/ScriptOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo script import');\n\nprogram\n .description('Import scripts.')\n .addOption(new Option('-f, --file <file>', 'Name of the file to import.'))\n .addOption(\n new Option(\n '-n, --script-name <name>',\n 'Name of the script. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '--re-uuid',\n 'Re-UUID. Create a new UUID for the script upon import. Use this to duplicate a script or create a new version of the same script. Note that you must also choose a new name using -n/--script-name to avoid import errors.'\n ).default(false, 'false')\n )\n // deprecated option\n .addOption(\n new Option(\n '-s, --script <script>',\n 'DEPRECATED! Use -n/--script-name instead. Name of the script.'\n )\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all scripts from separate files (*.script.json) in the current directory. Ignored with -n.'\n )\n )\n .addOption(\n new Option(\n '-w, --watch',\n 'Watch for changes to the script files and import the scripts automatically when the file changes. Can only be used with -A.'\n ).default(false, 'false')\n )\n .addOption(\n new Option(\n '-d, --default',\n 'Import all scripts including the default scripts. Ignored with -n.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n const tokens = await getTokens();\n if (!tokens) {\n printMessage('Unable to get tokens. Exiting...', 'error');\n program.help();\n process.exitCode = 1;\n return;\n }\n\n verboseMessage(`Importing script(s) into realm \"${state.getRealm()}\"...`);\n\n if (options.file) {\n const outcome = await importScriptsFromFile(\n options.scriptName || options.script,\n options.file,\n {\n reUuid: options.reUuid,\n includeDefault: options.default,\n }\n );\n if (!outcome) process.exitCode = 1;\n } else if (options.allSeparate) {\n await importScriptsFromFiles(\n options.watch,\n {\n reUuid: options.reUuid,\n includeDefault: options.default,\n },\n true\n );\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SACEC,qBAAqB,EACrBC,sBAAsB,QACjB,qBAAqB;AAC5B,SAASC,YAAY,EAAEC,cAAc,QAAQ,qBAAqB;AAClE,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,OAAO,GAAG,IAAID,YAAY,CAAC,qBAAqB,CAAC;AAEvDC,OAAO,CACJC,WAAW,CAAC,iBAAiB,CAAC,CAC9BC,SAAS,CAAC,IAAIT,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAC,CACzES,SAAS,CACR,IAAIT,MAAM,CACR,0BAA0B,EAC1B,0DACF,CACF,CAAC,CACAS,SAAS,CACR,IAAIT,MAAM,CACR,WAAW,EACX,4NACF,CAAC,CAACU,OAAO,CAAC,KAAK,EAAE,OAAO,CAC1B;AACA;AAAA,CACCD,SAAS,CACR,IAAIT,MAAM,CACR,uBAAuB,EACvB,+DACF,CACF,CAAC,CACAS,SAAS,CACR,IAAIT,MAAM,CACR,oBAAoB,EACpB,mGACF,CACF,CAAC,CACAS,SAAS,CACR,IAAIT,MAAM,CACR,aAAa,EACb,6HACF,CAAC,CAACU,OAAO,CAAC,KAAK,EAAE,OAAO,CAC1B,CAAC,CACAD,SAAS,CACR,IAAIT,MAAM,CACR,eAAe,EACf,oEACF,CACF,CAAC,CACAW,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,MAAME,MAAM,GAAG,MAAMlB,SAAS,CAAC,CAAC;EAChC,IAAI,CAACkB,MAAM,EAAE;IACXf,YAAY,CAAC,kCAAkC,EAAE,OAAO,CAAC;IACzDG,OAAO,CAACa,IAAI,CAAC,CAAC;IACdC,OAAO,CAACC,QAAQ,GAAG,CAAC;IACpB;EACF;EAEAjB,cAAc,CAAE,mCAAkCN,KAAK,CAACwB,QAAQ,CAAC,CAAE,MAAK,CAAC;EAEzE,IAAIP,OAAO,CAACQ,IAAI,EAAE;IAChB,MAAMC,OAAO,GAAG,MAAMvB,qBAAqB,CACzCc,OAAO,CAACU,UAAU,IAAIV,OAAO,CAACW,MAAM,EACpCX,OAAO,CAACQ,IAAI,EACZ;MACEI,MAAM,EAAEZ,OAAO,CAACY,MAAM;MACtBC,cAAc,EAAEb,OAAO,CAACN;IAC1B,CACF,CAAC;IACD,IAAI,CAACe,OAAO,EAAEJ,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC,CAAC,MAAM,IAAIN,OAAO,CAACc,WAAW,EAAE;IAC9B,MAAM3B,sBAAsB,CAC1Ba,OAAO,CAACe,KAAK,EACb;MACEH,MAAM,EAAEZ,OAAO,CAACY,MAAM;MACtBC,cAAc,EAAEb,OAAO,CAACN;IAC1B,CAAC,EACD,IACF,CAAC;EACH;AACF;AACA;AACF,CAAC;AAEHH,OAAO,CAACyB,KAAK,CAAC,CAAC"}
@@ -1,16 +1,17 @@
1
- import { FrodoCommand } from '../FrodoCommand';
1
+ import { state } from '@rockcarver/frodo-lib';
2
2
  import { Option } from 'commander';
3
- import { frodo, state } from '@rockcarver/frodo-lib';
4
- import { verboseMessage } from '../../utils/Console';
3
+ import { getTokens } from '../../ops/AuthenticateOps';
5
4
  import { listScripts } from '../../ops/ScriptOps';
5
+ import { verboseMessage } from '../../utils/Console';
6
+ import { FrodoCommand } from '../FrodoCommand';
6
7
  const program = new FrodoCommand('frodo script list');
7
- program.description('List scripts.').addOption(new Option('-l, --long', 'Long with all fields.').default(false, 'false')).action(
8
+ program.description('List scripts.').addOption(new Option('-l, --long', 'Long with all fields besides usage.').default(false, 'false')).addOption(new Option('-u, --usage', 'Display usage field. If a file is provided with -f or --file, it will search for usage in the file. If a directory is provided with -D or --directory, it will search for usage in all .json files in the directory and sub-directories. If no file or directory is provided, it will perform a full export automatically to determine usage.').default(false, 'false')).addOption(new Option('-f, --file [file]', 'Optional export file to use to determine usage. Overrides -D, --directory. Only used if -u or --usage is provided as well.')).action(
8
9
  // implement command logic inside action handler
9
10
  async (host, realm, user, password, options, command) => {
10
11
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
11
- if (await frodo.login.getTokens()) {
12
+ if (await getTokens()) {
12
13
  verboseMessage(`Listing scripts in realm "${state.getRealm()}"...`);
13
- const outcome = await listScripts(options.long);
14
+ const outcome = await listScripts(options.long, options.usage, options.file);
14
15
  if (!outcome) process.exitCode = 1;
15
16
  } else {
16
17
  process.exitCode = 1;
@@ -18,6 +19,5 @@ async (host, realm, user, password, options, command) => {
18
19
  }
19
20
  // end command logic inside action handler
20
21
  );
21
-
22
22
  program.parse();
23
- //# sourceMappingURL=script-list.js.map
23
+ //# sourceMappingURL=script-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"script-list.js","names":["FrodoCommand","Option","frodo","state","verboseMessage","listScripts","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","login","getTokens","getRealm","outcome","long","process","exitCode","parse"],"sources":["cli/script/script-list.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { frodo, state } from '@rockcarver/frodo-lib';\nimport { verboseMessage } from '../../utils/Console';\nimport { listScripts } from '../../ops/ScriptOps';\n\nconst program = new FrodoCommand('frodo script list');\n\nprogram\n .description('List scripts.')\n .addOption(\n new Option('-l, --long', 'Long with all fields.').default(false, 'false')\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await frodo.login.getTokens()) {\n verboseMessage(`Listing scripts in realm \"${state.getRealm()}\"...`);\n const outcome = await listScripts(options.long);\n if (!outcome) process.exitCode = 1;\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AACpD,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,WAAW,QAAQ,qBAAqB;AAEjD,MAAMC,OAAO,GAAG,IAAIN,YAAY,CAAC,mBAAmB,CAAC;AAErDM,OAAO,CACJC,WAAW,CAAC,eAAe,CAAC,CAC5BC,SAAS,CACR,IAAIP,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAACQ,OAAO,CAAC,KAAK,EAAE,OAAO,CAC1E,CAAC,CACAC,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMd,KAAK,CAACgB,KAAK,CAACC,SAAS,CAAC,CAAC,EAAE;IACjCf,cAAc,CAAE,6BAA4BD,KAAK,CAACiB,QAAQ,CAAC,CAAE,MAAK,CAAC;IACnE,MAAMC,OAAO,GAAG,MAAMhB,WAAW,CAACU,OAAO,CAACO,IAAI,CAAC;IAC/C,IAAI,CAACD,OAAO,EAAEE,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC,CAAC,MAAM;IACLD,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;;AAEHlB,OAAO,CAACmB,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"script-list.js","names":["state","Option","getTokens","listScripts","verboseMessage","FrodoCommand","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","getRealm","outcome","long","usage","file","process","exitCode","parse"],"sources":["../../../src/cli/script/script-list.ts"],"sourcesContent":["import { state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport { listScripts } from '../../ops/ScriptOps';\nimport { verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo script list');\n\nprogram\n .description('List scripts.')\n .addOption(\n new Option('-l, --long', 'Long with all fields besides usage.').default(\n false,\n 'false'\n )\n )\n .addOption(\n new Option(\n '-u, --usage',\n 'Display usage field. If a file is provided with -f or --file, it will search for usage in the file. If a directory is provided with -D or --directory, it will search for usage in all .json files in the directory and sub-directories. If no file or directory is provided, it will perform a full export automatically to determine usage.'\n ).default(false, 'false')\n )\n .addOption(\n new Option(\n '-f, --file [file]',\n 'Optional export file to use to determine usage. Overrides -D, --directory. Only used if -u or --usage is provided as well.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n verboseMessage(`Listing scripts in realm \"${state.getRealm()}\"...`);\n const outcome = await listScripts(\n options.long,\n options.usage,\n options.file\n );\n if (!outcome) process.exitCode = 1;\n } else {\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SAASC,WAAW,QAAQ,qBAAqB;AACjD,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,OAAO,GAAG,IAAID,YAAY,CAAC,mBAAmB,CAAC;AAErDC,OAAO,CACJC,WAAW,CAAC,eAAe,CAAC,CAC5BC,SAAS,CACR,IAAIP,MAAM,CAAC,YAAY,EAAE,qCAAqC,CAAC,CAACQ,OAAO,CACrE,KAAK,EACL,OACF,CACF,CAAC,CACAD,SAAS,CACR,IAAIP,MAAM,CACR,aAAa,EACb,+UACF,CAAC,CAACQ,OAAO,CAAC,KAAK,EAAE,OAAO,CAC1B,CAAC,CACAD,SAAS,CACR,IAAIP,MAAM,CACR,mBAAmB,EACnB,4HACF,CACF,CAAC,CACAS,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMd,SAAS,CAAC,CAAC,EAAE;IACrBE,cAAc,CAAE,6BAA4BJ,KAAK,CAACkB,QAAQ,CAAC,CAAE,MAAK,CAAC;IACnE,MAAMC,OAAO,GAAG,MAAMhB,WAAW,CAC/BY,OAAO,CAACK,IAAI,EACZL,OAAO,CAACM,KAAK,EACbN,OAAO,CAACO,IACV,CAAC;IACD,IAAI,CAACH,OAAO,EAAEI,OAAO,CAACC,QAAQ,GAAG,CAAC;EACpC,CAAC,MAAM;IACLD,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHlB,OAAO,CAACmB,KAAK,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
- import { FrodoStubCommand } from '../FrodoCommand';
2
1
  import path from 'path';
3
2
  import { fileURLToPath } from 'url';
3
+ import { FrodoStubCommand } from '../FrodoCommand';
4
4
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
5
5
  export default function setup() {
6
6
  const program = new FrodoStubCommand('script').description('Manage scripts.').executableDir(__dirname);
@@ -10,9 +10,7 @@ export default function setup() {
10
10
 
11
11
  program.command('export', 'Export scripts.');
12
12
  program.command('import', 'Import scripts.');
13
-
14
- // program.command('delete', 'Delete scripts.');
15
-
13
+ program.command('delete', 'Delete scripts.');
16
14
  return program;
17
15
  }
18
- //# sourceMappingURL=script.js.map
16
+ //# sourceMappingURL=script.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"script.js","names":["FrodoStubCommand","path","fileURLToPath","__dirname","dirname","import","meta","url","setup","program","description","executableDir","command"],"sources":["cli/script/script.ts"],"sourcesContent":["import { FrodoStubCommand } from '../FrodoCommand';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport default function setup() {\n const program = new FrodoStubCommand('script')\n .description('Manage scripts.')\n .executableDir(__dirname);\n\n program.command('list', 'List scripts.');\n\n // program.command('describe', 'Describe scripts.');\n\n program.command('export', 'Export scripts.');\n\n program.command('import', 'Import scripts.');\n\n // program.command('delete', 'Delete scripts.');\n\n return program;\n}\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,iBAAiB;AAClD,OAAOC,IAAI,MAAM,MAAM;AACvB,SAASC,aAAa,QAAQ,KAAK;AAEnC,MAAMC,SAAS,GAAGF,IAAI,CAACG,OAAO,CAACF,aAAa,CAACG,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;AAE9D,eAAe,SAASC,KAAKA,CAAA,EAAG;EAC9B,MAAMC,OAAO,GAAG,IAAIT,gBAAgB,CAAC,QAAQ,CAAC,CAC3CU,WAAW,CAAC,iBAAiB,CAAC,CAC9BC,aAAa,CAACR,SAAS,CAAC;EAE3BM,OAAO,CAACG,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC;;EAExC;;EAEAH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC;EAE5CH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC;;EAE5C;;EAEA,OAAOH,OAAO;AAChB"}
1
+ {"version":3,"file":"script.js","names":["path","fileURLToPath","FrodoStubCommand","__dirname","dirname","import","meta","url","setup","program","description","executableDir","command"],"sources":["../../../src/cli/script/script.ts"],"sourcesContent":["import path from 'path';\nimport { fileURLToPath } from 'url';\n\nimport { FrodoStubCommand } from '../FrodoCommand';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport default function setup() {\n const program = new FrodoStubCommand('script')\n .description('Manage scripts.')\n .executableDir(__dirname);\n\n program.command('list', 'List scripts.');\n\n // program.command('describe', 'Describe scripts.');\n\n program.command('export', 'Export scripts.');\n\n program.command('import', 'Import scripts.');\n\n program.command('delete', 'Delete scripts.');\n\n return program;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AACvB,SAASC,aAAa,QAAQ,KAAK;AAEnC,SAASC,gBAAgB,QAAQ,iBAAiB;AAElD,MAAMC,SAAS,GAAGH,IAAI,CAACI,OAAO,CAACH,aAAa,CAACI,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;AAE9D,eAAe,SAASC,KAAKA,CAAA,EAAG;EAC9B,MAAMC,OAAO,GAAG,IAAIP,gBAAgB,CAAC,QAAQ,CAAC,CAC3CQ,WAAW,CAAC,iBAAiB,CAAC,CAC9BC,aAAa,CAACR,SAAS,CAAC;EAE3BM,OAAO,CAACG,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC;;EAExC;;EAEAH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC;EAE5CH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC;EAE5CH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC;EAE5C,OAAOH,OAAO;AAChB"}
@@ -1,14 +1,14 @@
1
- import { FrodoCommand } from '../FrodoCommand';
2
1
  import { Option } from 'commander';
3
- import { frodo } from '@rockcarver/frodo-lib';
2
+ import { getTokens } from '../../ops/AuthenticateOps';
4
3
  import { deleteService, deleteServices } from '../../ops/ServiceOps.js';
4
+ import { FrodoCommand } from '../FrodoCommand';
5
5
  const program = new FrodoCommand('frodo service delete');
6
6
  program.description('Delete AM services.').addOption(new Option('-i, --id <id>', 'Id of Service to be deleted.')).addOption(new Option('-a, --all', 'Delete all services. Ignored with -i.')).addOption(new Option('-g, --global', 'Delete global services.')).action(async (host, realm, user, password, options, command) => {
7
7
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
8
8
  const globalConfig = options.global ?? false;
9
- if (options.id && (await frodo.login.getTokens())) {
9
+ if (options.id && (await getTokens())) {
10
10
  await deleteService(options.id, globalConfig);
11
- } else if (options.all && (await frodo.login.getTokens())) {
11
+ } else if (options.all && (await getTokens())) {
12
12
  await deleteServices(globalConfig);
13
13
  } else {
14
14
  program.help();
@@ -16,4 +16,4 @@ program.description('Delete AM services.').addOption(new Option('-i, --id <id>',
16
16
  }
17
17
  });
18
18
  program.parse();
19
- //# sourceMappingURL=service-delete.js.map
19
+ //# sourceMappingURL=service-delete.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service-delete.js","names":["FrodoCommand","Option","frodo","deleteService","deleteServices","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","globalConfig","global","id","login","getTokens","all","help","process","exitCode","parse"],"sources":["cli/service/service-delete.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { frodo } from '@rockcarver/frodo-lib';\nimport { deleteService, deleteServices } from '../../ops/ServiceOps.js';\n\nconst program = new FrodoCommand('frodo service delete');\n\ninterface ServiceDeleteOptions {\n id?: string;\n type?: string;\n insecure?: boolean;\n verbose?: boolean;\n debug?: boolean;\n curlirize?: boolean;\n all?: boolean;\n global?: boolean;\n}\n\nprogram\n .description('Delete AM services.')\n .addOption(new Option('-i, --id <id>', 'Id of Service to be deleted.'))\n .addOption(new Option('-a, --all', 'Delete all services. Ignored with -i.'))\n .addOption(new Option('-g, --global', 'Delete global services.'))\n .action(\n async (\n host: string,\n realm: string,\n user: string,\n password: string,\n options: ServiceDeleteOptions,\n command\n ) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n\n const globalConfig = options.global ?? false;\n\n if (options.id && (await frodo.login.getTokens())) {\n await deleteService(options.id, globalConfig);\n } else if (options.all && (await frodo.login.getTokens())) {\n await deleteServices(globalConfig);\n } else {\n program.help();\n process.exitCode = 1;\n }\n }\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,aAAa,EAAEC,cAAc,QAAQ,yBAAyB;AAEvE,MAAMC,OAAO,GAAG,IAAIL,YAAY,CAAC,sBAAsB,CAAC;AAaxDK,OAAO,CACJC,WAAW,CAAC,qBAAqB,CAAC,CAClCC,SAAS,CAAC,IAAIN,MAAM,CAAC,eAAe,EAAE,8BAA8B,CAAC,CAAC,CACtEM,SAAS,CAAC,IAAIN,MAAM,CAAC,WAAW,EAAE,uCAAuC,CAAC,CAAC,CAC3EM,SAAS,CAAC,IAAIN,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC,CAChEO,MAAM,CACL,OACEC,IAAY,EACZC,KAAa,EACbC,IAAY,EACZC,QAAgB,EAChBC,OAA6B,EAC7BC,OAAO,KACJ;EACHA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EAED,MAAME,YAAY,GAAGH,OAAO,CAACI,MAAM,IAAI,KAAK;EAE5C,IAAIJ,OAAO,CAACK,EAAE,KAAK,MAAMhB,KAAK,CAACiB,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,EAAE;IACjD,MAAMjB,aAAa,CAACU,OAAO,CAACK,EAAE,EAAEF,YAAY,CAAC;EAC/C,CAAC,MAAM,IAAIH,OAAO,CAACQ,GAAG,KAAK,MAAMnB,KAAK,CAACiB,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,EAAE;IACzD,MAAMhB,cAAc,CAACY,YAAY,CAAC;EACpC,CAAC,MAAM;IACLX,OAAO,CAACiB,IAAI,CAAC,CAAC;IACdC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF,CACF,CAAC;AAEHnB,OAAO,CAACoB,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"service-delete.js","names":["Option","getTokens","deleteService","deleteServices","FrodoCommand","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","globalConfig","global","id","all","help","process","exitCode","parse"],"sources":["../../../src/cli/service/service-delete.ts"],"sourcesContent":["import { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport { deleteService, deleteServices } from '../../ops/ServiceOps.js';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo service delete');\n\ninterface ServiceDeleteOptions {\n id?: string;\n type?: string;\n insecure?: boolean;\n verbose?: boolean;\n debug?: boolean;\n curlirize?: boolean;\n all?: boolean;\n global?: boolean;\n}\n\nprogram\n .description('Delete AM services.')\n .addOption(new Option('-i, --id <id>', 'Id of Service to be deleted.'))\n .addOption(new Option('-a, --all', 'Delete all services. Ignored with -i.'))\n .addOption(new Option('-g, --global', 'Delete global services.'))\n .action(\n async (\n host: string,\n realm: string,\n user: string,\n password: string,\n options: ServiceDeleteOptions,\n command\n ) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n\n const globalConfig = options.global ?? false;\n\n if (options.id && (await getTokens())) {\n await deleteService(options.id, globalConfig);\n } else if (options.all && (await getTokens())) {\n await deleteServices(globalConfig);\n } else {\n program.help();\n process.exitCode = 1;\n }\n }\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,WAAW;AAElC,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SAASC,aAAa,EAAEC,cAAc,QAAQ,yBAAyB;AACvE,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,OAAO,GAAG,IAAID,YAAY,CAAC,sBAAsB,CAAC;AAaxDC,OAAO,CACJC,WAAW,CAAC,qBAAqB,CAAC,CAClCC,SAAS,CAAC,IAAIP,MAAM,CAAC,eAAe,EAAE,8BAA8B,CAAC,CAAC,CACtEO,SAAS,CAAC,IAAIP,MAAM,CAAC,WAAW,EAAE,uCAAuC,CAAC,CAAC,CAC3EO,SAAS,CAAC,IAAIP,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC,CAChEQ,MAAM,CACL,OACEC,IAAY,EACZC,KAAa,EACbC,IAAY,EACZC,QAAgB,EAChBC,OAA6B,EAC7BC,OAAO,KACJ;EACHA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EAED,MAAME,YAAY,GAAGH,OAAO,CAACI,MAAM,IAAI,KAAK;EAE5C,IAAIJ,OAAO,CAACK,EAAE,KAAK,MAAMjB,SAAS,CAAC,CAAC,CAAC,EAAE;IACrC,MAAMC,aAAa,CAACW,OAAO,CAACK,EAAE,EAAEF,YAAY,CAAC;EAC/C,CAAC,MAAM,IAAIH,OAAO,CAACM,GAAG,KAAK,MAAMlB,SAAS,CAAC,CAAC,CAAC,EAAE;IAC7C,MAAME,cAAc,CAACa,YAAY,CAAC;EACpC,CAAC,MAAM;IACLX,OAAO,CAACe,IAAI,CAAC,CAAC;IACdC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF,CACF,CAAC;AAEHjB,OAAO,CAACkB,KAAK,CAAC,CAAC"}
@@ -1,27 +1,27 @@
1
- import { FrodoCommand } from '../FrodoCommand';
2
1
  import { Option } from 'commander';
3
- import { frodo } from '@rockcarver/frodo-lib';
2
+ import { getTokens } from '../../ops/AuthenticateOps';
4
3
  import { exportServicesToFile, exportServicesToFiles, exportServiceToFile } from '../../ops/ServiceOps.js';
5
4
  import { printMessage, verboseMessage } from '../../utils/Console.js';
5
+ import { FrodoCommand } from '../FrodoCommand';
6
6
  const program = new FrodoCommand('frodo service export');
7
- program.description('Export AM services.').addOption(new Option('-i, --service-id <service-id>', 'Service id. If specified, -a and -A are ignored.')).addOption(new Option('-f, --file <file>', 'Name of the export file.')).addOption(new Option('-a, --all', 'Export all services to a single file.')).addOption(new Option('-A, --all-separate', 'Export all services to separate files (*.service.json) in the current directory. Ignored with -a.')).addOption(new Option('-g, --global', 'Export global services.')).action(async (host, realm, user, password, options, command) => {
7
+ program.description('Export AM services.').addOption(new Option('-i, --service-id <service-id>', 'Service id. If specified, -a and -A are ignored.')).addOption(new Option('-f, --file <file>', 'Name of the export file.')).addOption(new Option('-a, --all', 'Export all services to a single file.')).addOption(new Option('-A, --all-separate', 'Export all services to separate files (*.service.json) in the current directory. Ignored with -a.')).addOption(new Option('-N, --no-metadata', 'Does not include metadata in the export file.')).addOption(new Option('-g, --global', 'Export global services.')).action(async (host, realm, user, password, options, command) => {
8
8
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
9
9
  const globalConfig = options.global ?? false;
10
10
 
11
11
  // export by name
12
- if (options.serviceId && (await frodo.login.getTokens())) {
12
+ if (options.serviceId && (await getTokens())) {
13
13
  verboseMessage('Exporting service...');
14
- await exportServiceToFile(options.serviceId, options.file, globalConfig);
14
+ await exportServiceToFile(options.serviceId, options.file, globalConfig, options.metadata);
15
15
  }
16
16
  // -a / --all
17
- else if (options.all && (await frodo.login.getTokens())) {
17
+ else if (options.all && (await getTokens())) {
18
18
  verboseMessage('Exporting all services to a single file...');
19
- await exportServicesToFile(options.file, globalConfig);
19
+ await exportServicesToFile(options.file, globalConfig, options.metadata);
20
20
  }
21
21
  // -A / --all-separate
22
- else if (options.allSeparate && (await frodo.login.getTokens())) {
22
+ else if (options.allSeparate && (await getTokens())) {
23
23
  verboseMessage('Exporting all services to separate files...');
24
- await exportServicesToFiles(globalConfig);
24
+ await exportServicesToFiles(globalConfig, options.metadata);
25
25
  }
26
26
  // unrecognized combination of options or no options
27
27
  else {
@@ -32,6 +32,5 @@ program.description('Export AM services.').addOption(new Option('-i, --service-i
32
32
  }
33
33
  // end command logic inside action handler
34
34
  );
35
-
36
35
  program.parse();
37
- //# sourceMappingURL=service-export.js.map
36
+ //# sourceMappingURL=service-export.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service-export.js","names":["FrodoCommand","Option","frodo","exportServicesToFile","exportServicesToFiles","exportServiceToFile","printMessage","verboseMessage","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","globalConfig","global","serviceId","login","getTokens","file","all","allSeparate","help","process","exitCode","parse"],"sources":["cli/service/service-export.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { frodo } from '@rockcarver/frodo-lib';\nimport {\n exportServicesToFile,\n exportServicesToFiles,\n exportServiceToFile,\n} from '../../ops/ServiceOps.js';\nimport { printMessage, verboseMessage } from '../../utils/Console.js';\n\nconst program = new FrodoCommand('frodo service export');\n\ninterface ServiceExportOptions {\n file?: string;\n all?: boolean;\n serviceId?: string;\n allSeparate?: boolean;\n type?: string;\n insecure?: boolean;\n verbose?: boolean;\n debug?: boolean;\n curlirize?: boolean;\n global?: boolean;\n}\n\nprogram\n .description('Export AM services.')\n .addOption(\n new Option(\n '-i, --service-id <service-id>',\n 'Service id. If specified, -a and -A are ignored.'\n )\n )\n .addOption(new Option('-f, --file <file>', 'Name of the export file.'))\n .addOption(new Option('-a, --all', 'Export all services to a single file.'))\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Export all services to separate files (*.service.json) in the current directory. Ignored with -a.'\n )\n )\n .addOption(new Option('-g, --global', 'Export global services.'))\n .action(\n async (\n host: string,\n realm: string,\n user: string,\n password: string,\n options: ServiceExportOptions,\n command\n ) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n\n const globalConfig = options.global ?? false;\n\n // export by name\n if (options.serviceId && (await frodo.login.getTokens())) {\n verboseMessage('Exporting service...');\n await exportServiceToFile(\n options.serviceId,\n options.file,\n globalConfig\n );\n }\n // -a / --all\n else if (options.all && (await frodo.login.getTokens())) {\n verboseMessage('Exporting all services to a single file...');\n await exportServicesToFile(options.file, globalConfig);\n }\n // -A / --all-separate\n else if (options.allSeparate && (await frodo.login.getTokens())) {\n verboseMessage('Exporting all services to separate files...');\n await exportServicesToFiles(globalConfig);\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,KAAK,QAAQ,uBAAuB;AAC7C,SACEC,oBAAoB,EACpBC,qBAAqB,EACrBC,mBAAmB,QACd,yBAAyB;AAChC,SAASC,YAAY,EAAEC,cAAc,QAAQ,wBAAwB;AAErE,MAAMC,OAAO,GAAG,IAAIR,YAAY,CAAC,sBAAsB,CAAC;AAexDQ,OAAO,CACJC,WAAW,CAAC,qBAAqB,CAAC,CAClCC,SAAS,CACR,IAAIT,MAAM,CACR,+BAA+B,EAC/B,kDACF,CACF,CAAC,CACAS,SAAS,CAAC,IAAIT,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC,CAAC,CACtES,SAAS,CAAC,IAAIT,MAAM,CAAC,WAAW,EAAE,uCAAuC,CAAC,CAAC,CAC3ES,SAAS,CACR,IAAIT,MAAM,CACR,oBAAoB,EACpB,mGACF,CACF,CAAC,CACAS,SAAS,CAAC,IAAIT,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC,CAChEU,MAAM,CACL,OACEC,IAAY,EACZC,KAAa,EACbC,IAAY,EACZC,QAAgB,EAChBC,OAA6B,EAC7BC,OAAO,KACJ;EACHA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EAED,MAAME,YAAY,GAAGH,OAAO,CAACI,MAAM,IAAI,KAAK;;EAE5C;EACA,IAAIJ,OAAO,CAACK,SAAS,KAAK,MAAMnB,KAAK,CAACoB,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,EAAE;IACxDhB,cAAc,CAAC,sBAAsB,CAAC;IACtC,MAAMF,mBAAmB,CACvBW,OAAO,CAACK,SAAS,EACjBL,OAAO,CAACQ,IAAI,EACZL,YACF,CAAC;EACH;EACA;EAAA,KACK,IAAIH,OAAO,CAACS,GAAG,KAAK,MAAMvB,KAAK,CAACoB,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,EAAE;IACvDhB,cAAc,CAAC,4CAA4C,CAAC;IAC5D,MAAMJ,oBAAoB,CAACa,OAAO,CAACQ,IAAI,EAAEL,YAAY,CAAC;EACxD;EACA;EAAA,KACK,IAAIH,OAAO,CAACU,WAAW,KAAK,MAAMxB,KAAK,CAACoB,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,EAAE;IAC/DhB,cAAc,CAAC,6CAA6C,CAAC;IAC7D,MAAMH,qBAAqB,CAACe,YAAY,CAAC;EAC3C;EACA;EAAA,KACK;IACHb,YAAY,CACV,sDAAsD,EACtD,OACF,CAAC;IACDE,OAAO,CAACmB,IAAI,CAAC,CAAC;IACdC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;;AAEHrB,OAAO,CAACsB,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"service-export.js","names":["Option","getTokens","exportServicesToFile","exportServicesToFiles","exportServiceToFile","printMessage","verboseMessage","FrodoCommand","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","globalConfig","global","serviceId","file","metadata","all","allSeparate","help","process","exitCode","parse"],"sources":["../../../src/cli/service/service-export.ts"],"sourcesContent":["import { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport {\n exportServicesToFile,\n exportServicesToFiles,\n exportServiceToFile,\n} from '../../ops/ServiceOps.js';\nimport { printMessage, verboseMessage } from '../../utils/Console.js';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo service export');\n\ninterface ServiceExportOptions {\n file?: string;\n all?: boolean;\n serviceId?: string;\n allSeparate?: boolean;\n type?: string;\n insecure?: boolean;\n verbose?: boolean;\n debug?: boolean;\n curlirize?: boolean;\n global?: boolean;\n metadata?: boolean;\n}\n\nprogram\n .description('Export AM services.')\n .addOption(\n new Option(\n '-i, --service-id <service-id>',\n 'Service id. If specified, -a and -A are ignored.'\n )\n )\n .addOption(new Option('-f, --file <file>', 'Name of the export file.'))\n .addOption(new Option('-a, --all', 'Export all services to a single file.'))\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Export all services to separate files (*.service.json) in the current directory. Ignored with -a.'\n )\n )\n .addOption(\n new Option(\n '-N, --no-metadata',\n 'Does not include metadata in the export file.'\n )\n )\n .addOption(new Option('-g, --global', 'Export global services.'))\n .action(\n async (\n host: string,\n realm: string,\n user: string,\n password: string,\n options: ServiceExportOptions,\n command\n ) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n\n const globalConfig = options.global ?? false;\n\n // export by name\n if (options.serviceId && (await getTokens())) {\n verboseMessage('Exporting service...');\n await exportServiceToFile(\n options.serviceId,\n options.file,\n globalConfig,\n options.metadata\n );\n }\n // -a / --all\n else if (options.all && (await getTokens())) {\n verboseMessage('Exporting all services to a single file...');\n await exportServicesToFile(\n options.file,\n globalConfig,\n options.metadata\n );\n }\n // -A / --all-separate\n else if (options.allSeparate && (await getTokens())) {\n verboseMessage('Exporting all services to separate files...');\n await exportServicesToFiles(globalConfig, options.metadata);\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,WAAW;AAElC,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SACEC,oBAAoB,EACpBC,qBAAqB,EACrBC,mBAAmB,QACd,yBAAyB;AAChC,SAASC,YAAY,EAAEC,cAAc,QAAQ,wBAAwB;AACrE,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,OAAO,GAAG,IAAID,YAAY,CAAC,sBAAsB,CAAC;AAgBxDC,OAAO,CACJC,WAAW,CAAC,qBAAqB,CAAC,CAClCC,SAAS,CACR,IAAIV,MAAM,CACR,+BAA+B,EAC/B,kDACF,CACF,CAAC,CACAU,SAAS,CAAC,IAAIV,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC,CAAC,CACtEU,SAAS,CAAC,IAAIV,MAAM,CAAC,WAAW,EAAE,uCAAuC,CAAC,CAAC,CAC3EU,SAAS,CACR,IAAIV,MAAM,CACR,oBAAoB,EACpB,mGACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CACR,mBAAmB,EACnB,+CACF,CACF,CAAC,CACAU,SAAS,CAAC,IAAIV,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC,CAChEW,MAAM,CACL,OACEC,IAAY,EACZC,KAAa,EACbC,IAAY,EACZC,QAAgB,EAChBC,OAA6B,EAC7BC,OAAO,KACJ;EACHA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EAED,MAAME,YAAY,GAAGH,OAAO,CAACI,MAAM,IAAI,KAAK;;EAE5C;EACA,IAAIJ,OAAO,CAACK,SAAS,KAAK,MAAMpB,SAAS,CAAC,CAAC,CAAC,EAAE;IAC5CK,cAAc,CAAC,sBAAsB,CAAC;IACtC,MAAMF,mBAAmB,CACvBY,OAAO,CAACK,SAAS,EACjBL,OAAO,CAACM,IAAI,EACZH,YAAY,EACZH,OAAO,CAACO,QACV,CAAC;EACH;EACA;EAAA,KACK,IAAIP,OAAO,CAACQ,GAAG,KAAK,MAAMvB,SAAS,CAAC,CAAC,CAAC,EAAE;IAC3CK,cAAc,CAAC,4CAA4C,CAAC;IAC5D,MAAMJ,oBAAoB,CACxBc,OAAO,CAACM,IAAI,EACZH,YAAY,EACZH,OAAO,CAACO,QACV,CAAC;EACH;EACA;EAAA,KACK,IAAIP,OAAO,CAACS,WAAW,KAAK,MAAMxB,SAAS,CAAC,CAAC,CAAC,EAAE;IACnDK,cAAc,CAAC,6CAA6C,CAAC;IAC7D,MAAMH,qBAAqB,CAACgB,YAAY,EAAEH,OAAO,CAACO,QAAQ,CAAC;EAC7D;EACA;EAAA,KACK;IACHlB,YAAY,CACV,sDAAsD,EACtD,OACF,CAAC;IACDG,OAAO,CAACkB,IAAI,CAAC,CAAC;IACdC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHpB,OAAO,CAACqB,KAAK,CAAC,CAAC"}
@@ -1,34 +1,50 @@
1
- import { FrodoCommand } from '../FrodoCommand';
2
1
  import { Option } from 'commander';
3
- import { frodo, state } from '@rockcarver/frodo-lib';
2
+ import { getTokens } from '../../ops/AuthenticateOps';
4
3
  import { importFirstServiceFromFile, importServiceFromFile, importServicesFromFile, importServicesFromFiles } from '../../ops/ServiceOps.js';
5
4
  import { printMessage, verboseMessage } from '../../utils/Console.js';
5
+ import { FrodoCommand } from '../FrodoCommand';
6
6
  const program = new FrodoCommand('frodo service import');
7
- program.description('Import AM services.').addOption(new Option('-i, --service-id <service-id>', 'Service id. If specified, -a and -A are ignored.')).addOption(new Option('-f, --file <file>', 'Name of the file to import SAML Entity(s) from. Ignored with -A.')).addOption(new Option('-a, --all', 'Import all services from a single file.')).addOption(new Option('-C, --clean', 'Remove existing service(s) before importing.')).addOption(new Option('-A, --all-separate', 'Import all services from separate files <id>.service.json.')).addOption(new Option('-D, --directory <directory>', 'Working directory.')).addOption(new Option('-g, --global', 'Import global services.')).action(async (host, realm, user, password, options, command) => {
7
+ program.description('Import AM services.').addOption(new Option('-i, --service-id <service-id>', 'Service id. If specified, -a and -A are ignored.')).addOption(new Option('-f, --file <file>', 'Name of the file to import SAML Entity(s) from. Ignored with -A.')).addOption(new Option('-a, --all', 'Import all services from a single file.')).addOption(new Option('-C, --clean', 'Remove existing service(s) before importing.')).addOption(new Option('-A, --all-separate', 'Import all services from separate files <id>.service.json.')).addOption(new Option('-g, --global', 'Import service(s) as global service(s).')).addOption(new Option('-r, --current-realm', 'Import service(s) into the current realm.')).action(async (host, realm, user, password, options, command) => {
8
8
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
9
- state.setDirectory(options.directory || '.');
10
9
  const clean = options.clean ?? false;
11
10
  const globalConfig = options.global ?? false;
11
+ const realmConfig = options.realm ?? false;
12
12
 
13
13
  // import by id
14
- if (options.serviceId && options.file && (await frodo.login.getTokens())) {
14
+ if (options.serviceId && options.file && (await getTokens())) {
15
15
  verboseMessage('Importing service...');
16
- await importServiceFromFile(options.serviceId, options.file, clean, globalConfig);
16
+ await importServiceFromFile(options.serviceId, options.file, {
17
+ clean,
18
+ global: globalConfig,
19
+ realm: realmConfig
20
+ });
17
21
  }
18
22
  // -a / --all
19
- else if (options.all && options.file && (await frodo.login.getTokens())) {
23
+ else if (options.all && options.file && (await getTokens())) {
20
24
  verboseMessage('Importing all services from a single file...');
21
- await importServicesFromFile(options.file, clean, globalConfig);
25
+ await importServicesFromFile(options.file, {
26
+ clean,
27
+ global: globalConfig,
28
+ realm: realmConfig
29
+ });
22
30
  }
23
31
  // -A / --all-separate
24
- else if (options.allSeparate && (await frodo.login.getTokens())) {
32
+ else if (options.allSeparate && (await getTokens())) {
25
33
  verboseMessage('Importing all services from separate files...');
26
- await importServicesFromFiles(clean, globalConfig);
34
+ await importServicesFromFiles({
35
+ clean,
36
+ global: globalConfig,
37
+ realm: realmConfig
38
+ });
27
39
  }
28
40
  // import file
29
- else if (options.file && (await frodo.login.getTokens())) {
41
+ else if (options.file && (await getTokens())) {
30
42
  verboseMessage('Importing service...');
31
- await importFirstServiceFromFile(options.file, clean, globalConfig);
43
+ await importFirstServiceFromFile(options.file, {
44
+ clean,
45
+ global: globalConfig,
46
+ realm: realmConfig
47
+ });
32
48
  }
33
49
  // unrecognized combination of options or no options
34
50
  else {
@@ -39,6 +55,5 @@ program.description('Import AM services.').addOption(new Option('-i, --service-i
39
55
  }
40
56
  // end command logic inside action handler
41
57
  );
42
-
43
58
  program.parse();
44
- //# sourceMappingURL=service-import.js.map
59
+ //# sourceMappingURL=service-import.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service-import.js","names":["FrodoCommand","Option","frodo","state","importFirstServiceFromFile","importServiceFromFile","importServicesFromFile","importServicesFromFiles","printMessage","verboseMessage","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","setDirectory","directory","clean","globalConfig","global","serviceId","file","login","getTokens","all","allSeparate","help","process","exitCode","parse"],"sources":["cli/service/service-import.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { frodo, state } from '@rockcarver/frodo-lib';\nimport {\n importFirstServiceFromFile,\n importServiceFromFile,\n importServicesFromFile,\n importServicesFromFiles,\n} from '../../ops/ServiceOps.js';\nimport { printMessage, verboseMessage } from '../../utils/Console.js';\n\nconst program = new FrodoCommand('frodo service import');\n\ninterface ServiceImportOptions {\n file?: string;\n all?: boolean;\n serviceId?: string;\n allSeparate?: boolean;\n type?: string;\n insecure?: boolean;\n clean?: boolean;\n directory?: string;\n verbose?: boolean;\n debug?: boolean;\n curlirize?: boolean;\n global?: boolean;\n}\n\nprogram\n .description('Import AM services.')\n .addOption(\n new Option(\n '-i, --service-id <service-id>',\n 'Service id. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file <file>',\n 'Name of the file to import SAML Entity(s) from. Ignored with -A.'\n )\n )\n .addOption(new Option('-a, --all', 'Import all services from a single file.'))\n .addOption(\n new Option('-C, --clean', 'Remove existing service(s) before importing.')\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all services from separate files <id>.service.json.'\n )\n )\n .addOption(new Option('-D, --directory <directory>', 'Working directory.'))\n .addOption(new Option('-g, --global', 'Import global services.'))\n .action(\n async (\n host: string,\n realm: string,\n user: string,\n password: string,\n options: ServiceImportOptions,\n command\n ) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n state.setDirectory(options.directory || '.');\n\n const clean = options.clean ?? false;\n const globalConfig = options.global ?? false;\n\n // import by id\n if (\n options.serviceId &&\n options.file &&\n (await frodo.login.getTokens())\n ) {\n verboseMessage('Importing service...');\n await importServiceFromFile(\n options.serviceId,\n options.file,\n clean,\n globalConfig\n );\n }\n // -a / --all\n else if (options.all && options.file && (await frodo.login.getTokens())) {\n verboseMessage('Importing all services from a single file...');\n await importServicesFromFile(options.file, clean, globalConfig);\n }\n // -A / --all-separate\n else if (options.allSeparate && (await frodo.login.getTokens())) {\n verboseMessage('Importing all services from separate files...');\n await importServicesFromFiles(clean, globalConfig);\n }\n // import file\n else if (options.file && (await frodo.login.getTokens())) {\n verboseMessage('Importing service...');\n await importFirstServiceFromFile(options.file, clean, globalConfig);\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
1
+ {"version":3,"file":"service-import.js","names":["Option","getTokens","importFirstServiceFromFile","importServiceFromFile","importServicesFromFile","importServicesFromFiles","printMessage","verboseMessage","FrodoCommand","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","clean","globalConfig","global","realmConfig","serviceId","file","all","allSeparate","help","process","exitCode","parse"],"sources":["../../../src/cli/service/service-import.ts"],"sourcesContent":["import { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport {\n importFirstServiceFromFile,\n importServiceFromFile,\n importServicesFromFile,\n importServicesFromFiles,\n} from '../../ops/ServiceOps.js';\nimport { printMessage, verboseMessage } from '../../utils/Console.js';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo service import');\n\ninterface ServiceImportOptions {\n file?: string;\n all?: boolean;\n serviceId?: string;\n allSeparate?: boolean;\n type?: string;\n insecure?: boolean;\n clean?: boolean;\n directory?: string;\n verbose?: boolean;\n debug?: boolean;\n curlirize?: boolean;\n global?: boolean;\n realm?: boolean;\n}\n\nprogram\n .description('Import AM services.')\n .addOption(\n new Option(\n '-i, --service-id <service-id>',\n 'Service id. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-f, --file <file>',\n 'Name of the file to import SAML Entity(s) from. Ignored with -A.'\n )\n )\n .addOption(new Option('-a, --all', 'Import all services from a single file.'))\n .addOption(\n new Option('-C, --clean', 'Remove existing service(s) before importing.')\n )\n .addOption(\n new Option(\n '-A, --all-separate',\n 'Import all services from separate files <id>.service.json.'\n )\n )\n .addOption(\n new Option('-g, --global', 'Import service(s) as global service(s).')\n )\n .addOption(\n new Option(\n '-r, --current-realm',\n 'Import service(s) into the current realm.'\n )\n )\n .action(\n async (\n host: string,\n realm: string,\n user: string,\n password: string,\n options: ServiceImportOptions,\n command\n ) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n\n const clean = options.clean ?? false;\n const globalConfig = options.global ?? false;\n const realmConfig = options.realm ?? false;\n\n // import by id\n if (options.serviceId && options.file && (await getTokens())) {\n verboseMessage('Importing service...');\n await importServiceFromFile(options.serviceId, options.file, {\n clean,\n global: globalConfig,\n realm: realmConfig,\n });\n }\n // -a / --all\n else if (options.all && options.file && (await getTokens())) {\n verboseMessage('Importing all services from a single file...');\n await importServicesFromFile(options.file, {\n clean,\n global: globalConfig,\n realm: realmConfig,\n });\n }\n // -A / --all-separate\n else if (options.allSeparate && (await getTokens())) {\n verboseMessage('Importing all services from separate files...');\n await importServicesFromFiles({\n clean,\n global: globalConfig,\n realm: realmConfig,\n });\n }\n // import file\n else if (options.file && (await getTokens())) {\n verboseMessage('Importing service...');\n await importFirstServiceFromFile(options.file, {\n clean,\n global: globalConfig,\n realm: realmConfig,\n });\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { FrodoCommand } from '../FrodoCommand';
2
1
  import { Option } from 'commander';
3
- import { frodo } from '@rockcarver/frodo-lib';
2
+ import { getTokens } from '../../ops/AuthenticateOps';
4
3
  import { listServices } from '../../ops/ServiceOps.js';
5
4
  import { verboseMessage } from '../../utils/Console.js';
5
+ import { FrodoCommand } from '../FrodoCommand';
6
6
  const program = new FrodoCommand('frodo service list');
7
7
  program.description('List AM services.').addOption(new Option('-l, --long', 'Long with all fields.').default(false, 'false')).addOption(new Option('-g, --global', 'List global services.')).action(async (host, realm, user, password, options, command) => {
8
8
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
9
- if (await frodo.login.getTokens()) {
9
+ if (await getTokens()) {
10
10
  verboseMessage(`Listing all AM services for realm: ${realm}`);
11
11
  await listServices(options.long, options.global);
12
12
  } else {
@@ -14,4 +14,4 @@ program.description('List AM services.').addOption(new Option('-l, --long', 'Lon
14
14
  }
15
15
  });
16
16
  program.parse();
17
- //# sourceMappingURL=service-list.js.map
17
+ //# sourceMappingURL=service-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service-list.js","names":["FrodoCommand","Option","frodo","listServices","verboseMessage","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","login","getTokens","long","global","process","exitCode","parse"],"sources":["cli/service/service-list.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { frodo } from '@rockcarver/frodo-lib';\nimport { listServices } from '../../ops/ServiceOps.js';\nimport { verboseMessage } from '../../utils/Console.js';\n\nconst program = new FrodoCommand('frodo service list');\n\nprogram\n .description('List AM services.')\n .addOption(\n new Option('-l, --long', 'Long with all fields.').default(false, 'false')\n )\n .addOption(new Option('-g, --global', 'List global services.'))\n .action(async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await frodo.login.getTokens()) {\n verboseMessage(`Listing all AM services for realm: ${realm}`);\n await listServices(options.long, options.global);\n } else {\n process.exitCode = 1;\n }\n });\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,cAAc,QAAQ,wBAAwB;AAEvD,MAAMC,OAAO,GAAG,IAAIL,YAAY,CAAC,oBAAoB,CAAC;AAEtDK,OAAO,CACJC,WAAW,CAAC,mBAAmB,CAAC,CAChCC,SAAS,CACR,IAAIN,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAACO,OAAO,CAAC,KAAK,EAAE,OAAO,CAC1E,CAAC,CACAD,SAAS,CAAC,IAAIN,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC,CAC9DQ,MAAM,CAAC,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EAC/DA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMb,KAAK,CAACe,KAAK,CAACC,SAAS,CAAC,CAAC,EAAE;IACjCd,cAAc,CAAE,sCAAqCO,KAAM,EAAC,CAAC;IAC7D,MAAMR,YAAY,CAACW,OAAO,CAACK,IAAI,EAAEL,OAAO,CAACM,MAAM,CAAC;EAClD,CAAC,MAAM;IACLC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF,CAAC,CAAC;AAEJjB,OAAO,CAACkB,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"service-list.js","names":["Option","getTokens","listServices","verboseMessage","FrodoCommand","program","description","addOption","default","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","long","global","process","exitCode","parse"],"sources":["../../../src/cli/service/service-list.ts"],"sourcesContent":["import { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport { listServices } from '../../ops/ServiceOps.js';\nimport { verboseMessage } from '../../utils/Console.js';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo service list');\n\nprogram\n .description('List AM services.')\n .addOption(\n new Option('-l, --long', 'Long with all fields.').default(false, 'false')\n )\n .addOption(new Option('-g, --global', 'List global services.'))\n .action(async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (await getTokens()) {\n verboseMessage(`Listing all AM services for realm: ${realm}`);\n await listServices(options.long, options.global);\n } else {\n process.exitCode = 1;\n }\n });\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,WAAW;AAElC,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,OAAO,GAAG,IAAID,YAAY,CAAC,oBAAoB,CAAC;AAEtDC,OAAO,CACJC,WAAW,CAAC,mBAAmB,CAAC,CAChCC,SAAS,CACR,IAAIP,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAACQ,OAAO,CAAC,KAAK,EAAE,OAAO,CAC1E,CAAC,CACAD,SAAS,CAAC,IAAIP,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC,CAC9DS,MAAM,CAAC,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EAC/DA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD,IAAI,MAAMd,SAAS,CAAC,CAAC,EAAE;IACrBE,cAAc,CAAE,sCAAqCQ,KAAM,EAAC,CAAC;IAC7D,MAAMT,YAAY,CAACY,OAAO,CAACG,IAAI,EAAEH,OAAO,CAACI,MAAM,CAAC;EAClD,CAAC,MAAM;IACLC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF,CAAC,CAAC;AAEJf,OAAO,CAACgB,KAAK,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
- import { FrodoStubCommand } from '../FrodoCommand';
2
1
  import path from 'path';
3
2
  import { fileURLToPath } from 'url';
3
+ import { FrodoStubCommand } from '../FrodoCommand';
4
4
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
5
5
  export default function setup() {
6
6
  const program = new FrodoStubCommand('service').description('Manage AM services.').executableDir(__dirname);
@@ -10,4 +10,4 @@ export default function setup() {
10
10
  program.command('delete', 'Delete AM services.');
11
11
  return program;
12
12
  }
13
- //# sourceMappingURL=service.js.map
13
+ //# sourceMappingURL=service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","names":["FrodoStubCommand","path","fileURLToPath","__dirname","dirname","import","meta","url","setup","program","description","executableDir","command"],"sources":["cli/service/service.ts"],"sourcesContent":["import { FrodoStubCommand } from '../FrodoCommand';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport default function setup() {\n const program = new FrodoStubCommand('service')\n .description('Manage AM services.')\n .executableDir(__dirname);\n\n program.command('list', 'List AM services.');\n\n program.command('export', 'Export AM services.');\n\n program.command('import', 'Import AM services.');\n\n program.command('delete', 'Delete AM services.');\n\n return program;\n}\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,iBAAiB;AAClD,OAAOC,IAAI,MAAM,MAAM;AACvB,SAASC,aAAa,QAAQ,KAAK;AAEnC,MAAMC,SAAS,GAAGF,IAAI,CAACG,OAAO,CAACF,aAAa,CAACG,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;AAE9D,eAAe,SAASC,KAAKA,CAAA,EAAG;EAC9B,MAAMC,OAAO,GAAG,IAAIT,gBAAgB,CAAC,SAAS,CAAC,CAC5CU,WAAW,CAAC,qBAAqB,CAAC,CAClCC,aAAa,CAACR,SAAS,CAAC;EAE3BM,OAAO,CAACG,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC;EAE5CH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC;EAEhDH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC;EAEhDH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC;EAEhD,OAAOH,OAAO;AAChB"}
1
+ {"version":3,"file":"service.js","names":["path","fileURLToPath","FrodoStubCommand","__dirname","dirname","import","meta","url","setup","program","description","executableDir","command"],"sources":["../../../src/cli/service/service.ts"],"sourcesContent":["import path from 'path';\nimport { fileURLToPath } from 'url';\n\nimport { FrodoStubCommand } from '../FrodoCommand';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport default function setup() {\n const program = new FrodoStubCommand('service')\n .description('Manage AM services.')\n .executableDir(__dirname);\n\n program.command('list', 'List AM services.');\n\n program.command('export', 'Export AM services.');\n\n program.command('import', 'Import AM services.');\n\n program.command('delete', 'Delete AM services.');\n\n return program;\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AACvB,SAASC,aAAa,QAAQ,KAAK;AAEnC,SAASC,gBAAgB,QAAQ,iBAAiB;AAElD,MAAMC,SAAS,GAAGH,IAAI,CAACI,OAAO,CAACH,aAAa,CAACI,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;AAE9D,eAAe,SAASC,KAAKA,CAAA,EAAG;EAC9B,MAAMC,OAAO,GAAG,IAAIP,gBAAgB,CAAC,SAAS,CAAC,CAC5CQ,WAAW,CAAC,qBAAqB,CAAC,CAClCC,aAAa,CAACR,SAAS,CAAC;EAE3BM,OAAO,CAACG,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC;EAE5CH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC;EAEhDH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC;EAEhDH,OAAO,CAACG,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC;EAEhD,OAAOH,OAAO;AAChB"}
@@ -0,0 +1,55 @@
1
+ import { frodo } from '@rockcarver/frodo-lib';
2
+ import fuzzy from 'fuzzy';
3
+ import inquirer from 'inquirer';
4
+ import inquirerPrompt from 'inquirer-autocomplete-prompt';
5
+ import * as s from '../../help/SampleData';
6
+ import { getTokens } from '../../ops/AuthenticateOps';
7
+ import { printMessage } from '../../utils/Console';
8
+ import { FrodoCommand } from '../FrodoCommand';
9
+ const exits = ['exit', 'quit', 'q'];
10
+ const functions = frodo.utils.json.getPaths(frodo, 'this.');
11
+ function searchFunctions(_answers, input = '') {
12
+ return new Promise(resolve => {
13
+ setTimeout(() => {
14
+ const results = fuzzy.filter(input, functions).map(el => el.original);
15
+ // results.splice(5, 0, new inquirer.Separator());
16
+ // results.push(new inquirer.Separator());
17
+ resolve(results);
18
+ }, Math.random() * 470 + 30);
19
+ });
20
+ }
21
+ export default function setup() {
22
+ const program = new FrodoCommand('shell');
23
+ program.description('Launch the frodo interactive shell.').addHelpText('after', `Usage Examples:\n` + ` Launch a frodo shell using explicit login parameters:\n` + ` $ frodo shell ${s.amBaseUrl} ${s.username} '${s.password}'\n`['brightCyan'] + ` Launch a frodo shell using a connection profile (identified by the full AM base URL):\n` + ` $ frodo shell ${s.amBaseUrl}'\n`['brightCyan'] + ` Launch a frodo shell using a connection profile (identified by a unique substring of the AM base URL):\n` + ` $ frodo shell ${s.connId}'\n`['brightCyan']).action(async (host, realm, user, password, options, command) => {
24
+ command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
25
+ if (host) await getTokens();
26
+ let exit = false;
27
+ do {
28
+ try {
29
+ inquirer.registerPrompt('autocomplete', inquirerPrompt);
30
+ const response = await inquirer.prompt([{
31
+ type: 'autocomplete',
32
+ prefix: '',
33
+ name: 'command',
34
+ message: '>',
35
+ source: searchFunctions,
36
+ suggestOnly: true
37
+ }]);
38
+ exit = exits.includes(response.command);
39
+ // evaluate code with context
40
+ if (!exit) {
41
+ const result = await function (str) {
42
+ return eval(str);
43
+ }.call(frodo, `${response.command}`);
44
+ printMessage(result, 'data');
45
+ }
46
+ } catch (error) {
47
+ var _error$response;
48
+ printMessage((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data, 'error');
49
+ printMessage(`${error}`, 'error');
50
+ }
51
+ } while (!exit);
52
+ });
53
+ return program;
54
+ }
55
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","names":["frodo","fuzzy","inquirer","inquirerPrompt","s","getTokens","printMessage","FrodoCommand","exits","functions","utils","json","getPaths","searchFunctions","_answers","input","Promise","resolve","setTimeout","results","filter","map","el","original","Math","random","setup","program","description","addHelpText","amBaseUrl","username","password","connId","action","host","realm","user","options","command","handleDefaultArgsAndOpts","exit","registerPrompt","response","prompt","type","prefix","name","message","source","suggestOnly","includes","result","str","eval","call","error","_error$response","data"],"sources":["../../../src/cli/shell/shell.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport fuzzy from 'fuzzy';\nimport inquirer from 'inquirer';\nimport inquirerPrompt from 'inquirer-autocomplete-prompt';\n\nimport * as s from '../../help/SampleData';\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport { printMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst exits = ['exit', 'quit', 'q'];\nconst functions = frodo.utils.json.getPaths(frodo, 'this.');\n\nfunction searchFunctions(_answers, input = '') {\n return new Promise((resolve) => {\n setTimeout(\n () => {\n const results = fuzzy.filter(input, functions).map((el) => el.original);\n // results.splice(5, 0, new inquirer.Separator());\n // results.push(new inquirer.Separator());\n resolve(results);\n },\n Math.random() * 470 + 30\n );\n });\n}\n\nexport default function setup() {\n const program = new FrodoCommand('shell');\n program\n .description('Launch the frodo interactive shell.')\n .addHelpText(\n 'after',\n `Usage Examples:\\n` +\n ` Launch a frodo shell using explicit login parameters:\\n` +\n ` $ frodo shell ${s.amBaseUrl} ${s.username} '${s.password}'\\n`[\n 'brightCyan'\n ] +\n ` Launch a frodo shell using a connection profile (identified by the full AM base URL):\\n` +\n ` $ frodo shell ${s.amBaseUrl}'\\n`['brightCyan'] +\n ` Launch a frodo shell using a connection profile (identified by a unique substring of the AM base URL):\\n` +\n ` $ frodo shell ${s.connId}'\\n`['brightCyan']\n )\n .action(async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n if (host) await getTokens();\n let exit = false;\n do {\n try {\n inquirer.registerPrompt('autocomplete', inquirerPrompt);\n const response = await inquirer.prompt([\n {\n type: 'autocomplete',\n prefix: '',\n name: 'command',\n message: '>',\n source: searchFunctions,\n suggestOnly: true,\n },\n ]);\n exit = exits.includes(response.command);\n // evaluate code with context\n if (!exit) {\n const result = await function (str: string) {\n return eval(str);\n }.call(frodo, `${response.command}`);\n printMessage(result, 'data');\n }\n } catch (error) {\n printMessage(error.response?.data, 'error');\n printMessage(`${error}`, 'error');\n }\n } while (!exit);\n });\n return program;\n}\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,OAAOC,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,UAAU;AAC/B,OAAOC,cAAc,MAAM,8BAA8B;AAEzD,OAAO,KAAKC,CAAC,MAAM,uBAAuB;AAC1C,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC;AACnC,MAAMC,SAAS,GAAGT,KAAK,CAACU,KAAK,CAACC,IAAI,CAACC,QAAQ,CAACZ,KAAK,EAAE,OAAO,CAAC;AAE3D,SAASa,eAAeA,CAACC,QAAQ,EAAEC,KAAK,GAAG,EAAE,EAAE;EAC7C,OAAO,IAAIC,OAAO,CAAEC,OAAO,IAAK;IAC9BC,UAAU,CACR,MAAM;MACJ,MAAMC,OAAO,GAAGlB,KAAK,CAACmB,MAAM,CAACL,KAAK,EAAEN,SAAS,CAAC,CAACY,GAAG,CAAEC,EAAE,IAAKA,EAAE,CAACC,QAAQ,CAAC;MACvE;MACA;MACAN,OAAO,CAACE,OAAO,CAAC;IAClB,CAAC,EACDK,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,GAAG,GAAG,EACxB,CAAC;EACH,CAAC,CAAC;AACJ;AAEA,eAAe,SAASC,KAAKA,CAAA,EAAG;EAC9B,MAAMC,OAAO,GAAG,IAAIpB,YAAY,CAAC,OAAO,CAAC;EACzCoB,OAAO,CACJC,WAAW,CAAC,qCAAqC,CAAC,CAClDC,WAAW,CACV,OAAO,EACN,mBAAkB,GAChB,2DAA0D,GAC1D,mBAAkBzB,CAAC,CAAC0B,SAAU,IAAG1B,CAAC,CAAC2B,QAAS,KAAI3B,CAAC,CAAC4B,QAAS,KAAI,CAC9D,YAAY,CACb,GACA,2FAA0F,GAC1F,mBAAkB5B,CAAC,CAAC0B,SAAU,KAAI,CAAC,YAAY,CAAC,GAChD,4GAA2G,GAC3G,mBAAkB1B,CAAC,CAAC6B,MAAO,KAAI,CAAC,YAAY,CACjD,CAAC,CACAC,MAAM,CAAC,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEL,QAAQ,EAAEM,OAAO,EAAEC,OAAO,KAAK;IAC/DA,OAAO,CAACC,wBAAwB,CAC9BL,IAAI,EACJC,KAAK,EACLC,IAAI,EACJL,QAAQ,EACRM,OAAO,EACPC,OACF,CAAC;IACD,IAAIJ,IAAI,EAAE,MAAM9B,SAAS,CAAC,CAAC;IAC3B,IAAIoC,IAAI,GAAG,KAAK;IAChB,GAAG;MACD,IAAI;QACFvC,QAAQ,CAACwC,cAAc,CAAC,cAAc,EAAEvC,cAAc,CAAC;QACvD,MAAMwC,QAAQ,GAAG,MAAMzC,QAAQ,CAAC0C,MAAM,CAAC,CACrC;UACEC,IAAI,EAAE,cAAc;UACpBC,MAAM,EAAE,EAAE;UACVC,IAAI,EAAE,SAAS;UACfC,OAAO,EAAE,GAAG;UACZC,MAAM,EAAEpC,eAAe;UACvBqC,WAAW,EAAE;QACf,CAAC,CACF,CAAC;QACFT,IAAI,GAAGjC,KAAK,CAAC2C,QAAQ,CAACR,QAAQ,CAACJ,OAAO,CAAC;QACvC;QACA,IAAI,CAACE,IAAI,EAAE;UACT,MAAMW,MAAM,GAAG,MAAM,UAAUC,GAAW,EAAE;YAC1C,OAAOC,IAAI,CAACD,GAAG,CAAC;UAClB,CAAC,CAACE,IAAI,CAACvD,KAAK,EAAG,GAAE2C,QAAQ,CAACJ,OAAQ,EAAC,CAAC;UACpCjC,YAAY,CAAC8C,MAAM,EAAE,MAAM,CAAC;QAC9B;MACF,CAAC,CAAC,OAAOI,KAAK,EAAE;QAAA,IAAAC,eAAA;QACdnD,YAAY,EAAAmD,eAAA,GAACD,KAAK,CAACb,QAAQ,cAAAc,eAAA,uBAAdA,eAAA,CAAgBC,IAAI,EAAE,OAAO,CAAC;QAC3CpD,YAAY,CAAE,GAAEkD,KAAM,EAAC,EAAE,OAAO,CAAC;MACnC;IACF,CAAC,QAAQ,CAACf,IAAI;EAChB,CAAC,CAAC;EACJ,OAAOd,OAAO;AAChB"}
@@ -1,27 +1,28 @@
1
- import { FrodoCommand } from '../FrodoCommand';
1
+ import { state } from '@rockcarver/frodo-lib';
2
2
  import { Option } from 'commander';
3
- import { frodo, state } from '@rockcarver/frodo-lib';
3
+ import { getTokens } from '../../ops/AuthenticateOps';
4
+ import { deleteAllThemes, deleteThemeByNameCmd, deleteThemeCmd } from '../../ops/ThemeOps';
4
5
  import { printMessage, verboseMessage } from '../../utils/Console';
5
- import { deleteThemeByNameCmd, deleteThemeCmd, deleteAllThemes } from '../../ops/ThemeOps';
6
+ import { FrodoCommand } from '../FrodoCommand';
6
7
  const program = new FrodoCommand('frodo theme delete');
7
8
  program.description('Delete themes.').addOption(new Option('-n, --theme-name <name>', 'Name of the theme. If specified, -a and -A are ignored.')).addOption(new Option('-i, --theme-id <uuid>', 'Uuid of the theme. If specified, -a and -A are ignored.')).addOption(new Option('-a, --all', 'Delete all the themes in the realm. Ignored with -n and -i.')).action(
8
9
  // implement command logic inside action handler
9
10
  async (host, realm, user, password, options, command) => {
10
11
  command.handleDefaultArgsAndOpts(host, realm, user, password, options, command);
11
12
  // delete by name
12
- if (options.themeName && (await frodo.login.getTokens())) {
13
+ if (options.themeName && (await getTokens())) {
13
14
  verboseMessage(`Deleting theme with name "${options.themeName}" from realm "${state.getRealm()}"...`);
14
- deleteThemeByNameCmd(options.themeName);
15
+ await deleteThemeByNameCmd(options.themeName);
15
16
  }
16
17
  // delete by id
17
- else if (options.themeId && (await frodo.login.getTokens())) {
18
+ else if (options.themeId && (await getTokens())) {
18
19
  verboseMessage(`Deleting theme with id "${options.themeId}" from realm "${state.getRealm()}"...`);
19
- deleteThemeCmd(options.themeId);
20
+ await deleteThemeCmd(options.themeId);
20
21
  }
21
22
  // --all -a
22
- else if (options.all && (await frodo.login.getTokens())) {
23
+ else if (options.all && (await getTokens())) {
23
24
  verboseMessage(`Deleting all themes from realm "${state.getRealm()}"...`);
24
- deleteAllThemes();
25
+ await deleteAllThemes();
25
26
  }
26
27
  // unrecognized combination of options or no options
27
28
  else {
@@ -32,6 +33,5 @@ async (host, realm, user, password, options, command) => {
32
33
  }
33
34
  // end command logic inside action handler
34
35
  );
35
-
36
36
  program.parse();
37
- //# sourceMappingURL=theme-delete.js.map
37
+ //# sourceMappingURL=theme-delete.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-delete.js","names":["FrodoCommand","Option","frodo","state","printMessage","verboseMessage","deleteThemeByNameCmd","deleteThemeCmd","deleteAllThemes","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","themeName","login","getTokens","getRealm","themeId","all","help","process","exitCode","parse"],"sources":["cli/theme/theme-delete.ts"],"sourcesContent":["import { FrodoCommand } from '../FrodoCommand';\nimport { Option } from 'commander';\nimport { frodo, state } from '@rockcarver/frodo-lib';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport {\n deleteThemeByNameCmd,\n deleteThemeCmd,\n deleteAllThemes,\n} from '../../ops/ThemeOps';\n\nconst program = new FrodoCommand('frodo theme delete');\n\nprogram\n .description('Delete themes.')\n .addOption(\n new Option(\n '-n, --theme-name <name>',\n 'Name of the theme. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-i, --theme-id <uuid>',\n 'Uuid of the theme. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Delete all the themes in the realm. Ignored with -n and -i.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // delete by name\n if (options.themeName && (await frodo.login.getTokens())) {\n verboseMessage(\n `Deleting theme with name \"${\n options.themeName\n }\" from realm \"${state.getRealm()}\"...`\n );\n deleteThemeByNameCmd(options.themeName);\n }\n // delete by id\n else if (options.themeId && (await frodo.login.getTokens())) {\n verboseMessage(\n `Deleting theme with id \"${\n options.themeId\n }\" from realm \"${state.getRealm()}\"...`\n );\n deleteThemeCmd(options.themeId);\n }\n // --all -a\n else if (options.all && (await frodo.login.getTokens())) {\n verboseMessage(\n `Deleting all themes from realm \"${state.getRealm()}\"...`\n );\n deleteAllThemes();\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AACpD,SAASC,YAAY,EAAEC,cAAc,QAAQ,qBAAqB;AAClE,SACEC,oBAAoB,EACpBC,cAAc,EACdC,eAAe,QACV,oBAAoB;AAE3B,MAAMC,OAAO,GAAG,IAAIT,YAAY,CAAC,oBAAoB,CAAC;AAEtDS,OAAO,CACJC,WAAW,CAAC,gBAAgB,CAAC,CAC7BC,SAAS,CACR,IAAIV,MAAM,CACR,yBAAyB,EACzB,yDACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CACR,uBAAuB,EACvB,yDACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CACR,WAAW,EACX,6DACF,CACF,CAAC,CACAW,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD;EACA,IAAID,OAAO,CAACG,SAAS,KAAK,MAAMlB,KAAK,CAACmB,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,EAAE;IACxDjB,cAAc,CACX,6BACCY,OAAO,CAACG,SACT,iBAAgBjB,KAAK,CAACoB,QAAQ,CAAC,CAAE,MACpC,CAAC;IACDjB,oBAAoB,CAACW,OAAO,CAACG,SAAS,CAAC;EACzC;EACA;EAAA,KACK,IAAIH,OAAO,CAACO,OAAO,KAAK,MAAMtB,KAAK,CAACmB,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,EAAE;IAC3DjB,cAAc,CACX,2BACCY,OAAO,CAACO,OACT,iBAAgBrB,KAAK,CAACoB,QAAQ,CAAC,CAAE,MACpC,CAAC;IACDhB,cAAc,CAACU,OAAO,CAACO,OAAO,CAAC;EACjC;EACA;EAAA,KACK,IAAIP,OAAO,CAACQ,GAAG,KAAK,MAAMvB,KAAK,CAACmB,KAAK,CAACC,SAAS,CAAC,CAAC,CAAC,EAAE;IACvDjB,cAAc,CACX,mCAAkCF,KAAK,CAACoB,QAAQ,CAAC,CAAE,MACtD,CAAC;IACDf,eAAe,CAAC,CAAC;EACnB;EACA;EAAA,KACK;IACHJ,YAAY,CACV,sDAAsD,EACtD,OACF,CAAC;IACDK,OAAO,CAACiB,IAAI,CAAC,CAAC;IACdC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;;AAEHnB,OAAO,CAACoB,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"theme-delete.js","names":["state","Option","getTokens","deleteAllThemes","deleteThemeByNameCmd","deleteThemeCmd","printMessage","verboseMessage","FrodoCommand","program","description","addOption","action","host","realm","user","password","options","command","handleDefaultArgsAndOpts","themeName","getRealm","themeId","all","help","process","exitCode","parse"],"sources":["../../../src/cli/theme/theme-delete.ts"],"sourcesContent":["import { state } from '@rockcarver/frodo-lib';\nimport { Option } from 'commander';\n\nimport { getTokens } from '../../ops/AuthenticateOps';\nimport {\n deleteAllThemes,\n deleteThemeByNameCmd,\n deleteThemeCmd,\n} from '../../ops/ThemeOps';\nimport { printMessage, verboseMessage } from '../../utils/Console';\nimport { FrodoCommand } from '../FrodoCommand';\n\nconst program = new FrodoCommand('frodo theme delete');\n\nprogram\n .description('Delete themes.')\n .addOption(\n new Option(\n '-n, --theme-name <name>',\n 'Name of the theme. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-i, --theme-id <uuid>',\n 'Uuid of the theme. If specified, -a and -A are ignored.'\n )\n )\n .addOption(\n new Option(\n '-a, --all',\n 'Delete all the themes in the realm. Ignored with -n and -i.'\n )\n )\n .action(\n // implement command logic inside action handler\n async (host, realm, user, password, options, command) => {\n command.handleDefaultArgsAndOpts(\n host,\n realm,\n user,\n password,\n options,\n command\n );\n // delete by name\n if (options.themeName && (await getTokens())) {\n verboseMessage(\n `Deleting theme with name \"${\n options.themeName\n }\" from realm \"${state.getRealm()}\"...`\n );\n await deleteThemeByNameCmd(options.themeName);\n }\n // delete by id\n else if (options.themeId && (await getTokens())) {\n verboseMessage(\n `Deleting theme with id \"${\n options.themeId\n }\" from realm \"${state.getRealm()}\"...`\n );\n await deleteThemeCmd(options.themeId);\n }\n // --all -a\n else if (options.all && (await getTokens())) {\n verboseMessage(\n `Deleting all themes from realm \"${state.getRealm()}\"...`\n );\n await deleteAllThemes();\n }\n // unrecognized combination of options or no options\n else {\n printMessage(\n 'Unrecognized combination of options or no options...',\n 'error'\n );\n program.help();\n process.exitCode = 1;\n }\n }\n // end command logic inside action handler\n );\n\nprogram.parse();\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,uBAAuB;AAC7C,SAASC,MAAM,QAAQ,WAAW;AAElC,SAASC,SAAS,QAAQ,2BAA2B;AACrD,SACEC,eAAe,EACfC,oBAAoB,EACpBC,cAAc,QACT,oBAAoB;AAC3B,SAASC,YAAY,EAAEC,cAAc,QAAQ,qBAAqB;AAClE,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,MAAMC,OAAO,GAAG,IAAID,YAAY,CAAC,oBAAoB,CAAC;AAEtDC,OAAO,CACJC,WAAW,CAAC,gBAAgB,CAAC,CAC7BC,SAAS,CACR,IAAIV,MAAM,CACR,yBAAyB,EACzB,yDACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CACR,uBAAuB,EACvB,yDACF,CACF,CAAC,CACAU,SAAS,CACR,IAAIV,MAAM,CACR,WAAW,EACX,6DACF,CACF,CAAC,CACAW,MAAM;AACL;AACA,OAAOC,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,KAAK;EACvDA,OAAO,CAACC,wBAAwB,CAC9BN,IAAI,EACJC,KAAK,EACLC,IAAI,EACJC,QAAQ,EACRC,OAAO,EACPC,OACF,CAAC;EACD;EACA,IAAID,OAAO,CAACG,SAAS,KAAK,MAAMlB,SAAS,CAAC,CAAC,CAAC,EAAE;IAC5CK,cAAc,CACX,6BACCU,OAAO,CAACG,SACT,iBAAgBpB,KAAK,CAACqB,QAAQ,CAAC,CAAE,MACpC,CAAC;IACD,MAAMjB,oBAAoB,CAACa,OAAO,CAACG,SAAS,CAAC;EAC/C;EACA;EAAA,KACK,IAAIH,OAAO,CAACK,OAAO,KAAK,MAAMpB,SAAS,CAAC,CAAC,CAAC,EAAE;IAC/CK,cAAc,CACX,2BACCU,OAAO,CAACK,OACT,iBAAgBtB,KAAK,CAACqB,QAAQ,CAAC,CAAE,MACpC,CAAC;IACD,MAAMhB,cAAc,CAACY,OAAO,CAACK,OAAO,CAAC;EACvC;EACA;EAAA,KACK,IAAIL,OAAO,CAACM,GAAG,KAAK,MAAMrB,SAAS,CAAC,CAAC,CAAC,EAAE;IAC3CK,cAAc,CACX,mCAAkCP,KAAK,CAACqB,QAAQ,CAAC,CAAE,MACtD,CAAC;IACD,MAAMlB,eAAe,CAAC,CAAC;EACzB;EACA;EAAA,KACK;IACHG,YAAY,CACV,sDAAsD,EACtD,OACF,CAAC;IACDG,OAAO,CAACe,IAAI,CAAC,CAAC;IACdC,OAAO,CAACC,QAAQ,GAAG,CAAC;EACtB;AACF;AACA;AACF,CAAC;AAEHjB,OAAO,CAACkB,KAAK,CAAC,CAAC"}