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

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 (250) hide show
  1. package/CHANGELOG.md +10 -1
  2. package/esm/app.js +7 -2
  3. package/esm/app.js.map +1 -1
  4. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js +3 -6
  5. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
  6. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js +46 -51
  7. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  8. package/esm/cli/admin/admin-federation-export.js +1 -1
  9. package/esm/cli/admin/admin-federation-export.js.map +1 -1
  10. package/esm/cli/admin/admin-federation-import.js +1 -1
  11. package/esm/cli/admin/admin-federation-import.js.map +1 -1
  12. package/esm/cli/admin/admin-federation-list.js +1 -1
  13. package/esm/cli/admin/admin-federation-list.js.map +1 -1
  14. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js +4 -6
  15. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  16. package/esm/cli/admin/admin-hide-generic-extension-attributes.js +4 -6
  17. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  18. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js +4 -9
  19. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  20. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js +4 -9
  21. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  22. package/esm/cli/admin/admin-list-static-user-mappings.js +3 -9
  23. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  24. package/esm/cli/admin/admin-remove-static-user-mapping.js +3 -6
  25. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  26. package/esm/cli/admin/admin-repair-org-model.js +4 -6
  27. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  28. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js +4 -6
  29. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  30. package/esm/cli/admin/admin-show-generic-extension-attributes.js +4 -6
  31. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  32. package/esm/cli/agent/agent-delete.js +8 -21
  33. package/esm/cli/agent/agent-delete.js.map +1 -1
  34. package/esm/cli/agent/agent-export.js +6 -3
  35. package/esm/cli/agent/agent-export.js.map +1 -1
  36. package/esm/cli/agent/agent-gateway-delete.js +7 -20
  37. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  38. package/esm/cli/agent/agent-gateway-export.js +6 -3
  39. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  40. package/esm/cli/agent/agent-gateway-import.js +8 -4
  41. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  42. package/esm/cli/agent/agent-gateway-list.js +2 -1
  43. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  44. package/esm/cli/agent/agent-import.js +8 -4
  45. package/esm/cli/agent/agent-import.js.map +1 -1
  46. package/esm/cli/agent/agent-java-delete.js +7 -20
  47. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  48. package/esm/cli/agent/agent-java-export.js +6 -3
  49. package/esm/cli/agent/agent-java-export.js.map +1 -1
  50. package/esm/cli/agent/agent-java-import.js +8 -4
  51. package/esm/cli/agent/agent-java-import.js.map +1 -1
  52. package/esm/cli/agent/agent-java-list.js +2 -1
  53. package/esm/cli/agent/agent-java-list.js.map +1 -1
  54. package/esm/cli/agent/agent-list.js +2 -1
  55. package/esm/cli/agent/agent-list.js.map +1 -1
  56. package/esm/cli/agent/agent-web-delete.js +7 -20
  57. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  58. package/esm/cli/agent/agent-web-export.js +6 -3
  59. package/esm/cli/agent/agent-web-export.js.map +1 -1
  60. package/esm/cli/agent/agent-web-import.js +8 -4
  61. package/esm/cli/agent/agent-web-import.js.map +1 -1
  62. package/esm/cli/agent/agent-web-list.js +2 -1
  63. package/esm/cli/agent/agent-web-list.js.map +1 -1
  64. package/esm/cli/app/app-delete.js +4 -4
  65. package/esm/cli/app/app-delete.js.map +1 -1
  66. package/esm/cli/app/app-export.js +6 -6
  67. package/esm/cli/app/app-export.js.map +1 -1
  68. package/esm/cli/app/app-import.js +8 -8
  69. package/esm/cli/app/app-import.js.map +1 -1
  70. package/esm/cli/app/app-list.js +2 -1
  71. package/esm/cli/app/app-list.js.map +1 -1
  72. package/esm/cli/conn/conn-delete.js +7 -1
  73. package/esm/cli/conn/conn-delete.js.map +1 -1
  74. package/esm/cli/conn/conn-save.js +9 -9
  75. package/esm/cli/conn/conn-save.js.map +1 -1
  76. package/esm/cli/email/email-template-export.js +6 -3
  77. package/esm/cli/email/email-template-export.js.map +1 -1
  78. package/esm/cli/email/email-template-import.js +8 -4
  79. package/esm/cli/email/email-template-import.js.map +1 -1
  80. package/esm/cli/email/email-template-list.js +2 -1
  81. package/esm/cli/email/email-template-list.js.map +1 -1
  82. package/esm/cli/esv/esv-secret-create.js +1 -1
  83. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  84. package/esm/cli/esv/esv-secret-delete.js +1 -1
  85. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  86. package/esm/cli/esv/esv-secret-describe.js +1 -1
  87. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  88. package/esm/cli/esv/esv-secret-export.js +1 -1
  89. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  90. package/esm/cli/esv/esv-secret-list.js +1 -1
  91. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  92. package/esm/cli/esv/esv-secret-set.js +1 -1
  93. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  94. package/esm/cli/esv/esv-secret-version-activate.js +1 -1
  95. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  96. package/esm/cli/esv/esv-secret-version-create.js +1 -1
  97. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  98. package/esm/cli/esv/esv-secret-version-deactivate.js +1 -1
  99. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  100. package/esm/cli/esv/esv-secret-version-delete.js +1 -1
  101. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  102. package/esm/cli/esv/esv-secret-version-list.js +1 -1
  103. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  104. package/esm/cli/esv/esv-variable-create.js +1 -1
  105. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  106. package/esm/cli/esv/esv-variable-delete.js +1 -1
  107. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  108. package/esm/cli/esv/esv-variable-describe.js +1 -1
  109. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  110. package/esm/cli/esv/esv-variable-export.js +1 -1
  111. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  112. package/esm/cli/esv/esv-variable-list.js +1 -1
  113. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  114. package/esm/cli/esv/esv-variable-set.js +1 -1
  115. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  116. package/esm/cli/idm/idm-count.js +2 -1
  117. package/esm/cli/idm/idm-count.js.map +1 -1
  118. package/esm/cli/idm/idm-export.js +6 -3
  119. package/esm/cli/idm/idm-export.js.map +1 -1
  120. package/esm/cli/idm/idm-import.js +8 -4
  121. package/esm/cli/idm/idm-import.js.map +1 -1
  122. package/esm/cli/idm/idm-list.js +2 -1
  123. package/esm/cli/idm/idm-list.js.map +1 -1
  124. package/esm/cli/idp/idp-export.js +6 -3
  125. package/esm/cli/idp/idp-export.js.map +1 -1
  126. package/esm/cli/idp/idp-import.js +8 -4
  127. package/esm/cli/idp/idp-import.js.map +1 -1
  128. package/esm/cli/idp/idp-list.js +2 -1
  129. package/esm/cli/idp/idp-list.js.map +1 -1
  130. package/esm/cli/journey/journey-delete.js +6 -7
  131. package/esm/cli/journey/journey-delete.js.map +1 -1
  132. package/esm/cli/journey/journey-describe.js +15 -9
  133. package/esm/cli/journey/journey-describe.js.map +1 -1
  134. package/esm/cli/journey/journey-export.js +6 -3
  135. package/esm/cli/journey/journey-export.js.map +1 -1
  136. package/esm/cli/journey/journey-import.js +8 -4
  137. package/esm/cli/journey/journey-import.js.map +1 -1
  138. package/esm/cli/journey/journey-list.js +2 -1
  139. package/esm/cli/journey/journey-list.js.map +1 -1
  140. package/esm/cli/journey/journey-prune.js +3 -2
  141. package/esm/cli/journey/journey-prune.js.map +1 -1
  142. package/esm/cli/log/log-fetch.js +6 -2
  143. package/esm/cli/log/log-fetch.js.map +1 -1
  144. package/esm/cli/log/log-list.js +12 -3
  145. package/esm/cli/log/log-list.js.map +1 -1
  146. package/esm/cli/log/log-tail.js +6 -2
  147. package/esm/cli/log/log-tail.js.map +1 -1
  148. package/esm/cli/oauth/oauth-client-export.js +6 -6
  149. package/esm/cli/oauth/oauth-client-export.js.map +1 -1
  150. package/esm/cli/oauth/oauth-client-import.js +8 -8
  151. package/esm/cli/oauth/oauth-client-import.js.map +1 -1
  152. package/esm/cli/oauth/oauth-client-list.js +2 -1
  153. package/esm/cli/oauth/oauth-client-list.js.map +1 -1
  154. package/esm/cli/saml/saml-describe.js +2 -1
  155. package/esm/cli/saml/saml-describe.js.map +1 -1
  156. package/esm/cli/saml/saml-export.js +6 -3
  157. package/esm/cli/saml/saml-export.js.map +1 -1
  158. package/esm/cli/saml/saml-import.js +8 -4
  159. package/esm/cli/saml/saml-import.js.map +1 -1
  160. package/esm/cli/saml/saml-list.js +2 -1
  161. package/esm/cli/saml/saml-list.js.map +1 -1
  162. package/esm/cli/saml/saml-metadata-export.js +10 -2
  163. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  164. package/esm/cli/script/script-delete.js +10 -4
  165. package/esm/cli/script/script-delete.js.map +1 -1
  166. package/esm/cli/script/script-export.js +9 -13
  167. package/esm/cli/script/script-export.js.map +1 -1
  168. package/esm/cli/script/script-import.js +19 -14
  169. package/esm/cli/script/script-import.js.map +1 -1
  170. package/esm/cli/service/service-delete.js +4 -2
  171. package/esm/cli/service/service-delete.js.map +1 -1
  172. package/esm/cli/service/service-export.js +6 -3
  173. package/esm/cli/service/service-export.js.map +1 -1
  174. package/esm/cli/service/service-import.js +8 -4
  175. package/esm/cli/service/service-import.js.map +1 -1
  176. package/esm/cli/service/service-list.js +2 -1
  177. package/esm/cli/service/service-list.js.map +1 -1
  178. package/esm/cli/shell/shell.js +2 -4
  179. package/esm/cli/shell/shell.js.map +1 -1
  180. package/esm/cli/theme/theme-delete.js +7 -4
  181. package/esm/cli/theme/theme-delete.js.map +1 -1
  182. package/esm/cli/theme/theme-export.js +8 -4
  183. package/esm/cli/theme/theme-export.js.map +1 -1
  184. package/esm/cli/theme/theme-import.js +10 -5
  185. package/esm/cli/theme/theme-import.js.map +1 -1
  186. package/esm/cli/theme/theme-list.js +2 -1
  187. package/esm/cli/theme/theme-list.js.map +1 -1
  188. package/esm/ops/AdminOps.js +790 -3
  189. package/esm/ops/AdminOps.js.map +1 -1
  190. package/esm/ops/AgentOps.js +638 -305
  191. package/esm/ops/AgentOps.js.map +1 -1
  192. package/esm/ops/ApplicationOps.js +91 -79
  193. package/esm/ops/ApplicationOps.js.map +1 -1
  194. package/esm/ops/AuthenticateOps.js +4 -9
  195. package/esm/ops/AuthenticateOps.js.map +1 -1
  196. package/esm/ops/AuthenticationSettingsOps.js +22 -23
  197. package/esm/ops/AuthenticationSettingsOps.js.map +1 -1
  198. package/esm/ops/CirclesOfTrustOps.js +52 -55
  199. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  200. package/esm/ops/ConfigOps.js +100 -84
  201. package/esm/ops/ConfigOps.js.map +1 -1
  202. package/esm/ops/ConnectionProfileOps.js +9 -7
  203. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  204. package/esm/ops/EmailTemplateOps.js +64 -47
  205. package/esm/ops/EmailTemplateOps.js.map +1 -1
  206. package/esm/ops/IdmOps.js +149 -117
  207. package/esm/ops/IdmOps.js.map +1 -1
  208. package/esm/ops/IdpOps.js +76 -46
  209. package/esm/ops/IdpOps.js.map +1 -1
  210. package/esm/ops/JourneyOps.js +333 -238
  211. package/esm/ops/JourneyOps.js.map +1 -1
  212. package/esm/ops/LogOps.js +15 -23
  213. package/esm/ops/LogOps.js.map +1 -1
  214. package/esm/ops/OAuth2ClientOps.js +43 -36
  215. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  216. package/esm/ops/PolicyOps.js +104 -108
  217. package/esm/ops/PolicyOps.js.map +1 -1
  218. package/esm/ops/PolicySetOps.js +72 -78
  219. package/esm/ops/PolicySetOps.js.map +1 -1
  220. package/esm/ops/ResourceTypeOps.js +84 -99
  221. package/esm/ops/ResourceTypeOps.js.map +1 -1
  222. package/esm/ops/Saml2Ops.js +132 -88
  223. package/esm/ops/Saml2Ops.js.map +1 -1
  224. package/esm/ops/ScriptOps.js +90 -80
  225. package/esm/ops/ScriptOps.js.map +1 -1
  226. package/esm/ops/ServiceOps.js +125 -87
  227. package/esm/ops/ServiceOps.js.map +1 -1
  228. package/esm/ops/ThemeOps.js +170 -139
  229. package/esm/ops/ThemeOps.js.map +1 -1
  230. package/esm/ops/{AdminFederationOps.js → cloud/AdminFederationOps.js} +10 -16
  231. package/esm/ops/cloud/AdminFederationOps.js.map +1 -0
  232. package/esm/ops/{SecretsOps.js → cloud/SecretsOps.js} +123 -129
  233. package/esm/ops/cloud/SecretsOps.js.map +1 -0
  234. package/esm/ops/{VariablesOps.js → cloud/VariablesOps.js} +48 -52
  235. package/esm/ops/cloud/VariablesOps.js.map +1 -0
  236. package/esm/ops/templates/OAuth2ClientTemplate.json +270 -0
  237. package/esm/ops/templates/OAuth2TrustedJwtIssuerTemplate.json +38 -0
  238. package/esm/ops/templates/OrgModelUserAttributesTemplate.json +149 -0
  239. package/esm/ops/templates/autoaccess/IPAddresses.json +202 -0
  240. package/esm/ops/templates/autoaccess/UserAgents.json +35 -0
  241. package/esm/ops/templates/autoaccess/Usernames.json +203 -0
  242. package/esm/ops/templates/cloud/GenericExtensionAttributesTemplate.json +392 -0
  243. package/esm/ops/templates/cloud/managed.json +4119 -0
  244. package/esm/ops/utils/OpsUtils.js.map +1 -1
  245. package/esm/utils/Console.js +31 -0
  246. package/esm/utils/Console.js.map +1 -1
  247. package/package.json +10 -6
  248. package/esm/ops/AdminFederationOps.js.map +0 -1
  249. package/esm/ops/SecretsOps.js.map +0 -1
  250. package/esm/ops/VariablesOps.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { frodo } from '@rockcarver/frodo-lib';
