@rockcarver/frodo-cli 0.15.0 → 0.15.1

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 (272) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/esm/app.js +55 -0
  3. package/esm/app.js.map +1 -0
  4. package/esm/cli/_template/cmd-delete.js +22 -0
  5. package/esm/cli/_template/cmd-delete.js.map +1 -0
  6. package/esm/cli/_template/cmd-describe.js +22 -0
  7. package/esm/cli/_template/cmd-describe.js.map +1 -0
  8. package/esm/cli/_template/cmd-export.js +22 -0
  9. package/esm/cli/_template/cmd-export.js.map +1 -0
  10. package/esm/cli/_template/cmd-import.js +22 -0
  11. package/esm/cli/_template/cmd-import.js.map +1 -0
  12. package/esm/cli/_template/cmd-list.js +22 -0
  13. package/esm/cli/_template/cmd-list.js.map +1 -0
  14. package/esm/cli/_template/cmd-sub1-delete.js +22 -0
  15. package/esm/cli/_template/cmd-sub1-delete.js.map +1 -0
  16. package/esm/cli/_template/cmd-sub1-describe.js +22 -0
  17. package/esm/cli/_template/cmd-sub1-describe.js.map +1 -0
  18. package/esm/cli/_template/cmd-sub1-export.js +22 -0
  19. package/esm/cli/_template/cmd-sub1-export.js.map +1 -0
  20. package/esm/cli/_template/cmd-sub1-import.js +22 -0
  21. package/esm/cli/_template/cmd-sub1-import.js.map +1 -0
  22. package/esm/cli/_template/cmd-sub1-list.js +22 -0
  23. package/esm/cli/_template/cmd-sub1-list.js.map +1 -0
  24. package/esm/cli/_template/cmd-sub1.js +10 -0
  25. package/esm/cli/_template/cmd-sub1.js.map +1 -0
  26. package/esm/cli/_template/cmd-sub2-delete.js +22 -0
  27. package/esm/cli/_template/cmd-sub2-delete.js.map +1 -0
  28. package/esm/cli/_template/cmd-sub2-describe.js +22 -0
  29. package/esm/cli/_template/cmd-sub2-describe.js.map +1 -0
  30. package/esm/cli/_template/cmd-sub2-export.js +22 -0
  31. package/esm/cli/_template/cmd-sub2-export.js.map +1 -0
  32. package/esm/cli/_template/cmd-sub2-import.js +22 -0
  33. package/esm/cli/_template/cmd-sub2-import.js.map +1 -0
  34. package/esm/cli/_template/cmd-sub2-list.js +22 -0
  35. package/esm/cli/_template/cmd-sub2-list.js.map +1 -0
  36. package/esm/cli/_template/cmd-sub2.js +10 -0
  37. package/esm/cli/_template/cmd-sub2.js.map +1 -0
  38. package/esm/cli/_template/cmd.js +19 -0
  39. package/esm/cli/_template/cmd.js.map +1 -0
  40. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +28 -0
  41. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -0
  42. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +85 -0
  43. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -0
  44. package/esm/cli/admin/admin-get-access-token.js +28 -0
  45. package/esm/cli/admin/admin-get-access-token.js.map +1 -0
  46. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +28 -0
  47. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -0
  48. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +28 -0
  49. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -0
  50. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +31 -0
  51. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -0
  52. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +31 -0
  53. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -0
  54. package/esm/cli/admin/admin-list-static-user-mappings.js +31 -0
  55. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -0
  56. package/esm/cli/admin/admin-remove-static-user-mapping.js +28 -0
  57. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -0
  58. package/esm/cli/admin/admin-repair-org-model.js +28 -0
  59. package/esm/cli/admin/admin-repair-org-model.js.map +1 -0
  60. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +28 -0
  61. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -0
  62. package/esm/cli/admin/admin-show-generic-extension-attributes.js +28 -0
  63. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -0
  64. package/esm/cli/admin/admin.js +24 -0
  65. package/esm/cli/admin/admin.js.map +1 -0
  66. package/esm/cli/app/app-delete.js +22 -0
  67. package/esm/cli/app/app-delete.js.map +1 -0
  68. package/esm/cli/app/app-describe.js +22 -0
  69. package/esm/cli/app/app-describe.js.map +1 -0
  70. package/esm/cli/app/app-export.js +44 -0
  71. package/esm/cli/app/app-export.js.map +1 -0
  72. package/esm/cli/app/app-import.js +45 -0
  73. package/esm/cli/app/app-import.js.map +1 -0
  74. package/esm/cli/app/app-list.js +27 -0
  75. package/esm/cli/app/app-list.js.map +1 -0
  76. package/esm/cli/app/app.js +20 -0
  77. package/esm/cli/app/app.js.map +1 -0
  78. package/esm/cli/cmd_common.js +77 -0
  79. package/esm/cli/cmd_common.js.map +1 -0
  80. package/esm/cli/conn/conn-add.js +37 -0
  81. package/esm/cli/conn/conn-add.js.map +1 -0
  82. package/esm/cli/conn/conn-delete.js +14 -0
  83. package/esm/cli/conn/conn-delete.js.map +1 -0
  84. package/esm/cli/conn/conn-describe.js +14 -0
  85. package/esm/cli/conn/conn-describe.js.map +1 -0
  86. package/esm/cli/conn/conn-list.js +16 -0
  87. package/esm/cli/conn/conn-list.js.map +1 -0
  88. package/esm/cli/conn/conn.js +17 -0
  89. package/esm/cli/conn/conn.js.map +1 -0
  90. package/esm/cli/email/email-template-export.js +44 -0
  91. package/esm/cli/email/email-template-export.js.map +1 -0
  92. package/esm/cli/email/email-template-import.js +49 -0
  93. package/esm/cli/email/email-template-import.js.map +1 -0
  94. package/esm/cli/email/email-template-list.js +27 -0
  95. package/esm/cli/email/email-template-list.js.map +1 -0
  96. package/esm/cli/email/email-template.js +8 -0
  97. package/esm/cli/email/email-template.js.map +1 -0
  98. package/esm/cli/email/email.js +13 -0
  99. package/esm/cli/email/email.js.map +1 -0
  100. package/esm/cli/esv/esv-apply.js +67 -0
  101. package/esm/cli/esv/esv-apply.js.map +1 -0
  102. package/esm/cli/esv/esv-secret-create.js +27 -0
  103. package/esm/cli/esv/esv-secret-create.js.map +1 -0
  104. package/esm/cli/esv/esv-secret-delete.js +39 -0
  105. package/esm/cli/esv/esv-secret-delete.js.map +1 -0
  106. package/esm/cli/esv/esv-secret-describe.js +27 -0
  107. package/esm/cli/esv/esv-secret-describe.js.map +1 -0
  108. package/esm/cli/esv/esv-secret-export.js +22 -0
  109. package/esm/cli/esv/esv-secret-export.js.map +1 -0
  110. package/esm/cli/esv/esv-secret-import.js +22 -0
  111. package/esm/cli/esv/esv-secret-import.js.map +1 -0
  112. package/esm/cli/esv/esv-secret-list.js +27 -0
  113. package/esm/cli/esv/esv-secret-list.js.map +1 -0
  114. package/esm/cli/esv/esv-secret-set.js +27 -0
  115. package/esm/cli/esv/esv-secret-set.js.map +1 -0
  116. package/esm/cli/esv/esv-secret-version-activate.js +34 -0
  117. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -0
  118. package/esm/cli/esv/esv-secret-version-create.js +27 -0
  119. package/esm/cli/esv/esv-secret-version-create.js.map +1 -0
  120. package/esm/cli/esv/esv-secret-version-deactivate.js +34 -0
  121. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -0
  122. package/esm/cli/esv/esv-secret-version-delete.js +39 -0
  123. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -0
  124. package/esm/cli/esv/esv-secret-version-list.js +27 -0
  125. package/esm/cli/esv/esv-secret-version-list.js.map +1 -0
  126. package/esm/cli/esv/esv-secret-version.js +10 -0
  127. package/esm/cli/esv/esv-secret-version.js.map +1 -0
  128. package/esm/cli/esv/esv-secret.js +13 -0
  129. package/esm/cli/esv/esv-secret.js.map +1 -0
  130. package/esm/cli/esv/esv-variable-create.js +27 -0
  131. package/esm/cli/esv/esv-variable-create.js.map +1 -0
  132. package/esm/cli/esv/esv-variable-delete.js +39 -0
  133. package/esm/cli/esv/esv-variable-delete.js.map +1 -0
  134. package/esm/cli/esv/esv-variable-describe.js +27 -0
  135. package/esm/cli/esv/esv-variable-describe.js.map +1 -0
  136. package/esm/cli/esv/esv-variable-export.js +22 -0
  137. package/esm/cli/esv/esv-variable-export.js.map +1 -0
  138. package/esm/cli/esv/esv-variable-import.js +22 -0
  139. package/esm/cli/esv/esv-variable-import.js.map +1 -0
  140. package/esm/cli/esv/esv-variable-list.js +27 -0
  141. package/esm/cli/esv/esv-variable-list.js.map +1 -0
  142. package/esm/cli/esv/esv-variable-set.js +37 -0
  143. package/esm/cli/esv/esv-variable-set.js.map +1 -0
  144. package/esm/cli/esv/esv-variable.js +12 -0
  145. package/esm/cli/esv/esv-variable.js.map +1 -0
  146. package/esm/cli/esv/esv.js +15 -0
  147. package/esm/cli/esv/esv.js.map +1 -0
  148. package/esm/cli/idm/idm-count.js +27 -0
  149. package/esm/cli/idm/idm-count.js.map +1 -0
  150. package/esm/cli/idm/idm-export.js +44 -0
  151. package/esm/cli/idm/idm-export.js.map +1 -0
  152. package/esm/cli/idm/idm-list.js +30 -0
  153. package/esm/cli/idm/idm-list.js.map +1 -0
  154. package/esm/cli/idm/idm.js +16 -0
  155. package/esm/cli/idm/idm.js.map +1 -0
  156. package/esm/cli/idp/idp-export.js +44 -0
  157. package/esm/cli/idp/idp-export.js.map +1 -0
  158. package/esm/cli/idp/idp-import.js +49 -0
  159. package/esm/cli/idp/idp-import.js.map +1 -0
  160. package/esm/cli/idp/idp-list.js +30 -0
  161. package/esm/cli/idp/idp-list.js.map +1 -0
  162. package/esm/cli/idp/idp.js +15 -0
  163. package/esm/cli/idp/idp.js.map +1 -0
  164. package/esm/cli/info/info.js +48 -0
  165. package/esm/cli/info/info.js.map +1 -0
  166. package/esm/cli/journey/journey-delete.e2e.test_.js.map +1 -0
  167. package/esm/cli/journey/journey-delete.js +39 -0
  168. package/esm/cli/journey/journey-delete.js.map +1 -0
  169. package/esm/cli/journey/journey-describe.js +100 -0
  170. package/esm/cli/journey/journey-describe.js.map +1 -0
  171. package/esm/cli/journey/journey-disable.js +46 -0
  172. package/esm/cli/journey/journey-disable.js.map +1 -0
  173. package/esm/cli/journey/journey-enable.js +46 -0
  174. package/esm/cli/journey/journey-enable.js.map +1 -0
  175. package/esm/cli/journey/journey-export.js +56 -0
  176. package/esm/cli/journey/journey-export.js.map +1 -0
  177. package/esm/cli/journey/journey-import.js +65 -0
  178. package/esm/cli/journey/journey-import.js.map +1 -0
  179. package/esm/cli/journey/journey-list.e2e.test_.js.map +1 -0
  180. package/esm/cli/journey/journey-list.js +27 -0
  181. package/esm/cli/journey/journey-list.js.map +1 -0
  182. package/esm/cli/journey/journey-prune.js +41 -0
  183. package/esm/cli/journey/journey-prune.js.map +1 -0
  184. package/esm/cli/journey/journey.js +20 -0
  185. package/esm/cli/journey/journey.js.map +1 -0
  186. package/esm/cli/logging/logs-list.js +66 -0
  187. package/esm/cli/logging/logs-list.js.map +1 -0
  188. package/esm/cli/logging/logs-tail.js +60 -0
  189. package/esm/cli/logging/logs-tail.js.map +1 -0
  190. package/esm/cli/logging/logs.js +13 -0
  191. package/esm/cli/logging/logs.js.map +1 -0
  192. package/esm/cli/realm/realm-add-custom-domain.js +27 -0
  193. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -0
  194. package/esm/cli/realm/realm-describe.js +30 -0
  195. package/esm/cli/realm/realm-describe.js.map +1 -0
  196. package/esm/cli/realm/realm-list.js +27 -0
  197. package/esm/cli/realm/realm-list.js.map +1 -0
  198. package/esm/cli/realm/realm-remove-custom-domain.js +27 -0
  199. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -0
  200. package/esm/cli/realm/realm.js +18 -0
  201. package/esm/cli/realm/realm.js.map +1 -0
  202. package/esm/cli/saml/saml-cot-export.js +44 -0
  203. package/esm/cli/saml/saml-cot-export.js.map +1 -0
  204. package/esm/cli/saml/saml-cot-import.js +49 -0
  205. package/esm/cli/saml/saml-cot-import.js.map +1 -0
  206. package/esm/cli/saml/saml-cot-list.js +27 -0
  207. package/esm/cli/saml/saml-cot-list.js.map +1 -0
  208. package/esm/cli/saml/saml-cot.js +8 -0
  209. package/esm/cli/saml/saml-cot.js.map +1 -0
  210. package/esm/cli/saml/saml-describe.js +27 -0
  211. package/esm/cli/saml/saml-describe.js.map +1 -0
  212. package/esm/cli/saml/saml-export.js +44 -0
  213. package/esm/cli/saml/saml-export.js.map +1 -0
  214. package/esm/cli/saml/saml-import.js +49 -0
  215. package/esm/cli/saml/saml-import.js.map +1 -0
  216. package/esm/cli/saml/saml-list.js +27 -0
  217. package/esm/cli/saml/saml-list.js.map +1 -0
  218. package/esm/cli/saml/saml-metadata-export.js +39 -0
  219. package/esm/cli/saml/saml-metadata-export.js.map +1 -0
  220. package/esm/cli/saml/saml-metadata.js +6 -0
  221. package/esm/cli/saml/saml-metadata.js.map +1 -0
  222. package/esm/cli/saml/saml.js +18 -0
  223. package/esm/cli/saml/saml.js.map +1 -0
  224. package/esm/cli/script/script-delete.js +22 -0
  225. package/esm/cli/script/script-delete.js.map +1 -0
  226. package/esm/cli/script/script-describe.js +22 -0
  227. package/esm/cli/script/script-describe.js.map +1 -0
  228. package/esm/cli/script/script-export.js +55 -0
  229. package/esm/cli/script/script-export.js.map +1 -0
  230. package/esm/cli/script/script-import.js +28 -0
  231. package/esm/cli/script/script-import.js.map +1 -0
  232. package/esm/cli/script/script-list.js +27 -0
  233. package/esm/cli/script/script-list.js.map +1 -0
  234. package/esm/cli/script/script.js +17 -0
  235. package/esm/cli/script/script.js.map +1 -0
  236. package/esm/cli/theme/theme-delete.e2e.test_.js.map +1 -0
  237. package/esm/cli/theme/theme-delete.js +44 -0
  238. package/esm/cli/theme/theme-delete.js.map +1 -0
  239. package/esm/cli/theme/theme-export.js +49 -0
  240. package/esm/cli/theme/theme-export.js.map +1 -0
  241. package/esm/cli/theme/theme-import.js +54 -0
  242. package/esm/cli/theme/theme-import.js.map +1 -0
  243. package/esm/cli/theme/theme-list.e2e.test_.js.map +1 -0
  244. package/esm/cli/theme/theme-list.js +27 -0
  245. package/esm/cli/theme/theme-list.js.map +1 -0
  246. package/esm/cli/theme/theme.js +16 -0
  247. package/esm/cli/theme/theme.js.map +1 -0
  248. package/esm/ops/CirclesOfTrustOps.js +12 -0
  249. package/esm/ops/CirclesOfTrustOps.js.map +1 -0
  250. package/esm/ops/EmailTemplateOps.js +10 -0
  251. package/esm/ops/EmailTemplateOps.js.map +1 -0
  252. package/esm/ops/IdpOps.js +10 -0
  253. package/esm/ops/IdpOps.js.map +1 -0
  254. package/esm/ops/JourneyOps.js +203 -0
  255. package/esm/ops/JourneyOps.js.map +1 -0
  256. package/esm/ops/NodeOps.js +36 -0
  257. package/esm/ops/NodeOps.js.map +1 -0
  258. package/esm/ops/Saml2Ops.js +23 -0
  259. package/esm/ops/Saml2Ops.js.map +1 -0
  260. package/esm/ops/ScriptOps.js +10 -0
  261. package/esm/ops/ScriptOps.js.map +1 -0
  262. package/esm/ops/ThemeOps.js +10 -0
  263. package/esm/ops/ThemeOps.js.map +1 -0
  264. package/esm/ops/utils/Wordwrap.js +5 -0
  265. package/esm/ops/utils/Wordwrap.js.map +1 -0
  266. package/esm/storage/StaticStorage.js +12 -0
  267. package/esm/storage/StaticStorage.js.map +1 -0
  268. package/esm/utils/Config.js +54 -0
  269. package/esm/utils/Config.js.map +1 -0
  270. package/esm/utils/Console.js +532 -0
  271. package/esm/utils/Console.js.map +1 -0
  272. package/package.json +3 -2
