@rockcarver/frodo-lib 0.11.1-8 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/cjs/api/BaseApi.js +1 -1
  3. package/cjs/api/BaseApi.js.map +1 -1
  4. package/cjs/ops/CirclesOfTrustOps.js +27 -27
  5. package/cjs/ops/CirclesOfTrustOps.js.map +1 -1
  6. package/cjs/ops/EmailTemplateOps.js +28 -28
  7. package/cjs/ops/EmailTemplateOps.js.map +1 -1
  8. package/cjs/ops/IdmOps.js +5 -5
  9. package/cjs/ops/IdmOps.js.map +1 -1
  10. package/cjs/ops/IdpOps.js +26 -26
  11. package/cjs/ops/IdpOps.js.map +1 -1
  12. package/cjs/ops/JourneyOps.js +66 -66
  13. package/cjs/ops/JourneyOps.js.map +1 -1
  14. package/cjs/ops/SamlOps.js +31 -31
  15. package/cjs/ops/SamlOps.js.map +1 -1
  16. package/cjs/ops/ScriptOps.js +10 -10
  17. package/cjs/ops/ScriptOps.js.map +1 -1
  18. package/cjs/ops/SecretsOps.js +25 -25
  19. package/cjs/ops/SecretsOps.js.map +1 -1
  20. package/cjs/ops/StartupOps.js +11 -11
  21. package/cjs/ops/StartupOps.js.map +1 -1
  22. package/cjs/ops/ThemeOps.js +45 -45
  23. package/cjs/ops/ThemeOps.js.map +1 -1
  24. package/cjs/ops/VariablesOps.js +16 -16
  25. package/cjs/ops/VariablesOps.js.map +1 -1
  26. package/cjs/ops/utils/Console.js +38 -273
  27. package/cjs/ops/utils/Console.js.map +1 -1
  28. package/cjs/storage/SessionStorage.js +10 -20
  29. package/cjs/storage/SessionStorage.js.map +1 -1
  30. package/esm/api/BaseApi.mjs +1 -1
  31. package/esm/ops/CirclesOfTrustOps.mjs +27 -27
  32. package/esm/ops/EmailTemplateOps.mjs +28 -28
  33. package/esm/ops/IdmOps.mjs +5 -5
  34. package/esm/ops/IdpOps.mjs +26 -26
  35. package/esm/ops/JourneyOps.mjs +66 -66
  36. package/esm/ops/SamlOps.mjs +31 -31
  37. package/esm/ops/ScriptOps.mjs +10 -10
  38. package/esm/ops/SecretsOps.mjs +25 -25
  39. package/esm/ops/StartupOps.mjs +11 -11
  40. package/esm/ops/ThemeOps.mjs +45 -45
  41. package/esm/ops/VariablesOps.mjs +16 -16
  42. package/esm/ops/utils/Console.mjs +38 -273
  43. package/esm/storage/SessionStorage.mjs +10 -20
  44. package/package.json +1 -3
package/CHANGELOG.md CHANGED
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.12.0] - 2022-08-27
11
+
10
12
  ## [0.11.1-8] - 2022-08-27
11
13
 
12
14
  ### Changed
@@ -437,7 +439,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
437
439
  - Fixed problem with adding connection profiles
438
440
  - Miscellaneous bug fixes
439
441
 