2
2
  import fs from 'fs';
3
- import { createProgressIndicator, debugMessage, printMessage, stopProgressIndicator, updateProgressIndicator } from '../utils/Console';
3
+ import { createProgressIndicator, debugMessage, printError, printMessage, stopProgressIndicator, updateProgressIndicator } from '../../utils/Console';
4
4
  const {
5
5
  readAdminFederationProviders,
6
6
  exportAdminFederationProvider,
@@ -30,8 +30,7 @@ export async function listAdminFederationProviders() {
30
30
  });
31
31
  outcome = true;
32
32
  } catch (err) {
33
- printMessage(`listAdminFederationProviders ERROR: ${err.message}`, 'error');
34
- printMessage(err, 'error');
33
+ printError(err);
35
34
  }
36
35
  return outcome;
37
36
  }
@@ -59,7 +58,7 @@ export async function exportAdminFederationProviderToFile(providerId, file = '',
59
58
  outcome = true;
60
59
  } catch (err) {
61
60
  stopProgressIndicator(indicatorId, `${err}`);
62
- printMessage(`${err}`, 'error');
61
+ printError(err);
63
62
  }
64
63
  return outcome;
65
64
  }
@@ -84,9 +83,8 @@ export async function exportAdminFederationProvidersToFile(file = '', includeMet
84
83
  stopProgressIndicator(spinnerId, `Exported all providers to ${filePath}`, 'success');
85
84
  outcome = true;
86
85
  } catch (error) {
87
- var _error$response;
88
86
  stopProgressIndicator(spinnerId, `Error exporting all providers.`, 'fail');
89
- printMessage(((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data) || error, 'error');
87
+ printError(error);
90
88
  }
91
89
  return outcome;
92
90
  }