@@ -0,0 +1,54 @@
1
+ import fs from 'fs';
2
+ import os from 'os';
3
+ import { Log } from '@rockcarver/frodo-lib';
4
+ import { printMessage } from './Console';
5
+ const {
6
+ defaultNoiseFilter
7
+ } = Log;
8
+ export const FRODO_CONFIG_PATH_KEY = 'FRODO_CONFIG_PATH';
9
+ export const FRODO_LOG_NOISEFILTER_FILENAME = 'LoggingNoiseFilter.json';
10
+ export function getConfigPath() {
11
+ return process.env[FRODO_CONFIG_PATH_KEY] || `${os.homedir()}/.frodo`;
12
+ }
13
+
14
+ function getCustomNoiseFilters() {
15
+ const filename = `${getConfigPath()}/${FRODO_LOG_NOISEFILTER_FILENAME}`;
16
+ let noiseFilter = [];
17
+
18
+ try {
19
+ const data = fs.readFileSync(filename, 'utf8');
20
+ noiseFilter = JSON.parse(data);
21
+ } catch (e) {
22
+ printMessage(`Error reading ${filename} (${e.message})`, 'error');
23
+ }
24
+
25
+ return noiseFilter;
26
+ }
27
+
28
+ export function getNoiseFilters(defaults) {
29
+ const filename = `${getConfigPath()}/${FRODO_LOG_NOISEFILTER_FILENAME}`;
30
+
31
+ if (defaults) {
32
+ printMessage(`Using default logging noise filters.`, 'info');
33
+ return defaultNoiseFilter();
34
+ }
35
+
36
+ let noiseFilter = getCustomNoiseFilters();
37
+
38
+ if (noiseFilter.length > 0) {
39
+ printMessage(`Using custom noise filters from ${filename}`, 'info');
40
+ } else {
41
+ printMessage(`No custom noise filters defined. Using defaults.`, 'info');
42
+ noiseFilter = defaultNoiseFilter();
43
+
44
+ try {
45
+ fs.writeFileSync(filename, JSON.stringify(noiseFilter, null, 2));
46
+ printMessage(`The default filters were saved in ${filename}. You can change the filters as needed.`, 'info');
47
+ } catch (e) {
48
+ printMessage(`Error creating noise filter configuration with default values.`, 'error');
49
+ }
50
+ }
51
+
52
+ return noiseFilter;
53
+ }
54
+ //# sourceMappingURL=Config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.js","names":["fs","os","Log","printMessage","defaultNoiseFilter","FRODO_CONFIG_PATH_KEY","FRODO_LOG_NOISEFILTER_FILENAME","getConfigPath","process","env","homedir","getCustomNoiseFilters","filename","noiseFilter","data","readFileSync","JSON","parse","e","message","getNoiseFilters","defaults","length","writeFileSync","stringify"],"sources":["utils/Config.ts"],"sourcesContent":["import fs from 'fs';\nimport os from 'os';\nimport { Log } from '@rockcarver/frodo-lib';\n\nimport { printMessage } from './Console';\n\nconst { defaultNoiseFilter } = Log;\n\nexport const FRODO_CONFIG_PATH_KEY = 'FRODO_CONFIG_PATH';\nexport const FRODO_LOG_NOISEFILTER_FILENAME = 'LoggingNoiseFilter.json';\n\nexport function getConfigPath(): string {\n return process.env[FRODO_CONFIG_PATH_KEY] || `${os.homedir()}/.frodo`;\n}\n\nfunction getCustomNoiseFilters(): Array<string> {\n const filename = `${getConfigPath()}/${FRODO_LOG_NOISEFILTER_FILENAME}`;\n let noiseFilter = [];\n try {\n const data = fs.readFileSync(filename, 'utf8');\n noiseFilter = JSON.parse(data);\n } catch (e) {\n printMessage(`Error reading ${filename} (${e.message})`, 'error');\n }\n return noiseFilter;\n}\n\nexport function getNoiseFilters(defaults: boolean): Array<string> {\n const filename = `${getConfigPath()}/${FRODO_LOG_NOISEFILTER_FILENAME}`;\n if(defaults) {\n printMessage(`Using default logging noise filters.`, 'info');\n return defaultNoiseFilter();\n }\n let noiseFilter = getCustomNoiseFilters();\n if (noiseFilter.length > 0) {\n printMessage(`Using custom noise filters from ${filename}`, 'info');\n } else {\n printMessage(`No custom noise filters defined. Using defaults.`, 'info');\n noiseFilter = defaultNoiseFilter();\n try {\n fs.writeFileSync(filename, JSON.stringify(noiseFilter, null, 2));\n printMessage(\n `The default filters were saved in ${filename}. You can change the filters as needed.`,\n 'info'\n ); \n } catch (e) {\n printMessage(`Error creating noise filter configuration with default values.`, 'error');\n }\n }\n return noiseFilter;\n}\n\n"],"mappings":"AAAA,OAAOA,EAAP,MAAe,IAAf;AACA,OAAOC,EAAP,MAAe,IAAf;AACA,SAASC,GAAT,QAAoB,uBAApB;AAEA,SAASC,YAAT,QAA6B,WAA7B;AAEA,MAAM;EAAEC;AAAF,IAAyBF,GAA/B;AAEA,OAAO,MAAMG,qBAAqB,GAAG,mBAA9B;AACP,OAAO,MAAMC,8BAA8B,GAAG,yBAAvC;AAEP,OAAO,SAASC,aAAT,GAAiC;EACtC,OAAOC,OAAO,CAACC,GAAR,CAAYJ,qBAAZ,KAAuC,GAAEJ,EAAE,CAACS,OAAH,EAAa,SAA7D;AACD;;AAED,SAASC,qBAAT,GAAgD;EAC9C,MAAMC,QAAQ,GAAI,GAAEL,aAAa,EAAG,IAAGD,8BAA+B,EAAtE;EACA,IAAIO,WAAW,GAAG,EAAlB;;EACA,IAAI;IACF,MAAMC,IAAI,GAAGd,EAAE,CAACe,YAAH,CAAgBH,QAAhB,EAA0B,MAA1B,CAAb;IACAC,WAAW,GAAGG,IAAI,CAACC,KAAL,CAAWH,IAAX,CAAd;EACD,CAHD,CAGE,OAAOI,CAAP,EAAU;IACVf,YAAY,CAAE,iBAAgBS,QAAS,KAAIM,CAAC,CAACC,OAAQ,GAAzC,EAA6C,OAA7C,CAAZ;EACD;;EACD,OAAON,WAAP;AACD;;AAED,OAAO,SAASO,eAAT,CAAyBC,QAAzB,EAA2D;EAChE,MAAMT,QAAQ,GAAI,GAAEL,aAAa,EAAG,IAAGD,8BAA+B,EAAtE;;EACA,IAAGe,QAAH,EAAa;IACXlB,YAAY,CAAE,sCAAF,EAAyC,MAAzC,CAAZ;IACA,OAAOC,kBAAkB,EAAzB;EACD;;EACD,IAAIS,WAAW,GAAGF,qBAAqB,EAAvC;;EACA,IAAIE,WAAW,CAACS,MAAZ,GAAqB,CAAzB,EAA4B;IAC1BnB,YAAY,CAAE,mCAAkCS,QAAS,EAA7C,EAAgD,MAAhD,CAAZ;EACD,CAFD,MAEO;IACLT,YAAY,CAAE,kDAAF,EAAqD,MAArD,CAAZ;IACAU,WAAW,GAAGT,kBAAkB,EAAhC;;IACA,IAAI;MACAJ,EAAE,CAACuB,aAAH,CAAiBX,QAAjB,EAA2BI,IAAI,CAACQ,SAAL,CAAeX,WAAf,EAA4B,IAA5B,EAAkC,CAAlC,CAA3B;MACAV,YAAY,CACT,qCAAoCS,QAAS,yCADpC,EAEV,MAFU,CAAZ;IAIH,CAND,CAME,OAAOM,CAAP,EAAU;MACRf,YAAY,CAAE,gEAAF,EAAmE,OAAnE,CAAZ;IACH;EACF;;EACD,OAAOU,WAAP;AACD"}
@@ -0,0 +1,532 @@
1
+ import { SingleBar, Presets } from 'cli-progress';
2
+ import { createSpinner } from 'nanospinner';
3
+ import Table from 'cli-table3';
4
+ import { state } from '@rockcarver/frodo-lib';
5
+ import Color from 'colors';
6
+ Color.enable();
7
+ /**
8
+ * Output a data message
9
+ * @param {Object} message the message
10
+ */
11
+
12
+ function data(message) {
13
+ switch (typeof message) {
14
+ case 'object':
15
+ console.dir(message, {
16
+ depth: 3
17
+ });
18
+ break;
19
+
20
+ default:
21
+ console.log(message);
22
+ }
23
+ }
24
+ /**
25
+ * Output a text message
26
+ * @param {Object} message the message
27
+ */
28
+
29
+
30
+ function text(message) {
31
+ switch (typeof message) {
32
+ case 'object':
33
+ console.dir(message, {
34
+ depth: 3
35
+ });
36
+ break;
37
+
38
+ default:
39
+ console.error(message);
40
+ }
41
+ }
42
+ /**
43
+ * Output an info message
44
+ * @param {Object} message the message
45
+ */
46
+
47
+
48
+ function info(message) {
49
+ switch (typeof message) {
50
+ case 'object':
51
+ console.dir(message, {
52
+ depth: 3
53
+ });
54
+ break;
55
+
56
+ default:
57
+ console.error(message.brightCyan);
58
+ }
59
+ }
60
+ /**
61
+ * Output a warn message
62
+ * @param {Object} message the message
63
+ */
64
+
65
+
66
+ function warn(message) {
67
+ switch (typeof message) {
68
+ case 'object':
69
+ console.dir(message, {
70
+ depth: 3
71
+ });
72
+ break;
73
+
74
+ default:
75
+ console.error(message.yellow);
76
+ }
77
+ }
78
+ /**
79
+ * Output an error message
80
+ * @param {Object} message the message
81
+ */
82
+
83
+
84
+ function error(message) {
85
+ switch (typeof message) {
86
+ case 'object':
87
+ console.dir(message, {
88
+ depth: 4
89
+ });
90
+ break;
91
+
92
+ default:
93
+ console.error(message.brightRed);
94
+ }
95
+ }
96
+ /**
97
+ * Prints a string message to console
98
+ *
99
+ * @param {string} message The string message to print
100
+ * @param {string} [type=text] "text", "info", "warn", "error" or "data". All but
101
+ * type="data" will be written to stderr.
102
+ * @param {boolean} [newline=true] Whether to add a new at the end of message
103
+ *
104
+ */
105
+
106
+
107
+ export function printMessage(message, type = 'text', newline = true) {
108
+ // if (state.default.session.getItem('scriptFriendly')) {
109
+ switch (type) {
110
+ case 'data':
111
+ if (newline) {
112
+ data(message);
113
+ } else {
114
+ process.stdout.write(message);
115
+ }
116
+
117
+ break;
118
+
119
+ case 'text':
120
+ if (newline) {
121
+ text(message);
122
+ } else {
123
+ process.stderr.write(message);
124
+ }
125
+
126
+ break;
127
+
128
+ case 'info':
129
+ if (newline) {
130
+ info(message);
131
+ } else {
132
+ process.stderr.write(message['brightCyan']);
133
+ }
134
+
135
+ break;
136
+
137
+ case 'warn':
138
+ if (newline) {
139
+ warn(message);
140
+ } else {
141
+ process.stderr.write(message.yellow);
142
+ }
143
+
144
+ break;
145
+
146
+ case 'error':
147
+ if (newline) {
148
+ error(message);
149
+ } else {
150
+ process.stderr.write(message['brightRed']);
151
+ }
152
+
153
+ break;
154
+
155
+ default:
156
+ if (newline) {
157
+ error(message);
158
+ } else {
159
+ process.stderr.write(message['bgBrightRed']);
160
+ }
161
+
162
+ }
163
+ }
164
+ /**
165
+ * Creates a progress bar on stderr
166
+ *
167
+ * Example:
168
+ * [========================================] 100% | 49/49 | Analyzing journey - transactional_auth
169
+ *
170
+ * @param {Number} total The total number of entries to track progress for
171
+ * @param {String} message optional progress bar message
172
+ * @param {Object} options progress bar configuration options
173
+ *
174
+ */
175
+
176
+ export function createProgressBar(total, message = null, options = {
177
+ format: '[{bar}] {percentage}% | {value}/{total} | {data}',
178
+ noTTYOutput: true
179
+ }) {
180
+ let opt = options;
181
+
182
+ if (message == null) {
183
+ opt = {
184
+ format: '[{bar}] {percentage}% | {value}/{total}',
185
+ noTTYOutput: true
186
+ };
187
+ }
188
+
189
+ let pBar = state.default.session.getItem('progressBar');
190
+ if (!pBar) pBar = new SingleBar(opt, Presets.legacy); // create only when needed
191
+
192
+ pBar.start(total, 0, {
193
+ data: message
194
+ });
195
+ state.default.session.setItem('progressBar', pBar);
196
+ }
197
+ /**
198
+ * Updates the progress bar by 1
199
+ * @param {string} message optional message to update the progress bar
200
+ *
201
+ */
202
+
203
+ export function updateProgressBar(message = null) {
204
+ const pBar = state.default.session.getItem('progressBar');
205
+ if (message) pBar.increment({
206
+ data: message
207
+ });else pBar.increment();
208
+ }
209
+ /**
210
+ * Stop and hide the progress bar
211
+ * @param {*} message optional message to update the progress bar
212
+ */
213
+
214
+ export function stopProgressBar(message = null) {
215
+ const pBar = state.default.session.getItem('progressBar');
216
+ if (message) pBar.update({
217
+ data: message
218
+ });
219
+ pBar.stop();
220
+ }
221
+ /**
222
+ * Create the spinner
223
+ * @param {String} message optional spinner message
224
+ */
225
+
226
+ export function showSpinner(message) {
227
+ const spinner = createSpinner(message).start();
228
+ state.default.session.setItem('Spinner', spinner);
229
+ }
230
+ /**
231
+ * Stop the spinner
232
+ * @param {String} message optional message to update the spinner
233
+ */
234
+
235
+ export function stopSpinner(message = null) {
236
+ const spinner = state.default.session.getItem('Spinner');
237
+
238
+ if (spinner) {
239
+ let options = {};
240
+ if (message) options = {
241
+ text: message
242
+ };
243
+ spinner.stop(options);
244
+ }
245
+ }
246
+ /**
247
+ * Succeed the spinner. Stop and render success checkmark with optional message.
248
+ * @param {String} message optional message to update the spinner
249
+ */
250
+
251
+ export function succeedSpinner(message = null) {
252
+ const spinner = state.default.session.getItem('Spinner');
253
+
254
+ if (spinner) {
255
+ let options = {};
256
+ if (message) options = {
257
+ text: message
258
+ };
259
+ spinner.success(options);
260
+ }
261
+ }
262
+ /**
263
+ * Warn the spinner
264
+ * @param {String} message optional message to update the spinner
265
+ */
266
+
267
+ export function warnSpinner(message = null) {
268
+ const spinner = state.default.session.getItem('Spinner');
269
+
270
+ if (spinner) {
271
+ let options = {};
272
+ if (message) options = {
273
+ text: message
274
+ };
275
+ spinner.warn(options);
276
+ }
277
+ }
278
+ /**
279
+ * Fail the spinner
280
+ * @param {String} message optional message to update the spinner
281
+ */
282
+
283
+ export function failSpinner(message = null) {
284
+ const spinner = state.default.session.getItem('Spinner');
285
+
286
+ if (spinner) {
287
+ let options = {};
288
+ if (message) options = {
289
+ text: message
290
+ };
291
+ spinner.error(options);
292
+ }
293
+ }
294
+ /**
295
+ * Spin the spinner
296
+ * @param {String} message optional message to update the spinner
297
+ */
298
+
299
+ export function spinSpinner(message = null) {
300
+ const spinner = state.default.session.getItem('Spinner');
301
+
302
+ if (spinner) {
303
+ let options = {};
304
+ if (message) options = {
305
+ text: message
306
+ };
307
+ spinner.update(options);
308
+ spinner.spin();
309
+ }
310
+ }
311
+ export function createProgressIndicator(type = 'determinate', total = 0, message = null) {
312
+ if (type === 'determinate') {
313
+ createProgressBar(total, message);
314
+ } else {
315
+ showSpinner(message);
316
+ }
317
+ }
318
+ export function updateProgressIndicator(message) {
319
+ const progressBar = state.default.session.getItem('progressBar');
320
+
321
+ if (!progressBar) {
322
+ spinSpinner(message);
323
+ } else {
324
+ updateProgressBar(message);
325
+ }
326
+ }
327
+ export function stopProgressIndicator(message, status = 'none') {
328
+ const progressBar = state.default.session.getItem('progressBar');
329
+
330
+ if (!progressBar) {
331
+ switch (status) {
332
+ case 'none':
333
+ stopSpinner(message);
334
+ break;
335
+
336
+ case 'success':
337
+ succeedSpinner(message);
338
+ break;
339
+
340
+ case 'warn':
341
+ warnSpinner(message);
342
+ break;
343
+
344
+ case 'fail':
345
+ failSpinner(message);
346
+ break;
347
+
348
+ default:
349
+ stopSpinner(message);
350
+ break;
351
+ }
352
+ } else {
353
+ stopProgressBar(message);
354
+ }
355
+ }
356
+ /**
357
+ * Create an empty table
358
+ * @param {string[]} head header row as an array of strings
359
+ * @returns {any} an empty table
360
+ */
361
+
362
+ export function createTable(head) {
363
+ const table = new Table({
364
+ head,
365
+ chars: {
366
+ top: '',
367
+ 'top-mid': '',
368
+ 'top-left': '',
369
+ 'top-right': '',
370
+ bottom: '',
371
+ 'bottom-mid': '',
372
+ 'bottom-left': '',
373
+ 'bottom-right': '',
374
+ left: '',
375
+ 'left-mid': '',
376
+ mid: '',
377
+ 'mid-mid': '',
378
+ right: '',
379
+ 'right-mid': ''
380
+ },
381
+ style: {
382
+ 'padding-left': 0,
383
+ 'padding-right': 0,
384
+ head: ['brightCyan']
385
+ }
386
+ });
387
+ return table;
388
+ }
389
+ /**
390
+ * Create a new key/value table
391
+ * @returns {any} an empty key/value table
392
+ */
393
+
394
+ export function createKeyValueTable() {
395
+ const table = new Table({
396
+ chars: {
397
+ top: '',
398
+ 'top-mid': '',
399
+ 'top-left': '',
400
+ 'top-right': '',
401
+ bottom: '',
402
+ 'bottom-mid': '',
403
+ 'bottom-left': '',
404
+ 'bottom-right': '',
405
+ left: '',
406
+ 'left-mid': '',
407
+ mid: '',
408
+ 'mid-mid': '',
409
+ right: '',
410
+ 'right-mid': ''
411
+ },
412
+ style: {
413
+ 'padding-left': 0,
414
+ 'padding-right': 0
415
+ },
416
+ wordWrap: true
417
+ });
418
+ return table;
419
+ }
420
+ /**
421
+ * Helper function to determine the total depth of an object
422
+ * @param {Object} object input object
423
+ * @returns {Number} total depth of the input object
424
+ */
425
+
426
+ function getObjectDepth(object) {
427
+ return Object(object) === object ? 1 + Math.max(-1, ...Object.values(object).map(getObjectDepth)) : 0;
428
+ }
429
+ /**
430
+ * Helper function to determine if an object has values
431
+ * @param {Object} object input object
432
+ * @returns {boolean} true of the object or any of its sub-objects contain values, false otherwise
433
+ */
434
+
435
+
436
+ function hasValues(object) {
437
+ let has = false;
438
+ const keys = Object.keys(object);
439
+
440
+ for (const key of keys) {
441
+ if (Object(object[key]) !== object[key]) {
442
+ return true;
443
+ }
444
+
445
+ has = has || hasValues(object[key]);
446
+ }
447
+
448
+ return has;
449
+ }
450
+ /**
451
+ * Helper function (recursive) to add rows to an object table
452
+ * @param {object} object object to render
453
+ * @param {number} depth total depth of initial object
454
+ * @param {number} level current level
455
+ * @param {any} table the object table to add the rows to
456
+ * @returns the updated object table
457
+ */
458
+
459
+
460
+ function addRows(object, depth, level, table, keyMap) {
461
+ const space = ' ';
462
+ const keys = Object.keys(object);
463
+
464
+ for (const key of keys) {
465
+ if (Object(object[key]) !== object[key]) {
466
+ if (level === 1) {
467
+ table.push([keyMap[key] ? keyMap[key].brightCyan : key['brightCyan'], object[key]]);
468
+ } else {
469
+ table.push([{
470
+ hAlign: 'right',
471
+ content: keyMap[key] ? keyMap[key].gray : key.gray
472
+ }, object[key]]);
473
+ }
474
+ }
475
+ }
476
+
477
+ for (const key of keys) {
478
+ if (Object(object[key]) === object[key]) {
479
+ // only print header if there are any values below
480
+ if (hasValues(object[key])) {
481
+ let indention = new Array(level).fill(space).join('');
482
+ if (level < 3) indention = `\n${indention}`;
483
+ table.push([indention.concat(keyMap[key] ? keyMap[key].brightCyan : key['brightCyan']), '']);
484
+ } // eslint-disable-next-line no-param-reassign
485
+
486
+
487
+ table = addRows(object[key], depth, level + 1, table, keyMap);
488
+ }
489
+ }
490
+
491
+ return table;
492
+ }
493
+ /**
494
+ * Create and populate an object table from any JSON object. Use for describe commands.
495
+ * @param {Object} object JSON object to create
496
+ * @returns {any} a table that can be printed to the console
497
+ */
498
+
499
+
500
+ export function createObjectTable(object, keyMap = {}) {
501
+ // eslint-disable-next-line no-param-reassign
502
+ const depth = getObjectDepth(object); // eslint-disable-next-line no-param-reassign
503
+
504
+ const level = 0; // eslint-disable-next-line no-param-reassign
505
+
506
+ const table = new Table({
507
+ chars: {
508
+ top: '',
509
+ 'top-mid': '',
510
+ 'top-left': '',
511
+ 'top-right': '',
512
+ bottom: '',
513
+ 'bottom-mid': '',
514
+ 'bottom-left': '',
515
+ 'bottom-right': '',
516
+ left: '',
517
+ 'left-mid': '',
518
+ mid: '',
519
+ 'mid-mid': '',
520
+ right: '',
521
+ 'right-mid': ''
522
+ },
523
+ style: {
524
+ 'padding-left': 0,
525
+ 'padding-right': 0,
526
+ head: ['brightCyan']
527
+ }
528
+ });
529
+ addRows(object, depth, level + 1, table, keyMap);
530
+ return table;
531
+ }
532
+ //# sourceMappingURL=Console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Console.js","names":["SingleBar","Presets","createSpinner","Table","state","Color","enable","data","message","console","dir","depth","log","text","error","info","brightCyan","warn","yellow","brightRed","printMessage","type","newline","process","stdout","write","stderr","createProgressBar","total","options","format","noTTYOutput","opt","pBar","default","session","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","hAlign","content","gray","indention","Array","fill","join","concat","createObjectTable"],"sources":["utils/Console.ts"],"sourcesContent":["import { SingleBar, Presets } from 'cli-progress';\nimport { createSpinner } from 'nanospinner';\nimport Table from 'cli-table3';\nimport { state } from '@rockcarver/frodo-lib';\nimport Color from 'colors';\n\nColor.enable();\n\n/**\n * Output a data message\n * @param {Object} message the message\n */\nfunction data(message) {\n switch (typeof message) {\n case 'object':\n console.dir(message, { depth: 3 });\n break;\n default:\n console.log(message);\n }\n}\n\n/**\n * Output a text message\n * @param {Object} message the message\n */\nfunction text(message) {\n switch (typeof message) {\n case 'object':\n console.dir(message, { depth: 3 });\n break;\n default:\n console.error(message);\n }\n}\n\n/**\n * Output an info message\n * @param {Object} message the message\n */\nfunction info(message) {\n switch (typeof message) {\n case 'object':\n console.dir(message, { depth: 3 });\n break;\n default:\n console.error(message.brightCyan);\n }\n}\n\n/**\n * Output a warn message\n * @param {Object} message the message\n */\nfunction warn(message) {\n switch (typeof message) {\n case 'object':\n console.dir(message, { depth: 3 });\n break;\n default:\n console.error(message.yellow);\n }\n}\n\n/**\n * Output an error message\n * @param {Object} message the message\n */\nfunction error(message) {\n switch (typeof message) {\n case 'object':\n console.dir(message, { depth: 4 });\n break;\n default:\n console.error(message.brightRed);\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 new at the end of message\n *\n */\nexport function printMessage(message, type = 'text', newline = true) {\n // if (state.default.session.getItem('scriptFriendly')) {\n switch (type) {\n case 'data':\n if (newline) {\n data(message);\n } else {\n process.stdout.write(message);\n }\n break;\n case 'text':\n if (newline) {\n text(message);\n } else {\n process.stderr.write(message);\n }\n break;\n case 'info':\n if (newline) {\n info(message);\n } else {\n process.stderr.write(message['brightCyan']);\n }\n break;\n case 'warn':\n if (newline) {\n warn(message);\n } else {\n process.stderr.write(message.yellow);\n }\n break;\n case 'error':\n if (newline) {\n error(message);\n } else {\n process.stderr.write(message['brightRed']);\n }\n break;\n default:\n if (newline) {\n error(message);\n } else {\n process.stderr.write(message['bgBrightRed']);\n }\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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rockcarver/frodo-cli",
3
- "version": "0.15.0",
3
+ "version": "0.15.1",
4
4
  "type": "module",
5
5
  "description": "A command line interface to manage ForgeRock Identity Cloud tenants, ForgeOps deployments, and classic deployments.",
6
6
  "keywords": [
@@ -30,6 +30,7 @@
30
30
  "main": "esm/app.js",
31
31
  "scripts": {
32
32
  "test": "npx tsc && node --experimental-vm-modules node_modules/jest/bin/jest.js",
33
+ "test:local": "npm run build && node --experimental-vm-modules node_modules/jest/bin/jest.js",
33
34
  "test:list": "node --experimental-vm-modules node_modules/jest/bin/jest.js --listTests",
34
35
  "test:e2e": "node --experimental-vm-modules node_modules/jest/bin/jest.js --runInBand e2e",
35
36
  "test:e2e:list": "node --experimental-vm-modules node_modules/jest/bin/jest.js --listTests e2e",
@@ -87,7 +88,7 @@
87
88
  ]
88
89
  },
89
90
  "dependencies": {
90
- "@rockcarver/frodo-lib": "0.13.1",
91
+ "@rockcarver/frodo-lib": "0.13.2-0",
91
92
  "cli-progress": "^3.11.2",
92
93
  "cli-table3": "^0.6.2",
93
94
  "colors": "^1.4.0",