@rockcarver/frodo-cli 0.18.2-7 → 0.18.2-9

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 (334) hide show
  1. package/CHANGELOG.md +12 -1
  2. package/esm/app.js +2 -2
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/_template/something-delete.js +7 -4
  5. package/esm/cli/_template/something-delete.js.map +1 -1
  6. package/esm/cli/_template/something-describe.js +7 -4
  7. package/esm/cli/_template/something-describe.js.map +1 -1
  8. package/esm/cli/_template/something-else-delete.js +7 -4
  9. package/esm/cli/_template/something-else-delete.js.map +1 -1
  10. package/esm/cli/_template/something-else-describe.js +7 -4
  11. package/esm/cli/_template/something-else-describe.js.map +1 -1
  12. package/esm/cli/_template/something-else-export.js +7 -4
  13. package/esm/cli/_template/something-else-export.js.map +1 -1
  14. package/esm/cli/_template/something-else-import.js +7 -4
  15. package/esm/cli/_template/something-else-import.js.map +1 -1
  16. package/esm/cli/_template/something-else-list.js +7 -4
  17. package/esm/cli/_template/something-else-list.js.map +1 -1
  18. package/esm/cli/_template/something-else.js.map +1 -1
  19. package/esm/cli/_template/something-export.js +7 -4
  20. package/esm/cli/_template/something-export.js.map +1 -1
  21. package/esm/cli/_template/something-import.js +7 -4
  22. package/esm/cli/_template/something-import.js.map +1 -1
  23. package/esm/cli/_template/something-list.js +7 -4
  24. package/esm/cli/_template/something-list.js.map +1 -1
  25. package/esm/cli/_template/something-other-delete.js +7 -4
  26. package/esm/cli/_template/something-other-delete.js.map +1 -1
  27. package/esm/cli/_template/something-other-describe.js +7 -4
  28. package/esm/cli/_template/something-other-describe.js.map +1 -1
  29. package/esm/cli/_template/something-other-export.js +7 -4
  30. package/esm/cli/_template/something-other-export.js.map +1 -1
  31. package/esm/cli/_template/something-other-import.js +7 -4
  32. package/esm/cli/_template/something-other-import.js.map +1 -1
  33. package/esm/cli/_template/something-other-list.js +7 -4
  34. package/esm/cli/_template/something-other-list.js.map +1 -1
  35. package/esm/cli/_template/something-other.js.map +1 -1
  36. package/esm/cli/_template/something.js +0 -2
  37. package/esm/cli/_template/something.js.map +1 -1
  38. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +5 -3
  39. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
  40. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +7 -11
  41. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  42. package/esm/cli/admin/admin-get-access-token.js +5 -3
  43. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  44. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +5 -3
  45. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  46. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +5 -3
  47. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  48. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +5 -3
  49. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  50. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +5 -3
  51. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  52. package/esm/cli/admin/admin-list-static-user-mappings.js +5 -3
  53. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  54. package/esm/cli/admin/admin-remove-static-user-mapping.js +5 -3
  55. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  56. package/esm/cli/admin/admin-repair-org-model.js +5 -3
  57. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  58. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +5 -3
  59. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  60. package/esm/cli/admin/admin-show-generic-extension-attributes.js +5 -3
  61. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  62. package/esm/cli/admin/admin.js +0 -2
  63. package/esm/cli/admin/admin.js.map +1 -1
  64. package/esm/cli/agent/agent-delete.js +9 -7
  65. package/esm/cli/agent/agent-delete.js.map +1 -1
  66. package/esm/cli/agent/agent-describe.js +7 -4
  67. package/esm/cli/agent/agent-describe.js.map +1 -1
  68. package/esm/cli/agent/agent-export.js +11 -6
  69. package/esm/cli/agent/agent-export.js.map +1 -1
  70. package/esm/cli/agent/agent-gateway-delete.js +9 -7
  71. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  72. package/esm/cli/agent/agent-gateway-describe.js +7 -4
  73. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  74. package/esm/cli/agent/agent-gateway-export.js +11 -6
  75. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  76. package/esm/cli/agent/agent-gateway-import.js +13 -7
  77. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  78. package/esm/cli/agent/agent-gateway-list.js +5 -3
  79. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  80. package/esm/cli/agent/agent-gateway.js.map +1 -1
  81. package/esm/cli/agent/agent-import.js +13 -7
  82. package/esm/cli/agent/agent-import.js.map +1 -1
  83. package/esm/cli/agent/agent-java-delete.js +9 -7
  84. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  85. package/esm/cli/agent/agent-java-describe.js +7 -4
  86. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  87. package/esm/cli/agent/agent-java-export.js +11 -6
  88. package/esm/cli/agent/agent-java-export.js.map +1 -1
  89. package/esm/cli/agent/agent-java-import.js +13 -7
  90. package/esm/cli/agent/agent-java-import.js.map +1 -1
  91. package/esm/cli/agent/agent-java-list.js +5 -3
  92. package/esm/cli/agent/agent-java-list.js.map +1 -1
  93. package/esm/cli/agent/agent-java.js.map +1 -1
  94. package/esm/cli/agent/agent-list.js +5 -3
  95. package/esm/cli/agent/agent-list.js.map +1 -1
  96. package/esm/cli/agent/agent-web-delete.js +9 -7
  97. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  98. package/esm/cli/agent/agent-web-describe.js +7 -4
  99. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  100. package/esm/cli/agent/agent-web-export.js +11 -6
  101. package/esm/cli/agent/agent-web-export.js.map +1 -1
  102. package/esm/cli/agent/agent-web-import.js +13 -7
  103. package/esm/cli/agent/agent-web-import.js.map +1 -1
  104. package/esm/cli/agent/agent-web-list.js +5 -3
  105. package/esm/cli/agent/agent-web-list.js.map +1 -1
  106. package/esm/cli/agent/agent-web.js.map +1 -1
  107. package/esm/cli/agent/agent.js +0 -2
  108. package/esm/cli/agent/agent.js.map +1 -1
  109. package/esm/cli/app/app-delete.js +7 -4
  110. package/esm/cli/app/app-delete.js.map +1 -1
  111. package/esm/cli/app/app-describe.js +7 -4
  112. package/esm/cli/app/app-describe.js.map +1 -1
  113. package/esm/cli/app/app-export.js +11 -6
  114. package/esm/cli/app/app-export.js.map +1 -1
  115. package/esm/cli/app/app-import.js +9 -5
  116. package/esm/cli/app/app-import.js.map +1 -1
  117. package/esm/cli/app/app-list.js +5 -3
  118. package/esm/cli/app/app-list.js.map +1 -1
  119. package/esm/cli/app/app.js +8 -5
  120. package/esm/cli/app/app.js.map +1 -1
  121. package/esm/cli/cmd_common.js +2 -1
  122. package/esm/cli/cmd_common.js.map +1 -1
  123. package/esm/cli/conn/conn-add.js +5 -5
  124. package/esm/cli/conn/conn-add.js.map +1 -1
  125. package/esm/cli/conn/conn-delete.js +5 -2
  126. package/esm/cli/conn/conn-delete.js.map +1 -1
  127. package/esm/cli/conn/conn-describe.js +5 -2
  128. package/esm/cli/conn/conn-describe.js.map +1 -1
  129. package/esm/cli/conn/conn-list.js +7 -3
  130. package/esm/cli/conn/conn-list.js.map +1 -1
  131. package/esm/cli/conn/conn.js +2 -3
  132. package/esm/cli/conn/conn.js.map +1 -1
  133. package/esm/cli/email/email-template-export.js +13 -12
  134. package/esm/cli/email/email-template-export.js.map +1 -1
  135. package/esm/cli/email/email-template-import.js +15 -14
  136. package/esm/cli/email/email-template-import.js.map +1 -1
  137. package/esm/cli/email/email-template-list.js +7 -7
  138. package/esm/cli/email/email-template-list.js.map +1 -1
  139. package/esm/cli/email/email-template.js.map +1 -1
  140. package/esm/cli/email/email.js +0 -2
  141. package/esm/cli/email/email.js.map +1 -1
  142. package/esm/cli/esv/esv-apply.js +9 -11
  143. package/esm/cli/esv/esv-apply.js.map +1 -1
  144. package/esm/cli/esv/esv-secret-create.js +5 -3
  145. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  146. package/esm/cli/esv/esv-secret-delete.js +9 -5
  147. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  148. package/esm/cli/esv/esv-secret-describe.js +5 -3
  149. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  150. package/esm/cli/esv/esv-secret-export.js +7 -4
  151. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  152. package/esm/cli/esv/esv-secret-import.js +7 -4
  153. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  154. package/esm/cli/esv/esv-secret-list.js +5 -3
  155. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  156. package/esm/cli/esv/esv-secret-set.js +5 -3
  157. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  158. package/esm/cli/esv/esv-secret-version-activate.js +7 -4
  159. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  160. package/esm/cli/esv/esv-secret-version-create.js +5 -3
  161. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  162. package/esm/cli/esv/esv-secret-version-deactivate.js +7 -4
  163. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  164. package/esm/cli/esv/esv-secret-version-delete.js +7 -4
  165. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  166. package/esm/cli/esv/esv-secret-version-list.js +5 -3
  167. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  168. package/esm/cli/esv/esv-secret-version.js.map +1 -1
  169. package/esm/cli/esv/esv-secret.js +4 -1
  170. package/esm/cli/esv/esv-secret.js.map +1 -1
  171. package/esm/cli/esv/esv-variable-create.js +5 -3
  172. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  173. package/esm/cli/esv/esv-variable-delete.js +9 -5
  174. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  175. package/esm/cli/esv/esv-variable-describe.js +5 -3
  176. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  177. package/esm/cli/esv/esv-variable-export.js +7 -4
  178. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  179. package/esm/cli/esv/esv-variable-import.js +7 -4
  180. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  181. package/esm/cli/esv/esv-variable-list.js +5 -3
  182. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  183. package/esm/cli/esv/esv-variable-set.js +7 -4
  184. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  185. package/esm/cli/esv/esv-variable.js +4 -1
  186. package/esm/cli/esv/esv-variable.js.map +1 -1
  187. package/esm/cli/esv/esv.js +0 -2
  188. package/esm/cli/esv/esv.js.map +1 -1
  189. package/esm/cli/idm/idm-count.js +5 -3
  190. package/esm/cli/idm/idm-count.js.map +1 -1
  191. package/esm/cli/idm/idm-export.js +11 -6
  192. package/esm/cli/idm/idm-export.js.map +1 -1
  193. package/esm/cli/idm/idm-import.js +11 -6
  194. package/esm/cli/idm/idm-import.js.map +1 -1
  195. package/esm/cli/idm/idm-list.js +7 -4
  196. package/esm/cli/idm/idm-list.js.map +1 -1
  197. package/esm/cli/idm/idm.js +2 -3
  198. package/esm/cli/idm/idm.js.map +1 -1
  199. package/esm/cli/idp/idp-export.js +11 -6
  200. package/esm/cli/idp/idp-export.js.map +1 -1
  201. package/esm/cli/idp/idp-import.js +13 -7
  202. package/esm/cli/idp/idp-import.js.map +1 -1
  203. package/esm/cli/idp/idp-list.js +7 -4
  204. package/esm/cli/idp/idp-list.js.map +1 -1
  205. package/esm/cli/idp/idp.js +0 -2
  206. package/esm/cli/idp/idp.js.map +1 -1
  207. package/esm/cli/info/info.js +0 -5
  208. package/esm/cli/info/info.js.map +1 -1
  209. package/esm/cli/journey/journey-delete.e2e.test_.js.map +1 -1
  210. package/esm/cli/journey/journey-delete.js +9 -5
  211. package/esm/cli/journey/journey-delete.js.map +1 -1
  212. package/esm/cli/journey/journey-describe.js +31 -28
  213. package/esm/cli/journey/journey-describe.js.map +1 -1
  214. package/esm/cli/journey/journey-disable.js +9 -6
  215. package/esm/cli/journey/journey-disable.js.map +1 -1
  216. package/esm/cli/journey/journey-enable.js +9 -6
  217. package/esm/cli/journey/journey-enable.js.map +1 -1
  218. package/esm/cli/journey/journey-export.js +11 -6
  219. package/esm/cli/journey/journey-export.js.map +1 -1
  220. package/esm/cli/journey/journey-import.js +13 -7
  221. package/esm/cli/journey/journey-import.js.map +1 -1
  222. package/esm/cli/journey/journey-list.e2e.test_.js.map +1 -1
  223. package/esm/cli/journey/journey-list.js +5 -3
  224. package/esm/cli/journey/journey-list.js.map +1 -1
  225. package/esm/cli/journey/journey-prune.js +5 -5
  226. package/esm/cli/journey/journey-prune.js.map +1 -1
  227. package/esm/cli/journey/journey.js +0 -2
  228. package/esm/cli/journey/journey.js.map +1 -1
  229. package/esm/cli/logging/logs-fetch.js +2 -11
  230. package/esm/cli/logging/logs-fetch.js.map +1 -1
  231. package/esm/cli/logging/logs-list.js +0 -5
  232. package/esm/cli/logging/logs-list.js.map +1 -1
  233. package/esm/cli/logging/logs-tail.js +0 -4
  234. package/esm/cli/logging/logs-tail.js.map +1 -1
  235. package/esm/cli/logging/logs.js +2 -4
  236. package/esm/cli/logging/logs.js.map +1 -1
  237. package/esm/cli/realm/realm-add-custom-domain.js +5 -3
  238. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  239. package/esm/cli/realm/realm-describe.js +5 -3
  240. package/esm/cli/realm/realm-describe.js.map +1 -1
  241. package/esm/cli/realm/realm-list.js +5 -3
  242. package/esm/cli/realm/realm-list.js.map +1 -1
  243. package/esm/cli/realm/realm-remove-custom-domain.js +5 -3
  244. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  245. package/esm/cli/realm/realm.js +5 -4
  246. package/esm/cli/realm/realm.js.map +1 -1
  247. package/esm/cli/saml/saml-cot-export.js +11 -6
  248. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  249. package/esm/cli/saml/saml-cot-import.js +13 -7
  250. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  251. package/esm/cli/saml/saml-cot-list.js +5 -3
  252. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  253. package/esm/cli/saml/saml-cot.js.map +1 -1
  254. package/esm/cli/saml/saml-delete.js +11 -6
  255. package/esm/cli/saml/saml-delete.js.map +1 -1
  256. package/esm/cli/saml/saml-describe.js +5 -3
  257. package/esm/cli/saml/saml-describe.js.map +1 -1
  258. package/esm/cli/saml/saml-export.js +13 -7
  259. package/esm/cli/saml/saml-export.js.map +1 -1
  260. package/esm/cli/saml/saml-import.js +13 -7
  261. package/esm/cli/saml/saml-import.js.map +1 -1
  262. package/esm/cli/saml/saml-list.js +5 -3
  263. package/esm/cli/saml/saml-list.js.map +1 -1
  264. package/esm/cli/saml/saml-metadata-export.js +7 -4
  265. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  266. package/esm/cli/saml/saml-metadata.js.map +1 -1
  267. package/esm/cli/saml/saml.js +0 -2
  268. package/esm/cli/saml/saml.js.map +1 -1
  269. package/esm/cli/script/script-delete.js +7 -4
  270. package/esm/cli/script/script-delete.js.map +1 -1
  271. package/esm/cli/script/script-describe.js +7 -4
  272. package/esm/cli/script/script-describe.js.map +1 -1
  273. package/esm/cli/script/script-export.js +15 -8
  274. package/esm/cli/script/script-export.js.map +1 -1
  275. package/esm/cli/script/script-import.js +7 -4
  276. package/esm/cli/script/script-import.js.map +1 -1
  277. package/esm/cli/script/script-list.js +5 -3
  278. package/esm/cli/script/script-list.js.map +1 -1
  279. package/esm/cli/script/script.js +6 -4
  280. package/esm/cli/script/script.js.map +1 -1
  281. package/esm/cli/service/service-delete.js +0 -1
  282. package/esm/cli/service/service-delete.js.map +1 -1
  283. package/esm/cli/service/service-export.js +11 -6
  284. package/esm/cli/service/service-export.js.map +1 -1
  285. package/esm/cli/service/service-import.js +13 -6
  286. package/esm/cli/service/service-import.js.map +1 -1
  287. package/esm/cli/service/service-list.js +0 -1
  288. package/esm/cli/service/service-list.js.map +1 -1
  289. package/esm/cli/service/service.js +0 -2
  290. package/esm/cli/service/service.js.map +1 -1
  291. package/esm/cli/theme/theme-delete.e2e.test_.js.map +1 -1
  292. package/esm/cli/theme/theme-delete.js +16 -14
  293. package/esm/cli/theme/theme-delete.js.map +1 -1
  294. package/esm/cli/theme/theme-export.js +17 -15
  295. package/esm/cli/theme/theme-export.js.map +1 -1
  296. package/esm/cli/theme/theme-import.js +19 -17
  297. package/esm/cli/theme/theme-import.js.map +1 -1
  298. package/esm/cli/theme/theme-list.e2e.test_.js.map +1 -1
  299. package/esm/cli/theme/theme-list.js +7 -7
  300. package/esm/cli/theme/theme-list.js.map +1 -1
  301. package/esm/cli/theme/theme.js +0 -2
  302. package/esm/cli/theme/theme.js.map +1 -1
  303. package/esm/ops/AgentOps.js +48 -126
  304. package/esm/ops/AgentOps.js.map +1 -1
  305. package/esm/ops/CirclesOfTrustOps.js +2 -2
  306. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  307. package/esm/ops/EmailTemplateOps.js +270 -6
  308. package/esm/ops/EmailTemplateOps.js.map +1 -1
  309. package/esm/ops/IdpOps.js +2 -2
  310. package/esm/ops/IdpOps.js.map +1 -1
  311. package/esm/ops/JourneyOps.js +96 -152
  312. package/esm/ops/JourneyOps.js.map +1 -1
  313. package/esm/ops/NodeOps.js +6 -12
  314. package/esm/ops/NodeOps.js.map +1 -1
  315. package/esm/ops/Saml2Ops.js +25 -78
  316. package/esm/ops/Saml2Ops.js.map +1 -1
  317. package/esm/ops/Saml2Ops.test_.js.map +1 -1
  318. package/esm/ops/ScriptOps.js +3 -3
  319. package/esm/ops/ScriptOps.js.map +1 -1
  320. package/esm/ops/ServiceOps.js +10 -31
  321. package/esm/ops/ServiceOps.js.map +1 -1
  322. package/esm/ops/ThemeOps.js +331 -2
  323. package/esm/ops/ThemeOps.js.map +1 -1
  324. package/esm/ops/utils/Wordwrap.js.map +1 -1
  325. package/esm/storage/StaticStorage.js.map +1 -1
  326. package/esm/utils/Config.js +0 -9
  327. package/esm/utils/Config.js.map +1 -1
  328. package/esm/utils/Console.js +32 -79
  329. package/esm/utils/Console.js.map +1 -1
  330. package/esm/utils/ExportImportUtils.js +46 -0
  331. package/esm/utils/ExportImportUtils.js.map +1 -0
  332. package/esm/utils/Version.js +6 -24
  333. package/esm/utils/Version.js.map +1 -1
  334. package/package.json +18 -17