@@ -111,9 +109,8 @@ export async function exportAdminFederationProvidersToFiles(includeMeta = true)
111
109
  stopProgressIndicator(indicatorId, `${allIdpsData.length} providers exported.`);
112
110
  outcome = true;
113
111
  } catch (error) {
114
- var _error$response2;
115
112
  stopProgressIndicator(indicatorId, `Error exporting all providers.`, 'fail');
116
- printMessage(((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.data) || error, 'error');
113
+ printError(error);
117
114
  }
118
115
  return outcome;
119
116
  }
@@ -135,9 +132,8 @@ export async function importAdminFederationProviderFromFile(providerId, file) {
135
132
  stopProgressIndicator(spinnerId, `Successfully imported provider ${providerId} from ${filePath}.`, 'success');
136
133
  outcome = true;
137
134
  } catch (error) {
138
- var _error$response3;
139
135
  stopProgressIndicator(spinnerId, `Error importing provider ${providerId} from ${filePath}.`, 'fail');
140
- printMessage(((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.data) || error, 'error');
136
+ printError(error);
141
137
  }
142
138
  return outcome;
143
139
  }
@@ -159,9 +155,8 @@ export async function importFirstAdminFederationProviderFromFile(file) {
159
155
  stopProgressIndicator(spinnerId, `Successfully imported first provider from ${filePath}.`, 'success');
160
156
  outcome = true;
161
157
  } catch (error) {
162
- var _error$response4;
163
158
  stopProgressIndicator(spinnerId, `Error importing first provider from ${filePath}.`, 'fail');
164
- printMessage(((_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : _error$response4.data) || error, 'error');
159
+ printError(error);
165
160
  }
166
161
  debugMessage(`cli.AdminFederationOps.importFirstAdminFederationProviderFromFile: end`);
167
162
  return outcome;
@@ -184,9 +179,8 @@ export async function importAdminFederationProvidersFromFile(file) {
184
179
  stopProgressIndicator(spinnerId, `Imported providers from ${filePath}.`, 'success');
185
180
  outcome = true;
186
181
  } catch (error) {
187
- var _error$response5;
188
182
  stopProgressIndicator(spinnerId, `Error importing ${filePath}.`, 'fail');
189
- printMessage(((_error$response5 = error.response) === null || _error$response5 === void 0 ? void 0 : _error$response5.data) || error, 'error');
183
+ printError(error);
190
184
  }
191
185
  debugMessage(`cli.AdminFederationOps.importAdminFederationProvidersFromFile: end`);
192
186
  return outcome;
@@ -216,14 +210,14 @@ export async function importAdminFederationProvidersFromFiles() {
216
210
  } catch (error) {
217
211
  errors.push(error);
218
212
  updateProgressIndicator(indicatorId, `Error importing provider(s) from ${file}`);
219
- printMessage(error, 'error');
213
+ printError(error);
220
214
  }
221
215
  }
222
216
  stopProgressIndicator(indicatorId, `Finished importing ${total} provider(s) from ${files.length} file(s).`);
223
217
  } catch (error) {
224
218
  errors.push(error);
225
219
  stopProgressIndicator(indicatorId, `Error importing provider(s) from file(s).`);
226
- printMessage(error, 'error');
220
+ printError(error);
227
221
  }
