@rockcarver/frodo-cli 2.0.0-3 → 2.0.0-31

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 (466) hide show
  1. package/CHANGELOG.md +275 -4
  2. package/esm/app.js +20 -5
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/FrodoCommand.js +28 -6
  5. package/esm/cli/FrodoCommand.js.map +1 -1
  6. package/esm/cli/_template/something-delete.js +7 -4
  7. package/esm/cli/_template/something-delete.js.map +1 -1
  8. package/esm/cli/_template/something-describe.js +7 -4
  9. package/esm/cli/_template/something-describe.js.map +1 -1
  10. package/esm/cli/_template/something-else-delete.js +7 -4
  11. package/esm/cli/_template/something-else-delete.js.map +1 -1
  12. package/esm/cli/_template/something-else-describe.js +7 -4
  13. package/esm/cli/_template/something-else-describe.js.map +1 -1
  14. package/esm/cli/_template/something-else-export.js +7 -4
  15. package/esm/cli/_template/something-else-export.js.map +1 -1
  16. package/esm/cli/_template/something-else-import.js +7 -4
  17. package/esm/cli/_template/something-else-import.js.map +1 -1
  18. package/esm/cli/_template/something-else-list.js +7 -4
  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 +7 -4
  23. package/esm/cli/_template/something-export.js.map +1 -1
  24. package/esm/cli/_template/something-import.js +7 -4
  25. package/esm/cli/_template/something-import.js.map +1 -1
  26. package/esm/cli/_template/something-list.js +7 -4
  27. package/esm/cli/_template/something-list.js.map +1 -1
  28. package/esm/cli/_template/something-other-delete.js +7 -4
  29. package/esm/cli/_template/something-other-delete.js.map +1 -1
  30. package/esm/cli/_template/something-other-describe.js +7 -4
  31. package/esm/cli/_template/something-other-describe.js.map +1 -1
  32. package/esm/cli/_template/something-other-export.js +7 -4
  33. package/esm/cli/_template/something-other-export.js.map +1 -1
  34. package/esm/cli/_template/something-other-import.js +7 -4
  35. package/esm/cli/_template/something-other-import.js.map +1 -1
  36. package/esm/cli/_template/something-other-list.js +7 -4
  37. package/esm/cli/_template/something-other-list.js.map +1 -1
  38. package/esm/cli/_template/something-other.js +1 -1
  39. package/esm/cli/_template/something-other.js.map +1 -1
  40. package/esm/cli/_template/something.js +2 -2
  41. package/esm/cli/_template/something.js.map +1 -1
  42. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +10 -4
  43. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
  44. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +14 -7
  45. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  46. package/esm/cli/admin/admin-federation-export.js +45 -0
  47. package/esm/cli/admin/admin-federation-export.js.map +1 -0
  48. package/esm/cli/admin/admin-federation-import.js +49 -0
  49. package/esm/cli/admin/admin-federation-import.js.map +1 -0
  50. package/esm/cli/admin/admin-federation-list.js +29 -0
  51. package/esm/cli/admin/admin-federation-list.js.map +1 -0
  52. package/esm/cli/admin/admin-federation.js +13 -0
  53. package/esm/cli/admin/admin-federation.js.map +1 -0
  54. package/esm/cli/admin/admin-get-access-token.js +12 -6
  55. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  56. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +13 -7
  57. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  58. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +11 -5
  59. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  60. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +11 -5
  61. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  62. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +11 -5
  63. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  64. package/esm/cli/admin/admin-list-static-user-mappings.js +12 -6
  65. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  66. package/esm/cli/admin/admin-remove-static-user-mapping.js +12 -5
  67. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  68. package/esm/cli/admin/admin-repair-org-model.js +11 -5
  69. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  70. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +12 -6
  71. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  72. package/esm/cli/admin/admin-show-generic-extension-attributes.js +11 -5
  73. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  74. package/esm/cli/admin/admin-train-auto-access-model.js +33 -0
  75. package/esm/cli/admin/admin-train-auto-access-model.js.map +1 -0
  76. package/esm/cli/admin/admin.js +6 -2
  77. package/esm/cli/admin/admin.js.map +1 -1
  78. package/esm/cli/agent/agent-delete.js +13 -6
  79. package/esm/cli/agent/agent-delete.js.map +1 -1
  80. package/esm/cli/agent/agent-describe.js +7 -4
  81. package/esm/cli/agent/agent-describe.js.map +1 -1
  82. package/esm/cli/agent/agent-export.js +8 -5
  83. package/esm/cli/agent/agent-export.js.map +1 -1
  84. package/esm/cli/agent/agent-gateway-delete.js +13 -6
  85. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  86. package/esm/cli/agent/agent-gateway-describe.js +7 -4
  87. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  88. package/esm/cli/agent/agent-gateway-export.js +8 -5
  89. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  90. package/esm/cli/agent/agent-gateway-import.js +8 -5
  91. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  92. package/esm/cli/agent/agent-gateway-list.js +7 -4
  93. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  94. package/esm/cli/agent/agent-gateway.js +1 -1
  95. package/esm/cli/agent/agent-gateway.js.map +1 -1
  96. package/esm/cli/agent/agent-import.js +8 -5
  97. package/esm/cli/agent/agent-import.js.map +1 -1
  98. package/esm/cli/agent/agent-java-delete.js +13 -6
  99. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  100. package/esm/cli/agent/agent-java-describe.js +7 -4
  101. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  102. package/esm/cli/agent/agent-java-export.js +8 -5
  103. package/esm/cli/agent/agent-java-export.js.map +1 -1
  104. package/esm/cli/agent/agent-java-import.js +8 -5
  105. package/esm/cli/agent/agent-java-import.js.map +1 -1
  106. package/esm/cli/agent/agent-java-list.js +7 -4
  107. package/esm/cli/agent/agent-java-list.js.map +1 -1
  108. package/esm/cli/agent/agent-java.js +1 -1
  109. package/esm/cli/agent/agent-java.js.map +1 -1
  110. package/esm/cli/agent/agent-list.js +7 -4
  111. package/esm/cli/agent/agent-list.js.map +1 -1
  112. package/esm/cli/agent/agent-web-delete.js +13 -6
  113. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  114. package/esm/cli/agent/agent-web-describe.js +7 -4
  115. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  116. package/esm/cli/agent/agent-web-export.js +8 -5
  117. package/esm/cli/agent/agent-web-export.js.map +1 -1
  118. package/esm/cli/agent/agent-web-import.js +8 -5
  119. package/esm/cli/agent/agent-web-import.js.map +1 -1
  120. package/esm/cli/agent/agent-web-list.js +7 -4
  121. package/esm/cli/agent/agent-web-list.js.map +1 -1
  122. package/esm/cli/agent/agent-web.js +3 -3
  123. package/esm/cli/agent/agent-web.js.map +1 -1
  124. package/esm/cli/agent/agent.js +2 -2
  125. package/esm/cli/agent/agent.js.map +1 -1
  126. package/esm/cli/app/app-delete.js +27 -8
  127. package/esm/cli/app/app-delete.js.map +1 -1
  128. package/esm/cli/app/app-describe.js +9 -5
  129. package/esm/cli/app/app-describe.js.map +1 -1
  130. package/esm/cli/app/app-export.js +17 -13
  131. package/esm/cli/app/app-export.js.map +1 -1
  132. package/esm/cli/app/app-import.js +21 -17
  133. package/esm/cli/app/app-import.js.map +1 -1
  134. package/esm/cli/app/app-list.js +12 -8
  135. package/esm/cli/app/app-list.js.map +1 -1
  136. package/esm/cli/app/app.js +8 -12
  137. package/esm/cli/app/app.js.map +1 -1
  138. package/esm/cli/authn/authn-describe.js +30 -0
  139. package/esm/cli/authn/authn-describe.js.map +1 -0
  140. package/esm/cli/authn/authn-export.js +26 -0
  141. package/esm/cli/authn/authn-export.js.map +1 -0
  142. package/esm/cli/authn/authn-import.js +26 -0
  143. package/esm/cli/authn/authn-import.js.map +1 -0
  144. package/esm/cli/authn/authn.js +12 -0
  145. package/esm/cli/authn/authn.js.map +1 -0
  146. package/esm/cli/authz/authz-policy-delete.js +11 -8
  147. package/esm/cli/authz/authz-policy-delete.js.map +1 -1
  148. package/esm/cli/authz/authz-policy-describe.js +8 -5
  149. package/esm/cli/authz/authz-policy-describe.js.map +1 -1
  150. package/esm/cli/authz/authz-policy-export.js +12 -9
  151. package/esm/cli/authz/authz-policy-export.js.map +1 -1
  152. package/esm/cli/authz/authz-policy-import.js +10 -7
  153. package/esm/cli/authz/authz-policy-import.js.map +1 -1
  154. package/esm/cli/authz/authz-policy-list.js +9 -6
  155. package/esm/cli/authz/authz-policy-list.js.map +1 -1
  156. package/esm/cli/authz/authz-policy.js +1 -1
  157. package/esm/cli/authz/authz-policy.js.map +1 -1
  158. package/esm/cli/authz/authz-set-delete.js +10 -7
  159. package/esm/cli/authz/authz-set-delete.js.map +1 -1
  160. package/esm/cli/authz/authz-set-describe.js +8 -5
  161. package/esm/cli/authz/authz-set-describe.js.map +1 -1
  162. package/esm/cli/authz/authz-set-export.js +10 -7
  163. package/esm/cli/authz/authz-set-export.js.map +1 -1
  164. package/esm/cli/authz/authz-set-import.js +10 -7
  165. package/esm/cli/authz/authz-set-import.js.map +1 -1
  166. package/esm/cli/authz/authz-set-list.js +7 -4
  167. package/esm/cli/authz/authz-set-list.js.map +1 -1
  168. package/esm/cli/authz/authz-set.js +1 -1
  169. package/esm/cli/authz/authz-set.js.map +1 -1
  170. package/esm/cli/authz/authz-type-delete.js +12 -9
  171. package/esm/cli/authz/authz-type-delete.js.map +1 -1
  172. package/esm/cli/authz/authz-type-describe.js +9 -6
  173. package/esm/cli/authz/authz-type-describe.js.map +1 -1
  174. package/esm/cli/authz/authz-type-export.js +11 -8
  175. package/esm/cli/authz/authz-type-export.js.map +1 -1
  176. package/esm/cli/authz/authz-type-import.js +12 -9
  177. package/esm/cli/authz/authz-type-import.js.map +1 -1
  178. package/esm/cli/authz/authz-type-list.js +8 -5
  179. package/esm/cli/authz/authz-type-list.js.map +1 -1
  180. package/esm/cli/authz/authz-type.js +1 -1
  181. package/esm/cli/authz/authz-type.js.map +1 -1
  182. package/esm/cli/authz/authz.js +2 -2
  183. package/esm/cli/authz/authz.js.map +1 -1
  184. package/esm/cli/conn/conn-delete.js +2 -2
  185. package/esm/cli/conn/conn-delete.js.map +1 -1
  186. package/esm/cli/conn/conn-describe.js +2 -2
  187. package/esm/cli/conn/conn-describe.js.map +1 -1
  188. package/esm/cli/conn/conn-list.js +2 -2
  189. package/esm/cli/conn/conn-list.js.map +1 -1
  190. package/esm/cli/conn/conn-save.js +31 -15
  191. package/esm/cli/conn/conn-save.js.map +1 -1
  192. package/esm/cli/conn/conn.js +2 -2
  193. package/esm/cli/conn/conn.js.map +1 -1
  194. package/esm/cli/email/email-template-export.js +10 -7
  195. package/esm/cli/email/email-template-export.js.map +1 -1
  196. package/esm/cli/email/email-template-import.js +11 -8
  197. package/esm/cli/email/email-template-import.js.map +1 -1
  198. package/esm/cli/email/email-template-list.js +8 -5
  199. package/esm/cli/email/email-template-list.js.map +1 -1
  200. package/esm/cli/email/email-template.js +1 -1
  201. package/esm/cli/email/email-template.js.map +1 -1
  202. package/esm/cli/email/email.js +2 -2
  203. package/esm/cli/email/email.js.map +1 -1
  204. package/esm/cli/esv/esv-apply.js +18 -8
  205. package/esm/cli/esv/esv-apply.js.map +1 -1
  206. package/esm/cli/esv/esv-secret-create.js +8 -5
  207. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  208. package/esm/cli/esv/esv-secret-delete.js +9 -6
  209. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  210. package/esm/cli/esv/esv-secret-describe.js +8 -5
  211. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  212. package/esm/cli/esv/esv-secret-export.js +19 -5
  213. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  214. package/esm/cli/esv/esv-secret-import.js +7 -4
  215. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  216. package/esm/cli/esv/esv-secret-list.js +8 -5
  217. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  218. package/esm/cli/esv/esv-secret-set.js +8 -5
  219. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  220. package/esm/cli/esv/esv-secret-version-activate.js +8 -5
  221. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  222. package/esm/cli/esv/esv-secret-version-create.js +9 -6
  223. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  224. package/esm/cli/esv/esv-secret-version-deactivate.js +8 -5
  225. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  226. package/esm/cli/esv/esv-secret-version-delete.js +9 -6
  227. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  228. package/esm/cli/esv/esv-secret-version-list.js +8 -5
  229. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  230. package/esm/cli/esv/esv-secret-version.js +1 -1
  231. package/esm/cli/esv/esv-secret-version.js.map +1 -1
  232. package/esm/cli/esv/esv-secret.js +2 -3
  233. package/esm/cli/esv/esv-secret.js.map +1 -1
  234. package/esm/cli/esv/esv-variable-create.js +10 -6
  235. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  236. package/esm/cli/esv/esv-variable-delete.js +10 -7
  237. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  238. package/esm/cli/esv/esv-variable-describe.js +10 -7
  239. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  240. package/esm/cli/esv/esv-variable-export.js +20 -6
  241. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  242. package/esm/cli/esv/esv-variable-import.js +7 -4
  243. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  244. package/esm/cli/esv/esv-variable-list.js +8 -5
  245. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  246. package/esm/cli/esv/esv-variable-set.js +8 -5
  247. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  248. package/esm/cli/esv/esv-variable.js +2 -3
  249. package/esm/cli/esv/esv-variable.js.map +1 -1
  250. package/esm/cli/esv/esv.js +2 -2
  251. package/esm/cli/esv/esv.js.map +1 -1
  252. package/esm/cli/idm/idm-count.js +9 -6
  253. package/esm/cli/idm/idm-count.js.map +1 -1
  254. package/esm/cli/idm/idm-export.js +21 -12
  255. package/esm/cli/idm/idm-export.js.map +1 -1
  256. package/esm/cli/idm/idm-import.js +22 -13
  257. package/esm/cli/idm/idm-import.js.map +1 -1
  258. package/esm/cli/idm/idm-list.js +7 -4
  259. package/esm/cli/idm/idm-list.js.map +1 -1
  260. package/esm/cli/idm/idm.js +2 -2
  261. package/esm/cli/idm/idm.js.map +1 -1
  262. package/esm/cli/idp/idp-export.js +11 -8
  263. package/esm/cli/idp/idp-export.js.map +1 -1
  264. package/esm/cli/idp/idp-import.js +15 -12
  265. package/esm/cli/idp/idp-import.js.map +1 -1
  266. package/esm/cli/idp/idp-list.js +7 -4
  267. package/esm/cli/idp/idp-list.js.map +1 -1
  268. package/esm/cli/idp/idp.js +2 -2
  269. package/esm/cli/idp/idp.js.map +1 -1
  270. package/esm/cli/info/info.js +16 -10
  271. package/esm/cli/info/info.js.map +1 -1
  272. package/esm/cli/journey/journey-delete.js +8 -5
  273. package/esm/cli/journey/journey-delete.js.map +1 -1
  274. package/esm/cli/journey/journey-describe.js +19 -10
  275. package/esm/cli/journey/journey-describe.js.map +1 -1
  276. package/esm/cli/journey/journey-disable.js +12 -6
  277. package/esm/cli/journey/journey-disable.js.map +1 -1
  278. package/esm/cli/journey/journey-enable.js +12 -6
  279. package/esm/cli/journey/journey-enable.js.map +1 -1
  280. package/esm/cli/journey/journey-export.js +21 -9
  281. package/esm/cli/journey/journey-export.js.map +1 -1
  282. package/esm/cli/journey/journey-import.js +11 -8
  283. package/esm/cli/journey/journey-import.js.map +1 -1
  284. package/esm/cli/journey/journey-list.js +6 -3
  285. package/esm/cli/journey/journey-list.js.map +1 -1
  286. package/esm/cli/journey/journey-prune.js +23 -12
  287. package/esm/cli/journey/journey-prune.js.map +1 -1
  288. package/esm/cli/journey/journey.js +2 -2
  289. package/esm/cli/journey/journey.js.map +1 -1
  290. package/esm/cli/{logging/logs-fetch.js → log/log-fetch.js} +68 -36
  291. package/esm/cli/log/log-fetch.js.map +1 -0
  292. package/esm/cli/log/log-key-delete.js +35 -0
  293. package/esm/cli/log/log-key-delete.js.map +1 -0
  294. package/esm/cli/log/log-key-describe.js +22 -0
  295. package/esm/cli/log/log-key-describe.js.map +1 -0
  296. package/esm/cli/log/log-key-list.js +26 -0
  297. package/esm/cli/log/log-key-list.js.map +1 -0
  298. package/esm/cli/log/log-key.js +8 -0
  299. package/esm/cli/log/log-key.js.map +1 -0
  300. package/esm/cli/log/log-list.js +80 -0
  301. package/esm/cli/log/log-list.js.map +1 -0
  302. package/esm/cli/log/log-tail.js +77 -0
  303. package/esm/cli/log/log-tail.js.map +1 -0
  304. package/esm/cli/{logging/logs.js → log/log.js} +6 -3
  305. package/esm/cli/log/log.js.map +1 -0
  306. package/esm/cli/oauth/oauth-client-delete.js +22 -0
  307. package/esm/cli/oauth/oauth-client-delete.js.map +1 -0
  308. package/esm/cli/oauth/oauth-client-describe.js +22 -0
  309. package/esm/cli/oauth/oauth-client-describe.js.map +1 -0
  310. package/esm/cli/oauth/oauth-client-export.js +52 -0
  311. package/esm/cli/oauth/oauth-client-export.js.map +1 -0
  312. package/esm/cli/oauth/oauth-client-import.js +57 -0
  313. package/esm/cli/oauth/oauth-client-import.js.map +1 -0
  314. package/esm/cli/oauth/oauth-client-list.js +25 -0
  315. package/esm/cli/oauth/oauth-client-list.js.map +1 -0
  316. package/esm/cli/oauth/oauth-client.js +14 -0
  317. package/esm/cli/oauth/oauth-client.js.map +1 -0
  318. package/esm/cli/oauth/oauth.js +13 -0
  319. package/esm/cli/oauth/oauth.js.map +1 -0
  320. package/esm/cli/realm/realm-add-custom-domain.js +8 -5
  321. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  322. package/esm/cli/realm/realm-describe.js +8 -5
  323. package/esm/cli/realm/realm-describe.js.map +1 -1
  324. package/esm/cli/realm/realm-list.js +8 -5
  325. package/esm/cli/realm/realm-list.js.map +1 -1
  326. package/esm/cli/realm/realm-remove-custom-domain.js +11 -5
  327. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  328. package/esm/cli/realm/realm.js +2 -2
  329. package/esm/cli/realm/realm.js.map +1 -1
  330. package/esm/cli/saml/saml-cot-export.js +10 -7
  331. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  332. package/esm/cli/saml/saml-cot-import.js +15 -12
  333. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  334. package/esm/cli/saml/saml-cot-list.js +8 -5
  335. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  336. package/esm/cli/saml/saml-cot.js +1 -1
  337. package/esm/cli/saml/saml-cot.js.map +1 -1
  338. package/esm/cli/saml/saml-delete.js +14 -7
  339. package/esm/cli/saml/saml-delete.js.map +1 -1
  340. package/esm/cli/saml/saml-describe.js +8 -5
  341. package/esm/cli/saml/saml-describe.js.map +1 -1
  342. package/esm/cli/saml/saml-export.js +10 -7
  343. package/esm/cli/saml/saml-export.js.map +1 -1
  344. package/esm/cli/saml/saml-import.js +11 -8
  345. package/esm/cli/saml/saml-import.js.map +1 -1
  346. package/esm/cli/saml/saml-list.js +8 -5
  347. package/esm/cli/saml/saml-list.js.map +1 -1
  348. package/esm/cli/saml/saml-metadata-export.js +9 -6
  349. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  350. package/esm/cli/saml/saml-metadata.js +1 -1
  351. package/esm/cli/saml/saml-metadata.js.map +1 -1
  352. package/esm/cli/saml/saml.js +2 -2
  353. package/esm/cli/saml/saml.js.map +1 -1
  354. package/esm/cli/script/script-delete.js +7 -4
  355. package/esm/cli/script/script-delete.js.map +1 -1
  356. package/esm/cli/script/script-describe.js +7 -4
  357. package/esm/cli/script/script-describe.js.map +1 -1
  358. package/esm/cli/script/script-export.js +8 -5
  359. package/esm/cli/script/script-export.js.map +1 -1
  360. package/esm/cli/script/script-import.js +9 -6
  361. package/esm/cli/script/script-import.js.map +1 -1
  362. package/esm/cli/script/script-list.js +8 -5
  363. package/esm/cli/script/script-list.js.map +1 -1
  364. package/esm/cli/script/script.js +2 -2
  365. package/esm/cli/script/script.js.map +1 -1
  366. package/esm/cli/service/service-delete.js +8 -5
  367. package/esm/cli/service/service-delete.js.map +1 -1
  368. package/esm/cli/service/service-export.js +9 -6
  369. package/esm/cli/service/service-export.js.map +1 -1
  370. package/esm/cli/service/service-import.js +11 -9
  371. package/esm/cli/service/service-import.js.map +1 -1
  372. package/esm/cli/service/service-list.js +7 -4
  373. package/esm/cli/service/service-list.js.map +1 -1
  374. package/esm/cli/service/service.js +2 -2
  375. package/esm/cli/service/service.js.map +1 -1
  376. package/esm/cli/shell/shell.js +57 -0
  377. package/esm/cli/shell/shell.js.map +1 -0
  378. package/esm/cli/theme/theme-delete.js +10 -7
  379. package/esm/cli/theme/theme-delete.js.map +1 -1
  380. package/esm/cli/theme/theme-export.js +11 -8
  381. package/esm/cli/theme/theme-export.js.map +1 -1
  382. package/esm/cli/theme/theme-import.js +12 -9
  383. package/esm/cli/theme/theme-import.js.map +1 -1
  384. package/esm/cli/theme/theme-list.js +7 -4
  385. package/esm/cli/theme/theme-list.js.map +1 -1
  386. package/esm/cli/theme/theme.js +2 -2
  387. package/esm/cli/theme/theme.js.map +1 -1
  388. package/esm/help/SampleData.js +7 -0
  389. package/esm/help/SampleData.js.map +1 -0
  390. package/esm/launch.js +1 -1
  391. package/esm/launch.js.map +1 -1
  392. package/esm/loader.js +2 -2
  393. package/esm/loader.js.map +1 -1
  394. package/esm/ops/AdminFederationOps.js +225 -0
  395. package/esm/ops/AdminFederationOps.js.map +1 -0
  396. package/esm/ops/AgentOps.js +128 -87
  397. package/esm/ops/AgentOps.js.map +1 -1
  398. package/esm/ops/ApplicationOps.js +315 -0
  399. package/esm/ops/ApplicationOps.js.map +1 -0
  400. package/esm/ops/AuthenticationSettingsOps.js +89 -0
  401. package/esm/ops/AuthenticationSettingsOps.js.map +1 -0
  402. package/esm/ops/CirclesOfTrustOps.js +72 -59
  403. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  404. package/esm/ops/ConnectionProfileOps.js +13 -6
  405. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  406. package/esm/ops/EmailTemplateOps.js +76 -64
  407. package/esm/ops/EmailTemplateOps.js.map +1 -1
  408. package/esm/ops/IdmOps.js +70 -84
  409. package/esm/ops/IdmOps.js.map +1 -1
  410. package/esm/ops/IdpOps.js +74 -43
  411. package/esm/ops/IdpOps.js.map +1 -1
  412. package/esm/ops/JourneyOps.js +99 -67
  413. package/esm/ops/JourneyOps.js.map +1 -1
  414. package/esm/ops/LogOps.js +92 -30
  415. package/esm/ops/LogOps.js.map +1 -1
  416. package/esm/ops/NodeOps.js +6 -3
  417. package/esm/ops/NodeOps.js.map +1 -1
  418. package/esm/ops/OAuth2ClientOps.js +51 -32
  419. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  420. package/esm/ops/OrganizationOps.js +14 -22
  421. package/esm/ops/OrganizationOps.js.map +1 -1
  422. package/esm/ops/PolicyOps.js +84 -55
  423. package/esm/ops/PolicyOps.js.map +1 -1
  424. package/esm/ops/PolicySetOps.js +67 -43
  425. package/esm/ops/PolicySetOps.js.map +1 -1
  426. package/esm/ops/RealmOps.js +18 -11
  427. package/esm/ops/RealmOps.js.map +1 -1
  428. package/esm/ops/ResourceTypeOps.js +75 -66
  429. package/esm/ops/ResourceTypeOps.js.map +1 -1
  430. package/esm/ops/Saml2Ops.js +76 -54
  431. package/esm/ops/Saml2Ops.js.map +1 -1
  432. package/esm/ops/Saml2Ops.test_.js.map +1 -1
  433. package/esm/ops/ScriptOps.js +92 -31
  434. package/esm/ops/ScriptOps.js.map +1 -1
  435. package/esm/ops/SecretsOps.js +106 -23
  436. package/esm/ops/SecretsOps.js.map +1 -1
  437. package/esm/ops/ServiceOps.js +67 -41
  438. package/esm/ops/ServiceOps.js.map +1 -1
  439. package/esm/ops/ThemeOps.js +62 -36
  440. package/esm/ops/ThemeOps.js.map +1 -1
  441. package/esm/ops/VariablesOps.js +132 -41
  442. package/esm/ops/VariablesOps.js.map +1 -1
  443. package/esm/ops/utils/OpsUtils.js +1 -1
  444. package/esm/ops/utils/OpsUtils.js.map +1 -1
  445. package/esm/ops/utils/Wordwrap.js +1 -1
  446. package/esm/ops/utils/Wordwrap.js.map +1 -1
  447. package/esm/storage/StaticStorage.js +1 -1
  448. package/esm/storage/StaticStorage.js.map +1 -1
  449. package/esm/utils/Config.js +7 -4
  450. package/esm/utils/Config.js.map +1 -1
  451. package/esm/utils/Console.js +9 -5
  452. package/esm/utils/Console.js.map +1 -1
  453. package/esm/utils/ExportImportUtils.js +32 -66
  454. package/esm/utils/ExportImportUtils.js.map +1 -1
  455. package/esm/utils/Version.js +19 -16
  456. package/esm/utils/Version.js.map +1 -1
  457. package/global-jest-setup.js +4 -0
  458. package/package.json +46 -35
  459. package/esm/cli/logging/logs-fetch.js.map +0 -1
  460. package/esm/cli/logging/logs-list.js +0 -49
  461. package/esm/cli/logging/logs-list.js.map +0 -1
  462. package/esm/cli/logging/logs-tail.js +0 -46
  463. package/esm/cli/logging/logs-tail.js.map +0 -1
  464. package/esm/cli/logging/logs.js.map +0 -1
  465. package/esm/cli/theme/theme-delete.e2e.test_.js.map +0 -1
  466. package/esm/cli/theme/theme-list.e2e.test_.js.map +0 -1