440
- [Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.11.1-8...HEAD
442
+ [Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.12.0...HEAD
443
+
444
+ [0.12.0]: https://github.com/rockcarver/frodo-lib/compare/v0.11.1-8...v0.12.0
441
445
 
442
446
  [0.11.1-8]: https://github.com/rockcarver/frodo-lib/compare/v0.11.1-7...v0.11.1-8
443
447
 
@@ -35,7 +35,7 @@ function getHttpsAgent() {
35
35
 
36
36
  if (httpsProxy) {
37
37
  // https://github.com/axios/axios/issues/3459
38
- console.error(`Using proxy ${httpsProxy}`.yellow);
38
+ console.error(`Using proxy ${httpsProxy}`['yellow']);
39
39
  const parsed = url.parse(httpsProxy);
40
40
  options['host'] = parsed.hostname;
41
41
  options['port'] = parsed.port;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseApi.js","names":["axios","axiosRetry","https","HttpsProxyAgent","url","fs","storage","getTenantURL","path","fileURLToPath","__dirname","dirname","pkg","JSON","parse","readFileSync","resolve","retries","shouldResetTimeout","retryCondition","_error","timeout","userAgent","name","version","httpsAgent","getHttpsAgent","options","rejectUnauthorized","session","getAllowInsecureConnection","httpsProxy","process","env","HTTPS_PROXY","https_proxy","console","error","yellow","parsed","hostname","port","protocol","Agent","getProxy","generateAmApi","resource","requestOverride","headers","apiVersion","Cookie","raw","requestDetails","baseURL","getTenant","proxy","request","create","generateOauth2Api","generateIdmApi","getBearerToken","generateLogKeysApi","generateLogApi","getLogApiKey","getLogApiSecret","generateESVApi"],"sources":["api/BaseApi.ts"],"sourcesContent":["import axios, { AxiosProxyConfig } from 'axios';\nimport axiosRetry from 'axios-retry';\nimport * as https from 'https';\nimport HttpsProxyAgent from 'https-proxy-agent';\nimport url from 'url';\nimport fs from 'fs';\nimport storage from '../storage/SessionStorage';\nimport { getTenantURL } from './utils/ApiUtils';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst pkg = JSON.parse(\n fs.readFileSync(path.resolve(__dirname, '../../package.json'), 'utf8')\n);\n\naxiosRetry(axios, {\n retries: 3,\n shouldResetTimeout: true,\n retryCondition: (_error) => true, // retry no matter what\n});\n\nconst timeout = 30000;\nconst userAgent = `${pkg.name}/${pkg.version}`;\nlet httpsAgent;\n\n/**\n * Helper method to create properly configured httpsAgent\n * @returns {any} appropriate httpsAgent\n */\nfunction getHttpsAgent() {\n if (httpsAgent) return httpsAgent;\n const options = {\n rejectUnauthorized: !storage.session.getAllowInsecureConnection(),\n };\n const httpsProxy = process.env.HTTPS_PROXY || process.env.https_proxy;\n if (httpsProxy) {\n // https://github.com/axios/axios/issues/3459\n console.error(`Using proxy ${httpsProxy}`.yellow);\n const parsed = url.parse(httpsProxy);\n options['host'] = parsed.hostname;\n options['port'] = parsed.port;\n options['protocol'] = parsed.protocol;\n options.rejectUnauthorized = !storage.session.getAllowInsecureConnection();\n httpsAgent = HttpsProxyAgent(options);\n return httpsAgent;\n }\n httpsAgent = new https.Agent(options);\n return httpsAgent;\n}\n\n/**\n * Get Proxy config\n * @returns {AxiosProxyConfig | false} axios proxy config or false\n */\nfunction getProxy(): AxiosProxyConfig | false {\n if (process.env.HTTPS_PROXY || process.env.https_proxy) return false;\n return null;\n}\n\n/**\n * Generates an AM Axios API instance\n * @param {object} resource Takes an object takes a resource object. example:\n * @param {object} requestOverride Takes an object of AXIOS parameters that can be used to either\n * add on extra information or override default properties https://github.com/axios/axios#request-config\n *\n * @returns {AxiosInstance}\n */\nexport function generateAmApi(resource, requestOverride = {}) {\n let headers = {\n 'User-Agent': userAgent,\n 'Content-Type': 'application/json',\n 'Accept-API-Version': resource.apiVersion,\n Cookie: `${storage.session.raw['cookieName']}=${storage.session.raw['cookieValue']}`,\n };\n if (requestOverride['headers']) {\n headers = {\n ...headers,\n ...requestOverride['headers'],\n };\n }\n\n const requestDetails = {\n baseURL: `${storage.session.getTenant()}/json${resource.path}`,\n timeout,\n ...requestOverride,\n headers,\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n return request;\n}\n\n/**\n * Generates an OAuth2 Axios API instance\n * @param {object} resource Takes an object takes a resource object. example:\n * @param {object} requestOverride Takes an object of AXIOS parameters that can be used to either\n * add on extra information or override default properties https://github.com/axios/axios#request-config\n *\n * @returns {AxiosInstance}\n */\nexport function generateOauth2Api(resource, requestOverride = {}) {\n let headers = {\n 'User-Agent': userAgent,\n 'Accept-API-Version': resource.apiVersion,\n Cookie: `${storage.session.raw['cookieName']}=${storage.session.raw['cookieValue']}`,\n };\n if (requestOverride['headers']) {\n headers = {\n ...headers,\n ...requestOverride['headers'],\n };\n }\n\n const requestDetails = {\n baseURL: `${storage.session.getTenant()}/json${resource.path}`,\n timeout,\n ...requestOverride,\n headers,\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n return request;\n}\n\n/**\n * Generates an IDM Axios API instance\n * @param {object} requestOverride Takes an object of AXIOS parameters that can be used to either add\n * on extra information or override default properties https://github.com/axios/axios#request-config\n *\n * @returns {AxiosInstance}\n */\nexport function generateIdmApi(requestOverride = {}) {\n const requestDetails = {\n baseURL: getTenantURL(storage.session.getTenant()),\n timeout,\n headers: {\n 'User-Agent': userAgent,\n 'Content-Type': 'application/json',\n },\n ...requestOverride,\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n if (storage.session.getBearerToken()) {\n requestDetails.headers[\n 'Authorization'\n ] = `Bearer ${storage.session.getBearerToken()}`;\n }\n\n const request = axios.create(requestDetails);\n\n return request;\n}\n\n/**\n * Generates a LogKeys API Axios instance\n * @param {object} requestOverride Takes an object of AXIOS parameters that can be used to either add\n * on extra information or override default properties https://github.com/axios/axios#request-config\n *\n * @returns {AxiosInstance}\n */\nexport function generateLogKeysApi(requestOverride = {}) {\n const headers = {\n 'User-Agent': userAgent,\n 'Content-Type': 'application/json',\n };\n const requestDetails = {\n baseURL: getTenantURL(storage.session.getTenant()),\n timeout,\n headers,\n ...requestOverride,\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n if (storage.session.getBearerToken()) {\n requestDetails.headers[\n 'Authorization'\n ] = `Bearer ${storage.session.getBearerToken()}`;\n }\n\n const request = axios.create(requestDetails);\n\n return request;\n}\n\n/**\n * Generates a Log API Axios instance\n * @param {object} requestOverride Takes an object of AXIOS parameters that can be used to either add\n * on extra information or override default properties https://github.com/axios/axios#request-config\n *\n * @returns {AxiosInstance}\n */\nexport function generateLogApi(requestOverride = {}) {\n const headers = {\n 'User-Agent': userAgent,\n 'X-API-Key': storage.session.getLogApiKey(),\n 'X-API-Secret': storage.session.getLogApiSecret(),\n };\n const requestDetails = {\n baseURL: getTenantURL(storage.session.getTenant()),\n timeout,\n headers,\n ...requestOverride,\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n return request;\n}\n\n/**\n * Generates an ESV Axios API instance for Environment Secrets and Variables\n * @param {object} requestOverride Takes an object of AXIOS parameters that can be used to either add\n * on extra information or override default properties https://github.com/axios/axios#request-config\n *\n * @returns {AxiosInstance}\n */\nexport function generateESVApi(resource, requestOverride = {}) {\n const headers = {\n 'User-Agent': userAgent,\n 'Content-Type': 'application/json',\n 'Accept-API-Version': resource.apiVersion,\n };\n const requestDetails = {\n baseURL: getTenantURL(storage.session.getTenant()),\n timeout,\n headers,\n ...requestOverride,\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n if (storage.session.getBearerToken()) {\n requestDetails.headers[\n 'Authorization'\n ] = `Bearer ${storage.session.getBearerToken()}`;\n }\n\n const request = axios.create(requestDetails);\n\n return request;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"BaseApi.js","names":["axios","axiosRetry","https","HttpsProxyAgent","url","fs","storage","getTenantURL","path","fileURLToPath","__dirname","dirname","pkg","JSON","parse","readFileSync","resolve","retries","shouldResetTimeout","retryCondition","_error","timeout","userAgent","name","version","httpsAgent","getHttpsAgent","options","rejectUnauthorized","session","getAllowInsecureConnection","httpsProxy","process","env","HTTPS_PROXY","https_proxy","console","error","parsed","hostname","port","protocol","Agent","getProxy","generateAmApi","resource","requestOverride","headers","apiVersion","Cookie","raw","requestDetails","baseURL","getTenant","proxy","request","create","generateOauth2Api","generateIdmApi","getBearerToken","generateLogKeysApi","generateLogApi","getLogApiKey","getLogApiSecret","generateESVApi"],"sources":["api/BaseApi.ts"],"sourcesContent":["import axios, { AxiosProxyConfig } from 'axios';\nimport axiosRetry from 'axios-retry';\nimport * as https from 'https';\nimport HttpsProxyAgent from 'https-proxy-agent';\nimport url from 'url';\nimport fs from 'fs';\nimport storage from '../storage/SessionStorage';\nimport { getTenantURL } from './utils/ApiUtils';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nconst pkg = JSON.parse(\n fs.readFileSync(path.resolve(__dirname, '../../package.json'), 'utf8')\n);\n\naxiosRetry(axios, {\n retries: 3,\n shouldResetTimeout: true,\n retryCondition: (_error) => true, // retry no matter what\n});\n\nconst timeout = 30000;\nconst userAgent = `${pkg.name}/${pkg.version}`;\nlet httpsAgent;\n\n/**\n * Helper method to create properly configured httpsAgent\n * @returns {any} appropriate httpsAgent\n */\nfunction getHttpsAgent() {\n if (httpsAgent) return httpsAgent;\n const options = {\n rejectUnauthorized: !storage.session.getAllowInsecureConnection(),\n };\n const httpsProxy = process.env.HTTPS_PROXY || process.env.https_proxy;\n if (httpsProxy) {\n // https://github.com/axios/axios/issues/3459\n console.error(`Using proxy ${httpsProxy}`['yellow']);\n const parsed = url.parse(httpsProxy);\n options['host'] = parsed.hostname;\n options['port'] = parsed.port;\n options['protocol'] = parsed.protocol;\n options.rejectUnauthorized = !storage.session.getAllowInsecureConnection();\n httpsAgent = HttpsProxyAgent(options);\n return httpsAgent;\n }\n httpsAgent = new https.Agent(options);\n return httpsAgent;\n}\n\n/**\n * Get Proxy config\n * @returns {AxiosProxyConfig | false} axios proxy config or false\n */\nfunction getProxy(): AxiosProxyConfig | false {\n if (process.env.HTTPS_PROXY || process.env.https_proxy) return false;\n return null;\n}\n\n/**\n * Generates an AM Axios API instance\n * @param {object} resource Takes an object takes a resource object. example:\n * @param {object} requestOverride Takes an object of AXIOS parameters that can be used to either\n * add on extra information or override default properties https://github.com/axios/axios#request-config\n *\n * @returns {AxiosInstance}\n */\nexport function generateAmApi(resource, requestOverride = {}) {\n let headers = {\n 'User-Agent': userAgent,\n 'Content-Type': 'application/json',\n 'Accept-API-Version': resource.apiVersion,\n Cookie: `${storage.session.raw['cookieName']}=${storage.session.raw['cookieValue']}`,\n };\n if (requestOverride['headers']) {\n headers = {\n ...headers,\n ...requestOverride['headers'],\n };\n }\n\n const requestDetails = {\n baseURL: `${storage.session.getTenant()}/json${resource.path}`,\n timeout,\n ...requestOverride,\n headers,\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n return request;\n}\n\n/**\n * Generates an OAuth2 Axios API instance\n * @param {object} resource Takes an object takes a resource object. example:\n * @param {object} requestOverride Takes an object of AXIOS parameters that can be used to either\n * add on extra information or override default properties https://github.com/axios/axios#request-config\n *\n * @returns {AxiosInstance}\n */\nexport function generateOauth2Api(resource, requestOverride = {}) {\n let headers = {\n 'User-Agent': userAgent,\n 'Accept-API-Version': resource.apiVersion,\n Cookie: `${storage.session.raw['cookieName']}=${storage.session.raw['cookieValue']}`,\n };\n if (requestOverride['headers']) {\n headers = {\n ...headers,\n ...requestOverride['headers'],\n };\n }\n\n const requestDetails = {\n baseURL: `${storage.session.getTenant()}/json${resource.path}`,\n timeout,\n ...requestOverride,\n headers,\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n return request;\n}\n\n/**\n * Generates an IDM Axios API instance\n * @param {object} requestOverride Takes an object of AXIOS parameters that can be used to either add\n * on extra information or override default properties https://github.com/axios/axios#request-config\n *\n * @returns {AxiosInstance}\n */\nexport function generateIdmApi(requestOverride = {}) {\n const requestDetails = {\n baseURL: getTenantURL(storage.session.getTenant()),\n timeout,\n headers: {\n 'User-Agent': userAgent,\n 'Content-Type': 'application/json',\n },\n ...requestOverride,\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n if (storage.session.getBearerToken()) {\n requestDetails.headers[\n 'Authorization'\n ] = `Bearer ${storage.session.getBearerToken()}`;\n }\n\n const request = axios.create(requestDetails);\n\n return request;\n}\n\n/**\n * Generates a LogKeys API Axios instance\n * @param {object} requestOverride Takes an object of AXIOS parameters that can be used to either add\n * on extra information or override default properties https://github.com/axios/axios#request-config\n *\n * @returns {AxiosInstance}\n */\nexport function generateLogKeysApi(requestOverride = {}) {\n const headers = {\n 'User-Agent': userAgent,\n 'Content-Type': 'application/json',\n };\n const requestDetails = {\n baseURL: getTenantURL(storage.session.getTenant()),\n timeout,\n headers,\n ...requestOverride,\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n if (storage.session.getBearerToken()) {\n requestDetails.headers[\n 'Authorization'\n ] = `Bearer ${storage.session.getBearerToken()}`;\n }\n\n const request = axios.create(requestDetails);\n\n return request;\n}\n\n/**\n * Generates a Log API Axios instance\n * @param {object} requestOverride Takes an object of AXIOS parameters that can be used to either add\n * on extra information or override default properties https://github.com/axios/axios#request-config\n *\n * @returns {AxiosInstance}\n */\nexport function generateLogApi(requestOverride = {}) {\n const headers = {\n 'User-Agent': userAgent,\n 'X-API-Key': storage.session.getLogApiKey(),\n 'X-API-Secret': storage.session.getLogApiSecret(),\n };\n const requestDetails = {\n baseURL: getTenantURL(storage.session.getTenant()),\n timeout,\n headers,\n ...requestOverride,\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n return request;\n}\n\n/**\n * Generates an ESV Axios API instance for Environment Secrets and Variables\n * @param {object} requestOverride Takes an object of AXIOS parameters that can be used to either add\n * on extra information or override default properties https://github.com/axios/axios#request-config\n *\n * @returns {AxiosInstance}\n */\nexport function generateESVApi(resource, requestOverride = {}) {\n const headers = {\n 'User-Agent': userAgent,\n 'Content-Type': 'application/json',\n 'Accept-API-Version': resource.apiVersion,\n };\n const requestDetails = {\n baseURL: getTenantURL(storage.session.getTenant()),\n timeout,\n headers,\n ...requestOverride,\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n if (storage.session.getBearerToken()) {\n requestDetails.headers[\n 'Authorization'\n ] = `Bearer ${storage.session.getBearerToken()}`;\n }\n\n const request = axios.create(requestDetails);\n\n return request;\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import fs from 'fs';
2
2
  import _ from 'lodash';
3
- import { createTable, printMessage, createProgressBar, updateProgressBar, stopProgressBar } from './utils/Console';
3
+ import { createTable, printMessage, createProgressIndicator, updateProgressIndicator, stopProgressIndicator } from './utils/Console';
4
4
  import { getCirclesOfTrust, getCircleOfTrust, createCircleOfTrust } from '../api/CirclesOfTrustApi';
5
5
  import { getRealmString, getTypedFilename, saveJsonToFile, validateImport } from './utils/ExportImportUtils'; // use a function vs a template variable to avoid problems in loops
6
6
 
@@ -77,19 +77,19 @@ export async function exportCircleOfTrust(cotId, file = null) {
77
77
  fileName = getTypedFilename(cotId, 'cot.saml');
78
78
  }
79
79
 
80
- createProgressBar(1, `Exporting circle of trust ${cotId}`);
80
+ createProgressIndicator(1, `Exporting circle of trust ${cotId}`);
81
81
  getCircleOfTrust(cotId).then(async response => {
82
82
  const cotData = _.cloneDeep(response.data);
83
83
 
84
84
  delete cotData._rev;
85
- updateProgressBar(`Exporting ${cotId}`);
85
+ updateProgressIndicator(`Exporting ${cotId}`);
86
86
  const fileData = getFileDataTemplate();
87
87
  fileData.saml.cot[cotId] = cotData;
88
88
  await exportDependencies(cotData, fileData);
89
89
  saveJsonToFile(fileData, fileName);
90
- stopProgressBar(`Exported ${cotId.brightCyan} to ${fileName.brightCyan}.`);
90
+ stopProgressIndicator(`Exported ${cotId.brightCyan} to ${fileName.brightCyan}.`);
91
91
  }).catch(err => {
92
- stopProgressBar(`${err}`);
92
+ stopProgressIndicator(`${err}`);
93
93
  printMessage(err, 'error');
94
94
  });
95
95
  }
@@ -117,18 +117,18 @@ export async function exportCirclesOfTrustToFile(file = null) {
117
117
  }
118
118
 
119
119
  allCotData = _.cloneDeep(response.data.result);
120
- createProgressBar(allCotData.length, 'Exporting circles of trust');
120
+ createProgressIndicator(allCotData.length, 'Exporting circles of trust');
121
121
 
122
122
  for (const cotData of allCotData) {
123
123
  delete cotData._rev;
124
- updateProgressBar(`Exporting circle of trust ${cotData._id}`); // eslint-disable-next-line no-await-in-loop
124
+ updateProgressIndicator(`Exporting circle of trust ${cotData._id}`); // eslint-disable-next-line no-await-in-loop
125
125
 
126
126
  await exportDependencies(cotData, fileData);
127
127
  fileData.saml.cot[cotData._id] = cotData;
128
128
  }
129
129
 
130
130
  saveJsonToFile(fileData, fileName);
131
- stopProgressBar(`${allCotData.length} circle(s) of trust exported to ${fileName}.`);
131
+ stopProgressIndicator(`${allCotData.length} circle(s) of trust exported to ${fileName}.`);
132
132
  } catch (error) {
133
133
  printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');
134
134
  printMessage(error, 'data');
@@ -150,11 +150,11 @@ export async function exportCirclesOfTrustToFiles() {
150
150
  }
151
151
 
152
152
  allCotData = _.cloneDeep(response.data.result);
153
- createProgressBar(allCotData.length, 'Exporting circles of trust');
153
+ createProgressIndicator(allCotData.length, 'Exporting circles of trust');
154
154
 
155
155
  for (const cotData of allCotData) {
156
156
  delete cotData._rev;
157
- updateProgressBar(`Exporting circle of trust ${cotData._id}`);
157
+ updateProgressIndicator(`Exporting circle of trust ${cotData._id}`);
158
158
  const fileName = getTypedFilename(cotData._id, 'cot.saml');
159
159
  const fileData = getFileDataTemplate(); // eslint-disable-next-line no-await-in-loop
160
160
 
@@ -163,7 +163,7 @@ export async function exportCirclesOfTrustToFiles() {
163
163
  saveJsonToFile(fileData, fileName);
164
164
  }
165
165
 
166
- stopProgressBar(`${allCotData.length} providers exported.`);
166
+ stopProgressIndicator(`${allCotData.length} providers exported.`);
167
167
  } catch (error) {
168
168
  printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');
169
169
  printMessage(error, 'data');
@@ -192,22 +192,22 @@ export async function importCircleOfTrust(cotId, file) {
192
192
  const fileData = JSON.parse(data);
193
193
 
194
194
  if (validateImport(fileData.meta)) {
195
- createProgressBar(1, 'Importing circle of trust...');
195
+ createProgressIndicator(1, 'Importing circle of trust...');
196
196
 
197
197
  const cotData = _.get(fileData, ['saml', 'cot', cotId]);
198
198
 
199
199
  if (cotData) {
200
- updateProgressBar(`Importing ${cotId}`);
200
+ updateProgressIndicator(`Importing ${cotId}`);
201
201
  await importDependencies(cotData, fileData);
202
202
  createCircleOfTrust(cotData).then(() => {
203
- stopProgressBar(`Successfully imported ${cotId}.`);
203
+ stopProgressIndicator(`Successfully imported ${cotId}.`);
204
204
  }).catch(createProviderErr => {
205
- stopProgressBar(`Error importing ${cotId}.`);
205
+ stopProgressIndicator(`Error importing ${cotId}.`);
206
206
  printMessage(`Error importing ${cotId}`, 'error');
207
207
  printMessage(createProviderErr.response.data, 'error');
208
208
  });
209
209
  } else {
210
- stopProgressBar(`Circle of trust ${cotId.brightCyan} not found in ${file.brightCyan}!`);
210
+ stopProgressIndicator(`Circle of trust ${cotId.brightCyan} not found in ${file.brightCyan}!`);
211
211
  }
212
212
  } else {
213
213
  printMessage('Import validation failed...', 'error');
@@ -225,19 +225,19 @@ export async function importFirstCircleOfTrust(file) {
225
225
  const fileData = JSON.parse(data);
226
226
 
227
227
  if (validateImport(fileData.meta)) {
228
- createProgressBar(1, 'Importing circle of trust...');
228
+ createProgressIndicator(1, 'Importing circle of trust...');
229
229
 
230
230
  for (const cotId in fileData.saml.cot) {
231
231
  if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {
232
232
  const cotData = _.cloneDeep(fileData.saml.cot[cotId]);
233
233
 
234
- updateProgressBar(`Importing ${cotId}`); // eslint-disable-next-line no-await-in-loop
234
+ updateProgressIndicator(`Importing ${cotId}`); // eslint-disable-next-line no-await-in-loop
235
235
 
236
236
  await importDependencies(cotData, fileData);
237
237
  createCircleOfTrust(cotData).then(() => {
238
- stopProgressBar(`Successfully imported ${cotId}.`);
238
+ stopProgressIndicator(`Successfully imported ${cotId}.`);
239
239
  }).catch(createCircleOfTrustErr => {
240
- stopProgressBar(`Error importing ${cotId}.`);
240
+ stopProgressIndicator(`Error importing ${cotId}.`);
241
241
  printMessage(`Error importing ${cotId}`, 'error');
242
242
  printMessage(createCircleOfTrustErr.response.data, 'error');
243
243
  });
@@ -260,7 +260,7 @@ export async function importCirclesOfTrustFromFile(file) {
260
260
  const fileData = JSON.parse(data);
261
261
 
262
262
  if (validateImport(fileData.meta)) {
263
- createProgressBar(Object.keys(fileData.saml.cot).length, 'Importing circles of trust...');
263
+ createProgressIndicator(Object.keys(fileData.saml.cot).length, 'Importing circles of trust...');
264
264
 
265
265
  for (const cotId in fileData.saml.cot) {
266
266
  if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {
@@ -272,7 +272,7 @@ export async function importCirclesOfTrustFromFile(file) {
272
272
  try {
273
273
  // eslint-disable-next-line no-await-in-loop
274
274
  await createCircleOfTrust(cotData);
275
- updateProgressBar(`Imported ${cotId}`);
275
+ updateProgressIndicator(`Imported ${cotId}`);
276
276
  } catch (createCircleOfTrustErr) {
277
277
  printMessage(`\nError importing ${cotId}`, 'error');
278
278
  printMessage(createCircleOfTrustErr.response.data, 'error');
@@ -280,7 +280,7 @@ export async function importCirclesOfTrustFromFile(file) {
280
280
  }
281
281
  }
282
282
 
283
- stopProgressBar(`Circles of trust imported.`);
283
+ stopProgressIndicator(`Circles of trust imported.`);
284
284
  } else {
285
285
  printMessage('Import validation failed...', 'error');
286
286
  }
@@ -293,7 +293,7 @@ export async function importCirclesOfTrustFromFile(file) {
293
293
  export async function importCirclesOfTrustFromFiles() {
294
294
  const names = fs.readdirSync('.');
295
295
  const jsonFiles = names.filter(name => name.toLowerCase().endsWith('.cot.saml.json'));
296
- createProgressBar(jsonFiles.length, 'Importing circles or trust...');
296
+ createProgressIndicator(jsonFiles.length, 'Importing circles or trust...');
297
297
  let total = 0;
298
298
  let totalErrors = 0;
299
299
 
@@ -314,7 +314,7 @@ export async function importCirclesOfTrustFromFiles() {
314
314
 
315
315
  try {
316
316
  // eslint-disable-next-line no-await-in-loop
317
- await createCircleOfTrust(cotData); // updateProgressBar(`Imported ${cotId}`);
317
+ await createCircleOfTrust(cotData); // updateProgressIndicator(`Imported ${cotId}`);
318
318
  } catch (createCircleOfTrustErr) {
319
319
  errors += 1;
320
320
  printMessage(`\nError importing ${cotId}`, 'error');
@@ -324,12 +324,12 @@ export async function importCirclesOfTrustFromFiles() {
324
324
  }
325
325
 
326
326
  totalErrors += errors;
327
- updateProgressBar(`Imported ${_.keys(fileData.saml.cot).length - errors} circle(s) of trust from ${file}`);
327
+ updateProgressIndicator(`Imported ${_.keys(fileData.saml.cot).length - errors} circle(s) of trust from ${file}`);
328
328
  } else {
329
329
  printMessage(`Validation of ${file} failed!`, 'error');
330
330
  }
331
331
  }
332
332
 
333
- stopProgressBar(`Imported ${total - totalErrors} of ${total} circle(s) of trust from ${jsonFiles.length} file(s).`);
333
+ stopProgressIndicator(`Imported ${total - totalErrors} of ${total} circle(s) of trust from ${jsonFiles.length} file(s).`);
334
334
  }
335
335
  //# sourceMappingURL=CirclesOfTrustOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CirclesOfTrustOps.js","names":["fs","_","createTable","printMessage","createProgressBar","updateProgressBar","stopProgressBar","getCirclesOfTrust","getCircleOfTrust","createCircleOfTrust","getRealmString","getTypedFilename","saveJsonToFile","validateImport","getFileDataTemplate","meta","script","saml","hosted","remote","metadata","cot","listCirclesOfTrust","long","cotList","response","status","data","result","error","sort","a","b","_id","localeCompare","forEach","table","push","description","trustedProviders","map","provider","split","join","toString","exportDependencies","cotData","fileData","exportCircleOfTrust","cotId","file","fileName","then","cloneDeep","_rev","brightCyan","catch","err","exportCirclesOfTrustToFile","allCotData","length","exportCirclesOfTrustToFiles","importDependencies","importCircleOfTrust","readFile","JSON","parse","get","createProviderErr","importFirstCircleOfTrust","hasOwnProperty","call","createCircleOfTrustErr","importCirclesOfTrustFromFile","Object","keys","importCirclesOfTrustFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","total","totalErrors","readFileSync","errors"],"sources":["ops/CirclesOfTrustOps.ts"],"sourcesContent":["import fs from 'fs';\nimport _ from 'lodash';\nimport {\n createTable,\n printMessage,\n createProgressBar,\n updateProgressBar,\n stopProgressBar,\n} from './utils/Console';\nimport {\n getCirclesOfTrust,\n getCircleOfTrust,\n createCircleOfTrust,\n} from '../api/CirclesOfTrustApi';\nimport {\n getRealmString,\n getTypedFilename,\n saveJsonToFile,\n validateImport,\n} from './utils/ExportImportUtils';\n\n// use a function vs a template variable to avoid problems in loops\nfunction getFileDataTemplate() {\n return {\n meta: {},\n script: {},\n saml: {\n hosted: {},\n remote: {},\n metadata: {},\n cot: {},\n },\n };\n}\n\n/**\n * List entity providers\n * @param {String} long Long list format with details\n */\nexport async function listCirclesOfTrust(long = false) {\n let cotList = [];\n try {\n const response = await getCirclesOfTrust();\n if (response.status < 200 || response.status > 399) {\n printMessage(response, 'data');\n printMessage(`getCirclesOfTrust: ${response.status}`, 'error');\n }\n cotList = response.data.result;\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n cotList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n cotList.forEach((cot) => {\n printMessage(`${cot._id}`, 'data');\n });\n } else {\n const table = createTable([\n 'Name'['brightCyan'],\n 'Description'['brightCyan'],\n 'Status'['brightCyan'],\n 'Trusted Providers'['brightCyan'],\n ]);\n cotList.forEach((cot) => {\n table.push([\n cot._id,\n cot.description,\n cot.status,\n cot.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('\\n'),\n ]);\n });\n printMessage(table.toString());\n }\n}\n\n/**\n * Include dependencies in the export file\n * @param {Object} cotData Object representing a SAML circle of trust\n * @param {Object} fileData File data object to add dependencies to\n */\nasync function exportDependencies(cotData, fileData) {\n // TODO: Export dependencies\n return [cotData, fileData];\n}\n\n/**\n * Export a single circle of trust to file\n * @param {String} cotId circle of trust id/name\n * @param {String} file Optional filename\n */\nexport async function exportCircleOfTrust(cotId, file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(cotId, 'cot.saml');\n }\n createProgressBar(1, `Exporting circle of trust ${cotId}`);\n getCircleOfTrust(cotId)\n .then(async (response) => {\n const cotData = _.cloneDeep(response.data);\n delete cotData._rev;\n updateProgressBar(`Exporting ${cotId}`);\n const fileData = getFileDataTemplate();\n fileData.saml.cot[cotId] = cotData;\n await exportDependencies(cotData, fileData);\n saveJsonToFile(fileData, fileName);\n stopProgressBar(\n `Exported ${cotId.brightCyan} to ${fileName.brightCyan}.`\n );\n })\n .catch((err) => {\n stopProgressBar(`${err}`);\n printMessage(err, 'error');\n });\n}\n\n/**\n * Export all circles of trust to one file\n * @param {String} file Optional filename\n */\nexport async function exportCirclesOfTrustToFile(file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(\n `all${getRealmString()}CirclesOfTrust`,\n 'cot.saml'\n );\n }\n const fileData = getFileDataTemplate();\n let allCotData = [];\n try {\n const response = await getCirclesOfTrust();\n if (response.status < 200 || response.status > 399) {\n printMessage(response, 'data');\n printMessage(`getCirclesOfTrust: ${response.status}`, 'error');\n }\n allCotData = _.cloneDeep(response.data.result);\n createProgressBar(allCotData.length, 'Exporting circles of trust');\n for (const cotData of allCotData) {\n delete cotData._rev;\n updateProgressBar(`Exporting circle of trust ${cotData._id}`);\n // eslint-disable-next-line no-await-in-loop\n await exportDependencies(cotData, fileData);\n fileData.saml.cot[cotData._id] = cotData;\n }\n saveJsonToFile(fileData, fileName);\n stopProgressBar(\n `${allCotData.length} circle(s) of trust exported to ${fileName}.`\n );\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n}\n\n/**\n * Export all circles of trust to individual files\n */\nexport async function exportCirclesOfTrustToFiles() {\n let allCotData = [];\n try {\n const response = await getCirclesOfTrust();\n if (response.status < 200 || response.status > 399) {\n printMessage(response, 'data');\n printMessage(`getCirclesOfTrust: ${response.status}`, 'error');\n }\n allCotData = _.cloneDeep(response.data.result);\n createProgressBar(allCotData.length, 'Exporting circles of trust');\n for (const cotData of allCotData) {\n delete cotData._rev;\n updateProgressBar(`Exporting circle of trust ${cotData._id}`);\n const fileName = getTypedFilename(cotData._id, 'cot.saml');\n const fileData = getFileDataTemplate();\n // eslint-disable-next-line no-await-in-loop\n await exportDependencies(cotData, fileData);\n fileData.saml.cot[cotData._id] = cotData;\n saveJsonToFile(fileData, fileName);\n }\n stopProgressBar(`${allCotData.length} providers exported.`);\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n}\n\n/**\n * Include dependencies from the import file\n * @param {Object} cotData Object representing a SAML circle of trust\n * @param {Object} fileData File data object to read dependencies from\n */\nasync function importDependencies(cotData, fileData) {\n // TODO: Import dependencies\n return [cotData, fileData];\n}\n\n/**\n * Import a SAML circle of trust by id/name from file\n * @param {String} cotId Circle of trust id/name\n * @param {String} file Import file name\n */\nexport async function importCircleOfTrust(cotId, file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressBar(1, 'Importing circle of trust...');\n const cotData = _.get(fileData, ['saml', 'cot', cotId]);\n if (cotData) {\n updateProgressBar(`Importing ${cotId}`);\n await importDependencies(cotData, fileData);\n createCircleOfTrust(cotData)\n .then(() => {\n stopProgressBar(`Successfully imported ${cotId}.`);\n })\n .catch((createProviderErr) => {\n stopProgressBar(`Error importing ${cotId}.`);\n printMessage(`Error importing ${cotId}`, 'error');\n printMessage(createProviderErr.response.data, 'error');\n });\n } else {\n stopProgressBar(\n `Circle of trust ${cotId.brightCyan} not found in ${file.brightCyan}!`\n );\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import first SAML circle of trust from file\n * @param {String} file Import file name\n */\nexport async function importFirstCircleOfTrust(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressBar(1, 'Importing circle of trust...');\n for (const cotId in fileData.saml.cot) {\n if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {\n const cotData = _.cloneDeep(fileData.saml.cot[cotId]);\n updateProgressBar(`Importing ${cotId}`);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(cotData, fileData);\n createCircleOfTrust(cotData)\n .then(() => {\n stopProgressBar(`Successfully imported ${cotId}.`);\n })\n .catch((createCircleOfTrustErr) => {\n stopProgressBar(`Error importing ${cotId}.`);\n printMessage(`Error importing ${cotId}`, 'error');\n printMessage(createCircleOfTrustErr.response.data, 'error');\n });\n break;\n }\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML circles of trust from file\n * @param {String} file Import file name\n */\nexport async function importCirclesOfTrustFromFile(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressBar(\n Object.keys(fileData.saml.cot).length,\n 'Importing circles of trust...'\n );\n for (const cotId in fileData.saml.cot) {\n if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {\n const cotData = _.cloneDeep(fileData.saml.cot[cotId]);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(cotData, fileData);\n try {\n // eslint-disable-next-line no-await-in-loop\n await createCircleOfTrust(cotData);\n updateProgressBar(`Imported ${cotId}`);\n } catch (createCircleOfTrustErr) {\n printMessage(`\\nError importing ${cotId}`, 'error');\n printMessage(createCircleOfTrustErr.response.data, 'error');\n }\n }\n }\n stopProgressBar(`Circles of trust imported.`);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML circles of trust from all *.cot.saml.json files in the current directory\n */\nexport async function importCirclesOfTrustFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.cot.saml.json')\n );\n createProgressBar(jsonFiles.length, 'Importing circles or trust...');\n let total = 0;\n let totalErrors = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n total += _.keys(fileData.saml.cot).length;\n let errors = 0;\n for (const cotId in fileData.saml.cot) {\n if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {\n const cotData = _.cloneDeep(fileData.saml.cot[cotId]);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(cotData, fileData);\n try {\n // eslint-disable-next-line no-await-in-loop\n await createCircleOfTrust(cotData);\n // updateProgressBar(`Imported ${cotId}`);\n } catch (createCircleOfTrustErr) {\n errors += 1;\n printMessage(`\\nError importing ${cotId}`, 'error');\n printMessage(createCircleOfTrustErr.response.data, 'error');\n }\n }\n }\n totalErrors += errors;\n updateProgressBar(\n `Imported ${\n _.keys(fileData.saml.cot).length - errors\n } circle(s) of trust from ${file}`\n );\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressBar(\n `Imported ${total - totalErrors} of ${total} circle(s) of trust from ${\n jsonFiles.length\n } file(s).`\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CirclesOfTrustOps.js","names":["fs","_","createTable","printMessage","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","getCirclesOfTrust","getCircleOfTrust","createCircleOfTrust","getRealmString","getTypedFilename","saveJsonToFile","validateImport","getFileDataTemplate","meta","script","saml","hosted","remote","metadata","cot","listCirclesOfTrust","long","cotList","response","status","data","result","error","sort","a","b","_id","localeCompare","forEach","table","push","description","trustedProviders","map","provider","split","join","toString","exportDependencies","cotData","fileData","exportCircleOfTrust","cotId","file","fileName","then","cloneDeep","_rev","brightCyan","catch","err","exportCirclesOfTrustToFile","allCotData","length","exportCirclesOfTrustToFiles","importDependencies","importCircleOfTrust","readFile","JSON","parse","get","createProviderErr","importFirstCircleOfTrust","hasOwnProperty","call","createCircleOfTrustErr","importCirclesOfTrustFromFile","Object","keys","importCirclesOfTrustFromFiles","names","readdirSync","jsonFiles","filter","name","toLowerCase","endsWith","total","totalErrors","readFileSync","errors"],"sources":["ops/CirclesOfTrustOps.ts"],"sourcesContent":["import fs from 'fs';\nimport _ from 'lodash';\nimport {\n createTable,\n printMessage,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n} from './utils/Console';\nimport {\n getCirclesOfTrust,\n getCircleOfTrust,\n createCircleOfTrust,\n} from '../api/CirclesOfTrustApi';\nimport {\n getRealmString,\n getTypedFilename,\n saveJsonToFile,\n validateImport,\n} from './utils/ExportImportUtils';\n\n// use a function vs a template variable to avoid problems in loops\nfunction getFileDataTemplate() {\n return {\n meta: {},\n script: {},\n saml: {\n hosted: {},\n remote: {},\n metadata: {},\n cot: {},\n },\n };\n}\n\n/**\n * List entity providers\n * @param {String} long Long list format with details\n */\nexport async function listCirclesOfTrust(long = false) {\n let cotList = [];\n try {\n const response = await getCirclesOfTrust();\n if (response.status < 200 || response.status > 399) {\n printMessage(response, 'data');\n printMessage(`getCirclesOfTrust: ${response.status}`, 'error');\n }\n cotList = response.data.result;\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n cotList.sort((a, b) => a._id.localeCompare(b._id));\n if (!long) {\n cotList.forEach((cot) => {\n printMessage(`${cot._id}`, 'data');\n });\n } else {\n const table = createTable([\n 'Name'['brightCyan'],\n 'Description'['brightCyan'],\n 'Status'['brightCyan'],\n 'Trusted Providers'['brightCyan'],\n ]);\n cotList.forEach((cot) => {\n table.push([\n cot._id,\n cot.description,\n cot.status,\n cot.trustedProviders\n .map((provider) => provider.split('|')[0])\n .join('\\n'),\n ]);\n });\n printMessage(table.toString());\n }\n}\n\n/**\n * Include dependencies in the export file\n * @param {Object} cotData Object representing a SAML circle of trust\n * @param {Object} fileData File data object to add dependencies to\n */\nasync function exportDependencies(cotData, fileData) {\n // TODO: Export dependencies\n return [cotData, fileData];\n}\n\n/**\n * Export a single circle of trust to file\n * @param {String} cotId circle of trust id/name\n * @param {String} file Optional filename\n */\nexport async function exportCircleOfTrust(cotId, file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(cotId, 'cot.saml');\n }\n createProgressIndicator(1, `Exporting circle of trust ${cotId}`);\n getCircleOfTrust(cotId)\n .then(async (response) => {\n const cotData = _.cloneDeep(response.data);\n delete cotData._rev;\n updateProgressIndicator(`Exporting ${cotId}`);\n const fileData = getFileDataTemplate();\n fileData.saml.cot[cotId] = cotData;\n await exportDependencies(cotData, fileData);\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `Exported ${cotId.brightCyan} to ${fileName.brightCyan}.`\n );\n })\n .catch((err) => {\n stopProgressIndicator(`${err}`);\n printMessage(err, 'error');\n });\n}\n\n/**\n * Export all circles of trust to one file\n * @param {String} file Optional filename\n */\nexport async function exportCirclesOfTrustToFile(file = null) {\n let fileName = file;\n if (!fileName) {\n fileName = getTypedFilename(\n `all${getRealmString()}CirclesOfTrust`,\n 'cot.saml'\n );\n }\n const fileData = getFileDataTemplate();\n let allCotData = [];\n try {\n const response = await getCirclesOfTrust();\n if (response.status < 200 || response.status > 399) {\n printMessage(response, 'data');\n printMessage(`getCirclesOfTrust: ${response.status}`, 'error');\n }\n allCotData = _.cloneDeep(response.data.result);\n createProgressIndicator(allCotData.length, 'Exporting circles of trust');\n for (const cotData of allCotData) {\n delete cotData._rev;\n updateProgressIndicator(`Exporting circle of trust ${cotData._id}`);\n // eslint-disable-next-line no-await-in-loop\n await exportDependencies(cotData, fileData);\n fileData.saml.cot[cotData._id] = cotData;\n }\n saveJsonToFile(fileData, fileName);\n stopProgressIndicator(\n `${allCotData.length} circle(s) of trust exported to ${fileName}.`\n );\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n}\n\n/**\n * Export all circles of trust to individual files\n */\nexport async function exportCirclesOfTrustToFiles() {\n let allCotData = [];\n try {\n const response = await getCirclesOfTrust();\n if (response.status < 200 || response.status > 399) {\n printMessage(response, 'data');\n printMessage(`getCirclesOfTrust: ${response.status}`, 'error');\n }\n allCotData = _.cloneDeep(response.data.result);\n createProgressIndicator(allCotData.length, 'Exporting circles of trust');\n for (const cotData of allCotData) {\n delete cotData._rev;\n updateProgressIndicator(`Exporting circle of trust ${cotData._id}`);\n const fileName = getTypedFilename(cotData._id, 'cot.saml');\n const fileData = getFileDataTemplate();\n // eslint-disable-next-line no-await-in-loop\n await exportDependencies(cotData, fileData);\n fileData.saml.cot[cotData._id] = cotData;\n saveJsonToFile(fileData, fileName);\n }\n stopProgressIndicator(`${allCotData.length} providers exported.`);\n } catch (error) {\n printMessage(`getCirclesOfTrust ERROR: ${error}`, 'error');\n printMessage(error, 'data');\n }\n}\n\n/**\n * Include dependencies from the import file\n * @param {Object} cotData Object representing a SAML circle of trust\n * @param {Object} fileData File data object to read dependencies from\n */\nasync function importDependencies(cotData, fileData) {\n // TODO: Import dependencies\n return [cotData, fileData];\n}\n\n/**\n * Import a SAML circle of trust by id/name from file\n * @param {String} cotId Circle of trust id/name\n * @param {String} file Import file name\n */\nexport async function importCircleOfTrust(cotId, file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing circle of trust...');\n const cotData = _.get(fileData, ['saml', 'cot', cotId]);\n if (cotData) {\n updateProgressIndicator(`Importing ${cotId}`);\n await importDependencies(cotData, fileData);\n createCircleOfTrust(cotData)\n .then(() => {\n stopProgressIndicator(`Successfully imported ${cotId}.`);\n })\n .catch((createProviderErr) => {\n stopProgressIndicator(`Error importing ${cotId}.`);\n printMessage(`Error importing ${cotId}`, 'error');\n printMessage(createProviderErr.response.data, 'error');\n });\n } else {\n stopProgressIndicator(\n `Circle of trust ${cotId.brightCyan} not found in ${file.brightCyan}!`\n );\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import first SAML circle of trust from file\n * @param {String} file Import file name\n */\nexport async function importFirstCircleOfTrust(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(1, 'Importing circle of trust...');\n for (const cotId in fileData.saml.cot) {\n if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {\n const cotData = _.cloneDeep(fileData.saml.cot[cotId]);\n updateProgressIndicator(`Importing ${cotId}`);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(cotData, fileData);\n createCircleOfTrust(cotData)\n .then(() => {\n stopProgressIndicator(`Successfully imported ${cotId}.`);\n })\n .catch((createCircleOfTrustErr) => {\n stopProgressIndicator(`Error importing ${cotId}.`);\n printMessage(`Error importing ${cotId}`, 'error');\n printMessage(createCircleOfTrustErr.response.data, 'error');\n });\n break;\n }\n }\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML circles of trust from file\n * @param {String} file Import file name\n */\nexport async function importCirclesOfTrustFromFile(file) {\n fs.readFile(file, 'utf8', async (err, data) => {\n if (err) throw err;\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n createProgressIndicator(\n Object.keys(fileData.saml.cot).length,\n 'Importing circles of trust...'\n );\n for (const cotId in fileData.saml.cot) {\n if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {\n const cotData = _.cloneDeep(fileData.saml.cot[cotId]);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(cotData, fileData);\n try {\n // eslint-disable-next-line no-await-in-loop\n await createCircleOfTrust(cotData);\n updateProgressIndicator(`Imported ${cotId}`);\n } catch (createCircleOfTrustErr) {\n printMessage(`\\nError importing ${cotId}`, 'error');\n printMessage(createCircleOfTrustErr.response.data, 'error');\n }\n }\n }\n stopProgressIndicator(`Circles of trust imported.`);\n } else {\n printMessage('Import validation failed...', 'error');\n }\n });\n}\n\n/**\n * Import all SAML circles of trust from all *.cot.saml.json files in the current directory\n */\nexport async function importCirclesOfTrustFromFiles() {\n const names = fs.readdirSync('.');\n const jsonFiles = names.filter((name) =>\n name.toLowerCase().endsWith('.cot.saml.json')\n );\n createProgressIndicator(jsonFiles.length, 'Importing circles or trust...');\n let total = 0;\n let totalErrors = 0;\n for (const file of jsonFiles) {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n if (validateImport(fileData.meta)) {\n total += _.keys(fileData.saml.cot).length;\n let errors = 0;\n for (const cotId in fileData.saml.cot) {\n if ({}.hasOwnProperty.call(fileData.saml.cot, cotId)) {\n const cotData = _.cloneDeep(fileData.saml.cot[cotId]);\n // eslint-disable-next-line no-await-in-loop\n await importDependencies(cotData, fileData);\n try {\n // eslint-disable-next-line no-await-in-loop\n await createCircleOfTrust(cotData);\n // updateProgressIndicator(`Imported ${cotId}`);\n } catch (createCircleOfTrustErr) {\n errors += 1;\n printMessage(`\\nError importing ${cotId}`, 'error');\n printMessage(createCircleOfTrustErr.response.data, 'error');\n }\n }\n }\n totalErrors += errors;\n updateProgressIndicator(\n `Imported ${\n _.keys(fileData.saml.cot).length - errors\n } circle(s) of trust from ${file}`\n );\n } else {\n printMessage(`Validation of ${file} failed!`, 'error');\n }\n }\n stopProgressIndicator(\n `Imported ${total - totalErrors} of ${total} circle(s) of trust from ${\n jsonFiles.length\n } file(s).`\n );\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import fs from 'fs';
2
2
  import { EMAIL_TEMPLATE_TYPE, getEmailTemplate, getEmailTemplates, putEmailTemplate } from '../api/EmailTemplateApi';
3
- import { createProgressBar, createTable, printMessage, stopProgressBar, updateProgressBar } from './utils/Console';
3
+ import { createProgressIndicator, createTable, printMessage, stopProgressIndicator, updateProgressIndicator } from './utils/Console';
4
4
  import { getTypedFilename, saveJsonToFile, validateImport } from './utils/ExportImportUtils';
5
5
  import wordwrap from './utils/Wordwrap';
6
6
  /**
@@ -69,16 +69,16 @@ export async function exportEmailTemplateToFile(templateId, file) {
69
69
  fileName = getTypedFilename(templateId, EMAIL_TEMPLATE_FILE_TYPE);
70
70
  }
71
71
 
72
- createProgressBar(1, `Exporting ${templateId}`);
72
+ createProgressIndicator(1, `Exporting ${templateId}`);
73
73
  getEmailTemplate(templateId).then(async response => {
74
74
  const templateData = response.data;
75
- updateProgressBar(`Writing file ${fileName}`);
75
+ updateProgressIndicator(`Writing file ${fileName}`);
76
76
  const fileData = getFileDataTemplate();
77
77
  fileData.emailTemplate[templateId] = templateData;
78
78
  saveJsonToFile(fileData, fileName);
79
- stopProgressBar(`Exported ${templateId.brightCyan} to ${fileName.brightCyan}.`);
79
+ stopProgressIndicator(`Exported ${templateId.brightCyan} to ${fileName.brightCyan}.`);
80
80
  }).catch(err => {
81
- stopProgressBar(`${err}`);
81
+ stopProgressIndicator(`${err}`);
82
82
  printMessage(err, 'error');
83
83
  });
84
84
  }
@@ -97,19 +97,19 @@ export async function exportEmailTemplatesToFile(file) {
97
97
  const fileData = getFileDataTemplate();
98
98
  getEmailTemplates().then(response => {
99
99
  const templates = response.data.result;
100
- createProgressBar(response.data.resultCount, 'Exporting email templates');
100
+ createProgressIndicator(response.data.resultCount, 'Exporting email templates');
101
101
 
102
102
  for (const template of templates) {
103
103
  const templateId = template._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');
104
104
 
105
- updateProgressBar(`Exporting ${templateId}`);
105
+ updateProgressIndicator(`Exporting ${templateId}`);
106
106
  fileData.emailTemplate[templateId] = template;
107
107
  }
108
108
 
109
109
  saveJsonToFile(fileData, fileName);
110
- stopProgressBar(`${response.data.resultCount} templates exported to ${fileName}.`);
110
+ stopProgressIndicator(`${response.data.resultCount} templates exported to ${fileName}.`);
111
111
  }).catch(err => {
112
- stopProgressBar(`${err}`);
112
+ stopProgressIndicator(`${err}`);
113
113
  printMessage(err, 'error');
114
114
  });
115
115
  }
@@ -120,21 +120,21 @@ export async function exportEmailTemplatesToFile(file) {
120
120
  export async function exportEmailTemplatesToFiles() {
121
121
  getEmailTemplates().then(response => {
122
122
  const templates = response.data.result;
123
- createProgressBar(response.data.resultCount, 'Exporting email templates');
123
+ createProgressIndicator(response.data.resultCount, 'Exporting email templates');
124
124
 
125
125
  for (const template of templates) {
126
126
  const templateId = template._id.replace(`${EMAIL_TEMPLATE_TYPE}/`, '');
127
127
 
128
128
  const fileName = getTypedFilename(templateId, EMAIL_TEMPLATE_FILE_TYPE);
129
129
  const fileData = getFileDataTemplate();
130
- updateProgressBar(`Exporting ${templateId}`);
130
+ updateProgressIndicator(`Exporting ${templateId}`);
131
131
  fileData.emailTemplate[templateId] = template;
132
132
  saveJsonToFile(fileData, fileName);
133
133
  }
134
134
 
135
- stopProgressBar(`${response.data.resultCount} templates exported.`);
135
+ stopProgressIndicator(`${response.data.resultCount} templates exported.`);
136
136
  }).catch(err => {
137
- stopProgressBar(`${err}`);
137
+ stopProgressIndicator(`${err}`);
138
138
  printMessage(err, 'error');
139
139
  });
140
140
  }
@@ -152,18 +152,18 @@ export async function importEmailTemplateFromFile(templateId, file) {
152
152
  const fileData = JSON.parse(data);
153
153
 
154
154
  if (validateImport(fileData.meta)) {
155
- createProgressBar(1, `Importing ${templateId}`);
155
+ createProgressIndicator(1, `Importing ${templateId}`);
156
156
 
157
157
  if (fileData.emailTemplate[templateId]) {
158
158
  putEmailTemplate(templateId, fileData.emailTemplate[templateId]).then(() => {
159
- updateProgressBar(`Importing ${templateId}`);
160
- stopProgressBar(`Imported ${templateId}`);
159
+ updateProgressIndicator(`Importing ${templateId}`);
160
+ stopProgressIndicator(`Imported ${templateId}`);
161
161
  }).catch(putEmailTemplateError => {
162
- stopProgressBar(`${putEmailTemplateError}`);
162
+ stopProgressIndicator(`${putEmailTemplateError}`);
163
163
  printMessage(putEmailTemplateError, 'error');
164
164
  });
165
165
  } else {
166
- stopProgressBar(`Email template ${templateId.brightCyan} not found in ${file.brightCyan}!`);
166
+ stopProgressIndicator(`Email template ${templateId.brightCyan} not found in ${file.brightCyan}!`);
167
167
  printMessage(`Email template ${templateId.brightCyan} not found in ${file.brightCyan}!`, 'error');
168
168
  }
169
169
  } else {
@@ -182,7 +182,7 @@ export async function importEmailTemplatesFromFile(file) {
182
182
  const fileData = JSON.parse(data);
183
183
 
184
184
  if (validateImport(fileData.meta)) {
185
- createProgressBar(Object.keys(fileData.emailTemplate).length, `Importing email templates`);
185
+ createProgressIndicator(Object.keys(fileData.emailTemplate).length, `Importing email templates`);
186
186
 
187
187
  for (const id in fileData.emailTemplate) {
188
188
  if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
@@ -191,7 +191,7 @@ export async function importEmailTemplatesFromFile(file) {
191
191
  try {
192
192
  // eslint-disable-next-line no-await-in-loop
193
193
  await putEmailTemplate(templateId, fileData.emailTemplate[templateId]);
194
- updateProgressBar(`Imported ${templateId}`);
194
+ updateProgressIndicator(`Imported ${templateId}`);
195
195
  } catch (putEmailTemplateError) {
196
196
  printMessage(`\nError importing ${templateId}`, 'error');
197
197
  printMessage(putEmailTemplateError.response.data, 'error');
@@ -199,7 +199,7 @@ export async function importEmailTemplatesFromFile(file) {
199
199
  }
200
200
  }
201
201
 
202
- stopProgressBar(`Done.`);
202
+ stopProgressIndicator(`Done.`);
203
203
  } else {
204
204
  printMessage('Import validation failed...', 'error');
205
205
  }
@@ -212,7 +212,7 @@ export async function importEmailTemplatesFromFile(file) {
212
212
  export async function importEmailTemplatesFromFiles() {
213
213
  const names = fs.readdirSync('.');
214
214
  const jsonFiles = names.filter(name => name.toLowerCase().endsWith(`${EMAIL_TEMPLATE_FILE_TYPE}.json`));
215
- createProgressBar(jsonFiles.length, 'Importing email templates...');
215
+ createProgressIndicator(jsonFiles.length, 'Importing email templates...');
216
216
  let total = 0;
217
217
  let totalErrors = 0;
218
218
 
@@ -240,13 +240,13 @@ export async function importEmailTemplatesFromFiles() {
240
240
  }
241
241
 
242
242
  totalErrors += errors;
243
- updateProgressBar(`Imported ${file}`);
243
+ updateProgressIndicator(`Imported ${file}`);
244
244
  } else {
245
245
  printMessage(`Validation of ${file} failed!`, 'error');
246
246
  }
247
247
  }
248
248
 
249
- stopProgressBar(`Imported ${total - totalErrors} of ${total} email template(s) from ${jsonFiles.length} file(s).`);
249
+ stopProgressIndicator(`Imported ${total - totalErrors} of ${total} email template(s) from ${jsonFiles.length} file(s).`);
250
250
  }
251
251
  /**
252
252
  * Import first email template from file
@@ -259,15 +259,15 @@ export async function importFirstEmailTemplateFromFile(file) {
259
259
  const fileData = JSON.parse(data);
260
260
 
261
261
  if (validateImport(fileData.meta)) {
262
- createProgressBar(1, `Importing first email template`);
262
+ createProgressIndicator(1, `Importing first email template`);
263
263
 
264
264
  for (const id in fileData.emailTemplate) {
265
265
  if ({}.hasOwnProperty.call(fileData.emailTemplate, id)) {
266
266
  putEmailTemplate(id.replace(regexEmailTemplateType, ''), fileData.emailTemplate[id]).then(() => {
267
- updateProgressBar(`Imported ${id}`);
268
- stopProgressBar(`Imported ${id}`);
267
+ updateProgressIndicator(`Imported ${id}`);
268
+ stopProgressIndicator(`Imported ${id}`);
269
269
  }).catch(putEmailTemplateError => {
270
- stopProgressBar(`Error importing email template ${id}`);
270
+ stopProgressIndicator(`Error importing email template ${id}`);
271
271
  printMessage(`\nError importing email template ${id}`, 'error');
272
272
  printMessage(putEmailTemplateError.response.data, 'error');
273
273
  });