228
222
  debugMessage(`cli.AdminFederationOps.importAdminFederationProvidersFromFiles: end`);
229
223
  return 0 === errors.length;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminFederationOps.js","names":["frodo","fs","createProgressIndicator","debugMessage","printError","printMessage","stopProgressIndicator","updateProgressIndicator","readAdminFederationProviders","exportAdminFederationProvider","exportAdminFederationProviders","importAdminFederationProvider","importAdminFederationProviders","importFirstAdminFederationProvider","cloud","adminFed","getTypedFilename","saveJsonToFile","getFilePath","getWorkingDirectory","utils","listAdminFederationProviders","outcome","providers","sort","a","b","_id","localeCompare","forEach","socialIdentityProvider","err","exportAdminFederationProviderToFile","providerId","file","includeMeta","fileName","filePath","indicatorId","fileData","exportAdminFederationProvidersToFile","spinnerId","error","exportAdminFederationProvidersToFiles","allIdpsData","length","idpData","importAdminFederationProviderFromFile","data","readFileSync","JSON","parse","importFirstAdminFederationProviderFromFile","importAdminFederationProvidersFromFile","importAdminFederationProvidersFromFiles","errors","names","readdirSync","files","filter","name","toLowerCase","endsWith","map","total","count","Object","keys","idp","push"],"sources":["../../../src/ops/cloud/AdminFederationOps.ts"],"sourcesContent":["import { frodo } from '@rockcarver/frodo-lib';\nimport fs from 'fs';\n\nimport {\n createProgressIndicator,\n debugMessage,\n printError,\n printMessage,\n stopProgressIndicator,\n updateProgressIndicator,\n} from '../../utils/Console';\n\nconst {\n readAdminFederationProviders,\n exportAdminFederationProvider,\n exportAdminFederationProviders,\n importAdminFederationProvider,\n importAdminFederationProviders,\n importFirstAdminFederationProvider,\n} = frodo.cloud.adminFed;\n\nconst { getTypedFilename, saveJsonToFile, getFilePath, getWorkingDirectory } =\n frodo.utils;\n\n/**\n * List providers\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listAdminFederationProviders(): Promise<boolean> {\n let outcome = false;\n try {\n const providers = await readAdminFederationProviders();\n providers.sort((a, b) => a._id.localeCompare(b._id));\n providers.forEach((socialIdentityProvider) => {\n printMessage(`${socialIdentityProvider._id}`, 'data');\n });\n outcome = true;\n } catch (err) {\n printError(err);\n }\n return outcome;\n}\n\n/**\n * Export provider by id\n * @param {string} providerId provider id/name\n * @param {string} file optional export file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportAdminFederationProviderToFile(\n providerId: string,\n file = '',\n includeMeta = true\n): Promise<boolean> {\n let outcome = false;\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(providerId, 'admin.federation');\n }\n const filePath = getFilePath(fileName, true);\n const indicatorId = createProgressIndicator(\n 'determinate',\n 1,\n `Exporting ${providerId}`\n );\n try {\n updateProgressIndicator(indicatorId, `Writing file ${filePath}`);\n const fileData = await exportAdminFederationProvider(providerId);\n saveJsonToFile(fileData, filePath, includeMeta);\n stopProgressIndicator(\n indicatorId,\n `Exported ${providerId['brightCyan']} to ${filePath['brightCyan']}.`\n );\n outcome = true;\n } catch (err) {\n stopProgressIndicator(indicatorId, `${err}`);\n printError(err);\n }\n return outcome;\n}\n\n/**\n * Export all providers\n * @param {string} file optional export file name\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportAdminFederationProvidersToFile(\n file = '',\n includeMeta = true\n): Promise<boolean> {\n let outcome = false;\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Exporting all providers...`\n );\n try {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(`allProviders`, 'admin.federation');\n }\n const filePath = getFilePath(fileName, true);\n const fileData = await exportAdminFederationProviders();\n saveJsonToFile(fileData, filePath, includeMeta);\n stopProgressIndicator(\n spinnerId,\n `Exported all providers to ${filePath}`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(spinnerId, `Error exporting all providers.`, 'fail');\n printError(error);\n }\n return outcome;\n}\n\n/**\n * Export all providers to individual files\n * @param {boolean} includeMeta true to include metadata, false otherwise. Default: true\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportAdminFederationProvidersToFiles(\n includeMeta = true\n): Promise<boolean> {\n let outcome = false;\n let indicatorId: string;\n try {\n const allIdpsData = await readAdminFederationProviders();\n indicatorId = createProgressIndicator(\n 'determinate',\n allIdpsData.length,\n 'Exporting providers'\n );\n for (const idpData of allIdpsData) {\n updateProgressIndicator(indicatorId, `Writing provider ${idpData._id}`);\n const fileName = getTypedFilename(idpData._id, 'admin.federation');\n const fileData = await exportAdminFederationProvider(idpData._id);\n saveJsonToFile(fileData, getFilePath(fileName, true), includeMeta);\n }\n stopProgressIndicator(\n indicatorId,\n `${allIdpsData.length} providers exported.`\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n indicatorId,\n `Error exporting all providers.`,\n 'fail'\n );\n printError(error);\n }\n return outcome;\n}\n\n/**\n * Import provider by id/name\n * @param {string} providerId provider id/name\n * @param {string} file import file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importAdminFederationProviderFromFile(\n providerId: string,\n file: string\n): Promise<boolean> {\n let outcome = false;\n const filePath = getFilePath(file);\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing provider ${providerId} from ${filePath}...`\n );\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importAdminFederationProvider(providerId, fileData);\n stopProgressIndicator(\n spinnerId,\n `Successfully imported provider ${providerId} from ${filePath}.`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error importing provider ${providerId} from ${filePath}.`,\n 'fail'\n );\n printError(error);\n }\n return outcome;\n}\n\n/**\n * Import first provider from file\n * @param {String} file import file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstAdminFederationProviderFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(\n `cli.AdminFederationOps.importFirstAdminFederationProviderFromFile: begin`\n );\n const filePath = getFilePath(file);\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing first provider from ${filePath}...`\n );\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstAdminFederationProvider(fileData);\n stopProgressIndicator(\n spinnerId,\n `Successfully imported first provider from ${filePath}.`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(\n spinnerId,\n `Error importing first provider from ${filePath}.`,\n 'fail'\n );\n printError(error);\n }\n debugMessage(\n `cli.AdminFederationOps.importFirstAdminFederationProviderFromFile: end`\n );\n return outcome;\n}\n\n/**\n * Import all providers from file\n * @param {string} file import file name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importAdminFederationProvidersFromFile(\n file: string\n): Promise<boolean> {\n let outcome = false;\n debugMessage(\n `cli.AdminFederationOps.importAdminFederationProvidersFromFile: begin`\n );\n const filePath = getFilePath(file);\n const spinnerId = createProgressIndicator(\n 'indeterminate',\n 0,\n `Importing providers from ${filePath}...`\n );\n try {\n const data = fs.readFileSync(filePath, 'utf8');\n const fileData = JSON.parse(data);\n await importAdminFederationProviders(fileData);\n stopProgressIndicator(\n spinnerId,\n `Imported providers from ${filePath}.`,\n 'success'\n );\n outcome = true;\n } catch (error) {\n stopProgressIndicator(spinnerId, `Error importing ${filePath}.`, 'fail');\n printError(error);\n }\n debugMessage(\n `cli.AdminFederationOps.importAdminFederationProvidersFromFile: end`\n );\n return outcome;\n}\n\n/**\n * Import providers from *.idp.json files in current working directory\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importAdminFederationProvidersFromFiles(): Promise<boolean> {\n const errors = [];\n let indicatorId: string;\n try {\n debugMessage(\n `cli.AdminFederationOps.importAdminFederationProvidersFromFiles: begin`\n );\n const names = fs.readdirSync(getWorkingDirectory());\n const files = names\n .filter((name) => name.toLowerCase().endsWith('.admin.federation.json'))\n .map((name) => getFilePath(name));\n indicatorId = createProgressIndicator(\n 'determinate',\n files.length,\n 'Importing providers...'\n );\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n const count = Object.keys(fileData.idp).length;\n total += count;\n await importAdminFederationProviders(fileData);\n updateProgressIndicator(\n indicatorId,\n `Imported ${count} provider(s) from ${file}`\n );\n } catch (error) {\n errors.push(error);\n updateProgressIndicator(\n indicatorId,\n `Error importing provider(s) from ${file}`\n );\n printError(error);\n }\n }\n stopProgressIndicator(\n indicatorId,\n `Finished importing ${total} provider(s) from ${files.length} file(s).`\n );\n } catch (error) {\n errors.push(error);\n stopProgressIndicator(\n indicatorId,\n `Error importing provider(s) from file(s).`\n );\n printError(error);\n }\n debugMessage(\n `cli.AdminFederationOps.importAdminFederationProvidersFromFiles: end`\n );\n return 0 === errors.length;\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { frodo, state } from '@rockcarver/frodo-lib';
2
2
  import fs from 'fs';
3
- import { getFullExportConfig, isIdUsed } from '../utils/Config';
4
- import { createKeyValueTable, createProgressIndicator, createTable, debugMessage, printMessage, stopProgressIndicator, updateProgressIndicator } from '../utils/Console';
5
- import wordwrap from './utils/Wordwrap';
3
+ import { getFullExportConfig, isIdUsed } from '../../utils/Config';
4
+ import { createKeyValueTable, createProgressIndicator, createTable, debugMessage, printError, printMessage, stopProgressIndicator, updateProgressIndicator } from '../../utils/Console';
5
+ import wordwrap from '../utils/Wordwrap';
6
6
  const {
7
7
  resolveUserName
8
8
  } = frodo.idm.managed;
@@ -44,8 +44,8 @@ export async function listSecrets(long = false, usage = false, file = null) {
44
44
  secrets.sort((a, b) => a._id.localeCompare(b._id));
45
45
  stopProgressIndicator(spinnerId, `Successfully read ${secrets.length} secrets.`, 'success');
46
46
  } catch (error) {
47
- var _error$response;
48
- stopProgressIndicator(spinnerId, `Error reading secrets: ${((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data) || error.message}`, 'fail');
47
+ stopProgressIndicator(spinnerId, `Error reading secrets`, 'fail');
48
+ printError(error);
49
49
  return false;
50
50
  }
51
51
  if (!long && !usage) {
@@ -66,8 +66,7 @@ export async function listSecrets(long = false, usage = false, file = null) {
66
66
  try {
67
67
  fullExport = await getFullExportConfig(file);
68
68
  } catch (error) {
69
- var _error$response2;
70
- printMessage(`Error getting full export: ${((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.data) || error.message}`, 'error');
69
+ printError(error);
71
70
  return false;
72
71
  }
73
72
  //Delete secrets from full export so they aren't mistakenly used for determining usage
@@ -118,7 +117,8 @@ export async function createSecret(id, value, description, encoding, useInPlaceh
118
117
  stopProgressIndicator(spinnerId, `Created secret ${id}`, 'success');
119
118
  outcome = true;
120
119
  } catch (error) {
121
- stopProgressIndicator(spinnerId, error.response ? `Error: ${error.response.data.code} - ${error.response.data.message}` : error, 'fail');
120
+ stopProgressIndicator(spinnerId, `Error creating secret ${id}`, 'fail');
121
+ printError(error);
122
122
  }
123
123
  return outcome;
124
124
  }
@@ -141,7 +141,8 @@ export async function createSecretFromFile(id, file, description, encoding, useI
141
141
  stopProgressIndicator(spinnerId, `Created secret ${id}`, 'success');
142
142
  outcome = true;
143
143
  } catch (error) {
144
- stopProgressIndicator(spinnerId, error.response ? `Error: ${error.response.data.code} - ${error.response.data.message}` : error, 'fail');
144
+ stopProgressIndicator(spinnerId, `Error creating secret ${id} from file ${getFilePath(file)}`, 'fail');
145
+ printError(error);
145
146
  }
146
147
  return outcome;
147
148
  }
@@ -160,7 +161,8 @@ export async function setSecretDescription(secretId, description) {
160
161
  stopProgressIndicator(spinnerId, `Set description of secret ${secretId}`, 'success');
161
162
  outcome = true;
162
163
  } catch (error) {
163
- stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
164
+ stopProgressIndicator(spinnerId, `Error creating secret ${secretId}`, 'fail');
165
+ printError(error);
164
166
  }
165
167
  return outcome;
166
168
  }
@@ -178,7 +180,8 @@ export async function deleteSecret(secretId) {
178
180
  stopProgressIndicator(spinnerId, `Deleted secret ${secretId}`, 'success');
179
181
  outcome = true;
180
182
  } catch (error) {
181
- stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
183
+ stopProgressIndicator(spinnerId, `Error deleting secret ${secretId}`, 'fail');
184
+ printError(error);
182
185
  }
183
186
  return outcome;
184
187
  }
@@ -188,33 +191,27 @@ export async function deleteSecret(secretId) {
188
191
  * @returns {Promise<boolean>} true if successful, false otherwise
189
192
  */
