@rockcarver/frodo-cli 0.18.2-8 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/CHANGELOG.md +119 -1
  2. package/esm/app.js +4 -1
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/FrodoCommand.js +133 -0
  5. package/esm/cli/FrodoCommand.js.map +1 -0
  6. package/esm/cli/_template/something-delete.js +9 -15
  7. package/esm/cli/_template/something-delete.js.map +1 -1
  8. package/esm/cli/_template/something-describe.js +9 -15
  9. package/esm/cli/_template/something-describe.js.map +1 -1
  10. package/esm/cli/_template/something-else-delete.js +9 -15
  11. package/esm/cli/_template/something-else-delete.js.map +1 -1
  12. package/esm/cli/_template/something-else-describe.js +9 -15
  13. package/esm/cli/_template/something-else-describe.js.map +1 -1
  14. package/esm/cli/_template/something-else-export.js +9 -15
  15. package/esm/cli/_template/something-else-export.js.map +1 -1
  16. package/esm/cli/_template/something-else-import.js +9 -15
  17. package/esm/cli/_template/something-else-import.js.map +1 -1
  18. package/esm/cli/_template/something-else-list.js +9 -15
  19. package/esm/cli/_template/something-else-list.js.map +1 -1
  20. package/esm/cli/_template/something-else.js +8 -8
  21. package/esm/cli/_template/something-else.js.map +1 -1
  22. package/esm/cli/_template/something-export.js +9 -15
  23. package/esm/cli/_template/something-export.js.map +1 -1
  24. package/esm/cli/_template/something-import.js +9 -15
  25. package/esm/cli/_template/something-import.js.map +1 -1
  26. package/esm/cli/_template/something-list.js +9 -15
  27. package/esm/cli/_template/something-list.js.map +1 -1
  28. package/esm/cli/_template/something-other-delete.js +9 -15
  29. package/esm/cli/_template/something-other-delete.js.map +1 -1
  30. package/esm/cli/_template/something-other-describe.js +9 -15
  31. package/esm/cli/_template/something-other-describe.js.map +1 -1
  32. package/esm/cli/_template/something-other-export.js +9 -15
  33. package/esm/cli/_template/something-other-export.js.map +1 -1
  34. package/esm/cli/_template/something-other-import.js +9 -15
  35. package/esm/cli/_template/something-other-import.js.map +1 -1
  36. package/esm/cli/_template/something-other-list.js +9 -15
  37. package/esm/cli/_template/something-other-list.js.map +1 -1
  38. package/esm/cli/_template/something-other.js +8 -8
  39. package/esm/cli/_template/something-other.js.map +1 -1
  40. package/esm/cli/_template/something.js +9 -10
  41. package/esm/cli/_template/something.js.map +1 -1
  42. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +8 -15
  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 +9 -15
  45. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  46. package/esm/cli/admin/admin-get-access-token.js +9 -15
  47. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  48. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +9 -15
  49. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  50. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +9 -15
  51. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  52. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +8 -15
  53. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  54. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +8 -15
  55. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  56. package/esm/cli/admin/admin-list-static-user-mappings.js +9 -15
  57. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  58. package/esm/cli/admin/admin-remove-static-user-mapping.js +8 -15
  59. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  60. package/esm/cli/admin/admin-repair-org-model.js +9 -15
  61. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  62. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +9 -15
  63. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  64. package/esm/cli/admin/admin-show-generic-extension-attributes.js +9 -15
  65. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  66. package/esm/cli/admin/admin.js +14 -15
  67. package/esm/cli/admin/admin.js.map +1 -1
  68. package/esm/cli/agent/agent-delete.js +8 -15
  69. package/esm/cli/agent/agent-delete.js.map +1 -1
  70. package/esm/cli/agent/agent-describe.js +9 -15
  71. package/esm/cli/agent/agent-describe.js.map +1 -1
  72. package/esm/cli/agent/agent-export.js +8 -15
  73. package/esm/cli/agent/agent-export.js.map +1 -1
  74. package/esm/cli/agent/agent-gateway-delete.js +8 -15
  75. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  76. package/esm/cli/agent/agent-gateway-describe.js +9 -15
  77. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  78. package/esm/cli/agent/agent-gateway-export.js +8 -15
  79. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  80. package/esm/cli/agent/agent-gateway-import.js +8 -15
  81. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  82. package/esm/cli/agent/agent-gateway-list.js +9 -15
  83. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  84. package/esm/cli/agent/agent-gateway.js +8 -8
  85. package/esm/cli/agent/agent-gateway.js.map +1 -1
  86. package/esm/cli/agent/agent-import.js +8 -15
  87. package/esm/cli/agent/agent-import.js.map +1 -1
  88. package/esm/cli/agent/agent-java-delete.js +8 -15
  89. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  90. package/esm/cli/agent/agent-java-describe.js +9 -15
  91. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  92. package/esm/cli/agent/agent-java-export.js +8 -15
  93. package/esm/cli/agent/agent-java-export.js.map +1 -1
  94. package/esm/cli/agent/agent-java-import.js +8 -15
  95. package/esm/cli/agent/agent-java-import.js.map +1 -1
  96. package/esm/cli/agent/agent-java-list.js +9 -15
  97. package/esm/cli/agent/agent-java-list.js.map +1 -1
  98. package/esm/cli/agent/agent-java.js +8 -8
  99. package/esm/cli/agent/agent-java.js.map +1 -1
  100. package/esm/cli/agent/agent-list.js +9 -15
  101. package/esm/cli/agent/agent-list.js.map +1 -1
  102. package/esm/cli/agent/agent-web-delete.js +8 -15
  103. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  104. package/esm/cli/agent/agent-web-describe.js +9 -15
  105. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  106. package/esm/cli/agent/agent-web-export.js +8 -15
  107. package/esm/cli/agent/agent-web-export.js.map +1 -1
  108. package/esm/cli/agent/agent-web-import.js +8 -15
  109. package/esm/cli/agent/agent-web-import.js.map +1 -1
  110. package/esm/cli/agent/agent-web-list.js +9 -15
  111. package/esm/cli/agent/agent-web-list.js.map +1 -1
  112. package/esm/cli/agent/agent-web.js +8 -8
  113. package/esm/cli/agent/agent-web.js.map +1 -1
  114. package/esm/cli/agent/agent.js +10 -11
  115. package/esm/cli/agent/agent.js.map +1 -1
  116. package/esm/cli/app/app-delete.js +9 -12
  117. package/esm/cli/app/app-delete.js.map +1 -1
  118. package/esm/cli/app/app-describe.js +9 -12
  119. package/esm/cli/app/app-describe.js.map +1 -1
  120. package/esm/cli/app/app-export.js +28 -34
  121. package/esm/cli/app/app-export.js.map +1 -1
  122. package/esm/cli/app/app-import.js +11 -14
  123. package/esm/cli/app/app-import.js.map +1 -1
  124. package/esm/cli/app/app-list.js +11 -14
  125. package/esm/cli/app/app-list.js.map +1 -1
  126. package/esm/cli/app/app.js +8 -10
  127. package/esm/cli/app/app.js.map +1 -1
  128. package/esm/cli/conn/conn-delete.js +5 -5
  129. package/esm/cli/conn/conn-delete.js.map +1 -1
  130. package/esm/cli/conn/conn-describe.js +6 -5
  131. package/esm/cli/conn/conn-describe.js.map +1 -1
  132. package/esm/cli/conn/conn-list.js +6 -8
  133. package/esm/cli/conn/conn-list.js.map +1 -1
  134. package/esm/cli/conn/conn-save.js +72 -0
  135. package/esm/cli/conn/conn-save.js.map +1 -0
  136. package/esm/cli/conn/conn.js +10 -8
  137. package/esm/cli/conn/conn.js.map +1 -1
  138. package/esm/cli/email/email-template-export.js +29 -39
  139. package/esm/cli/email/email-template-export.js.map +1 -1
  140. package/esm/cli/email/email-template-import.js +34 -45
  141. package/esm/cli/email/email-template-import.js.map +1 -1
  142. package/esm/cli/email/email-template-list.js +12 -17
  143. package/esm/cli/email/email-template-list.js.map +1 -1
  144. package/esm/cli/email/email-template.js +6 -6
  145. package/esm/cli/email/email-template.js.map +1 -1
  146. package/esm/cli/email/email.js +2 -2
  147. package/esm/cli/email/email.js.map +1 -1
  148. package/esm/cli/esv/esv-apply.js +9 -12
  149. package/esm/cli/esv/esv-apply.js.map +1 -1
  150. package/esm/cli/esv/esv-secret-create.js +11 -14
  151. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  152. package/esm/cli/esv/esv-secret-delete.js +23 -29
  153. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  154. package/esm/cli/esv/esv-secret-describe.js +11 -14
  155. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  156. package/esm/cli/esv/esv-secret-export.js +9 -12
  157. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  158. package/esm/cli/esv/esv-secret-import.js +9 -12
  159. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  160. package/esm/cli/esv/esv-secret-list.js +11 -14
  161. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  162. package/esm/cli/esv/esv-secret-set.js +11 -14
  163. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  164. package/esm/cli/esv/esv-secret-version-activate.js +18 -24
  165. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  166. package/esm/cli/esv/esv-secret-version-create.js +11 -14
  167. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  168. package/esm/cli/esv/esv-secret-version-deactivate.js +18 -24
  169. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  170. package/esm/cli/esv/esv-secret-version-delete.js +23 -29
  171. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  172. package/esm/cli/esv/esv-secret-version-list.js +11 -14
  173. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  174. package/esm/cli/esv/esv-secret-version.js +8 -8
  175. package/esm/cli/esv/esv-secret-version.js.map +1 -1
  176. package/esm/cli/esv/esv-secret.js +11 -11
  177. package/esm/cli/esv/esv-secret.js.map +1 -1
  178. package/esm/cli/esv/esv-variable-create.js +10 -14
  179. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  180. package/esm/cli/esv/esv-variable-delete.js +23 -29
  181. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  182. package/esm/cli/esv/esv-variable-describe.js +11 -14
  183. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  184. package/esm/cli/esv/esv-variable-export.js +9 -12
  185. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  186. package/esm/cli/esv/esv-variable-import.js +9 -12
  187. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  188. package/esm/cli/esv/esv-variable-list.js +11 -14
  189. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  190. package/esm/cli/esv/esv-variable-set.js +19 -26
  191. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  192. package/esm/cli/esv/esv-variable.js +10 -10
  193. package/esm/cli/esv/esv-variable.js.map +1 -1
  194. package/esm/cli/esv/esv.js +5 -6
  195. package/esm/cli/esv/esv.js.map +1 -1
  196. package/esm/cli/idm/idm-count.js +12 -17
  197. package/esm/cli/idm/idm-count.js.map +1 -1
  198. package/esm/cli/idm/idm-export.js +29 -39
  199. package/esm/cli/idm/idm-export.js.map +1 -1
  200. package/esm/cli/idm/idm-import.js +29 -39
  201. package/esm/cli/idm/idm-import.js.map +1 -1
  202. package/esm/cli/idm/idm-list.js +11 -17
  203. package/esm/cli/idm/idm-list.js.map +1 -1
  204. package/esm/cli/idm/idm.js +6 -9
  205. package/esm/cli/idm/idm.js.map +1 -1
  206. package/esm/cli/idp/idp-export.js +11 -15
  207. package/esm/cli/idp/idp-export.js.map +1 -1
  208. package/esm/cli/idp/idp-import.js +32 -38
  209. package/esm/cli/idp/idp-import.js.map +1 -1
  210. package/esm/cli/idp/idp-list.js +9 -13
  211. package/esm/cli/idp/idp-list.js.map +1 -1
  212. package/esm/cli/idp/idp.js +5 -6
  213. package/esm/cli/idp/idp.js.map +1 -1
  214. package/esm/cli/info/info.js +19 -20
  215. package/esm/cli/info/info.js.map +1 -1
  216. package/esm/cli/journey/journey-delete.js +22 -28
  217. package/esm/cli/journey/journey-delete.js.map +1 -1
  218. package/esm/cli/journey/journey-describe.js +12 -19
  219. package/esm/cli/journey/journey-describe.js.map +1 -1
  220. package/esm/cli/journey/journey-disable.js +20 -26
  221. package/esm/cli/journey/journey-disable.js.map +1 -1
  222. package/esm/cli/journey/journey-enable.js +20 -26
  223. package/esm/cli/journey/journey-enable.js.map +1 -1
  224. package/esm/cli/journey/journey-export.js +37 -45
  225. package/esm/cli/journey/journey-export.js.map +1 -1
  226. package/esm/cli/journey/journey-import.js +44 -52
  227. package/esm/cli/journey/journey-import.js.map +1 -1
  228. package/esm/cli/journey/journey-list.js +10 -13
  229. package/esm/cli/journey/journey-list.js.map +1 -1
  230. package/esm/cli/journey/journey-prune.js +9 -13
  231. package/esm/cli/journey/journey-prune.js.map +1 -1
  232. package/esm/cli/journey/journey.js +10 -11
  233. package/esm/cli/journey/journey.js.map +1 -1
  234. package/esm/cli/logging/logs-fetch.js +17 -19
  235. package/esm/cli/logging/logs-fetch.js.map +1 -1
  236. package/esm/cli/logging/logs-list.js +19 -25
  237. package/esm/cli/logging/logs-list.js.map +1 -1
  238. package/esm/cli/logging/logs-tail.js +17 -19
  239. package/esm/cli/logging/logs-tail.js.map +1 -1
  240. package/esm/cli/logging/logs.js +7 -6
  241. package/esm/cli/logging/logs.js.map +1 -1
  242. package/esm/cli/realm/realm-add-custom-domain.js +11 -14
  243. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  244. package/esm/cli/realm/realm-describe.js +10 -14
  245. package/esm/cli/realm/realm-describe.js.map +1 -1
  246. package/esm/cli/realm/realm-list.js +11 -14
  247. package/esm/cli/realm/realm-list.js.map +1 -1
  248. package/esm/cli/realm/realm-remove-custom-domain.js +11 -14
  249. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  250. package/esm/cli/realm/realm.js +7 -8
  251. package/esm/cli/realm/realm.js.map +1 -1
  252. package/esm/cli/saml/saml-cot-export.js +27 -36
  253. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  254. package/esm/cli/saml/saml-cot-import.js +32 -41
  255. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  256. package/esm/cli/saml/saml-cot-list.js +10 -16
  257. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  258. package/esm/cli/saml/saml-cot.js +6 -6
  259. package/esm/cli/saml/saml-cot.js.map +1 -1
  260. package/esm/cli/saml/saml-delete.js +8 -15
  261. package/esm/cli/saml/saml-delete.js.map +1 -1
  262. package/esm/cli/saml/saml-describe.js +10 -16
  263. package/esm/cli/saml/saml-describe.js.map +1 -1
  264. package/esm/cli/saml/saml-export.js +9 -16
  265. package/esm/cli/saml/saml-export.js.map +1 -1
  266. package/esm/cli/saml/saml-import.js +45 -54
  267. package/esm/cli/saml/saml-import.js.map +1 -1
  268. package/esm/cli/saml/saml-list.js +11 -17
  269. package/esm/cli/saml/saml-list.js.map +1 -1
  270. package/esm/cli/saml/saml-metadata-export.js +21 -30
  271. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  272. package/esm/cli/saml/saml-metadata.js +4 -4
  273. package/esm/cli/saml/saml-metadata.js.map +1 -1
  274. package/esm/cli/saml/saml.js +9 -10
  275. package/esm/cli/saml/saml.js.map +1 -1
  276. package/esm/cli/script/script-delete.js +9 -12
  277. package/esm/cli/script/script-delete.js.map +1 -1
  278. package/esm/cli/script/script-describe.js +9 -12
  279. package/esm/cli/script/script-describe.js.map +1 -1
  280. package/esm/cli/script/script-export.js +28 -34
  281. package/esm/cli/script/script-export.js.map +1 -1
  282. package/esm/cli/script/script-import.js +10 -13
  283. package/esm/cli/script/script-import.js.map +1 -1
  284. package/esm/cli/script/script-list.js +10 -13
  285. package/esm/cli/script/script-list.js.map +1 -1
  286. package/esm/cli/script/script.js +7 -8
  287. package/esm/cli/script/script.js.map +1 -1
  288. package/esm/cli/service/service-delete.js +10 -16
  289. package/esm/cli/service/service-delete.js.map +1 -1
  290. package/esm/cli/service/service-export.js +12 -17
  291. package/esm/cli/service/service-export.js.map +1 -1
  292. package/esm/cli/service/service-import.js +12 -18
  293. package/esm/cli/service/service-import.js.map +1 -1
  294. package/esm/cli/service/service-list.js +9 -15
  295. package/esm/cli/service/service-list.js.map +1 -1
  296. package/esm/cli/service/service.js +6 -7
  297. package/esm/cli/service/service.js.map +1 -1
  298. package/esm/cli/theme/theme-delete.js +15 -26
  299. package/esm/cli/theme/theme-delete.js.map +1 -1
  300. package/esm/cli/theme/theme-export.js +14 -26
  301. package/esm/cli/theme/theme-export.js.map +1 -1
  302. package/esm/cli/theme/theme-import.js +16 -29
  303. package/esm/cli/theme/theme-import.js.map +1 -1
  304. package/esm/cli/theme/theme-list.js +12 -20
  305. package/esm/cli/theme/theme-list.js.map +1 -1
  306. package/esm/cli/theme/theme.js +6 -7
  307. package/esm/cli/theme/theme.js.map +1 -1
  308. package/esm/ops/ConnectionProfileOps.js +30 -0
  309. package/esm/ops/ConnectionProfileOps.js.map +1 -0
  310. package/esm/ops/EmailTemplateOps.js +267 -2
  311. package/esm/ops/EmailTemplateOps.js.map +1 -1
  312. package/esm/ops/IdmOps.js +317 -0
  313. package/esm/ops/IdmOps.js.map +1 -0
  314. package/esm/ops/JourneyOps.js +2 -1
  315. package/esm/ops/JourneyOps.js.map +1 -1
  316. package/esm/ops/ServiceOps.js +20 -20
  317. package/esm/ops/ServiceOps.js.map +1 -1
  318. package/esm/ops/ThemeOps.js +329 -0
  319. package/esm/ops/ThemeOps.js.map +1 -1
  320. package/esm/utils/Console.js +15 -25
  321. package/esm/utils/Console.js.map +1 -1
  322. package/esm/utils/ExportImportUtils.js +46 -0
  323. package/esm/utils/ExportImportUtils.js.map +1 -0
  324. package/package.json +6 -5
  325. package/esm/cli/cmd_common.js +0 -79
  326. package/esm/cli/cmd_common.js.map +0 -1
  327. package/esm/cli/conn/conn-add.js +0 -37
  328. package/esm/cli/conn/conn-add.js.map +0 -1
  329. package/esm/cli/journey/journey-delete.e2e.test_.js.map +0 -1
  330. package/esm/cli/journey/journey-list.e2e.test_.js.map +0 -1