@@ -8,23 +8,20 @@ Color.enable();
8
8
  const {
9
9
  appendTextToFile
10
10
  } = ExportImportUtils;
11
+
11
12
  /**
12
13
  * Output a message in default color to stdout or append to `state.default.session.getOutputFile()`
13
14
  * @param {string | object} message the message
14
15
  */
15
-
16
16
  function data(message, newline = true) {
17
17
  if (!message) return;
18
-
19
18
  if (state.default.session.getOutputFile()) {
20
19
  if (typeof message === 'object') {
21
20
  message = JSON.stringify(message, null, 2);
22
21
  }
23
-
24
22
  if (newline) {
25
23
  message += '\n';
26
24
  }
27
-
28
25
  appendTextToFile(message, state.default.session.getOutputFile());
29
26
  } else if (typeof message === 'object') {
30
27
  console.dir(message, {
@@ -36,15 +33,13 @@ function data(message, newline = true) {
36
33
  process.stdout.write(message);
37
34
  }
38
35
  }
36
+
39
37
  /**
40
38
  * Output a default color message to stderr
41
39
  * @param {Object} message the message
42
40
  */
43
-
44
-
45
41
  function text(message, newline = true) {
46
42
  if (!message) return;
47
-
48
43
  if (typeof message === 'object') {
49
44
  console.dir(message, {
50
45
  depth: 3
@@ -55,15 +50,13 @@ function text(message, newline = true) {
55
50
  process.stderr.write(message);
56
51
  }
57
52
  }
53
+
58
54
  /**
59
55
  * Output a message in bright cyan to stderr
60
56
  * @param {Object} message the message
61
57
  */
62
-
63
-
64
58
  function info(message, newline = true) {
65
59
  if (!message) return;
66
-
67
60
  if (typeof message === 'object') {
68
61
  console.dir(message, {
69
62
  depth: 3
@@ -74,15 +67,13 @@ function info(message, newline = true) {
74
67
  process.stderr.write(message['brightCyan']);
75
68
  }
76
69
  }
70
+
77
71
  /**
78
72
  * Output a message in yellow to stderr
79
73
  * @param {Object} message the message
80
74
  */
81
-
82
-
83
75
  function warn(message, newline = true) {
84
76
  if (!message) return;
85
-
86
77
  if (typeof message === 'object') {
87
78
  console.dir(message, {
88
79
  depth: 3
@@ -93,15 +84,13 @@ function warn(message, newline = true) {
93
84
  process.stderr.write(message['yellow']);
94
85
  }
95
86
  }
87
+
96
88
  /**
97
89
  * Output a message in bright red to stderr
98
90
  * @param {Object} message the message
99
91
  */
100
-
101
-
102
92
  function error(message, newline = true) {
103
93
  if (!message) return;
104
-
105
94
  if (typeof message === 'object') {
106
95
  console.dir(message, {
107
96
  depth: 3
@@ -112,15 +101,13 @@ function error(message, newline = true) {
112
101
  process.stderr.write(message['brightRed']);
113
102
  }
114
103
  }
104
+
115
105
  /**
116
106
  * Output a debug message
117
107
  * @param {string | object} message the message
118
108
  */
119
-
120
-
121
109
  function debug(message, newline = true) {
122
110
  if (!message) return;
123
-
124
111
  if (typeof message === 'object') {
125
112
  console.dir(message, {
126
113
  depth: 6
@@ -131,53 +118,49 @@ function debug(message, newline = true) {
131
118
  process.stderr.write(message['brightMagenta']);
132
119
  }
133
120
  }
121
+
134
122
  /**
135
123
  * Output a curlirize message
136
124
  * @param {string} message the message
137
125
  */
138
-
139
-
140
126
  function curlirize(message) {
141
127
  if (!message) return;
142
128
  console.error(message['brightBlue']);
143
129
  }
130
+
144
131
  /**
145
132
  * Output a message in default color to stderr
146
133
  * @param {Object} message the message
147
134
  */
148
-
149
-
150
135
  export function verboseMessage(message) {
151
136
  if (!message) return;
152
-
153
137
  if (state.default.session.getVerbose()) {
154
138
  text(message);
155
139
  }
156
140
  }
141
+
157
142
  /**
158
143
  * Output a debug message
159
144
  * @param {Object} message the message
160
145
  */
161
-
162
146
  export function debugMessage(message) {
163
147
  if (!message) return;
164
-
165
148
  if (state.default.session.getDebug()) {
166
149
  debug(message);
167
150
  }
168
151
  }
152
+
169
153
  /**
170
154
  * Output a curlirize message
171
155
  * @param {Object} message the message
172
156
  */
173
-
174
157
  export function curlirizeMessage(message) {
175
158
  if (!message) return;
176
-
177
159
  if (state.default.session.getCurlirize()) {
178
160
  curlirize(message);
179
161
  }
180
162
  }
163
+
181
164
  /**
182
165
  * Prints a string message to console
183
166
  *
@@ -187,33 +170,28 @@ export function curlirizeMessage(message) {
187
170
  * @param {boolean} [newline=true] Whether to add a newline at the end of message
188
171
  *
189
172
  */
190
-
191
173
  export function printMessage(message, type = 'text', newline = true) {
192
174
  switch (type) {
193
175
  case 'data':
194
176
  data(message, newline);
195
177
  break;
196
-
197
178
  case 'text':
198
179
  text(message, newline);
199
180
  break;
200
-
201
181
  case 'info':
202
182
  info(message, newline);
203
183
  break;
204
-
205
184
  case 'warn':
206
185
  warn(message, newline);
207
186
  break;
208
-
209
187
  case 'error':
210
188
  error(message, newline);
211
189
  break;
212
-
213
190
  default:
214
191
  text(message, newline);
215
192
  }
216
193
  }
194
+
217
195
  /**
218
196
  * Creates a progress bar on stderr
219
197
  *
@@ -225,45 +203,41 @@ export function printMessage(message, type = 'text', newline = true) {
225
203
  * @param {Object} options progress bar configuration options
226
204
  *
227
205
  */
228
-
229
206
  export function createProgressBar(total, message = null, options = {
230
207
  format: '[{bar}] {percentage}% | {value}/{total} | {data}',
231
208
  noTTYOutput: true
232
209
  }) {
233
210
  let opt = options;
234
-
235
211
  if (message == null) {
236
212
  opt = {
237
213
  format: '[{bar}] {percentage}% | {value}/{total}',
238
214
  noTTYOutput: true
239
215
  };
240
216
  }
241
-
242
217
  let pBar = state.default.session.getItem('progressBar');
243
218
  if (!pBar) pBar = new SingleBar(opt, Presets.legacy); // create only when needed
244
-
245
219
  pBar.start(total, 0, {
246
220
  data: message
247
221
  });
248
222
  state.default.session.setItem('progressBar', pBar);
249
223
  }
224
+
250
225
  /**
251
226
  * Updates the progress bar by 1
252
227
  * @param {string} message optional message to update the progress bar
253
228
  *
254
229
  */
255
-
256
230
  export function updateProgressBar(message = null) {
257
231
  const pBar = state.default.session.getItem('progressBar');
258
232
  if (message) pBar.increment({
259
233
  data: message
260
234
  });else pBar.increment();
261
235
  }
236
+
262
237
  /**
263
238
  * Stop and hide the progress bar
264
239
  * @param {*} message optional message to update the progress bar
265
240
  */
266
-
267
241
  export function stopProgressBar(message = null) {
268
242
  const pBar = state.default.session.getItem('progressBar');
269
243
  if (message) pBar.update({
@@ -271,23 +245,22 @@ export function stopProgressBar(message = null) {
271
245
  });
272
246
  pBar.stop();
273
247
  }
248
+
274
249
  /**
275
250
  * Create the spinner
276
251
  * @param {String} message optional spinner message
277
252
  */
278
-
279
253
  export function showSpinner(message) {
280
254
  const spinner = createSpinner(message).start();
281
255
  state.default.session.setItem('Spinner', spinner);
282
256
  }
257
+
283
258
  /**
284
259
  * Stop the spinner
285
260
  * @param {String} message optional message to update the spinner
286
261
  */
287
-
288
262
  export function stopSpinner(message = null) {
289
263
  const spinner = state.default.session.getItem('Spinner');
290
-
291
264
  if (spinner) {
292
265
  let options = {};
293
266
  if (message) options = {
@@ -296,14 +269,13 @@ export function stopSpinner(message = null) {
296
269
  spinner.stop(options);
297
270
  }
298
271
  }
272
+
299
273
  /**
300
274
  * Succeed the spinner. Stop and render success checkmark with optional message.
301
275
  * @param {String} message optional message to update the spinner
302
276
  */
303
-
304
277
  export function succeedSpinner(message = null) {
305
278
  const spinner = state.default.session.getItem('Spinner');
306
-
307
279
  if (spinner) {
308
280
  let options = {};
309
281
  if (message) options = {
@@ -312,14 +284,13 @@ export function succeedSpinner(message = null) {
312
284
  spinner.success(options);
313
285
  }
314
286
  }
287
+
315
288
  /**
316
289
  * Warn the spinner
317
290
  * @param {String} message optional message to update the spinner
318
291
  */
319
-
320
292
  export function warnSpinner(message = null) {
321
293
  const spinner = state.default.session.getItem('Spinner');
322
-
323
294
  if (spinner) {
324
295
  let options = {};
325
296
  if (message) options = {
@@ -328,14 +299,13 @@ export function warnSpinner(message = null) {
328
299
  spinner.warn(options);
329
300
  }
330
301
  }
302
+
331
303
  /**
332
304
  * Fail the spinner
333
305
  * @param {String} message optional message to update the spinner
334
306
  */
335
-
336
307
  export function failSpinner(message = null) {
337
308
  const spinner = state.default.session.getItem('Spinner');
338
-
339
309
  if (spinner) {
340
310
  let options = {};
341
311
  if (message) options = {
@@ -344,14 +314,13 @@ export function failSpinner(message = null) {
344
314
  spinner.error(options);
345
315
  }
346
316
  }
317
+
347
318
  /**
348
319
  * Spin the spinner
349
320
  * @param {String} message optional message to update the spinner
350
321
  */
351
-
352
322
  export function spinSpinner(message = null) {
353
323
  const spinner = state.default.session.getItem('Spinner');
354
-
355
324
  if (spinner) {
356
325
  let options = {};
357
326
  if (message) options = {
@@ -370,7 +339,6 @@ export function createProgressIndicator(type = 'determinate', total = 0, message
370
339
  }
371
340
  export function updateProgressIndicator(message) {
372
341
  const progressBar = state.default.session.getItem('progressBar');
373
-
374
342
  if (!progressBar) {
375
343
  spinSpinner(message);
376
344
  } else {
@@ -379,25 +347,20 @@ export function updateProgressIndicator(message) {
379
347
  }
380
348
  export function stopProgressIndicator(message, status = 'none') {
381
349
  const progressBar = state.default.session.getItem('progressBar');
382
-
383
350
  if (!progressBar) {
384
351
  switch (status) {
385
352
  case 'none':
386
353
  stopSpinner(message);
387
354
  break;
388
-
389
355
  case 'success':
390
356
  succeedSpinner(message);
391
357
  break;
392
-
393
358
  case 'warn':
394
359
  warnSpinner(message);
395
360
  break;
396
-
397
361
  case 'fail':
398
362
  failSpinner(message);
399
363
  break;
400
-
401
364
  default:
402
365
  stopSpinner(message);
403
366
  break;
@@ -406,12 +369,12 @@ export function stopProgressIndicator(message, status = 'none') {
406
369
  stopProgressBar(message);
407
370
  }
408
371
  }
372
+
409
373
  /**
410
374
  * Create an empty table
411
375
  * @param {string[]} head header row as an array of strings
412
376
  * @returns {any} an empty table
413
377
  */
414
-
415
378
  export function createTable(head) {
416
379
  const table = new Table({
417
380
  head,
@@ -439,11 +402,11 @@ export function createTable(head) {
439
402
  });
440
403
  return table;
441
404
  }
405
+
442
406
  /**
443
407
  * Create a new key/value table
444
408
  * @returns {any} an empty key/value table
445
409
  */
446
-
447
410
  export function createKeyValueTable() {
448
411
  const table = new Table({
449
412
  chars: {
@@ -470,36 +433,33 @@ export function createKeyValueTable() {
470
433
  });
471
434
  return table;
472
435
  }
436
+
473
437
  /**
474
438
  * Helper function to determine the total depth of an object
475
439
  * @param {Object} object input object
476
440
  * @returns {Number} total depth of the input object
477
441
  */
478
-
479
442
  function getObjectDepth(object) {
480
443
  return Object(object) === object ? 1 + Math.max(-1, ...Object.values(object).map(getObjectDepth)) : 0;
481
444
  }
445
+
482
446
  /**
483
447
  * Helper function to determine if an object has values
484
448
  * @param {Object} object input object
485
449
  * @returns {boolean} true of the object or any of its sub-objects contain values, false otherwise
486
450
  */
487
-
488
-
489
451
  function hasValues(object) {
490
452
  let has = false;
491
453
  const keys = Object.keys(object);
492
-
493
454
  for (const key of keys) {
494
455
  if (Object(object[key]) !== object[key]) {
495
456
  return true;
496
457
  }
497
-
498
458
  has = has || hasValues(object[key]);
499
459
  }
500
-
501
460
  return has;
502
461
  }
462
+
503
463
  /**
504
464
  * Helper function (recursive) to add rows to an object table
505
465
  * @param {object} object object to render
@@ -508,12 +468,9 @@ function hasValues(object) {
508
468
  * @param {any} table the object table to add the rows to
509
469
  * @returns the updated object table
510
470
  */
511
-
512
-
513
471
  function addRows(object, depth, level, table, keyMap) {
514
472
  const space = ' ';
515
473
  const keys = Object.keys(object);
516
-
517
474
  for (const key of keys) {
518
475
  if (Object(object[key]) !== object[key]) {
519
476
  if (level === 1) {
@@ -526,7 +483,6 @@ function addRows(object, depth, level, table, keyMap) {
526
483
  }
527
484
  }
528
485
  }
529
-
530
486
  for (const key of keys) {
531
487
  if (Object(object[key]) === object[key]) {
532
488
  // only print header if there are any values below
@@ -534,28 +490,25 @@ function addRows(object, depth, level, table, keyMap) {
534
490
  let indention = new Array(level).fill(space).join('');
535
491
  if (level < 3) indention = `\n${indention}`;
536
492
  table.push([indention.concat(keyMap[key] ? keyMap[key].brightCyan : key['brightCyan']), '']);
537
- } // eslint-disable-next-line no-param-reassign
538
-
539
-
493
+ }
494
+ // eslint-disable-next-line no-param-reassign
540
495
  table = addRows(object[key], depth, level + 1, table, keyMap);
541
496
  }
542
497
  }
543
-
544
498
  return table;
545
499
  }
500
+
546
501
  /**
547
502
  * Create and populate an object table from any JSON object. Use for describe commands.
548
503
  * @param {Object} object JSON object to create
549
504
  * @returns {any} a table that can be printed to the console
550
505
  */
551
-
552
-
553
506
  export function createObjectTable(object, keyMap = {}) {
554
507
  // eslint-disable-next-line no-param-reassign
555
- const depth = getObjectDepth(object); // eslint-disable-next-line no-param-reassign
556
-
557
- const level = 0; // eslint-disable-next-line no-param-reassign
558
-
508
+ const depth = getObjectDepth(object);
509
+ // eslint-disable-next-line no-param-reassign
510
+ const level = 0;
511
+ // eslint-disable-next-line no-param-reassign
559
512
  const table = new Table({
560
513
  chars: {
561
514
  top: '',
@@ -1 +1 @@
1
- {"version":3,"file":"Console.js","names":["SingleBar","Presets","createSpinner","Table","ExportImportUtils","state","Color","enable","appendTextToFile","data","message","newline","default","session","getOutputFile","JSON","stringify","console","dir","depth","log","process","stdout","write","text","error","stderr","info","warn","debug","curlirize","verboseMessage","getVerbose","debugMessage","getDebug","curlirizeMessage","getCurlirize","printMessage","type","createProgressBar","total","options","format","noTTYOutput","opt","pBar","getItem","legacy","start","setItem","updateProgressBar","increment","stopProgressBar","update","stop","showSpinner","spinner","stopSpinner","succeedSpinner","success","warnSpinner","failSpinner","spinSpinner","spin","createProgressIndicator","updateProgressIndicator","progressBar","stopProgressIndicator","status","createTable","head","table","chars","top","bottom","left","mid","right","style","createKeyValueTable","wordWrap","getObjectDepth","object","Object","Math","max","values","map","hasValues","has","keys","key","addRows","level","keyMap","space","push","brightCyan","hAlign","content","gray","indention","Array","fill","join","concat","createObjectTable"],"sources":["utils/Console.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { SingleBar, Presets } from 'cli-progress';\nimport { createSpinner } from 'nanospinner';\nimport Table from 'cli-table3';\nimport { ExportImportUtils, state } from '@rockcarver/frodo-lib';\nimport Color from 'colors';\n\nColor.enable();\n\nconst { appendTextToFile } = ExportImportUtils;\n\n/**\n * Output a message in default color to stdout or append to `state.default.session.getOutputFile()`\n * @param {string | object} message the message\n */\nfunction data(message: string | object, newline = true) {\n if (!message) return;\n if (state.default.session.getOutputFile()) {\n if (typeof message === 'object') {\n message = JSON.stringify(message, null, 2);\n }\n if (newline) {\n message += '\\n';\n }\n appendTextToFile(message, state.default.session.getOutputFile());\n } else if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.log(message);\n } else {\n process.stdout.write(message);\n }\n}\n\n/**\n * Output a default color message to stderr\n * @param {Object} message the message\n */\nfunction text(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message);\n } else {\n process.stderr.write(message);\n }\n}\n\n/**\n * Output a message in bright cyan to stderr\n * @param {Object} message the message\n */\nfunction info(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['brightCyan']);\n } else {\n process.stderr.write(message['brightCyan']);\n }\n}\n\n/**\n * Output a message in yellow to stderr\n * @param {Object} message the message\n */\nfunction warn(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['yellow']);\n } else {\n process.stderr.write(message['yellow']);\n }\n}\n\n/**\n * Output a message in bright red to stderr\n * @param {Object} message the message\n */\nfunction error(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['brightRed']);\n } else {\n process.stderr.write(message['brightRed']);\n }\n}\n\n/**\n * Output a debug message\n * @param {string | object} message the message\n */\nfunction debug(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 6 });\n } else if (newline) {\n console.error(message['brightMagenta']);\n } else {\n process.stderr.write(message['brightMagenta']);\n }\n}\n\n/**\n * Output a curlirize message\n * @param {string} message the message\n */\nfunction curlirize(message: string) {\n if (!message) return;\n console.error(message['brightBlue']);\n}\n\n/**\n * Output a message in default color to stderr\n * @param {Object} message the message\n */\nexport function verboseMessage(message) {\n if (!message) return;\n if (state.default.session.getVerbose()) {\n text(message);\n }\n}\n\n/**\n * Output a debug message\n * @param {Object} message the message\n */\nexport function debugMessage(message) {\n if (!message) return;\n if (state.default.session.getDebug()) {\n debug(message);\n }\n}\n\n/**\n * Output a curlirize message\n * @param {Object} message the message\n */\nexport function curlirizeMessage(message) {\n if (!message) return;\n if (state.default.session.getCurlirize()) {\n curlirize(message);\n }\n}\n\n/**\n * Prints a string message to console\n *\n * @param {string} message The string message to print\n * @param {string} [type=text] \"text\", \"info\", \"warn\", \"error\" or \"data\". All but\n * type=\"data\" will be written to stderr.\n * @param {boolean} [newline=true] Whether to add a newline at the end of message\n *\n */\nexport function printMessage(message, type = 'text', newline = true) {\n switch (type) {\n case 'data':\n data(message, newline);\n break;\n case 'text':\n text(message, newline);\n break;\n case 'info':\n info(message, newline);\n break;\n case 'warn':\n warn(message, newline);\n break;\n case 'error':\n error(message, newline);\n break;\n default:\n text(message, newline);\n }\n}\n\n/**\n * Creates a progress bar on stderr\n *\n * Example:\n * [========================================] 100% | 49/49 | Analyzing journey - transactional_auth\n *\n * @param {Number} total The total number of entries to track progress for\n * @param {String} message optional progress bar message\n * @param {Object} options progress bar configuration options\n *\n */\nexport function createProgressBar(\n total,\n message = null,\n options = {\n format: '[{bar}] {percentage}% | {value}/{total} | {data}',\n noTTYOutput: true,\n }\n) {\n let opt = options;\n if (message == null) {\n opt = {\n format: '[{bar}] {percentage}% | {value}/{total}',\n noTTYOutput: true,\n };\n }\n let pBar = state.default.session.getItem('progressBar');\n if (!pBar) pBar = new SingleBar(opt, Presets.legacy); // create only when needed\n pBar.start(total, 0, {\n data: message,\n });\n state.default.session.setItem('progressBar', pBar);\n}\n\n/**\n * Updates the progress bar by 1\n * @param {string} message optional message to update the progress bar\n *\n */\nexport function updateProgressBar(message = null) {\n const pBar = state.default.session.getItem('progressBar');\n if (message)\n pBar.increment({\n data: message,\n });\n else pBar.increment();\n}\n\n/**\n * Stop and hide the progress bar\n * @param {*} message optional message to update the progress bar\n */\nexport function stopProgressBar(message = null) {\n const pBar = state.default.session.getItem('progressBar');\n if (message)\n pBar.update({\n data: message,\n });\n pBar.stop();\n}\n\n/**\n * Create the spinner\n * @param {String} message optional spinner message\n */\nexport function showSpinner(message) {\n const spinner = createSpinner(message).start();\n state.default.session.setItem('Spinner', spinner);\n}\n\n/**\n * Stop the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function stopSpinner(message = null) {\n const spinner = state.default.session.getItem('Spinner');\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.stop(options);\n }\n}\n\n/**\n * Succeed the spinner. Stop and render success checkmark with optional message.\n * @param {String} message optional message to update the spinner\n */\nexport function succeedSpinner(message = null) {\n const spinner = state.default.session.getItem('Spinner');\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.success(options);\n }\n}\n\n/**\n * Warn the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function warnSpinner(message = null) {\n const spinner = state.default.session.getItem('Spinner');\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.warn(options);\n }\n}\n\n/**\n * Fail the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function failSpinner(message = null) {\n const spinner = state.default.session.getItem('Spinner');\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.error(options);\n }\n}\n\n/**\n * Spin the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function spinSpinner(message = null) {\n const spinner = state.default.session.getItem('Spinner');\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.update(options);\n spinner.spin();\n }\n}\n\nexport function createProgressIndicator(\n type = 'determinate',\n total = 0,\n message = null\n) {\n if (type === 'determinate') {\n createProgressBar(total, message);\n } else {\n showSpinner(message);\n }\n}\n\nexport function updateProgressIndicator(message) {\n const progressBar = state.default.session.getItem('progressBar');\n if (!progressBar) {\n spinSpinner(message);\n } else {\n updateProgressBar(message);\n }\n}\n\nexport function stopProgressIndicator(message, status = 'none') {\n const progressBar = state.default.session.getItem('progressBar');\n if (!progressBar) {\n switch (status) {\n case 'none':\n stopSpinner(message);\n break;\n case 'success':\n succeedSpinner(message);\n break;\n case 'warn':\n warnSpinner(message);\n break;\n case 'fail':\n failSpinner(message);\n break;\n default:\n stopSpinner(message);\n break;\n }\n } else {\n stopProgressBar(message);\n }\n}\n\n/**\n * Create an empty table\n * @param {string[]} head header row as an array of strings\n * @returns {any} an empty table\n */\nexport function createTable(head) {\n const table = new Table({\n head,\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n return table;\n}\n\n/**\n * Create a new key/value table\n * @returns {any} an empty key/value table\n */\nexport function createKeyValueTable() {\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0 },\n wordWrap: true,\n });\n return table;\n}\n\n/**\n * Helper function to determine the total depth of an object\n * @param {Object} object input object\n * @returns {Number} total depth of the input object\n */\nfunction getObjectDepth(object) {\n return Object(object) === object\n ? 1 + Math.max(-1, ...Object.values(object).map(getObjectDepth))\n : 0;\n}\n\n/**\n * Helper function to determine if an object has values\n * @param {Object} object input object\n * @returns {boolean} true of the object or any of its sub-objects contain values, false otherwise\n */\nfunction hasValues(object) {\n let has = false;\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n return true;\n }\n has = has || hasValues(object[key]);\n }\n return has;\n}\n\n/**\n * Helper function (recursive) to add rows to an object table\n * @param {object} object object to render\n * @param {number} depth total depth of initial object\n * @param {number} level current level\n * @param {any} table the object table to add the rows to\n * @returns the updated object table\n */\nfunction addRows(object, depth, level, table, keyMap) {\n const space = ' ';\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n if (level === 1) {\n table.push([\n keyMap[key] ? keyMap[key].brightCyan : key['brightCyan'],\n object[key],\n ]);\n } else {\n table.push([\n {\n hAlign: 'right',\n content: keyMap[key] ? keyMap[key].gray : key.gray,\n },\n object[key],\n ]);\n }\n }\n }\n for (const key of keys) {\n if (Object(object[key]) === object[key]) {\n // only print header if there are any values below\n if (hasValues(object[key])) {\n let indention = new Array(level).fill(space).join('');\n if (level < 3) indention = `\\n${indention}`;\n table.push([\n indention.concat(\n keyMap[key] ? keyMap[key].brightCyan : key['brightCyan']\n ),\n '',\n ]);\n }\n // eslint-disable-next-line no-param-reassign\n table = addRows(object[key], depth, level + 1, table, keyMap);\n }\n }\n return table;\n}\n\n/**\n * Create and populate an object table from any JSON object. Use for describe commands.\n * @param {Object} object JSON object to create\n * @returns {any} a table that can be printed to the console\n */\nexport function createObjectTable(object, keyMap = {}) {\n // eslint-disable-next-line no-param-reassign\n const depth = getObjectDepth(object);\n // eslint-disable-next-line no-param-reassign\n const level = 0;\n // eslint-disable-next-line no-param-reassign\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n addRows(object, depth, level + 1, table, keyMap);\n return table;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Console.js","names":["SingleBar","Presets","createSpinner","Table","ExportImportUtils","state","Color","enable","appendTextToFile","data","message","newline","default","session","getOutputFile","JSON","stringify","console","dir","depth","log","process","stdout","write","text","error","stderr","info","warn","debug","curlirize","verboseMessage","getVerbose","debugMessage","getDebug","curlirizeMessage","getCurlirize","printMessage","type","createProgressBar","total","options","format","noTTYOutput","opt","pBar","getItem","legacy","start","setItem","updateProgressBar","increment","stopProgressBar","update","stop","showSpinner","spinner","stopSpinner","succeedSpinner","success","warnSpinner","failSpinner","spinSpinner","spin","createProgressIndicator","updateProgressIndicator","progressBar","stopProgressIndicator","status","createTable","head","table","chars","top","bottom","left","mid","right","style","createKeyValueTable","wordWrap","getObjectDepth","object","Object","Math","max","values","map","hasValues","has","keys","key","addRows","level","keyMap","space","push","brightCyan","hAlign","content","gray","indention","Array","fill","join","concat","createObjectTable"],"sources":["utils/Console.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { SingleBar, Presets } from 'cli-progress';\nimport { createSpinner } from 'nanospinner';\nimport Table from 'cli-table3';\nimport { ExportImportUtils, state } from '@rockcarver/frodo-lib';\nimport Color from 'colors';\n\nColor.enable();\n\nconst { appendTextToFile } = ExportImportUtils;\n\n/**\n * Output a message in default color to stdout or append to `state.default.session.getOutputFile()`\n * @param {string | object} message the message\n */\nfunction data(message: string | object, newline = true) {\n if (!message) return;\n if (state.default.session.getOutputFile()) {\n if (typeof message === 'object') {\n message = JSON.stringify(message, null, 2);\n }\n if (newline) {\n message += '\\n';\n }\n appendTextToFile(message, state.default.session.getOutputFile());\n } else if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.log(message);\n } else {\n process.stdout.write(message);\n }\n}\n\n/**\n * Output a default color message to stderr\n * @param {Object} message the message\n */\nfunction text(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message);\n } else {\n process.stderr.write(message);\n }\n}\n\n/**\n * Output a message in bright cyan to stderr\n * @param {Object} message the message\n */\nfunction info(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['brightCyan']);\n } else {\n process.stderr.write(message['brightCyan']);\n }\n}\n\n/**\n * Output a message in yellow to stderr\n * @param {Object} message the message\n */\nfunction warn(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['yellow']);\n } else {\n process.stderr.write(message['yellow']);\n }\n}\n\n/**\n * Output a message in bright red to stderr\n * @param {Object} message the message\n */\nfunction error(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 3 });\n } else if (newline) {\n console.error(message['brightRed']);\n } else {\n process.stderr.write(message['brightRed']);\n }\n}\n\n/**\n * Output a debug message\n * @param {string | object} message the message\n */\nfunction debug(message: string | object, newline = true) {\n if (!message) return;\n if (typeof message === 'object') {\n console.dir(message, { depth: 6 });\n } else if (newline) {\n console.error(message['brightMagenta']);\n } else {\n process.stderr.write(message['brightMagenta']);\n }\n}\n\n/**\n * Output a curlirize message\n * @param {string} message the message\n */\nfunction curlirize(message: string) {\n if (!message) return;\n console.error(message['brightBlue']);\n}\n\n/**\n * Output a message in default color to stderr\n * @param {Object} message the message\n */\nexport function verboseMessage(message) {\n if (!message) return;\n if (state.default.session.getVerbose()) {\n text(message);\n }\n}\n\n/**\n * Output a debug message\n * @param {Object} message the message\n */\nexport function debugMessage(message) {\n if (!message) return;\n if (state.default.session.getDebug()) {\n debug(message);\n }\n}\n\n/**\n * Output a curlirize message\n * @param {Object} message the message\n */\nexport function curlirizeMessage(message) {\n if (!message) return;\n if (state.default.session.getCurlirize()) {\n curlirize(message);\n }\n}\n\n/**\n * Prints a string message to console\n *\n * @param {string} message The string message to print\n * @param {string} [type=text] \"text\", \"info\", \"warn\", \"error\" or \"data\". All but\n * type=\"data\" will be written to stderr.\n * @param {boolean} [newline=true] Whether to add a newline at the end of message\n *\n */\nexport function printMessage(message, type = 'text', newline = true) {\n switch (type) {\n case 'data':\n data(message, newline);\n break;\n case 'text':\n text(message, newline);\n break;\n case 'info':\n info(message, newline);\n break;\n case 'warn':\n warn(message, newline);\n break;\n case 'error':\n error(message, newline);\n break;\n default:\n text(message, newline);\n }\n}\n\n/**\n * Creates a progress bar on stderr\n *\n * Example:\n * [========================================] 100% | 49/49 | Analyzing journey - transactional_auth\n *\n * @param {Number} total The total number of entries to track progress for\n * @param {String} message optional progress bar message\n * @param {Object} options progress bar configuration options\n *\n */\nexport function createProgressBar(\n total,\n message = null,\n options = {\n format: '[{bar}] {percentage}% | {value}/{total} | {data}',\n noTTYOutput: true,\n }\n) {\n let opt = options;\n if (message == null) {\n opt = {\n format: '[{bar}] {percentage}% | {value}/{total}',\n noTTYOutput: true,\n };\n }\n let pBar = state.default.session.getItem('progressBar');\n if (!pBar) pBar = new SingleBar(opt, Presets.legacy); // create only when needed\n pBar.start(total, 0, {\n data: message,\n });\n state.default.session.setItem('progressBar', pBar);\n}\n\n/**\n * Updates the progress bar by 1\n * @param {string} message optional message to update the progress bar\n *\n */\nexport function updateProgressBar(message = null) {\n const pBar = state.default.session.getItem('progressBar');\n if (message)\n pBar.increment({\n data: message,\n });\n else pBar.increment();\n}\n\n/**\n * Stop and hide the progress bar\n * @param {*} message optional message to update the progress bar\n */\nexport function stopProgressBar(message = null) {\n const pBar = state.default.session.getItem('progressBar');\n if (message)\n pBar.update({\n data: message,\n });\n pBar.stop();\n}\n\n/**\n * Create the spinner\n * @param {String} message optional spinner message\n */\nexport function showSpinner(message) {\n const spinner = createSpinner(message).start();\n state.default.session.setItem('Spinner', spinner);\n}\n\n/**\n * Stop the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function stopSpinner(message = null) {\n const spinner = state.default.session.getItem('Spinner');\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.stop(options);\n }\n}\n\n/**\n * Succeed the spinner. Stop and render success checkmark with optional message.\n * @param {String} message optional message to update the spinner\n */\nexport function succeedSpinner(message = null) {\n const spinner = state.default.session.getItem('Spinner');\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.success(options);\n }\n}\n\n/**\n * Warn the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function warnSpinner(message = null) {\n const spinner = state.default.session.getItem('Spinner');\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.warn(options);\n }\n}\n\n/**\n * Fail the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function failSpinner(message = null) {\n const spinner = state.default.session.getItem('Spinner');\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.error(options);\n }\n}\n\n/**\n * Spin the spinner\n * @param {String} message optional message to update the spinner\n */\nexport function spinSpinner(message = null) {\n const spinner = state.default.session.getItem('Spinner');\n if (spinner) {\n let options = {};\n if (message) options = { text: message };\n spinner.update(options);\n spinner.spin();\n }\n}\n\nexport function createProgressIndicator(\n type = 'determinate',\n total = 0,\n message = null\n) {\n if (type === 'determinate') {\n createProgressBar(total, message);\n } else {\n showSpinner(message);\n }\n}\n\nexport function updateProgressIndicator(message) {\n const progressBar = state.default.session.getItem('progressBar');\n if (!progressBar) {\n spinSpinner(message);\n } else {\n updateProgressBar(message);\n }\n}\n\nexport function stopProgressIndicator(message, status = 'none') {\n const progressBar = state.default.session.getItem('progressBar');\n if (!progressBar) {\n switch (status) {\n case 'none':\n stopSpinner(message);\n break;\n case 'success':\n succeedSpinner(message);\n break;\n case 'warn':\n warnSpinner(message);\n break;\n case 'fail':\n failSpinner(message);\n break;\n default:\n stopSpinner(message);\n break;\n }\n } else {\n stopProgressBar(message);\n }\n}\n\n/**\n * Create an empty table\n * @param {string[]} head header row as an array of strings\n * @returns {any} an empty table\n */\nexport function createTable(head) {\n const table = new Table({\n head,\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n return table;\n}\n\n/**\n * Create a new key/value table\n * @returns {any} an empty key/value table\n */\nexport function createKeyValueTable() {\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0 },\n wordWrap: true,\n });\n return table;\n}\n\n/**\n * Helper function to determine the total depth of an object\n * @param {Object} object input object\n * @returns {Number} total depth of the input object\n */\nfunction getObjectDepth(object) {\n return Object(object) === object\n ? 1 + Math.max(-1, ...Object.values(object).map(getObjectDepth))\n : 0;\n}\n\n/**\n * Helper function to determine if an object has values\n * @param {Object} object input object\n * @returns {boolean} true of the object or any of its sub-objects contain values, false otherwise\n */\nfunction hasValues(object) {\n let has = false;\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n return true;\n }\n has = has || hasValues(object[key]);\n }\n return has;\n}\n\n/**\n * Helper function (recursive) to add rows to an object table\n * @param {object} object object to render\n * @param {number} depth total depth of initial object\n * @param {number} level current level\n * @param {any} table the object table to add the rows to\n * @returns the updated object table\n */\nfunction addRows(object, depth, level, table, keyMap) {\n const space = ' ';\n const keys = Object.keys(object);\n for (const key of keys) {\n if (Object(object[key]) !== object[key]) {\n if (level === 1) {\n table.push([\n keyMap[key] ? keyMap[key].brightCyan : key['brightCyan'],\n object[key],\n ]);\n } else {\n table.push([\n {\n hAlign: 'right',\n content: keyMap[key] ? keyMap[key].gray : key.gray,\n },\n object[key],\n ]);\n }\n }\n }\n for (const key of keys) {\n if (Object(object[key]) === object[key]) {\n // only print header if there are any values below\n if (hasValues(object[key])) {\n let indention = new Array(level).fill(space).join('');\n if (level < 3) indention = `\\n${indention}`;\n table.push([\n indention.concat(\n keyMap[key] ? keyMap[key].brightCyan : key['brightCyan']\n ),\n '',\n ]);\n }\n // eslint-disable-next-line no-param-reassign\n table = addRows(object[key], depth, level + 1, table, keyMap);\n }\n }\n return table;\n}\n\n/**\n * Create and populate an object table from any JSON object. Use for describe commands.\n * @param {Object} object JSON object to create\n * @returns {any} a table that can be printed to the console\n */\nexport function createObjectTable(object, keyMap = {}) {\n // eslint-disable-next-line no-param-reassign\n const depth = getObjectDepth(object);\n // eslint-disable-next-line no-param-reassign\n const level = 0;\n // eslint-disable-next-line no-param-reassign\n const table = new Table({\n chars: {\n top: '',\n 'top-mid': '',\n 'top-left': '',\n 'top-right': '',\n bottom: '',\n 'bottom-mid': '',\n 'bottom-left': '',\n 'bottom-right': '',\n left: '',\n 'left-mid': '',\n mid: '',\n 'mid-mid': '',\n right: '',\n 'right-mid': '',\n },\n style: { 'padding-left': 0, 'padding-right': 0, head: ['brightCyan'] },\n });\n addRows(object, depth, level + 1, table, keyMap);\n return table;\n}\n"],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import fs from 'fs';
2
+ import slugify from 'slugify';
3
+ import { ExportImportUtils } from '@rockcarver/frodo-lib';
4
+ import { printMessage } from './Console';
5
+ const {
6
+ getMetadata
7
+ } = ExportImportUtils;
8
+ export function getTypedFilename(name, type, suffix = 'json') {
9
+ const slug = slugify(name.replace(/^http(s?):\/\//, ''));
10
+ return `${slug}.${type}.${suffix}`;
11
+ }
12
+
13
+ /**
14
+ * Save JSON object to file
15
+ * @param {Object} data data object
16
+ * @param {String} filename file name
17
+ */
18
+ export function saveJsonToFile(data, filename) {
19
+ const exportData = data;
20
+ exportData.meta = getMetadata();
21
+ fs.writeFile(filename, JSON.stringify(exportData, null, 2), err => {
22
+ if (err) {
23
+ return printMessage(`ERROR - can't save ${filename}`, 'error');
24
+ }
25
+ return '';
26
+ });
27
+ }
28
+ export function saveToFile(type, data, identifier, filename) {
29
+ const exportData = {};
30
+ exportData['meta'] = getMetadata();
31
+ exportData[type] = {};
32
+ if (Array.isArray(data)) {
33
+ data.forEach(element => {
34
+ exportData[type][element[identifier]] = element;
35
+ });
36
+ } else {
37
+ exportData[type][data[identifier]] = data;
38
+ }
39
+ fs.writeFile(filename, JSON.stringify(exportData, null, 2), err => {
40
+ if (err) {
41
+ return printMessage(`ERROR - can't save ${type} to file`, 'error');
42
+ }
43
+ return '';
44
+ });
45
+ }
46
+ //# sourceMappingURL=ExportImportUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExportImportUtils.js","names":["fs","slugify","ExportImportUtils","printMessage","getMetadata","getTypedFilename","name","type","suffix","slug","replace","saveJsonToFile","data","filename","exportData","meta","writeFile","JSON","stringify","err","saveToFile","identifier","Array","isArray","forEach","element"],"sources":["utils/ExportImportUtils.ts"],"sourcesContent":["import fs from 'fs';\nimport slugify from 'slugify';\nimport { ExportImportUtils } from '@rockcarver/frodo-lib';\nimport { printMessage } from './Console';\n\nconst { getMetadata } = ExportImportUtils;\n\nexport function getTypedFilename(name: string, type: string, suffix = 'json') {\n const slug = slugify(name.replace(/^http(s?):\\/\\//, ''));\n return `${slug}.${type}.${suffix}`;\n}\n\n/**\n * Save JSON object to file\n * @param {Object} data data object\n * @param {String} filename file name\n */\nexport function saveJsonToFile(data, filename) {\n const exportData = data;\n exportData.meta = getMetadata();\n fs.writeFile(filename, JSON.stringify(exportData, null, 2), (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${filename}`, 'error');\n }\n return '';\n });\n}\n\nexport function saveToFile(type, data, identifier, filename) {\n const exportData = {};\n exportData['meta'] = getMetadata();\n exportData[type] = {};\n\n if (Array.isArray(data)) {\n data.forEach((element) => {\n exportData[type][element[identifier]] = element;\n });\n } else {\n exportData[type][data[identifier]] = data;\n }\n fs.writeFile(filename, JSON.stringify(exportData, null, 2), (err) => {\n if (err) {\n return printMessage(`ERROR - can't save ${type} to file`, 'error');\n }\n return '';\n });\n}\n"],"mappings":"AAAA,OAAOA,EAAE,MAAM,IAAI;AACnB,OAAOC,OAAO,MAAM,SAAS;AAC7B,SAASC,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,YAAY,QAAQ,WAAW;AAExC,MAAM;EAAEC;AAAY,CAAC,GAAGF,iBAAiB;AAEzC,OAAO,SAASG,gBAAgB,CAACC,IAAY,EAAEC,IAAY,EAAEC,MAAM,GAAG,MAAM,EAAE;EAC5E,MAAMC,IAAI,GAAGR,OAAO,CAACK,IAAI,CAACI,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;EACxD,OAAQ,GAAED,IAAK,IAAGF,IAAK,IAAGC,MAAO,EAAC;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,cAAc,CAACC,IAAI,EAAEC,QAAQ,EAAE;EAC7C,MAAMC,UAAU,GAAGF,IAAI;EACvBE,UAAU,CAACC,IAAI,GAAGX,WAAW,EAAE;EAC/BJ,EAAE,CAACgB,SAAS,CAACH,QAAQ,EAAEI,IAAI,CAACC,SAAS,CAACJ,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAGK,GAAG,IAAK;IACnE,IAAIA,GAAG,EAAE;MACP,OAAOhB,YAAY,CAAE,sBAAqBU,QAAS,EAAC,EAAE,OAAO,CAAC;IAChE;IACA,OAAO,EAAE;EACX,CAAC,CAAC;AACJ;AAEA,OAAO,SAASO,UAAU,CAACb,IAAI,EAAEK,IAAI,EAAES,UAAU,EAAER,QAAQ,EAAE;EAC3D,MAAMC,UAAU,GAAG,CAAC,CAAC;EACrBA,UAAU,CAAC,MAAM,CAAC,GAAGV,WAAW,EAAE;EAClCU,UAAU,CAACP,IAAI,CAAC,GAAG,CAAC,CAAC;EAErB,IAAIe,KAAK,CAACC,OAAO,CAACX,IAAI,CAAC,EAAE;IACvBA,IAAI,CAACY,OAAO,CAAEC,OAAO,IAAK;MACxBX,UAAU,CAACP,IAAI,CAAC,CAACkB,OAAO,CAACJ,UAAU,CAAC,CAAC,GAAGI,OAAO;IACjD,CAAC,CAAC;EACJ,CAAC,MAAM;IACLX,UAAU,CAACP,IAAI,CAAC,CAACK,IAAI,CAACS,UAAU,CAAC,CAAC,GAAGT,IAAI;EAC3C;EACAZ,EAAE,CAACgB,SAAS,CAACH,QAAQ,EAAEI,IAAI,CAACC,SAAS,CAACJ,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAGK,GAAG,IAAK;IACnE,IAAIA,GAAG,EAAE;MACP,OAAOhB,YAAY,CAAE,sBAAqBI,IAAK,UAAS,EAAE,OAAO,CAAC;IACpE;IACA,OAAO,EAAE;EACX,CAAC,CAAC;AACJ"}