190
193
  export async function deleteSecrets() {
191
- let outcome = false;
192
- let secrets = [];
193
194
  const spinnerId = createProgressIndicator('indeterminate', 0, `Reading secrets...`);
194
195
  try {
195
- secrets = await readSecrets();
196
+ const secrets = await readSecrets();
196
197
  secrets.sort((a, b) => a._id.localeCompare(b._id));
197
198
  stopProgressIndicator(spinnerId, `Successfully read ${secrets.length} secrets.`, 'success');
198
- } catch (error) {
199
- var _error$response3;
200
- stopProgressIndicator(spinnerId, `Error reading secrets: ${((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.data) || error.message}`, 'fail');
201
- }
202
- const indicatorId = createProgressIndicator('determinate', secrets.length, `Deleting secrets...`);
203
- try {
199
+ const indicatorId = createProgressIndicator('determinate', secrets.length, `Deleting secrets...`);
204
200
  for (const secret of secrets) {
205
201
  try {
206
202
  await _deleteSecret(secret._id);
207
203
  updateProgressIndicator(indicatorId, `Deleted secret ${secret._id}`);
208
204
  } catch (error) {
209
- printMessage(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'error');
205
+ printError(error);
210
206
  }
211
207
  }
212
208
  stopProgressIndicator(indicatorId, `Secrets deleted.`);
213
- outcome = true;
209
+ return true;
214
210
  } catch (error) {
215
- printMessage(`Error: ${error.response.data.code} - ${error.response.data.message}`, 'error');
211
+ stopProgressIndicator(spinnerId, `Error deleting secrets`, 'fail');
212
+ printError(error);
216
213
  }
217
- return outcome;
214
+ return false;
218
215
  }