@@ -1,3 +1,22 @@
1
+ import fs from 'fs';
2
+ import { Theme, ExportImportUtils } from '@rockcarver/frodo-lib';
3
+ import { printMessage, createTable, createProgressIndicator, updateProgressIndicator, stopProgressIndicator } from '../utils/Console';
4
+ import { saveToFile, getTypedFilename } from '../utils/ExportImportUtils';
5
+ const {
6
+ getTheme,
7
+ getThemes,
8
+ getThemeByName,
9
+ putThemeByName,
10
+ putTheme,
11
+ putThemes,
12
+ deleteTheme,
13
+ deleteThemeByName,
14
+ deleteThemes
15
+ } = Theme;
16
+ const {
17
+ getRealmString,
18
+ validateImport
19
+ } = ExportImportUtils;
1
20
  /**
2
21
  * Get a one-line description of the theme
3
22
  * @param {ThemeSkeleton} themeObj theme object to describe
@@ -28,4 +47,314 @@ export function getTableRowMd(themeObj) {
28
47
  const row = `| ${themeObj.name} | ${themeObj.linkedTrees ? themeObj.linkedTrees.join(', ') : ''} | \`${themeObj._id}\` |`;
29
48
  return row;
30
49
  }
50
+
51
+ /**
52
+ * List all the themes
53
+ * @param {boolean} long Long version, more fields
54
+ */
55
+ export async function listThemes(long = false) {
56
+ const themeList = await getThemes();
57
+ themeList.sort((a, b) => a.name.localeCompare(b.name));
58
+ if (!long) {
59
+ themeList.forEach(theme => {
60
+ printMessage(`${theme.isDefault ? theme.name['brightCyan'] : theme.name}`, 'data');
61
+ });
62
+ } else {
63
+ const table = createTable(['Name'['brightCyan'], 'Id'['brightCyan'], 'Default'['brightCyan']]);
64
+ themeList.forEach(theme => {
65
+ table.push([`${theme.name}`, `${theme._id}`, `${theme.isDefault ? 'Yes'['brightGreen'] : ''}`]);
66
+ });
67
+ printMessage(table.toString(), 'data');
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Export theme by name to file
73
+ * @param {String} name theme name
74
+ * @param {String} file optional export file name
75
+ */
76
+ export async function exportThemeByName(name, file) {
77
+ let fileName = getTypedFilename(name, 'theme');
78
+ if (file) {
79
+ fileName = file;
80
+ }
81
+ createProgressIndicator('determinate', 1, `Exporting ${name}`);
82
+ try {
83
+ const themeData = await getThemeByName(name);
84
+ updateProgressIndicator(`Writing file ${fileName}`);
85
+ saveToFile('theme', [themeData], '_id', fileName);
86
+ stopProgressIndicator(`Successfully exported theme ${name}.`);
87
+ } catch (error) {
88
+ stopProgressIndicator(`${error.message}`);
89
+ printMessage(`${error.message}`, 'error');
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Export theme by uuid to file
95
+ * @param {String} id theme uuid
96
+ * @param {String} file optional export file name
97
+ */
98
+ export async function exportThemeById(id, file) {
99
+ let fileName = getTypedFilename(id, 'theme');
100
+ if (file) {
101
+ fileName = file;
102
+ }
103
+ createProgressIndicator('determinate', 1, `Exporting ${id}`);
104
+ try {
105
+ const themeData = await getTheme(id);
106
+ updateProgressIndicator(`Writing file ${fileName}`);
107
+ saveToFile('theme', [themeData], '_id', fileName);
108
+ stopProgressIndicator(`Successfully exported theme ${id}.`);
109
+ } catch (error) {
110
+ stopProgressIndicator(`${error.message}`);
111
+ printMessage(`${error.message}`, 'error');
112
+ }
113
+ }
114
+
115
+ /**
116
+ * Export all themes to file
117
+ * @param {String} file optional export file name
118
+ */
119
+ export async function exportThemesToFile(file) {
120
+ let fileName = getTypedFilename(`all${getRealmString()}Themes`, 'theme');
121
+ if (file) {
122
+ fileName = file;
123
+ }
124
+ const allThemesData = await getThemes();
125
+ createProgressIndicator('determinate', allThemesData.length, 'Exporting themes');
126
+ for (const themeData of allThemesData) {
127
+ updateProgressIndicator(`Exporting theme ${themeData.name}`);
128
+ }
129
+ saveToFile('theme', allThemesData, '_id', fileName);
130
+ stopProgressIndicator(`${allThemesData.length} themes exported to ${fileName}.`);
131
+ }
132
+
133
+ /**
134
+ * Export all themes to separate files
135
+ */
136
+ export async function exportThemesToFiles() {
137
+ const allThemesData = await getThemes();
138
+ createProgressIndicator('determinate', allThemesData.length, 'Exporting themes');
139
+ for (const themeData of allThemesData) {
140
+ updateProgressIndicator(`Writing theme ${themeData.name}`);
141
+ const fileName = getTypedFilename(themeData.name, 'theme');
142
+ saveToFile('theme', themeData, '_id', fileName);
143
+ }
144
+ stopProgressIndicator(`${allThemesData.length} themes exported.`);
145
+ }
146
+
147
+ /**
148
+ * Import theme by name from file
149
+ * @param {String} name theme name
150
+ * @param {String} file import file name
151
+ */
152
+ export async function importThemeByName(name, file) {
153
+ fs.readFile(file, 'utf8', async (err, data) => {
154
+ if (err) throw err;
155
+ const themeData = JSON.parse(data);
156
+ if (validateImport(themeData.meta)) {
157
+ createProgressIndicator('determinate', 1, 'Importing theme...');
158
+ let found = false;
159
+ for (const id in themeData.theme) {
160
+ if ({}.hasOwnProperty.call(themeData.theme, id)) {
161
+ if (themeData.theme[id].name === name) {
162
+ found = true;
163
+ updateProgressIndicator(`Importing ${themeData.theme[id].name}`);
164
+ try {
165
+ await putThemeByName(name, themeData.theme[id]);
166
+ stopProgressIndicator(`Successfully imported theme ${name}.`);
167
+ } catch (error) {
168
+ stopProgressIndicator(`Error importing theme ${themeData.theme[id].name}: ${error.message}`);
169
+ printMessage(`Error importing theme ${themeData.theme[id].name}: ${error.message}`, 'error');
170
+ }
171
+ break;
172
+ }
173
+ }
174
+ }
175
+ if (!found) {
176
+ stopProgressIndicator(`Theme ${name} not found!`);
177
+ }
178
+ } else {
179
+ printMessage('Import validation failed...', 'error');
180
+ }
181
+ });
182
+ }
183
+
184
+ /**
185
+ * Import theme by uuid from file
186
+ * @param {String} id theme uuid
187
+ * @param {String} file import file name
188
+ */
189
+ export async function importThemeById(id, file) {
190
+ fs.readFile(file, 'utf8', async (err, data) => {
191
+ if (err) throw err;
192
+ const themeData = JSON.parse(data);
193
+ if (validateImport(themeData.meta)) {
194
+ createProgressIndicator('determinate', 1, 'Importing theme...');
195
+ let found = false;
196
+ for (const themeId in themeData.theme) {
197
+ if ({}.hasOwnProperty.call(themeData.theme, themeId)) {
198
+ if (themeId === id) {
199
+ found = true;
200
+ updateProgressIndicator(`Importing ${themeData.theme[themeId]._id}`);
201
+ try {
202
+ await putTheme(themeId, themeData.theme[themeId]);
203
+ stopProgressIndicator(`Successfully imported theme ${id}.`);
204
+ } catch (error) {
205
+ stopProgressIndicator(`Error importing theme ${themeData.theme[themeId]._id}: ${error.message}`);
206
+ printMessage(`Error importing theme ${themeData.theme[themeId]._id}: ${error.message}`, 'error');
207
+ }
208
+ break;
209
+ }
210
+ }
211
+ }
212
+ if (!found) {
213
+ stopProgressIndicator(`Theme ${id} not found!`);
214
+ }
215
+ } else {
216
+ printMessage('Import validation failed...', 'error');
217
+ }
218
+ });
219
+ }
220
+
221
+ /**
222
+ * Import all themes from single file
223
+ * @param {String} file import file name
224
+ */
225
+ export async function importThemesFromFile(file) {
226
+ fs.readFile(file, 'utf8', (err, data) => {
227
+ if (err) throw err;
228
+ const fileData = JSON.parse(data);
229
+ if (validateImport(fileData.meta)) {
230
+ createProgressIndicator('determinate', Object.keys(fileData.theme).length, 'Importing themes...');
231
+ for (const id in fileData.theme) {
232
+ if ({}.hasOwnProperty.call(fileData.theme, id)) {
233
+ updateProgressIndicator(`Importing ${fileData.theme[id].name}`);
234
+ }
235
+ }
236
+ putThemes(fileData.theme).then(result => {
237
+ if (result == null) {
238
+ stopProgressIndicator(`Error importing ${Object.keys(fileData.theme).length} themes!`);
239
+ printMessage(`Error importing ${Object.keys(fileData.theme).length} themes from ${file}`, 'error');
240
+ } else {
241
+ stopProgressIndicator(`Successfully imported ${Object.keys(fileData.theme).length} themes.`);
242
+ }
243
+ });
244
+ } else {
245
+ printMessage('Import validation failed...', 'error');
246
+ }
247
+ });
248
+ }
249
+
250
+ /**
251
+ * Import themes from separate files
252
+ */
253
+ export async function importThemesFromFiles() {
254
+ const names = fs.readdirSync('.');
255
+ const jsonFiles = names.filter(name => name.toLowerCase().endsWith('.theme.json'));
256
+ createProgressIndicator('determinate', jsonFiles.length, 'Importing themes...');
257
+ let fileData = null;
258
+ let count = 0;
259
+ let total = 0;
260
+ let files = 0;
261
+ for (const file of jsonFiles) {
262
+ const data = fs.readFileSync(file, 'utf8');
263
+ fileData = JSON.parse(data);
264
+ if (validateImport(fileData.meta)) {
265
+ count = Object.keys(fileData.theme).length;
266
+ // eslint-disable-next-line no-await-in-loop
267
+ const result = await putThemes(fileData.theme);
268
+ if (result == null) {
269
+ printMessage(`Error importing ${count} themes from ${file}`, 'error');
270
+ } else {
271
+ files += 1;
272
+ total += count;
273
+ updateProgressIndicator(`Imported ${count} theme(s) from ${file}`);
274
+ }
275
+ } else {
276
+ printMessage(`Validation of ${file} failed!`, 'error');
277
+ }
278
+ }
279
+ stopProgressIndicator(`Finished importing ${total} theme(s) from ${files} file(s).`);
280
+ }
281
+
282
+ /**
283
+ * Import first theme from file
284
+ * @param {String} file import file name
285
+ */
286
+ export async function importFirstThemeFromFile(file) {
287
+ fs.readFile(file, 'utf8', (err, data) => {
288
+ if (err) throw err;
289
+ const themeData = JSON.parse(data);
290
+ if (validateImport(themeData.meta)) {
291
+ createProgressIndicator('determinate', 1, 'Importing theme...');
292
+ for (const id in themeData.theme) {
293
+ if ({}.hasOwnProperty.call(themeData.theme, id)) {
294
+ updateProgressIndicator(`Importing ${themeData.theme[id].name}`);
295
+ putTheme(id, themeData.theme[id]).then(result => {
296
+ if (result == null) {
297
+ stopProgressIndicator(`Error importing theme ${themeData.theme[id].name}`);
298
+ printMessage(`Error importing theme ${themeData.theme[id].name}`, 'error');
299
+ } else {
300
+ stopProgressIndicator(`Successfully imported theme ${themeData.theme[id].name}`);
301
+ }
302
+ });
303
+ break;
304
+ }
305
+ }
306
+ } else {
307
+ printMessage('Import validation failed...', 'error');
308
+ }
309
+ });
310
+ }
311
+
312
+ /**
313
+ * Delete theme by id
314
+ * @param {String} id theme id
315
+ */
316
+ export async function deleteThemeCmd(id) {
317
+ createProgressIndicator('indeterminate', undefined, `Deleting ${id}...`);
318
+ try {
319
+ await deleteTheme(id);
320
+ stopProgressIndicator(`Deleted ${id}.`, 'success');
321
+ } catch (error) {
322
+ stopProgressIndicator(`Error: ${error.message}`, 'fail');
323
+ }
324
+ }
325
+
326
+ /**
327
+ * Delete theme by name
328
+ * @param {String} name theme name
329
+ */
330
+ export async function deleteThemeByNameCmd(name) {
331
+ createProgressIndicator('indeterminate', undefined, `Deleting ${name}...`);
332
+ try {
333
+ await deleteThemeByName(name);
334
+ stopProgressIndicator(`Deleted ${name}.`, 'success');
335
+ } catch (error) {
336
+ stopProgressIndicator(`Error: ${error.message}`, 'fail');
337
+ }
338
+ }
339
+
340
+ /**
341
+ * Delete all themes
342
+ */
343
+ export async function deleteAllThemes() {
344
+ createProgressIndicator('indeterminate', undefined, `Deleting all realm themes...`);
345
+ try {
346
+ await deleteThemes();
347
+ stopProgressIndicator(`Deleted all realm themes.`, 'success');
348
+ } catch (error) {
349
+ stopProgressIndicator(`Error: ${error.message}`, 'fail');
350
+ }
351
+ }
352
+
353
+ /**
354
+ * Delete all themes
355
+ * @deprecated since version 0.14.0
356
+ */
357
+ export async function deleteThemesCmd() {
358
+ return deleteAllThemes();
359
+ }
31
360
  //# sourceMappingURL=ThemeOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeOps.js","names":["getOneLineDescription","themeObj","description","_id","name","linkedTrees","join","getTableHeaderMd","markdown","getTableRowMd","row"],"sources":["ops/ThemeOps.ts"],"sourcesContent":["import { ThemeSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\n\n/**\n * Get a one-line description of the theme\n * @param {ThemeSkeleton} themeObj theme object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(themeObj: ThemeSkeleton): string {\n const description = `[${themeObj._id['brightCyan']}] ${themeObj.name}${\n themeObj.linkedTrees\n ? ' (' + themeObj.linkedTrees.join(', ')['brightCyan'] + ')'\n : ''\n }`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Name | Linked Journey(s) | Id |\\n';\n markdown += '| ---- | ----------------- | ---|';\n return markdown;\n}\n\n/**\n * Get a table-row of the theme in markdown\n * @param {ThemeSkeleton} themeObj theme object to describe\n * @returns {string} a table-row of the theme in markdown\n */\nexport function getTableRowMd(themeObj: ThemeSkeleton): string {\n const row = `| ${themeObj.name} | ${\n themeObj.linkedTrees ? themeObj.linkedTrees.join(', ') : ''\n } | \\`${themeObj._id}\\` |`;\n return row;\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,qBAAqB,CAACC,QAAuB,EAAU;EACrE,MAAMC,WAAW,GAAI,IAAGD,QAAQ,CAACE,GAAG,CAAC,YAAY,CAAE,KAAIF,QAAQ,CAACG,IAAK,GACnEH,QAAQ,CAACI,WAAW,GAChB,IAAI,GAAGJ,QAAQ,CAACI,WAAW,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,GAAG,GAC1D,EACL,EAAC;EACF,OAAOJ,WAAW;AACpB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASK,gBAAgB,GAAW;EACzC,IAAIC,QAAQ,GAAG,EAAE;EACjBA,QAAQ,IAAI,qCAAqC;EACjDA,QAAQ,IAAI,mCAAmC;EAC/C,OAAOA,QAAQ;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAa,CAACR,QAAuB,EAAU;EAC7D,MAAMS,GAAG,GAAI,KAAIT,QAAQ,CAACG,IAAK,MAC7BH,QAAQ,CAACI,WAAW,GAAGJ,QAAQ,CAACI,WAAW,CAACC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC1D,QAAOL,QAAQ,CAACE,GAAI,MAAK;EAC1B,OAAOO,GAAG;AACZ"}
1
+ {"version":3,"file":"ThemeOps.js","names":["fs","Theme","ExportImportUtils","printMessage","createTable","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","saveToFile","getTypedFilename","getTheme","getThemes","getThemeByName","putThemeByName","putTheme","putThemes","deleteTheme","deleteThemeByName","deleteThemes","getRealmString","validateImport","getOneLineDescription","themeObj","description","_id","name","linkedTrees","join","getTableHeaderMd","markdown","getTableRowMd","row","listThemes","long","themeList","sort","a","b","localeCompare","forEach","theme","isDefault","table","push","toString","exportThemeByName","file","fileName","themeData","error","message","exportThemeById","id","exportThemesToFile","allThemesData","length","exportThemesToFiles","importThemeByName","readFile","err","data","JSON","parse","meta","found","hasOwnProperty","call","importThemeById","themeId","importThemesFromFile","fileData","Object","keys","then","result","importThemesFromFiles","names","readdirSync","jsonFiles","filter","toLowerCase","endsWith","count","total","files","readFileSync","importFirstThemeFromFile","deleteThemeCmd","undefined","deleteThemeByNameCmd","deleteAllThemes","deleteThemesCmd"],"sources":["ops/ThemeOps.ts"],"sourcesContent":["import fs from 'fs';\nimport { Theme, ExportImportUtils } from '@rockcarver/frodo-lib';\nimport { ThemeSkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport {\n printMessage,\n createTable,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n} from '../utils/Console';\nimport { saveToFile, getTypedFilename } from '../utils/ExportImportUtils';\n\nconst {\n getTheme,\n getThemes,\n getThemeByName,\n putThemeByName,\n putTheme,\n putThemes,\n deleteTheme,\n deleteThemeByName,\n deleteThemes,\n} = Theme;\nconst { getRealmString, validateImport } = ExportImportUtils;\n/**\n * Get a one-line description of the theme\n * @param {ThemeSkeleton} themeObj theme object to describe\n * @returns {string} a one-line description\n */\nexport function getOneLineDescription(themeObj: ThemeSkeleton): string {\n const description = `[${themeObj._id['brightCyan']}] ${themeObj.name}${\n themeObj.linkedTrees\n ? ' (' + themeObj.linkedTrees.join(', ')['brightCyan'] + ')'\n : ''\n }`;\n return description;\n}\n\n/**\n * Get markdown table header\n * @returns {string} markdown table header\n */\nexport function getTableHeaderMd(): string {\n let markdown = '';\n markdown += '| Name | Linked Journey(s) | Id |\\n';\n markdown += '| ---- | ----------------- | ---|';\n return markdown;\n}\n\n/**\n * Get a table-row of the theme in markdown\n * @param {ThemeSkeleton} themeObj theme object to describe\n * @returns {string} a table-row of the theme in markdown\n */\nexport function getTableRowMd(themeObj: ThemeSkeleton): string {\n const row = `| ${themeObj.name} | ${\n themeObj.linkedTrees ? themeObj.linkedTrees.join(', ') : ''\n } | \\`${themeObj._id}\\` |`;\n return row;\n}\n\n/**\n * List all the themes\n * @param {boolean} long Long version, more fields\n */\nexport async function listThemes(long = false) {\n const themeList = await getThemes();\n themeList.sort((a, b) => a.name.localeCompare(b.name));\n if (!long) {\n themeList.forEach((theme) => {\n printMessage(\n `${theme.isDefault ? theme.name['brightCyan'] : theme.name}`,\n 'data'\n );\n });\n } else {\n const table = createTable([\n 'Name'['brightCyan'],\n 'Id'['brightCyan'],\n 'Default'['brightCyan'],\n ]);\n themeList.forEach((theme) => {\n table.push([\n `${theme.name}`,\n `${theme._id}`,\n `${theme.isDefault ? 'Yes'['brightGreen'] : ''}`,\n ]);\n });\n printMessage(table.toString(), 'data');\n }\n}\n\n/**\n * Export theme by name to file\n * @param {String} name theme name\n * @param {String} file optional export file name\n */\nexport async function exportThemeByName(name, file) {\n let fileName = getTypedFilename(name, 'theme');\n if (file) {\n fileName = file;\n }\n createProgressIndicator('determinate', 1, `Exporting ${name}`);\n try {\n const themeData = await getThemeByName(name);\n updateProgressIndicator(`Writing file ${fileName}`);\n saveToFile('theme', [themeData], '_id', fileName);\n stopProgressIndicator(`Successfully exported theme ${name}.`);\n } catch (error) {\n stopProgressIndicator(`${error.message}`);\n printMessage(`${error.message}`, 'error');\n }\n}\n\n/**\n * Export theme by uuid to file\n * @param {String} id theme uuid\n * @param {String} file optional export file name\n */\nexport async function exportThemeById(id, file) {\n let fileName = getTypedFilename(id, 'theme');\n if (file) {\n fileName = file;\n }\n createProgressIndicator('determinate', 1, `Exporting ${id}`);\n try {\n const themeData = await getTheme(id);\n updateProgressIndicator(`Writing file ${fileName}`);\n saveToFile('theme', [themeData], '_id', fileName);\n stopProgressIndicator(`Successfully exported theme ${id}.`);\n } catch (error) {\n stopProgressIndicator(`${error.message}`);\n printMessage(`${error.message}`, 'error');\n }\n}\n\n/**\n * Export all themes to file\n * @param {String} file optional export file name\n */\nexport async function exportThemesToFile(file) {\n let fileName = getTypedFilename(`all${getRealmString()}Themes`, 'theme');\n if (file) {\n fileName = file;\n }\n const allThemesData = await getThemes();\n createProgressIndicator(\n 'determinate',\n allThemesData.length,\n 'Exporting themes'\n );\n for (const themeData of allThemesData) {\n updateProgressIndicator(`Exporting theme ${themeData.name}`);\n }\n saveToFile('theme', allThemesData, '_id', fileName);\n stopProgressIndicator(\n `${allThemesData.length} themes exported to ${fileName}.`\n );\n}\n\n/**\n * Export all themes to separate files\n */\nexport async function exportThemesToFiles() {\n const allThemesData = await getThemes();\n createProgressIndicator(\n 'determinate',\n allThemesData.length,\n 'Exporting themes'\n );\n for (const themeData of allThemesData) {\n updateProgressIndicator(`Writing theme ${themeData.name}`);\n const fileName = getTypedFilename(themeData.name, 'theme');\n saveToFile('theme', themeData, '_id', fileName);\n }\n stopProgressIndicator(`${allThemesData.length} themes exported.`);\n}\n\n/**\n * Import theme by name from file\n * @param {String} name theme name\n * @param {String} file import file name\n */\nexport async function importThemeByName(name, file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const themeData = JSON.parse(data);\n if (validateImport(themeData.meta)) {\n createProgressIndicator('determinate', 1, 'Importing theme...');\n let found = false;\n for (const id in themeData.theme) {\n if ({}.hasOwnProperty.call(themeData.theme, id)) {\n if (themeData.theme[id].name === name) {\n found = true;\n updateProgressIndicator(`Importing ${themeData.theme[id].name}`);\n try {\n await putThemeByName(name, themeData.theme[id]);\n stopProgressIndicator(`Successfully imported theme ${name}.`);\n } catch (error) {\n stopProgressIndicator(\n `Error importing theme ${themeData.theme[id].name}: ${error.message}`\n );\n printMessage(\n `Error importing theme ${themeData.theme[id].name}: ${error.message}`,\n 'error'\n );\n }\n break;\n }\n }\n }\n if (!found) {\n stopProgressIndicator(`Theme ${name} not found!`);\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import theme by uuid from file\n * @param {String} id theme uuid\n * @param {String} file import file name\n */\nexport async function importThemeById(id, file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const themeData = JSON.parse(data);\n if (validateImport(themeData.meta)) {\n createProgressIndicator('determinate', 1, 'Importing theme...');\n let found = false;\n for (const themeId in themeData.theme) {\n if ({}.hasOwnProperty.call(themeData.theme, themeId)) {\n if (themeId === id) {\n found = true;\n updateProgressIndicator(\n `Importing ${themeData.theme[themeId]._id}`\n );\n try {\n await putTheme(themeId, themeData.theme[themeId]);\n stopProgressIndicator(`Successfully imported theme ${id}.`);\n } catch (error) {\n stopProgressIndicator(\n `Error importing theme ${themeData.theme[themeId]._id}: ${error.message}`\n );\n printMessage(\n `Error importing theme ${themeData.theme[themeId]._id}: ${error.message}`,\n 'error'\n );\n }\n break;\n }\n }\n }\n if (!found) {\n stopProgressIndicator(`Theme ${id} not found!`);\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all themes from single file\n * @param {String} file import file name\n */\nexport async function importThemesFromFile(file) {\n fs.readFile(file, 'utf8', (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(\n 'determinate',\n Object.keys(fileData.theme).length,\n 'Importing themes...'\n );\n for (const id in fileData.theme) {\n if ({}.hasOwnProperty.call(fileData.theme, id)) {\n updateProgressIndicator(`Importing ${fileData.theme[id].name}`);\n }\n }\n putThemes(fileData.theme).then((result) => {\n if (result == null) {\n stopProgressIndicator(\n `Error importing ${Object.keys(fileData.theme).length} themes!`\n );\n printMessage(\n `Error importing ${\n Object.keys(fileData.theme).length\n } themes from ${file}`,\n 'error'\n );\n } else {\n stopProgressIndicator(\n `Successfully imported ${\n Object.keys(fileData.theme).length\n } themes.`\n );\n }\n });\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import themes from separate files\n */\nexport async function importThemesFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.theme.json')\n );\n\n createProgressIndicator(\n 'determinate',\n jsonFiles.length,\n 'Importing themes...'\n );\n let fileData = null;\n let count = 0;\n let total = 0;\n let files = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n count = Object.keys(fileData.theme).length;\n // eslint-disable-next-line no-await-in-loop\n const result = await putThemes(fileData.theme);\n if (result == null) {\n printMessage(`Error importing ${count} themes from ${file}`, 'error');\n } else {\n files += 1;\n total += count;\n updateProgressIndicator(`Imported ${count} theme(s) from ${file}`);\n }\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressIndicator(\n `Finished importing ${total} theme(s) from ${files} file(s).`\n );\n}\n\n/**\n * Import first theme from file\n * @param {String} file import file name\n */\nexport async function importFirstThemeFromFile(file) {\n fs.readFile(file, 'utf8', (err, data) => {\n if (err) throw err;\n const themeData = JSON.parse(data);\n if (validateImport(themeData.meta)) {\n createProgressIndicator('determinate', 1, 'Importing theme...');\n for (const id in themeData.theme) {\n if ({}.hasOwnProperty.call(themeData.theme, id)) {\n updateProgressIndicator(`Importing ${themeData.theme[id].name}`);\n putTheme(id, themeData.theme[id]).then((result) => {\n if (result == null) {\n stopProgressIndicator(\n `Error importing theme ${themeData.theme[id].name}`\n );\n printMessage(\n `Error importing theme ${themeData.theme[id].name}`,\n 'error'\n );\n } else {\n stopProgressIndicator(\n `Successfully imported theme ${themeData.theme[id].name}`\n );\n }\n });\n break;\n }\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Delete theme by id\n * @param {String} id theme id\n */\nexport async function deleteThemeCmd(id) {\n createProgressIndicator('indeterminate', undefined, `Deleting ${id}...`);\n try {\n await deleteTheme(id);\n stopProgressIndicator(`Deleted ${id}.`, 'success');\n } catch (error) {\n stopProgressIndicator(`Error: ${error.message}`, 'fail');\n }\n}\n\n/**\n * Delete theme by name\n * @param {String} name theme name\n */\nexport async function deleteThemeByNameCmd(name) {\n createProgressIndicator('indeterminate', undefined, `Deleting ${name}...`);\n try {\n await deleteThemeByName(name);\n stopProgressIndicator(`Deleted ${name}.`, 'success');\n } catch (error) {\n stopProgressIndicator(`Error: ${error.message}`, 'fail');\n }\n}\n\n/**\n * Delete all themes\n */\nexport async function deleteAllThemes() {\n createProgressIndicator(\n 'indeterminate',\n undefined,\n `Deleting all realm themes...`\n );\n try {\n await deleteThemes();\n stopProgressIndicator(`Deleted all realm themes.`, 'success');\n } catch (error) {\n stopProgressIndicator(`Error: ${error.message}`, 'fail');\n }\n}\n\n/**\n * Delete all themes\n * @deprecated since version 0.14.0\n */\nexport async function deleteThemesCmd() {\n return deleteAllThemes();\n}\n"],"mappings":"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"}
@@ -8,21 +8,23 @@ Color.enable();
8
8
  const {
9
9
  appendTextToFile
10
10
  } = ExportImportUtils;
11
+ let progressBar = null;
12
+ let spinner = null;
11
13
 
12
14
  /**
13
- * Output a message in default color to stdout or append to `state.default.session.getOutputFile()`
15
+ * Output a message in default color to stdout or append to `state.getOutputFile()`
14
16
  * @param {string | object} message the message
15
17
  */
16
18
  function data(message, newline = true) {
17
19
  if (!message) return;
18
- if (state.default.session.getOutputFile()) {
20
+ if (state.getOutputFile()) {
19
21
  if (typeof message === 'object') {
20
22
  message = JSON.stringify(message, null, 2);
21
23
  }
22
24
  if (newline) {
23
25
  message += '\n';
24
26
  }
25
- appendTextToFile(message, state.default.session.getOutputFile());
27
+ appendTextToFile(message, state.getOutputFile());
26
28
  } else if (typeof message === 'object') {
27
29
  console.dir(message, {
28
30
  depth: 3
@@ -134,7 +136,7 @@ function curlirize(message) {
134
136
  */
135
137
  export function verboseMessage(message) {
136
138
  if (!message) return;
137
- if (state.default.session.getVerbose()) {
139
+ if (state.getVerbose()) {
138
140
  text(message);
139
141
  }
140
142
  }
@@ -145,7 +147,7 @@ export function verboseMessage(message) {
145
147
  */
146
148
  export function debugMessage(message) {
147
149
  if (!message) return;
148
- if (state.default.session.getDebug()) {
150
+ if (state.getDebug()) {
149
151
  debug(message);
150
152
  }
151
153
  }
@@ -156,7 +158,7 @@ export function debugMessage(message) {
156
158
  */
157
159
  export function curlirizeMessage(message) {
158
160
  if (!message) return;
159
- if (state.default.session.getCurlirize()) {
161
+ if (state.getCurlirize()) {
160
162
  curlirize(message);
161
163
  }
162
164
  }
@@ -214,12 +216,10 @@ export function createProgressBar(total, message = null, options = {
214
216
  noTTYOutput: true
215
217
  };
216
218
  }
217
- let pBar = state.default.session.getItem('progressBar');
218
- if (!pBar) pBar = new SingleBar(opt, Presets.legacy); // create only when needed
219
- pBar.start(total, 0, {
219
+ progressBar = new SingleBar(opt, Presets.legacy); // create only when needed
220
+ progressBar.start(total, 0, {
220
221
  data: message
221
222
  });
222
- state.default.session.setItem('progressBar', pBar);
223
223
  }
224
224
 
225
225
  /**
@@ -228,10 +228,9 @@ export function createProgressBar(total, message = null, options = {
228
228
  *
229
229
  */
230
230
  export function updateProgressBar(message = null) {
231
- const pBar = state.default.session.getItem('progressBar');
232
- if (message) pBar.increment({
231
+ if (message) progressBar.increment({
233
232
  data: message
234
- });else pBar.increment();
233
+ });else progressBar.increment();
235
234
  }
236
235
 
237
236
  /**
@@ -239,11 +238,10 @@ export function updateProgressBar(message = null) {
239
238
  * @param {*} message optional message to update the progress bar
240
239
  */
241
240
  export function stopProgressBar(message = null) {
242
- const pBar = state.default.session.getItem('progressBar');
243
- if (message) pBar.update({
241
+ if (message) progressBar.update({
244
242
  data: message
245
243
  });
246
- pBar.stop();
244
+ progressBar.stop();
247
245
  }
248
246
 
249
247
  /**
@@ -251,8 +249,7 @@ export function stopProgressBar(message = null) {
251
249
  * @param {String} message optional spinner message
252
250
  */
253
251
  export function showSpinner(message) {
254
- const spinner = createSpinner(message).start();
255
- state.default.session.setItem('Spinner', spinner);
252
+ spinner = createSpinner(message).start();
256
253
  }
257
254
 
258
255
  /**
@@ -260,7 +257,6 @@ export function showSpinner(message) {
260
257
  * @param {String} message optional message to update the spinner
261
258
  */
262
259
  export function stopSpinner(message = null) {
263
- const spinner = state.default.session.getItem('Spinner');
264
260
  if (spinner) {
265
261
  let options = {};
266
262
  if (message) options = {
@@ -275,7 +271,6 @@ export function stopSpinner(message = null) {
275
271
  * @param {String} message optional message to update the spinner
276
272
  */
277
273
  export function succeedSpinner(message = null) {
278
- const spinner = state.default.session.getItem('Spinner');
279
274
  if (spinner) {
280
275
  let options = {};
281
276
  if (message) options = {
@@ -290,7 +285,6 @@ export function succeedSpinner(message = null) {
290
285
  * @param {String} message optional message to update the spinner
291
286
  */
292
287
  export function warnSpinner(message = null) {
293
- const spinner = state.default.session.getItem('Spinner');
294
288
  if (spinner) {
295
289
  let options = {};
296
290
  if (message) options = {
@@ -305,7 +299,6 @@ export function warnSpinner(message = null) {
305
299
  * @param {String} message optional message to update the spinner
306
300
  */
307
301
  export function failSpinner(message = null) {
308
- const spinner = state.default.session.getItem('Spinner');
309
302
  if (spinner) {
310
303
  let options = {};
311
304
  if (message) options = {
@@ -320,7 +313,6 @@ export function failSpinner(message = null) {
320
313
  * @param {String} message optional message to update the spinner
321
314
  */
322
315
  export function spinSpinner(message = null) {
323
- const spinner = state.default.session.getItem('Spinner');
324
316
  if (spinner) {
325
317
  let options = {};
326
318
  if (message) options = {
@@ -338,7 +330,6 @@ export function createProgressIndicator(type = 'determinate', total = 0, message
338
330
  }
339
331
  }
340
332
  export function updateProgressIndicator(message) {
341
- const progressBar = state.default.session.getItem('progressBar');
342
333
  if (!progressBar) {
343
334
  spinSpinner(message);
344
335
  } else {
@@ -346,7 +337,6 @@ export function updateProgressIndicator(message) {
346
337
  }
347
338
  }
348
339
  export function stopProgressIndicator(message, status = 'none') {
349
- const progressBar = state.default.session.getItem('progressBar');
350
340
  if (!progressBar) {
351
341
  switch (status) {
352
342
  case 'none':