@@ -1,17 +1,39 @@
1
1
  import { frodo, state } from '@rockcarver/frodo-lib';
2
2
  import fs from 'fs';
3
- import { printMessage, createTable, debugMessage, showSpinner, succeedSpinner, failSpinner } from '../utils/Console';
3
+ import { createTable, debugMessage, failSpinner, printMessage, showSpinner, succeedSpinner } from '../utils/Console';
4
+ const {
5
+ getRealmName
6
+ } = frodo.utils;
7
+ const {
8
+ getTypedFilename,
9
+ titleCase,
10
+ saveJsonToFile,
11
+ getFilePath,
12
+ getWorkingDirectory
13
+ } = frodo.utils;
14
+ const {
15
+ getListOfServices,
16
+ exportServices,
17
+ exportService,
18
+ getFullServices,
19
+ createServiceExportTemplate,
20
+ importService,
21
+ importServices,
22
+ deleteFullService,
23
+ deleteFullServices
24
+ } = frodo.service;
25
+
4
26
  /**
5
27
  * List services
6
28
  */
7
29
  export async function listServices(long = false, globalConfig = false) {
8
30
  try {
9
- const services = await frodo.service.getListOfServices(globalConfig);
31
+ const services = await getListOfServices(globalConfig);
10
32
  services.sort((a, b) => a._id.localeCompare(b._id));
11
33
  if (long) {
12
34
  const table = createTable(['Service Id', 'Service Name']);
13
35
  for (const service of services) {
14
- table.push([service._id, service.name]);
36
+ table.push([service._id, globalConfig ? service['_type'].name : service.name]);
15
37
  }
16
38
  printMessage(table.toString(), 'data');
17
39
  } else {
@@ -30,12 +52,12 @@ export async function listServices(long = false, globalConfig = false) {
30
52
  * @param {string} file file name
31
53
  */
32
54
  export async function exportServicesToFile(file, globalConfig = false) {
33
- const exportData = await frodo.service.exportServices(globalConfig);
34
- let fileName = frodo.utils.impex.getTypedFilename(`all${frodo.utils.impex.titleCase(frodo.helper.utils.getRealmName(state.getRealm()))}Services`, `service`);
55
+ const exportData = await exportServices(globalConfig);
56
+ let fileName = getTypedFilename(`all${globalConfig ? 'Global' : titleCase(getRealmName(state.getRealm()))}Services`, `service`);
35
57
  if (file) {
36
58
  fileName = file;
37
59
  }
38
- frodo.utils.impex.saveJsonToFile(exportData, fileName);
60
+ saveJsonToFile(exportData, getFilePath(fileName, true));
39
61
  }
40
62
 
41
63
  /**
@@ -44,12 +66,12 @@ export async function exportServicesToFile(file, globalConfig = false) {
44
66
  * @param {string} file file name
45
67
  */
46
68
  export async function exportServiceToFile(serviceId, file, globalConfig = false) {
47
- const exportData = await frodo.service.exportService(serviceId, globalConfig);
48
- let fileName = frodo.utils.impex.getTypedFilename(serviceId, `service`);
69
+ const exportData = await exportService(serviceId, globalConfig);
70
+ let fileName = getTypedFilename(serviceId, `service`);
49
71
  if (file) {
50
72
  fileName = file;
51
73
  }
52
- frodo.utils.impex.saveJsonToFile(exportData, fileName);
74
+ saveJsonToFile(exportData, getFilePath(fileName, true));
53
75
  }
54
76
 
55
77
  /**
@@ -57,13 +79,14 @@ export async function exportServiceToFile(serviceId, file, globalConfig = false)
57
79
  */
58
80
  export async function exportServicesToFiles(globalConfig = false) {
59
81
  debugMessage(`cli.ServiceOps.exportServicesToFiles: start`);
60
- const services = await frodo.service.getFullServices(globalConfig);
82
+ const services = await getFullServices(globalConfig);
61
83
  for (const service of services) {
62
- const fileName = frodo.utils.impex.getTypedFilename(service._type._id, `service`);
63
- const exportData = frodo.service.createServiceExportTemplate();
84
+ const fileName = getTypedFilename(service._type._id, `service`);
85
+ const filePath = getFilePath(fileName, true);
86
+ const exportData = createServiceExportTemplate();
64
87
  exportData.service[service._type._id] = service;
65
- debugMessage(`cli.ServiceOps.exportServicesToFiles: exporting ${service._type._id} to ${fileName}`);
66
- frodo.utils.impex.saveJsonToFile(exportData, fileName);
88
+ debugMessage(`cli.ServiceOps.exportServicesToFiles: exporting ${service._type._id} to ${filePath}`);
89
+ saveJsonToFile(exportData, filePath);
67
90
  }
68
91
  debugMessage(`cli.ServiceOps.exportServicesToFiles: end.`);
69
92
  }
@@ -75,21 +98,22 @@ export async function exportServicesToFiles(globalConfig = false) {
75
98
  * @param {boolean} clean remove existing service
76
99
  */
77
100
  export async function importServiceFromFile(serviceId, file, clean, globalConfig = false) {
78
- debugMessage(`cli.ServiceOps.importServiceFromFile: start [serviceId=${serviceId}, file=${file}]`);
101
+ const filePath = getFilePath(file);
102
+ debugMessage(`cli.ServiceOps.importServiceFromFile: start [serviceId=${serviceId}, file=${filePath}]`);
79
103
  const verbose = state.getVerbose();
80
- fs.readFile(file, 'utf8', async (err, data) => {
104
+ fs.readFile(filePath, 'utf8', async (err, data) => {
81
105
  if (err) throw err;
82
106
  const importData = JSON.parse(data);
83
107
  if (importData && importData.service[serviceId]) {
84
108
  if (!verbose) showSpinner(`Importing ${serviceId}...`);
85
109
  try {
86
110
  if (verbose) showSpinner(`Importing ${serviceId}...`);
87
- await frodo.service.importService(serviceId, importData, clean, globalConfig);
111
+ await importService(serviceId, importData, clean, globalConfig);
88
112
  succeedSpinner(`Imported ${serviceId}.`);
89
113
  } catch (importError) {
90
- var _importError$response, _importError$response2, _importError$response3, _importError$response4;
91
- const message = (_importError$response = importError.response) === null || _importError$response === void 0 ? void 0 : (_importError$response2 = _importError$response.data) === null || _importError$response2 === void 0 ? void 0 : _importError$response2.message;
92
- const detail = (_importError$response3 = importError.response) === null || _importError$response3 === void 0 ? void 0 : (_importError$response4 = _importError$response3.data) === null || _importError$response4 === void 0 ? void 0 : _importError$response4.detail;
114
+ var _importError$response, _importError$response2;
115
+ const message = (_importError$response = importError.response) === null || _importError$response === void 0 || (_importError$response = _importError$response.data) === null || _importError$response === void 0 ? void 0 : _importError$response.message;
116
+ const detail = (_importError$response2 = importError.response) === null || _importError$response2 === void 0 || (_importError$response2 = _importError$response2.data) === null || _importError$response2 === void 0 ? void 0 : _importError$response2.detail;
93
117
  if (verbose) showSpinner(`Importing ${serviceId}...`);
94
118
  failSpinner(`${detail ? message + ' - ' + detail : message}`);
95
119
  }
@@ -98,7 +122,7 @@ export async function importServiceFromFile(serviceId, file, clean, globalConfig
98
122
  failSpinner(`${serviceId} not found!`);
99
123
  }
100
124
  });
101
- debugMessage(`cli.ServiceOps.importServiceFromFile: end [serviceId=${serviceId}, file=${file}]`);
125
+ debugMessage(`cli.ServiceOps.importServiceFromFile: end [serviceId=${serviceId}, file=${filePath}]`);
102
126
  }
103
127
 
104
128
  /**
@@ -107,9 +131,10 @@ export async function importServiceFromFile(serviceId, file, clean, globalConfig
107
131
  * @param {boolean} clean remove existing service
108
132
  */
109
133
  export async function importFirstServiceFromFile(file, clean, globalConfig = false) {
110
- debugMessage(`cli.ServiceOps.importFirstServiceFromFile: start [file=${file}]`);
134
+ const filePath = getFilePath(file);
135
+ debugMessage(`cli.ServiceOps.importFirstServiceFromFile: start [file=${filePath}]`);
111
136
  const verbose = state.getVerbose();
112
- fs.readFile(file, 'utf8', async (err, data) => {
137
+ fs.readFile(filePath, 'utf8', async (err, data) => {
113
138
  if (err) throw err;
114
139
  const importData = JSON.parse(data);
115
140
  if (importData && Object.keys(importData.service).length) {
@@ -117,20 +142,20 @@ export async function importFirstServiceFromFile(file, clean, globalConfig = fal
117
142
  if (!verbose) showSpinner(`Importing ${serviceId}...`);
118
143
  try {
119
144
  if (verbose) showSpinner(`Importing ${serviceId}...`);
120
- await frodo.service.importService(serviceId, importData, clean, globalConfig);
145
+ await importService(serviceId, importData, clean, globalConfig);
121
146
  succeedSpinner(`Imported ${serviceId}.`);
122
147
  } catch (importError) {
123
- var _importError$response5, _importError$response6, _importError$response7, _importError$response8;
124
- const message = (_importError$response5 = importError.response) === null || _importError$response5 === void 0 ? void 0 : (_importError$response6 = _importError$response5.data) === null || _importError$response6 === void 0 ? void 0 : _importError$response6.message;
125
- const detail = (_importError$response7 = importError.response) === null || _importError$response7 === void 0 ? void 0 : (_importError$response8 = _importError$response7.data) === null || _importError$response8 === void 0 ? void 0 : _importError$response8.detail;
148
+ var _importError$response3, _importError$response4;
149
+ const message = (_importError$response3 = importError.response) === null || _importError$response3 === void 0 || (_importError$response3 = _importError$response3.data) === null || _importError$response3 === void 0 ? void 0 : _importError$response3.message;
150
+ const detail = (_importError$response4 = importError.response) === null || _importError$response4 === void 0 || (_importError$response4 = _importError$response4.data) === null || _importError$response4 === void 0 ? void 0 : _importError$response4.detail;
126
151
  if (verbose) showSpinner(`Importing ${serviceId}...`);
127
152
  failSpinner(`${detail ? message + ' - ' + detail : message}`);
128
153
  }
129
154
  } else {
130
155
  showSpinner(`Importing service...`);
131
- failSpinner(`No service found in ${file}!`);
156
+ failSpinner(`No service found in ${filePath}!`);
132
157
  }
133
- debugMessage(`cli.ServiceOps.importFirstServiceFromFile: end [file=${file}]`);
158
+ debugMessage(`cli.ServiceOps.importFirstServiceFromFile: end [file=${filePath}]`);
134
159
  });
135
160
  }
136
161
 
@@ -140,18 +165,19 @@ export async function importFirstServiceFromFile(file, clean, globalConfig = fal
140
165
  * @param {boolean} clean remove existing service
141
166
  */
142
167
  export async function importServicesFromFile(file, clean, globalConfig = false) {
143
- debugMessage(`cli.ServiceOps.importServiceFromFile: start [file=${file}]`);
144
- fs.readFile(file, 'utf8', async (err, data) => {
168
+ const filePath = getFilePath(file);
169
+ debugMessage(`cli.ServiceOps.importServiceFromFile: start [file=${filePath}]`);
170
+ fs.readFile(filePath, 'utf8', async (err, data) => {
145
171
  if (err) throw err;
146
- debugMessage(`cli.ServiceOps.importServiceFromFile: importing ${file}`);
172
+ debugMessage(`cli.ServiceOps.importServiceFromFile: importing ${filePath}`);
147
173
  const importData = JSON.parse(data);
148
174
  try {
149
- await frodo.service.importServices(importData, clean, globalConfig);
175
+ await importServices(importData, clean, globalConfig);
150
176
  } catch (error) {
151
177
  printMessage(`${error.message}`, 'error');
152
178
  printMessage(error.response.status, 'error');
153
179
  }
154
- debugMessage(`cli.ServiceOps.importServiceFromFile: end [file=${file}]`);
180
+ debugMessage(`cli.ServiceOps.importServiceFromFile: end [file=${filePath}]`);
155
181
  });
156
182
  }
157
183
 
@@ -161,8 +187,8 @@ export async function importServicesFromFile(file, clean, globalConfig = false)
161
187
  */
162
188
  export async function importServicesFromFiles(clean, globalConfig = false) {
163
189
  debugMessage(`cli.ServiceOps.importServicesFromFiles: start`);
164
- const names = fs.readdirSync(frodo.utils.impex.getWorkingDirectory());
165
- const agentFiles = names.filter(name => name.toLowerCase().endsWith('.service.json'));
190
+ const names = fs.readdirSync(getWorkingDirectory());
191
+ const agentFiles = names.filter(name => name.toLowerCase().endsWith('.service.json')).map(name => getFilePath(name));
166
192
  for (const file of agentFiles) {
167
193
  await importServicesFromFile(file, clean, globalConfig);
168
194
  }
@@ -175,10 +201,10 @@ export async function importServicesFromFiles(clean, globalConfig = false) {
175
201
  */
176
202
  export async function deleteService(serviceId, globalConfig = false) {
177
203
  try {
178
- await frodo.service.deleteFullService(serviceId, globalConfig);
204
+ await deleteFullService(serviceId, globalConfig);
179
205
  } catch (error) {
180
- var _error$response, _error$response$data;
181
- const message = (_error$response = error.response) === null || _error$response === void 0 ? void 0 : (_error$response$data = _error$response.data) === null || _error$response$data === void 0 ? void 0 : _error$response$data.message;
206
+ var _error$response;
207
+ const message = (_error$response = error.response) === null || _error$response === void 0 || (_error$response = _error$response.data) === null || _error$response === void 0 ? void 0 : _error$response.message;
182
208
  printMessage(`Delete service '${serviceId}': ${message}`, 'error');
183
209
  }
184
210
  }
@@ -187,6 +213,6 @@ export async function deleteService(serviceId, globalConfig = false) {
187
213
  * Delete all services
188
214
  */
189
215
  export async function deleteServices(globalConfig = false) {
190
- await frodo.service.deleteFullServices(globalConfig);
216
+ await deleteFullServices(globalConfig);
191
217
  }
192
- //# sourceMappingURL=ServiceOps.js.map
218
+ //# sourceMappingURL=ServiceOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceOps.js","names":["frodo","state","fs","printMessage","createTable","debugMessage","showSpinner","succeedSpinner","failSpinner","listServices","long","globalConfig","services","service","getListOfServices","sort","a","b","_id","localeCompare","table","push","name","toString","error","stack","exportServicesToFile","file","exportData","exportServices","fileName","utils","impex","getTypedFilename","titleCase","helper","getRealmName","getRealm","saveJsonToFile","exportServiceToFile","serviceId","exportService","exportServicesToFiles","getFullServices","_type","createServiceExportTemplate","importServiceFromFile","clean","verbose","getVerbose","readFile","err","data","importData","JSON","parse","importService","importError","_importError$response","_importError$response2","_importError$response3","_importError$response4","message","response","detail","importFirstServiceFromFile","Object","keys","length","_importError$response5","_importError$response6","_importError$response7","_importError$response8","importServicesFromFile","importServices","status","importServicesFromFiles","names","readdirSync","getWorkingDirectory","agentFiles","filter","toLowerCase","endsWith","deleteService","deleteFullService","_error$response","_error$response$data","deleteServices","deleteFullServices"],"sources":["ops/ServiceOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\nimport {\n printMessage,\n createTable,\n debugMessage,\n showSpinner,\n succeedSpinner,\n failSpinner,\n} from '../utils/Console';\nimport type { ServiceExportInterface } from '@rockcarver/frodo-lib/types/ops/OpsTypes';\n\n/**\n * List services\n */\nexport async function listServices(long = false, globalConfig = false) {\n try {\n const services = await frodo.service.getListOfServices(globalConfig);\n services.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable(['Service Id', 'Service Name']);\n for (const service of services) {\n table.push([service._id, service.name]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const service of services) {\n printMessage(`${service._id}`, 'data');\n }\n }\n } catch (error) {\n printMessage(`Error listing agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * Export all services to file\n * @param {string} file file name\n */\nexport async function exportServicesToFile(file, globalConfig = false) {\n const exportData = await frodo.service.exportServices(globalConfig);\n let fileName = frodo.utils.impex.getTypedFilename(\n `all${frodo.utils.impex.titleCase(\n frodo.helper.utils.getRealmName(state.getRealm())\n )}Services`,\n `service`\n );\n if (file) {\n fileName = file;\n }\n frodo.utils.impex.saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export service to file\n * @param {string} serviceId service id\n * @param {string} file file name\n */\nexport async function exportServiceToFile(\n serviceId: string,\n file: string,\n globalConfig = false\n) {\n const exportData = await frodo.service.exportService(serviceId, globalConfig);\n let fileName = frodo.utils.impex.getTypedFilename(serviceId, `service`);\n if (file) {\n fileName = file;\n }\n frodo.utils.impex.saveJsonToFile(exportData, fileName);\n}\n\n/**\n * Export all services to separate files\n */\nexport async function exportServicesToFiles(globalConfig = false) {\n debugMessage(`cli.ServiceOps.exportServicesToFiles: start`);\n const services = await frodo.service.getFullServices(globalConfig);\n for (const service of services) {\n const fileName = frodo.utils.impex.getTypedFilename(\n service._type._id,\n `service`\n );\n const exportData = frodo.service.createServiceExportTemplate();\n exportData.service[service._type._id] = service;\n debugMessage(\n `cli.ServiceOps.exportServicesToFiles: exporting ${service._type._id} to ${fileName}`\n );\n frodo.utils.impex.saveJsonToFile(exportData, fileName);\n }\n debugMessage(`cli.ServiceOps.exportServicesToFiles: end.`);\n}\n\n/**\n * Import a service from file\n * @param {string} serviceId service id/name\n * @param {string} file import file name\n * @param {boolean} clean remove existing service\n */\nexport async function importServiceFromFile(\n serviceId: string,\n file: string,\n clean: boolean,\n globalConfig = false\n) {\n debugMessage(\n `cli.ServiceOps.importServiceFromFile: start [serviceId=${serviceId}, file=${file}]`\n );\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (importData && importData.service[serviceId]) {\n if (!verbose) showSpinner(`Importing ${serviceId}...`);\n try {\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n await frodo.service.importService(\n serviceId,\n importData,\n clean,\n globalConfig\n );\n succeedSpinner(`Imported ${serviceId}.`);\n } catch (importError) {\n const message = importError.response?.data?.message;\n const detail = importError.response?.data?.detail;\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n failSpinner(`${detail ? message + ' - ' + detail : message}`);\n }\n } else {\n showSpinner(`Importing ${serviceId}...`);\n failSpinner(`${serviceId} not found!`);\n }\n });\n debugMessage(\n `cli.ServiceOps.importServiceFromFile: end [serviceId=${serviceId}, file=${file}]`\n );\n}\n\n/**\n * Import first service from file\n * @param {string} file import file name\n * @param {boolean} clean remove existing service\n */\nexport async function importFirstServiceFromFile(\n file: string,\n clean: boolean,\n globalConfig = false\n) {\n debugMessage(\n `cli.ServiceOps.importFirstServiceFromFile: start [file=${file}]`\n );\n const verbose = state.getVerbose();\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (importData && Object.keys(importData.service).length) {\n const serviceId = Object.keys(importData.service)[0];\n if (!verbose) showSpinner(`Importing ${serviceId}...`);\n try {\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n await frodo.service.importService(\n serviceId,\n importData,\n clean,\n globalConfig\n );\n succeedSpinner(`Imported ${serviceId}.`);\n } catch (importError) {\n const message = importError.response?.data?.message;\n const detail = importError.response?.data?.detail;\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n failSpinner(`${detail ? message + ' - ' + detail : message}`);\n }\n } else {\n showSpinner(`Importing service...`);\n failSpinner(`No service found in ${file}!`);\n }\n debugMessage(\n `cli.ServiceOps.importFirstServiceFromFile: end [file=${file}]`\n );\n });\n}\n\n/**\n * Import services from file\n * @param {String} file file name\n * @param {boolean} clean remove existing service\n */\nexport async function importServicesFromFile(\n file: string,\n clean: boolean,\n globalConfig = false\n) {\n debugMessage(`cli.ServiceOps.importServiceFromFile: start [file=${file}]`);\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`cli.ServiceOps.importServiceFromFile: importing ${file}`);\n const importData = JSON.parse(data) as ServiceExportInterface;\n try {\n await frodo.service.importServices(importData, clean, globalConfig);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(`cli.ServiceOps.importServiceFromFile: end [file=${file}]`);\n });\n}\n\n/**\n * Import all services from separate files\n * @param {boolean} clean remove existing service\n */\nexport async function importServicesFromFiles(\n clean: boolean,\n globalConfig = false\n) {\n debugMessage(`cli.ServiceOps.importServicesFromFiles: start`);\n const names = fs.readdirSync(frodo.utils.impex.getWorkingDirectory());\n const agentFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.service.json')\n );\n for (const file of agentFiles) {\n await importServicesFromFile(file, clean, globalConfig);\n }\n debugMessage(`cli.ServiceOps.importServicesFromFiles: end`);\n}\n\n/**\n * Delete a service by id/name\n * @param {string} serviceId Reference to the service to delete\n */\nexport async function deleteService(serviceId: string, globalConfig = false) {\n try {\n await frodo.service.deleteFullService(serviceId, globalConfig);\n } catch (error) {\n const message = error.response?.data?.message;\n printMessage(`Delete service '${serviceId}': ${message}`, 'error');\n }\n}\n\n/**\n * Delete all services\n */\nexport async function deleteServices(globalConfig = false) {\n await frodo.service.deleteFullServices(globalConfig);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ServiceOps.js","names":["frodo","state","fs","createTable","debugMessage","failSpinner","printMessage","showSpinner","succeedSpinner","getRealmName","utils","getTypedFilename","titleCase","saveJsonToFile","getFilePath","getWorkingDirectory","getListOfServices","exportServices","exportService","getFullServices","createServiceExportTemplate","importService","importServices","deleteFullService","deleteFullServices","service","listServices","long","globalConfig","services","sort","a","b","_id","localeCompare","table","push","name","toString","error","stack","exportServicesToFile","file","exportData","fileName","getRealm","exportServiceToFile","serviceId","exportServicesToFiles","_type","filePath","importServiceFromFile","clean","verbose","getVerbose","readFile","err","data","importData","JSON","parse","importError","_importError$response","_importError$response2","message","response","detail","importFirstServiceFromFile","Object","keys","length","_importError$response3","_importError$response4","importServicesFromFile","status","importServicesFromFiles","names","readdirSync","agentFiles","filter","toLowerCase","endsWith","map","deleteService","_error$response","deleteServices"],"sources":["../../src/ops/ServiceOps.ts"],"sourcesContent":["import { frodo, state } from '@rockcarver/frodo-lib';\nimport { type ServiceExportInterface } from '@rockcarver/frodo-lib/types/ops/ServiceOps';\nimport fs from 'fs';\n\nimport {\n createTable,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n succeedSpinner,\n} from '../utils/Console';\n\nconst { getRealmName } = frodo.utils;\nconst {\n getTypedFilename,\n titleCase,\n saveJsonToFile,\n getFilePath,\n getWorkingDirectory,\n} = frodo.utils;\nconst {\n getListOfServices,\n exportServices,\n exportService,\n getFullServices,\n createServiceExportTemplate,\n importService,\n importServices,\n deleteFullService,\n deleteFullServices,\n} = frodo.service;\n\n/**\n * List services\n */\nexport async function listServices(long = false, globalConfig = false) {\n try {\n const services = await getListOfServices(globalConfig);\n services.sort((a, b) => a._id.localeCompare(b._id));\n if (long) {\n const table = createTable(['Service Id', 'Service Name']);\n for (const service of services) {\n table.push([\n service._id,\n globalConfig ? service['_type'].name : service.name,\n ]);\n }\n printMessage(table.toString(), 'data');\n } else {\n for (const service of services) {\n printMessage(`${service._id}`, 'data');\n }\n }\n } catch (error) {\n printMessage(`Error listing agents - ${error}`, 'error');\n printMessage(error.stack, 'error');\n }\n}\n\n/**\n * Export all services to file\n * @param {string} file file name\n */\nexport async function exportServicesToFile(file, globalConfig = false) {\n const exportData = await exportServices(globalConfig);\n let fileName = getTypedFilename(\n `all${\n globalConfig ? 'Global' : titleCase(getRealmName(state.getRealm()))\n }Services`,\n `service`\n );\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, getFilePath(fileName, true));\n}\n\n/**\n * Export service to file\n * @param {string} serviceId service id\n * @param {string} file file name\n */\nexport async function exportServiceToFile(\n serviceId: string,\n file: string,\n globalConfig = false\n) {\n const exportData = await exportService(serviceId, globalConfig);\n let fileName = getTypedFilename(serviceId, `service`);\n if (file) {\n fileName = file;\n }\n saveJsonToFile(exportData, getFilePath(fileName, true));\n}\n\n/**\n * Export all services to separate files\n */\nexport async function exportServicesToFiles(globalConfig = false) {\n debugMessage(`cli.ServiceOps.exportServicesToFiles: start`);\n const services = await getFullServices(globalConfig);\n for (const service of services) {\n const fileName = getTypedFilename(service._type._id, `service`);\n const filePath = getFilePath(fileName, true);\n const exportData = createServiceExportTemplate();\n exportData.service[service._type._id] = service;\n debugMessage(\n `cli.ServiceOps.exportServicesToFiles: exporting ${service._type._id} to ${filePath}`\n );\n saveJsonToFile(exportData, filePath);\n }\n debugMessage(`cli.ServiceOps.exportServicesToFiles: end.`);\n}\n\n/**\n * Import a service from file\n * @param {string} serviceId service id/name\n * @param {string} file import file name\n * @param {boolean} clean remove existing service\n */\nexport async function importServiceFromFile(\n serviceId: string,\n file: string,\n clean: boolean,\n globalConfig = false\n) {\n const filePath = getFilePath(file);\n debugMessage(\n `cli.ServiceOps.importServiceFromFile: start [serviceId=${serviceId}, file=${filePath}]`\n );\n const verbose = state.getVerbose();\n fs.readFile(filePath, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (importData && importData.service[serviceId]) {\n if (!verbose) showSpinner(`Importing ${serviceId}...`);\n try {\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n await importService(serviceId, importData, clean, globalConfig);\n succeedSpinner(`Imported ${serviceId}.`);\n } catch (importError) {\n const message = importError.response?.data?.message;\n const detail = importError.response?.data?.detail;\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n failSpinner(`${detail ? message + ' - ' + detail : message}`);\n }\n } else {\n showSpinner(`Importing ${serviceId}...`);\n failSpinner(`${serviceId} not found!`);\n }\n });\n debugMessage(\n `cli.ServiceOps.importServiceFromFile: end [serviceId=${serviceId}, file=${filePath}]`\n );\n}\n\n/**\n * Import first service from file\n * @param {string} file import file name\n * @param {boolean} clean remove existing service\n */\nexport async function importFirstServiceFromFile(\n file: string,\n clean: boolean,\n globalConfig = false\n) {\n const filePath = getFilePath(file);\n debugMessage(\n `cli.ServiceOps.importFirstServiceFromFile: start [file=${filePath}]`\n );\n const verbose = state.getVerbose();\n fs.readFile(filePath, 'utf8', async (err, data) => {\n if (err) throw err;\n const importData = JSON.parse(data);\n if (importData && Object.keys(importData.service).length) {\n const serviceId = Object.keys(importData.service)[0];\n if (!verbose) showSpinner(`Importing ${serviceId}...`);\n try {\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n await importService(serviceId, importData, clean, globalConfig);\n succeedSpinner(`Imported ${serviceId}.`);\n } catch (importError) {\n const message = importError.response?.data?.message;\n const detail = importError.response?.data?.detail;\n if (verbose) showSpinner(`Importing ${serviceId}...`);\n failSpinner(`${detail ? message + ' - ' + detail : message}`);\n }\n } else {\n showSpinner(`Importing service...`);\n failSpinner(`No service found in ${filePath}!`);\n }\n debugMessage(\n `cli.ServiceOps.importFirstServiceFromFile: end [file=${filePath}]`\n );\n });\n}\n\n/**\n * Import services from file\n * @param {String} file file name\n * @param {boolean} clean remove existing service\n */\nexport async function importServicesFromFile(\n file: string,\n clean: boolean,\n globalConfig = false\n) {\n const filePath = getFilePath(file);\n debugMessage(\n `cli.ServiceOps.importServiceFromFile: start [file=${filePath}]`\n );\n fs.readFile(filePath, 'utf8', async (err, data) => {\n if (err) throw err;\n debugMessage(`cli.ServiceOps.importServiceFromFile: importing ${filePath}`);\n const importData = JSON.parse(data) as ServiceExportInterface;\n try {\n await importServices(importData, clean, globalConfig);\n } catch (error) {\n printMessage(`${error.message}`, 'error');\n printMessage(error.response.status, 'error');\n }\n debugMessage(\n `cli.ServiceOps.importServiceFromFile: end [file=${filePath}]`\n );\n });\n}\n\n/**\n * Import all services from separate files\n * @param {boolean} clean remove existing service\n */\nexport async function importServicesFromFiles(\n clean: boolean,\n globalConfig = false\n) {\n debugMessage(`cli.ServiceOps.importServicesFromFiles: start`);\n const names = fs.readdirSync(getWorkingDirectory());\n const agentFiles = names\n .filter((name) => name.toLowerCase().endsWith('.service.json'))\n .map((name) => getFilePath(name));\n for (const file of agentFiles) {\n await importServicesFromFile(file, clean, globalConfig);\n }\n debugMessage(`cli.ServiceOps.importServicesFromFiles: end`);\n}\n\n/**\n * Delete a service by id/name\n * @param {string} serviceId Reference to the service to delete\n */\nexport async function deleteService(serviceId: string, globalConfig = false) {\n try {\n await deleteFullService(serviceId, globalConfig);\n } catch (error) {\n const message = error.response?.data?.message;\n printMessage(`Delete service '${serviceId}': ${message}`, 'error');\n }\n}\n\n/**\n * Delete all services\n */\nexport async function deleteServices(globalConfig = false) {\n await deleteFullServices(globalConfig);\n}\n"],"mappings":"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"}
@@ -1,7 +1,26 @@
1
1
  import { frodo } from '@rockcarver/frodo-lib';
2
2
  import fs from 'fs';
3
- import { printMessage, createTable, createProgressIndicator, updateProgressIndicator, stopProgressIndicator } from '../utils/Console';
4
- import { saveToFile, getTypedFilename } from '../utils/ExportImportUtils';
3
+ import { v4 as uuidv4 } from 'uuid';
4
+ import { createProgressIndicator, createTable, printMessage, stopProgressIndicator, updateProgressIndicator } from '../utils/Console';
5
+ import { getTypedFilename, saveToFile } from '../utils/ExportImportUtils';
6
+ const {
7
+ getRealmString,
8
+ validateImport,
9
+ getFilePath,
10
+ getWorkingDirectory
11
+ } = frodo.utils;
12
+ const {
13
+ readThemes,
14
+ readThemeByName,
15
+ readTheme,
16
+ updateThemeByName,
17
+ updateTheme,
18
+ updateThemes,
19
+ deleteTheme,
20
+ deleteThemeByName,
21
+ deleteThemes
22
+ } = frodo.theme;
23
+
5
24
  /**
6
25
  * Get a one-line description of the theme
7
26
  * @param {ThemeSkeleton} themeObj theme object to describe
@@ -38,7 +57,7 @@ export function getTableRowMd(themeObj) {
38
57
  * @param {boolean} long Long version, more fields
39
58
  */
40
59
  export async function listThemes(long = false) {
41
- const themeList = await frodo.theme.getThemes();
60
+ const themeList = await readThemes();
42
61
  themeList.sort((a, b) => a.name.localeCompare(b.name));
43
62
  if (!long) {
44
63
  themeList.forEach(theme => {
@@ -63,11 +82,13 @@ export async function exportThemeByName(name, file) {
63
82
  if (file) {
64
83
  fileName = file;
65
84
  }
85
+ const filePath = getFilePath(fileName, true);
66
86
  createProgressIndicator('determinate', 1, `Exporting ${name}`);
67
87
  try {
68
- const themeData = await frodo.theme.getThemeByName(name);
69
- updateProgressIndicator(`Writing file ${fileName}`);
70
- saveToFile('theme', [themeData], '_id', fileName);
88
+ const themeData = await readThemeByName(name);
89
+ if (!themeData._id) themeData._id = uuidv4();
90
+ updateProgressIndicator(`Writing file to ${filePath}`);
91
+ saveToFile('theme', [themeData], '_id', filePath);
71
92
  stopProgressIndicator(`Successfully exported theme ${name}.`);
72
93
  } catch (error) {
73
94
  stopProgressIndicator(`${error.message}`);
@@ -85,11 +106,12 @@ export async function exportThemeById(id, file) {
85
106
  if (file) {
86
107
  fileName = file;
87
108
  }
109
+ const filePath = getFilePath(fileName, true);
88
110
  createProgressIndicator('determinate', 1, `Exporting ${id}`);
89
111
  try {
90
- const themeData = await frodo.theme.getTheme(id);
91
- updateProgressIndicator(`Writing file ${fileName}`);
92
- saveToFile('theme', [themeData], '_id', fileName);
112
+ const themeData = await readTheme(id);
113
+ updateProgressIndicator(`Writing file to ${filePath}`);
114
+ saveToFile('theme', [themeData], '_id', filePath);
93
115
  stopProgressIndicator(`Successfully exported theme ${id}.`);
94
116
  } catch (error) {
95
117
  stopProgressIndicator(`${error.message}`);
@@ -102,29 +124,32 @@ export async function exportThemeById(id, file) {
102
124
  * @param {String} file optional export file name
103
125
  */
104
126
  export async function exportThemesToFile(file) {
105
- let fileName = getTypedFilename(`all${frodo.utils.impex.getRealmString()}Themes`, 'theme');
127
+ let fileName = getTypedFilename(`all${getRealmString()}Themes`, 'theme');
106
128
  if (file) {
107
129
  fileName = file;
108
130
  }
109
- const allThemesData = await frodo.theme.getThemes();
131
+ const filePath = getFilePath(fileName, true);
132
+ const allThemesData = await readThemes();
110
133
  createProgressIndicator('determinate', allThemesData.length, 'Exporting themes');
111
134
  for (const themeData of allThemesData) {
135
+ if (!themeData._id) themeData._id = uuidv4();
112
136
  updateProgressIndicator(`Exporting theme ${themeData.name}`);
113
137
  }
114
- saveToFile('theme', allThemesData, '_id', fileName);
115
- stopProgressIndicator(`${allThemesData.length} themes exported to ${fileName}.`);
138
+ saveToFile('theme', allThemesData, '_id', filePath);
139
+ stopProgressIndicator(`${allThemesData.length} themes exported to ${filePath}.`);
116
140
  }
117
141
 
118
142
  /**
119
143
  * Export all themes to separate files
120
144
  */
121
145
  export async function exportThemesToFiles() {
122
- const allThemesData = await frodo.theme.getThemes();
146
+ const allThemesData = await readThemes();
123
147
  createProgressIndicator('determinate', allThemesData.length, 'Exporting themes');
124
148
  for (const themeData of allThemesData) {
149
+ if (!themeData._id) themeData._id = uuidv4();
125
150
  updateProgressIndicator(`Writing theme ${themeData.name}`);
126
151
  const fileName = getTypedFilename(themeData.name, 'theme');
127
- saveToFile('theme', themeData, '_id', fileName);
152
+ saveToFile('theme', themeData, '_id', getFilePath(fileName, true));
128
153
  }
129
154
  stopProgressIndicator(`${allThemesData.length} themes exported.`);
130
155
  }
@@ -135,10 +160,10 @@ export async function exportThemesToFiles() {
135
160
  * @param {String} file import file name
136
161
  */
137
162
  export async function importThemeByName(name, file) {
138
- fs.readFile(file, 'utf8', async (err, data) => {
163
+ fs.readFile(getFilePath(file), 'utf8', async (err, data) => {
139
164
  if (err) throw err;
140
165
  const themeData = JSON.parse(data);
141
- if (frodo.utils.impex.validateImport(themeData.meta)) {
166
+ if (validateImport(themeData.meta)) {
142
167
  createProgressIndicator('determinate', 1, 'Importing theme...');
143
168
  let found = false;
144
169
  for (const id in themeData.theme) {
@@ -147,7 +172,7 @@ export async function importThemeByName(name, file) {
147
172
  found = true;
148
173
  updateProgressIndicator(`Importing ${themeData.theme[id].name}`);
149
174
  try {
150
- await frodo.theme.putThemeByName(name, themeData.theme[id]);
175
+ await updateThemeByName(name, themeData.theme[id]);
151
176
  stopProgressIndicator(`Successfully imported theme ${name}.`);
152
177
  } catch (error) {
153
178
  stopProgressIndicator(`Error importing theme ${themeData.theme[id].name}: ${error.message}`);
@@ -172,10 +197,10 @@ export async function importThemeByName(name, file) {
172
197
  * @param {String} file import file name
173
198
  */
174
199
  export async function importThemeById(id, file) {
175
- fs.readFile(file, 'utf8', async (err, data) => {
200
+ fs.readFile(getFilePath(file), 'utf8', async (err, data) => {
176
201
  if (err) throw err;
177
202
  const themeData = JSON.parse(data);
178
- if (frodo.utils.impex.validateImport(themeData.meta)) {
203
+ if (validateImport(themeData.meta)) {
179
204
  createProgressIndicator('determinate', 1, 'Importing theme...');
180
205
  let found = false;
181
206
  for (const themeId in themeData.theme) {
@@ -184,7 +209,7 @@ export async function importThemeById(id, file) {
184
209
  found = true;
185
210
  updateProgressIndicator(`Importing ${themeData.theme[themeId]._id}`);
186
211
  try {
187
- await frodo.theme.putTheme(themeId, themeData.theme[themeId]);
212
+ await updateTheme(themeId, themeData.theme[themeId]);
188
213
  stopProgressIndicator(`Successfully imported theme ${id}.`);
189
214
  } catch (error) {
190
215
  stopProgressIndicator(`Error importing theme ${themeData.theme[themeId]._id}: ${error.message}`);
@@ -208,20 +233,21 @@ export async function importThemeById(id, file) {
208
233
  * @param {String} file import file name
209
234
  */
210
235
  export async function importThemesFromFile(file) {
211
- fs.readFile(file, 'utf8', (err, data) => {
236
+ const filePath = getFilePath(file);
237
+ fs.readFile(filePath, 'utf8', (err, data) => {
212
238
  if (err) throw err;
213
239
  const fileData = JSON.parse(data);
214
- if (frodo.utils.impex.validateImport(fileData.meta)) {
240
+ if (validateImport(fileData.meta)) {
215
241
  createProgressIndicator('determinate', Object.keys(fileData.theme).length, 'Importing themes...');
216
242
  for (const id in fileData.theme) {
217
243
  if ({}.hasOwnProperty.call(fileData.theme, id)) {
218
244
  updateProgressIndicator(`Importing ${fileData.theme[id].name}`);
219
245
  }
220
246
  }
221
- frodo.theme.putThemes(fileData.theme).then(result => {
247
+ updateThemes(fileData.theme).then(result => {
222
248
  if (result == null) {
223
249
  stopProgressIndicator(`Error importing ${Object.keys(fileData.theme).length} themes!`);
224
- printMessage(`Error importing ${Object.keys(fileData.theme).length} themes from ${file}`, 'error');
250
+ printMessage(`Error importing ${Object.keys(fileData.theme).length} themes from ${filePath}`, 'error');
225
251
  } else {
226
252
  stopProgressIndicator(`Successfully imported ${Object.keys(fileData.theme).length} themes.`);
227
253
  }
@@ -236,8 +262,8 @@ export async function importThemesFromFile(file) {
236
262
  * Import themes from separate files
237
263
  */
238
264
  export async function importThemesFromFiles() {
239
- const names = fs.readdirSync('.');
240
- const jsonFiles = names.filter(name => name.toLowerCase().endsWith('.theme.json'));
265
+ const names = fs.readdirSync(getWorkingDirectory());
266
+ const jsonFiles = names.filter(name => name.toLowerCase().endsWith('.theme.json')).map(name => getFilePath(name));
241
267
  createProgressIndicator('determinate', jsonFiles.length, 'Importing themes...');
242
268
  let fileData = null;
243
269
  let count = 0;
@@ -246,10 +272,10 @@ export async function importThemesFromFiles() {
246
272
  for (const file of jsonFiles) {
247
273
  const data = fs.readFileSync(file, 'utf8');
248
274
  fileData = JSON.parse(data);
249
- if (frodo.utils.impex.validateImport(fileData.meta)) {
275
+ if (validateImport(fileData.meta)) {
250
276
  count = Object.keys(fileData.theme).length;
251
277
  // eslint-disable-next-line no-await-in-loop
252
- const result = await frodo.theme.putThemes(fileData.theme);
278
+ const result = await updateThemes(fileData.theme);
253
279
  if (result == null) {
254
280
  printMessage(`Error importing ${count} themes from ${file}`, 'error');
255
281
  } else {
@@ -269,15 +295,15 @@ export async function importThemesFromFiles() {
269
295
  * @param {String} file import file name
270
296
  */
271
297
  export async function importFirstThemeFromFile(file) {
272
- fs.readFile(file, 'utf8', (err, data) => {
298
+ fs.readFile(getFilePath(file), 'utf8', (err, data) => {
273
299
  if (err) throw err;
274
300
  const themeData = JSON.parse(data);
275
- if (frodo.utils.impex.validateImport(themeData.meta)) {
301
+ if (validateImport(themeData.meta)) {
276
302
  createProgressIndicator('determinate', 1, 'Importing theme...');
277
303
  for (const id in themeData.theme) {
278
304
  if ({}.hasOwnProperty.call(themeData.theme, id)) {
279
305
  updateProgressIndicator(`Importing ${themeData.theme[id].name}`);
280
- frodo.theme.putTheme(id, themeData.theme[id]).then(result => {
306
+ updateTheme(id, themeData.theme[id]).then(result => {
281
307
  if (result == null) {
282
308
  stopProgressIndicator(`Error importing theme ${themeData.theme[id].name}`);
283
309
  printMessage(`Error importing theme ${themeData.theme[id].name}`, 'error');
@@ -301,7 +327,7 @@ export async function importFirstThemeFromFile(file) {
301
327
  export async function deleteThemeCmd(id) {
302
328
  createProgressIndicator('indeterminate', undefined, `Deleting ${id}...`);
303
329
  try {
304
- await frodo.theme.deleteTheme(id);
330
+ await deleteTheme(id);
305
331
  stopProgressIndicator(`Deleted ${id}.`, 'success');
306
332
  } catch (error) {
307
333
  stopProgressIndicator(`Error: ${error.message}`, 'fail');
@@ -315,7 +341,7 @@ export async function deleteThemeCmd(id) {
315
341
  export async function deleteThemeByNameCmd(name) {
316
342
  createProgressIndicator('indeterminate', undefined, `Deleting ${name}...`);
317
343
  try {
318
- await frodo.theme.deleteThemeByName(name);
344
+ await deleteThemeByName(name);
319
345
  stopProgressIndicator(`Deleted ${name}.`, 'success');
320
346
  } catch (error) {
321
347
  stopProgressIndicator(`Error: ${error.message}`, 'fail');
@@ -328,7 +354,7 @@ export async function deleteThemeByNameCmd(name) {
328
354
  export async function deleteAllThemes() {
329
355
  createProgressIndicator('indeterminate', undefined, `Deleting all realm themes...`);
330
356
  try {
331
- await frodo.theme.deleteThemes();
357
+ await deleteThemes();
332
358
  stopProgressIndicator(`Deleted all realm themes.`, 'success');
333
359
  } catch (error) {
334
360
  stopProgressIndicator(`Error: ${error.message}`, 'fail');
@@ -342,4 +368,4 @@ export async function deleteAllThemes() {
342
368
  export async function deleteThemesCmd() {
343
369
  return deleteAllThemes();
344
370
  }
345
- //# sourceMappingURL=ThemeOps.js.map
371
+ //# sourceMappingURL=ThemeOps.js.map