219
216
 
220
217
  /**
@@ -223,35 +220,34 @@ export async function deleteSecrets() {
223
220
  * @returns {Promise<boolean>} true if successful, false otherwise
224
221
  */
225
222
  export async function listSecretVersions(secretId) {
226
- let outcome = false;
227
223
  let spinnerId;
228
224
  let versions = [];
229
225
  try {
230
226
  spinnerId = createProgressIndicator('indeterminate', 0, `Reading secret versions...`);
231
227
  versions = await readVersionsOfSecret(secretId);
232
228
  stopProgressIndicator(spinnerId, `Successfully read ${versions.length} secret versions.`, 'success');
233
- } catch (error) {
234
- var _error$response4;
235
- stopProgressIndicator(spinnerId, `Error reading secret versions: ${((_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : _error$response4.data) || error.message}`, 'fail');
236
- }
237
- const table = createTable([{
238
- hAlign: 'right',
239
- content: 'Version'['brightCyan']
240
- }, 'Status'['brightCyan'], 'Loaded'['brightCyan'], 'Created'['brightCyan']]);
241
- const statusMap = {
242
- ENABLED: 'active'['brightGreen'],
243
- DISABLED: 'inactive'['brightRed'],
244
- DESTROYED: 'deleted'['brightRed']
245
- };
246
- for (const version of versions) {
247
- table.push([{
229
+ const table = createTable([{
248
230
  hAlign: 'right',
249
- content: version.version
250
- }, statusMap[version.status], version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], new Date(version.createDate).toLocaleString()]);
231
+ content: 'Version'['brightCyan']
232
+ }, 'Status'['brightCyan'], 'Loaded'['brightCyan'], 'Created'['brightCyan']]);
233
+ const statusMap = {
234
+ ENABLED: 'active'['brightGreen'],
235
+ DISABLED: 'inactive'['brightRed'],
236
+ DESTROYED: 'deleted'['brightRed']
237
+ };
238
+ for (const version of versions) {
239
+ table.push([{
240
+ hAlign: 'right',
241
+ content: version.version
242
+ }, statusMap[version.status], version.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed'], new Date(version.createDate).toLocaleString()]);
243
+ }
244
+ printMessage(table.toString(), 'data');
245
+ return true;
246
+ } catch (error) {
247
+ stopProgressIndicator(spinnerId, `Error reading secret versions`, 'fail');
248
+ printError(error);
251
249
  }
252
- printMessage(table.toString(), 'data');
253
- outcome = true;
254
- return outcome;
250
+ return false;
255
251
  }
256
252
 
257
253
  /**
@@ -260,39 +256,38 @@ export async function listSecretVersions(secretId) {
260
256
  * @returns {Promise<boolean>} true if successful, false otherwise
261
257
  */
262
258
  export async function describeSecret(secretId) {
263
- let outcome = false;
264
259
  let spinnerId;
265
260
  let secret = null;
266
261
  try {
267
262
  spinnerId = createProgressIndicator('indeterminate', 0, `Reading secret ${secretId}...`);
268
263
  secret = await readSecret(secretId);
269
264
  stopProgressIndicator(spinnerId, `Successfully read secret ${secretId}.`, 'success');
265
+ const table = createKeyValueTable();
266
+ table.push(['Name'['brightCyan'], secret._id]);
267
+ table.push(['Active Version'['brightCyan'], secret.activeVersion]);
268
+ table.push(['Loaded Version'['brightCyan'], secret.loadedVersion]);
269
+ table.push(['Status'['brightCyan'], secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed']]);
270
+ table.push(['Description'['brightCyan'], wordwrap(secret.description, 60)]);
271
+ table.push(['Modified'['brightCyan'], new Date(secret.lastChangeDate).toLocaleString()]);
272
+ let lastChangedBy = secret.lastChangedBy;
273
+ try {
274
+ lastChangedBy = state.getUseBearerTokenForAmApis() ? secret.lastChangedBy : await resolveUserName('teammember', secret.lastChangedBy);
275
+ } catch (error) {
276
+ // ignore
277
+ }
278
+ table.push(['Modifier'['brightCyan'], lastChangedBy]);
279
+ table.push(['Modifier UUID'['brightCyan'], secret.lastChangedBy]);
280
+ table.push(['Encoding'['brightCyan'], secret.encoding]);
281
+ table.push(['Use In Placeholders'['brightCyan'], secret.useInPlaceholders]);
282
+ printMessage(table.toString(), 'data');
283
+ printMessage('\nSecret Versions:', 'data');
284
+ await listSecretVersions(secretId);
285
+ return true;
270
286
  } catch (error) {
271
- var _error$response5;
272
- stopProgressIndicator(spinnerId, `Error reading secret ${secretId}: ${((_error$response5 = error.response) === null || _error$response5 === void 0 ? void 0 : _error$response5.data) || error.message}`, 'fail');
273
- }
274
- const table = createKeyValueTable();
275
- table.push(['Name'['brightCyan'], secret._id]);
276
- table.push(['Active Version'['brightCyan'], secret.activeVersion]);
277
- table.push(['Loaded Version'['brightCyan'], secret.loadedVersion]);
278
- table.push(['Status'['brightCyan'], secret.loaded ? 'loaded'['brightGreen'] : 'unloaded'['brightRed']]);
279
- table.push(['Description'['brightCyan'], wordwrap(secret.description, 60)]);
280
- table.push(['Modified'['brightCyan'], new Date(secret.lastChangeDate).toLocaleString()]);
281
- let lastChangedBy = secret.lastChangedBy;
282
- try {
283
- lastChangedBy = state.getUseBearerTokenForAmApis() ? secret.lastChangedBy : await resolveUserName('teammember', secret.lastChangedBy);
284
- } catch (error) {
285
- // ignore
287
+ stopProgressIndicator(spinnerId, `Error describing secret ${secretId}`, 'fail');
288
+ printError(error);
286
289
  }
287
- table.push(['Modifier'['brightCyan'], lastChangedBy]);
288
- table.push(['Modifier UUID'['brightCyan'], secret.lastChangedBy]);
289
- table.push(['Encoding'['brightCyan'], secret.encoding]);
290
- table.push(['Use In Placeholders'['brightCyan'], secret.useInPlaceholders]);
291
- printMessage(table.toString(), 'data');
292
- printMessage('\nSecret Versions:', 'data');
293
- await listSecretVersions(secretId);
294
- outcome = true;
295
- return outcome;
290
+ return false;
296
291
  }
297
292
 
298
293
  /**
@@ -304,7 +299,6 @@ export async function describeSecret(secretId) {
304
299
  */
305
300
  export async function exportSecretToFile(secretId, file, includeMeta) {
306
301
  debugMessage(`Cli.SecretsOps.exportSecretToFile: start [secretId=${secretId}, file=${file}]`);
307
- let outcome = false;
308
302
  let fileName = file;
309
303
  if (!fileName) {
310
304
  fileName = getTypedFilename(secretId, 'secret');
@@ -316,13 +310,13 @@ export async function exportSecretToFile(secretId, file, includeMeta) {
316
310
  const fileData = await exportSecret(secretId);
317
311
  saveJsonToFile(fileData, filePath, includeMeta);
318
312
  stopProgressIndicator(spinnerId, `Exported ${secretId['brightCyan']} to ${filePath['brightCyan']}.`, 'success');
319
- outcome = true;
313
+ debugMessage(`Cli.SecretsOps.exportSecretToFile: end [secretId=${secretId}, file=${file}]`);
314
+ return true;
320
315
  } catch (error) {
321
- var _error$response6;
322
- stopProgressIndicator(spinnerId, `Error exporting secret: ${((_error$response6 = error.response) === null || _error$response6 === void 0 ? void 0 : _error$response6.data) || error.message}`, 'fail');
316
+ stopProgressIndicator(spinnerId, `Error exporting secret ${secretId} to ${filePath}`, 'fail');
317
+ printError(error);
323
318
  }
324
- debugMessage(`Cli.SecretsOps.exportSecretToFile: end [outcome=${outcome}, secretId=${secretId}, file=${file}]`);
325
- return outcome;
319
+ return false;
326
320
  }
327
321
 
328
322
  /**
@@ -332,23 +326,20 @@ export async function exportSecretToFile(secretId, file, includeMeta) {
332
326
  * @returns {Promise<boolean>} true if successful, false otherwise
333
327
  */
334
328
  export async function exportSecretsToFile(file, includeMeta) {
335
- debugMessage(`Cli.SecretsOps.exportSecretsToFile: start [file=${file}]`);
336
- let outcome = false;
337
- let fileName = file;
338
- if (!fileName) {
339
- fileName = getTypedFilename(`all${titleCase(state.getRealm())}Secrets`, 'secret');
340
- }
341
329
  try {
330
+ debugMessage(`Cli.SecretsOps.exportSecretsToFile: start [file=${file}]`);
331
+ let fileName = file;
332
+ if (!fileName) {
333
+ fileName = getTypedFilename(`all${titleCase(state.getRealm())}Secrets`, 'secret');
334
+ }
342
335
  const secretsExport = await exportSecrets();
343
336
  saveJsonToFile(secretsExport, getFilePath(fileName, true), includeMeta);
344
- outcome = true;
337
+ debugMessage(`Cli.SecretsOps.exportSecretsToFile: end [file=${file}]`);
338
+ return true;
345
339
  } catch (error) {
346
- var _error$response7;
347
- printMessage(error.message, 'error');
348
- printMessage(`exportSecretsToFile: ${(_error$response7 = error.response) === null || _error$response7 === void 0 ? void 0 : _error$response7.status}`, 'error');
340
+ printError(error);
349
341
  }
350
- debugMessage(`Cli.SecretsOps.exportSecretsToFile: end [file=${file}]`);
351
- return outcome;
342
+ return false;
352
343
  }
353
344
 
354
345
  /**
@@ -357,26 +348,25 @@ export async function exportSecretsToFile(file, includeMeta) {
357
348
  * @returns {Promise<boolean>} true if successful, false otherwise
358
349
  */
359
350
  export async function exportSecretsToFiles(includeMeta) {
360
- let outcome = false;
361
351
  let secrets = [];
362
352
  const spinnerId = createProgressIndicator('indeterminate', 0, `Reading secrets...`);
363
353
  try {
364
354
  secrets = await readSecrets();
365
355
  secrets.sort((a, b) => a._id.localeCompare(b._id));
366
356
  stopProgressIndicator(spinnerId, `Successfully read ${secrets.length} secrets.`, 'success');
357
+ const indicatorId = createProgressIndicator('determinate', secrets.length, 'Exporting secrets');
358
+ for (const secret of secrets) {
359
+ updateProgressIndicator(indicatorId, `Writing secret ${secret._id}`);
360
+ const fileName = getTypedFilename(secret._id, 'secret');
361
+ saveToFile('secret', secret, '_id', getFilePath(fileName, true), includeMeta);
362
+ }
363
+ stopProgressIndicator(indicatorId, `${secrets.length} secrets exported.`);
364
+ return true;
367
365
  } catch (error) {
368
- var _error$response8;
369
- stopProgressIndicator(spinnerId, `Error reading secrets: ${((_error$response8 = error.response) === null || _error$response8 === void 0 ? void 0 : _error$response8.data) || error.message}`, 'fail');
366
+ stopProgressIndicator(spinnerId, `Error exporting secrets to files`, 'fail');
367
+ printError(error);
370
368
  }
371
- const indicatorId = createProgressIndicator('determinate', secrets.length, 'Exporting secrets');
372
- for (const secret of secrets) {
373
- updateProgressIndicator(indicatorId, `Writing secret ${secret._id}`);
374
- const fileName = getTypedFilename(secret._id, 'secret');
375
- saveToFile('secret', secret, '_id', getFilePath(fileName, true), includeMeta);
376
- }
377
- stopProgressIndicator(indicatorId, `${secrets.length} secrets exported.`);
378
- outcome = true;
379
- return outcome;
369
+ return false;
380
370
  }
381
371
 
382
372
  /**
@@ -386,16 +376,16 @@ export async function exportSecretsToFiles(includeMeta) {
386
376
  * @returns {Promise<boolean>} true if successful, false otherwise
387
377
  */
388
378
  export async function createVersionOfSecret(secretId, value) {
389
- let outcome = false;
390
379
  const spinnerId = createProgressIndicator('indeterminate', 0, `Creating new version of secret ${secretId}...`);
391
380
  try {
392
381
  const version = await _createVersionOfSecret(secretId, value);
393
382
  stopProgressIndicator(spinnerId, `Created version ${version.version} of secret ${secretId}`, 'success');
394
- outcome = true;
383
+ return true;
395
384
  } catch (error) {
396
- stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
385
+ stopProgressIndicator(spinnerId, `Error creating new version of secret ${secretId}`, 'fail');
386
+ printError(error);
397
387
  }
398
- return outcome;
388
+ return false;
399
389
  }
400
390
 
401
391
  /**
@@ -405,55 +395,58 @@ export async function createVersionOfSecret(secretId, value) {
405
395
  * @returns {Promise<boolean>} true if successful, false otherwise
406
396
  */
407
397
  export async function createVersionOfSecretFromFile(secretId, file) {
408
- let outcome = false;
409
- const value = fs.readFileSync(getFilePath(file), 'utf8');
410
- const spinnerId = createProgressIndicator('indeterminate', 0, `Creating new version of secret ${secretId}...`);
398
+ let spinnerId;
411
399
  try {
400
+ const value = fs.readFileSync(getFilePath(file), 'utf8');
401
+ spinnerId = createProgressIndicator('indeterminate', 0, `Creating new version of secret ${secretId}...`);
412
402
  const version = await _createVersionOfSecret(secretId, value);
413
403
  stopProgressIndicator(spinnerId, `Created version ${version.version} of secret ${secretId}`, 'success');
414
- outcome = true;
404
+ return true;
415
405
  } catch (error) {
416
- stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
406
+ stopProgressIndicator(spinnerId, `Error creating new version of secret ${secretId} from ${getFilePath(file)}`, 'fail');
407
+ printError(error);
417
408
  }
418
- return outcome;
409
+ return false;
419
410
  }
420
411
 
421
412
  /**
422
413
  * Activate a version of a secret
423
- * @param {String} secretId secret id
424
- * @param {Number} version version of secret
414
+ * @param {string} secretId secret id
415
+ * @param {string} version version of secret
425
416
  * @returns {Promise<boolean>} true if successful, false otherwise
426
417
  */
427
418
  export async function activateVersionOfSecret(secretId, version) {
428
- let outcome = false;
429
- const spinnerId = createProgressIndicator('indeterminate', 0, `Activating version ${version} of secret ${secretId}...`);
419
+ let spinnerId;
430
420
  try {
421
+ spinnerId = createProgressIndicator('indeterminate', 0, `Activating version ${version} of secret ${secretId}...`);
431
422
  await enableVersionOfSecret(secretId, version);
432
423
  stopProgressIndicator(spinnerId, `Activated version ${version} of secret ${secretId}`, 'success');
433
- outcome = true;
424
+ return true;
434
425
  } catch (error) {
435
- stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
426
+ stopProgressIndicator(spinnerId, `Error activating version ${version} of secret ${secretId}`, 'fail');
427
+ printError(error);
436
428
  }
437
- return outcome;
429
+ return false;
438
430
  }
439
431
 
440
432
  /**
441
433
  * Deactivate a version of a secret
442
- * @param {String} secretId secret id
443
- * @param {Number} version version of secret
434
+ * @param {string} secretId secret id
435
+ * @param {string} version version of secret
444
436
  * @returns {Promise<boolean>} true if successful, false otherwise
445
437
  */
446
438
  export async function deactivateVersionOfSecret(secretId, version) {
447
- let outcome = false;
448
- const spinnerId = createProgressIndicator('indeterminate', 0, `Deactivating version ${version} of secret ${secretId}...`);
439
+ let spinnerId;
449
440
  try {
441
+ const spinnerId = createProgressIndicator('indeterminate', 0, `Deactivating version ${version} of secret ${secretId}...`);
450
442
  await disableVersionOfSecret(secretId, version);
451
443
  stopProgressIndicator(spinnerId, `Deactivated version ${version} of secret ${secretId}`, 'success');
452
- outcome = true;
444
+ return true;
453
445
  } catch (error) {
454
- stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
446
+ stopProgressIndicator(spinnerId, `Error deactivating version ${version} of secret ${secretId}`, 'fail');
447
+ printError(error);
455
448
  }
456
- return outcome;
449
+ return false;
457
450
  }
458
451
 
459
452
  /**
@@ -463,15 +456,16 @@ export async function deactivateVersionOfSecret(secretId, version) {
463
456
  * @returns {Promise<boolean>} true if successful, false otherwise
464
457
  */
465
458
  export async function deleteVersionOfSecret(secretId, version) {
466
- let outcome = false;
467
- const spinnerId = createProgressIndicator('indeterminate', 0, `Deleting version ${version} of secret ${secretId}...`);
459
+ let spinnerId;
468
460
  try {
461
+ spinnerId = createProgressIndicator('indeterminate', 0, `Deleting version ${version} of secret ${secretId}...`);
469
462
  await _deleteVersionOfSecret(secretId, version);
470
463
  stopProgressIndicator(spinnerId, `Deleted version ${version} of secret ${secretId}`, 'success');
471
- outcome = true;
464
+ return true;
472
465
  } catch (error) {
473
- stopProgressIndicator(spinnerId, `Error: ${error.response.data.code} - ${error.response.data.message}`, 'fail');
466
+ stopProgressIndicator(spinnerId, `Error deleting version ${version} of secret ${secretId}`, 'fail');
467
+ printError(error);
474
468
  }
475
- return outcome;
469
+ return false;
476
470
  }
477
471
  //# sourceMappingURL=SecretsOps.js.map