@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.
- package/CHANGELOG.md +5 -1
- package/cjs/api/BaseApi.js +1 -1
- package/cjs/api/BaseApi.js.map +1 -1
- package/cjs/ops/CirclesOfTrustOps.js +27 -27
- package/cjs/ops/CirclesOfTrustOps.js.map +1 -1
- package/cjs/ops/EmailTemplateOps.js +28 -28
- package/cjs/ops/EmailTemplateOps.js.map +1 -1
- package/cjs/ops/IdmOps.js +5 -5
- package/cjs/ops/IdmOps.js.map +1 -1
- package/cjs/ops/IdpOps.js +26 -26
- package/cjs/ops/IdpOps.js.map +1 -1
- package/cjs/ops/JourneyOps.js +66 -66
- package/cjs/ops/JourneyOps.js.map +1 -1
- package/cjs/ops/SamlOps.js +31 -31
- package/cjs/ops/SamlOps.js.map +1 -1
- package/cjs/ops/ScriptOps.js +10 -10
- package/cjs/ops/ScriptOps.js.map +1 -1
- package/cjs/ops/SecretsOps.js +25 -25
- package/cjs/ops/SecretsOps.js.map +1 -1
- package/cjs/ops/StartupOps.js +11 -11
- package/cjs/ops/StartupOps.js.map +1 -1
- package/cjs/ops/ThemeOps.js +45 -45
- package/cjs/ops/ThemeOps.js.map +1 -1
- package/cjs/ops/VariablesOps.js +16 -16
- package/cjs/ops/VariablesOps.js.map +1 -1
- package/cjs/ops/utils/Console.js +38 -273
- package/cjs/ops/utils/Console.js.map +1 -1
- package/cjs/storage/SessionStorage.js +10 -20
- package/cjs/storage/SessionStorage.js.map +1 -1
- package/esm/api/BaseApi.mjs +1 -1
- package/esm/ops/CirclesOfTrustOps.mjs +27 -27
- package/esm/ops/EmailTemplateOps.mjs +28 -28
- package/esm/ops/IdmOps.mjs +5 -5
- package/esm/ops/IdpOps.mjs +26 -26
- package/esm/ops/JourneyOps.mjs +66 -66
- package/esm/ops/SamlOps.mjs +31 -31
- package/esm/ops/ScriptOps.mjs +10 -10
- package/esm/ops/SecretsOps.mjs +25 -25
- package/esm/ops/StartupOps.mjs +11 -11
- package/esm/ops/ThemeOps.mjs +45 -45
- package/esm/ops/VariablesOps.mjs +16 -16
- package/esm/ops/utils/Console.mjs +38 -273
- package/esm/storage/SessionStorage.mjs +10 -20
- 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.
|
|
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
|
|
package/cjs/api/BaseApi.js
CHANGED
|
@@ -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}
|
|
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;
|
package/cjs/api/BaseApi.js.map
CHANGED
|
@@ -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":"AAAA,OAAOA,KAAP,MAAwC,OAAxC;AACA,OAAOC,UAAP,MAAuB,aAAvB;AACA,OAAO,KAAKC,KAAZ,MAAuB,OAAvB;AACA,OAAOC,eAAP,MAA4B,mBAA5B;AACA,OAAOC,GAAP,MAAgB,KAAhB;AACA,OAAOC,EAAP,MAAe,IAAf;AACA,OAAOC,OAAP,MAAoB,2BAApB;AACA,SAASC,YAAT,QAA6B,kBAA7B;AACA,OAAOC,IAAP,MAAiB,MAAjB;AACA,SAASC,aAAT,QAA8B,KAA9B;;AAEA,MAAMC,SAAS,GAAGF,IAAI,CAACG,OAAL,CAAaF,aAAa,qDAA1B,CAAlB;;AAEA,MAAMG,GAAG,GAAGC,IAAI,CAACC,KAAL,CACVT,EAAE,CAACU,YAAH,CAAgBP,IAAI,CAACQ,OAAL,CAAaN,SAAb,EAAwB,oBAAxB,CAAhB,EAA+D,MAA/D,CADU,CAAZ;AAIAT,UAAU,CAACD,KAAD,EAAQ;EAChBiB,OAAO,EAAE,CADO;EAEhBC,kBAAkB,EAAE,IAFJ;EAGhBC,cAAc,EAAGC,MAAD,IAAY,IAHZ,CAGkB;;AAHlB,CAAR,CAAV;AAMA,MAAMC,OAAO,GAAG,KAAhB;AACA,MAAMC,SAAS,GAAI,GAAEV,GAAG,CAACW,IAAK,IAAGX,GAAG,CAACY,OAAQ,EAA7C;AACA,IAAIC,UAAJ;AAEA;AACA;AACA;AACA;;AACA,SAASC,aAAT,GAAyB;EACvB,IAAID,UAAJ,EAAgB,OAAOA,UAAP;EAChB,MAAME,OAAO,GAAG;IACdC,kBAAkB,EAAE,CAACtB,OAAO,CAACuB,OAAR,CAAgBC,0BAAhB;EADP,CAAhB;EAGA,MAAMC,UAAU,GAAGC,OAAO,CAACC,GAAR,CAAYC,WAAZ,IAA2BF,OAAO,CAACC,GAAR,CAAYE,WAA1D;;EACA,IAAIJ,UAAJ,EAAgB;IACd;IACAK,OAAO,CAACC,KAAR,CAAe,eAAcN,UAAW,EAA1B,CAA4BO,MAA1C;IACA,MAAMC,MAAM,GAAGnC,GAAG,CAACU,KAAJ,CAAUiB,UAAV,CAAf;IACAJ,OAAO,CAAC,MAAD,CAAP,GAAkBY,MAAM,CAACC,QAAzB;IACAb,OAAO,CAAC,MAAD,CAAP,GAAkBY,MAAM,CAACE,IAAzB;IACAd,OAAO,CAAC,UAAD,CAAP,GAAsBY,MAAM,CAACG,QAA7B;IACAf,OAAO,CAACC,kBAAR,GAA6B,CAACtB,OAAO,CAACuB,OAAR,CAAgBC,0BAAhB,EAA9B;IACAL,UAAU,GAAGtB,eAAe,CAACwB,OAAD,CAA5B;IACA,OAAOF,UAAP;EACD;;EACDA,UAAU,GAAG,IAAIvB,KAAK,CAACyC,KAAV,CAAgBhB,OAAhB,CAAb;EACA,OAAOF,UAAP;AACD;AAED;AACA;AACA;AACA;;;AACA,SAASmB,QAAT,GAA8C;EAC5C,IAAIZ,OAAO,CAACC,GAAR,CAAYC,WAAZ,IAA2BF,OAAO,CAACC,GAAR,CAAYE,WAA3C,EAAwD,OAAO,KAAP;EACxD,OAAO,IAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,OAAO,SAASU,aAAT,CAAuBC,QAAvB,EAAiCC,eAAe,GAAG,EAAnD,EAAuD;EAC5D,IAAIC,OAAO,GAAG;IACZ,cAAc1B,SADF;IAEZ,gBAAgB,kBAFJ;IAGZ,sBAAsBwB,QAAQ,CAACG,UAHnB;IAIZC,MAAM,EAAG,GAAE5C,OAAO,CAACuB,OAAR,CAAgBsB,GAAhB,CAAoB,YAApB,CAAkC,IAAG7C,OAAO,CAACuB,OAAR,CAAgBsB,GAAhB,CAAoB,aAApB,CAAmC;EAJvE,CAAd;;EAMA,IAAIJ,eAAe,CAAC,SAAD,CAAnB,EAAgC;IAC9BC,OAAO,GAAG,EACR,GAAGA,OADK;MAER,GAAGD,eAAe,CAAC,SAAD;IAFV,CAAV;EAID;;EAED,MAAMK,cAAc,GAAG;IACrBC,OAAO,EAAG,GAAE/C,OAAO,CAACuB,OAAR,CAAgByB,SAAhB,EAA4B,QAAOR,QAAQ,CAACtC,IAAK,EADxC;IAErBa,OAFqB;IAGrB,GAAG0B,eAHkB;IAIrBC,OAJqB;IAKrBvB,UAAU,EAAEC,aAAa,EALJ;IAMrB6B,KAAK,EAAEX,QAAQ;EANM,CAAvB;EASA,MAAMY,OAAO,GAAGxD,KAAK,CAACyD,MAAN,CAAaL,cAAb,CAAhB;EAEA,OAAOI,OAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASE,iBAAT,CAA2BZ,QAA3B,EAAqCC,eAAe,GAAG,EAAvD,EAA2D;EAChE,IAAIC,OAAO,GAAG;IACZ,cAAc1B,SADF;IAEZ,sBAAsBwB,QAAQ,CAACG,UAFnB;IAGZC,MAAM,EAAG,GAAE5C,OAAO,CAACuB,OAAR,CAAgBsB,GAAhB,CAAoB,YAApB,CAAkC,IAAG7C,OAAO,CAACuB,OAAR,CAAgBsB,GAAhB,CAAoB,aAApB,CAAmC;EAHvE,CAAd;;EAKA,IAAIJ,eAAe,CAAC,SAAD,CAAnB,EAAgC;IAC9BC,OAAO,GAAG,EACR,GAAGA,OADK;MAER,GAAGD,eAAe,CAAC,SAAD;IAFV,CAAV;EAID;;EAED,MAAMK,cAAc,GAAG;IACrBC,OAAO,EAAG,GAAE/C,OAAO,CAACuB,OAAR,CAAgByB,SAAhB,EAA4B,QAAOR,QAAQ,CAACtC,IAAK,EADxC;IAErBa,OAFqB;IAGrB,GAAG0B,eAHkB;IAIrBC,OAJqB;IAKrBvB,UAAU,EAAEC,aAAa,EALJ;IAMrB6B,KAAK,EAAEX,QAAQ;EANM,CAAvB;EASA,MAAMY,OAAO,GAAGxD,KAAK,CAACyD,MAAN,CAAaL,cAAb,CAAhB;EAEA,OAAOI,OAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASG,cAAT,CAAwBZ,eAAe,GAAG,EAA1C,EAA8C;EACnD,MAAMK,cAAc,GAAG;IACrBC,OAAO,EAAE9C,YAAY,CAACD,OAAO,CAACuB,OAAR,CAAgByB,SAAhB,EAAD,CADA;IAErBjC,OAFqB;IAGrB2B,OAAO,EAAE;MACP,cAAc1B,SADP;MAEP,gBAAgB;IAFT,CAHY;IAOrB,GAAGyB,eAPkB;IAQrBtB,UAAU,EAAEC,aAAa,EARJ;IASrB6B,KAAK,EAAEX,QAAQ;EATM,CAAvB;;EAYA,IAAItC,OAAO,CAACuB,OAAR,CAAgB+B,cAAhB,EAAJ,EAAsC;IACpCR,cAAc,CAACJ,OAAf,CACE,eADF,IAEK,UAAS1C,OAAO,CAACuB,OAAR,CAAgB+B,cAAhB,EAAiC,EAF/C;EAGD;;EAED,MAAMJ,OAAO,GAAGxD,KAAK,CAACyD,MAAN,CAAaL,cAAb,CAAhB;EAEA,OAAOI,OAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASK,kBAAT,CAA4Bd,eAAe,GAAG,EAA9C,EAAkD;EACvD,MAAMC,OAAO,GAAG;IACd,cAAc1B,SADA;IAEd,gBAAgB;EAFF,CAAhB;EAIA,MAAM8B,cAAc,GAAG;IACrBC,OAAO,EAAE9C,YAAY,CAACD,OAAO,CAACuB,OAAR,CAAgByB,SAAhB,EAAD,CADA;IAErBjC,OAFqB;IAGrB2B,OAHqB;IAIrB,GAAGD,eAJkB;IAKrBtB,UAAU,EAAEC,aAAa,EALJ;IAMrB6B,KAAK,EAAEX,QAAQ;EANM,CAAvB;;EASA,IAAItC,OAAO,CAACuB,OAAR,CAAgB+B,cAAhB,EAAJ,EAAsC;IACpCR,cAAc,CAACJ,OAAf,CACE,eADF,IAEK,UAAS1C,OAAO,CAACuB,OAAR,CAAgB+B,cAAhB,EAAiC,EAF/C;EAGD;;EAED,MAAMJ,OAAO,GAAGxD,KAAK,CAACyD,MAAN,CAAaL,cAAb,CAAhB;EAEA,OAAOI,OAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASM,cAAT,CAAwBf,eAAe,GAAG,EAA1C,EAA8C;EACnD,MAAMC,OAAO,GAAG;IACd,cAAc1B,SADA;IAEd,aAAahB,OAAO,CAACuB,OAAR,CAAgBkC,YAAhB,EAFC;IAGd,gBAAgBzD,OAAO,CAACuB,OAAR,CAAgBmC,eAAhB;EAHF,CAAhB;EAKA,MAAMZ,cAAc,GAAG;IACrBC,OAAO,EAAE9C,YAAY,CAACD,OAAO,CAACuB,OAAR,CAAgByB,SAAhB,EAAD,CADA;IAErBjC,OAFqB;IAGrB2B,OAHqB;IAIrB,GAAGD,eAJkB;IAKrBtB,UAAU,EAAEC,aAAa,EALJ;IAMrB6B,KAAK,EAAEX,QAAQ;EANM,CAAvB;EASA,MAAMY,OAAO,GAAGxD,KAAK,CAACyD,MAAN,CAAaL,cAAb,CAAhB;EAEA,OAAOI,OAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASS,cAAT,CAAwBnB,QAAxB,EAAkCC,eAAe,GAAG,EAApD,EAAwD;EAC7D,MAAMC,OAAO,GAAG;IACd,cAAc1B,SADA;IAEd,gBAAgB,kBAFF;IAGd,sBAAsBwB,QAAQ,CAACG;EAHjB,CAAhB;EAKA,MAAMG,cAAc,GAAG;IACrBC,OAAO,EAAE9C,YAAY,CAACD,OAAO,CAACuB,OAAR,CAAgByB,SAAhB,EAAD,CADA;IAErBjC,OAFqB;IAGrB2B,OAHqB;IAIrB,GAAGD,eAJkB;IAKrBtB,UAAU,EAAEC,aAAa,EALJ;IAMrB6B,KAAK,EAAEX,QAAQ;EANM,CAAvB;;EASA,IAAItC,OAAO,CAACuB,OAAR,CAAgB+B,cAAhB,EAAJ,EAAsC;IACpCR,cAAc,CAACJ,OAAf,CACE,eADF,IAEK,UAAS1C,OAAO,CAACuB,OAAR,CAAgB+B,cAAhB,EAAiC,EAF/C;EAGD;;EAED,MAAMJ,OAAO,GAAGxD,KAAK,CAACyD,MAAN,CAAaL,cAAb,CAAhB;EAEA,OAAOI,OAAP;AACD"}
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
90
|
+
stopProgressIndicator(`Exported ${cotId.brightCyan} to ${fileName.brightCyan}.`);
|
|
91
91
|
}).catch(err => {
|
|
92
|
-
|
|
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
|
-
|
|
120
|
+
createProgressIndicator(allCotData.length, 'Exporting circles of trust');
|
|
121
121
|
|
|
122
122
|
for (const cotData of allCotData) {
|
|
123
123
|
delete cotData._rev;
|
|
124
|
-
|
|
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
|
-
|
|
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
|
-
|
|
153
|
+
createProgressIndicator(allCotData.length, 'Exporting circles of trust');
|
|
154
154
|
|
|
155
155
|
for (const cotData of allCotData) {
|
|
156
156
|
delete cotData._rev;
|
|
157
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
200
|
+
updateProgressIndicator(`Importing ${cotId}`);
|
|
201
201
|
await importDependencies(cotData, fileData);
|
|
202
202
|
createCircleOfTrust(cotData).then(() => {
|
|
203
|
-
|
|
203
|
+
stopProgressIndicator(`Successfully imported ${cotId}.`);
|
|
204
204
|
}).catch(createProviderErr => {
|
|
205
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
238
|
+
stopProgressIndicator(`Successfully imported ${cotId}.`);
|
|
239
239
|
}).catch(createCircleOfTrustErr => {
|
|
240
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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); //
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
|
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
|
-
|
|
72
|
+
createProgressIndicator(1, `Exporting ${templateId}`);
|
|
73
73
|
getEmailTemplate(templateId).then(async response => {
|
|
74
74
|
const templateData = response.data;
|
|
75
|
-
|
|
75
|
+
updateProgressIndicator(`Writing file ${fileName}`);
|
|
76
76
|
const fileData = getFileDataTemplate();
|
|
77
77
|
fileData.emailTemplate[templateId] = templateData;
|
|
78
78
|
saveJsonToFile(fileData, fileName);
|
|
79
|
-
|
|
79
|
+
stopProgressIndicator(`Exported ${templateId.brightCyan} to ${fileName.brightCyan}.`);
|
|
80
80
|
}).catch(err => {
|
|
81
|
-
|
|
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
|
-
|
|
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
|
-
|
|
105
|
+
updateProgressIndicator(`Exporting ${templateId}`);
|
|
106
106
|
fileData.emailTemplate[templateId] = template;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
saveJsonToFile(fileData, fileName);
|
|
110
|
-
|
|
110
|
+
stopProgressIndicator(`${response.data.resultCount} templates exported to ${fileName}.`);
|
|
111
111
|
}).catch(err => {
|
|
112
|
-
|
|
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
|
-
|
|
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
|
-
|
|
130
|
+
updateProgressIndicator(`Exporting ${templateId}`);
|
|
131
131
|
fileData.emailTemplate[templateId] = template;
|
|
132
132
|
saveJsonToFile(fileData, fileName);
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
stopProgressIndicator(`${response.data.resultCount} templates exported.`);
|
|
136
136
|
}).catch(err => {
|
|
137
|
-
|
|
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
|
-
|
|
155
|
+
createProgressIndicator(1, `Importing ${templateId}`);
|
|
156
156
|
|
|
157
157
|
if (fileData.emailTemplate[templateId]) {
|
|
158
158
|
putEmailTemplate(templateId, fileData.emailTemplate[templateId]).then(() => {
|
|
159
|
-
|
|
160
|
-
|
|
159
|
+
updateProgressIndicator(`Importing ${templateId}`);
|
|
160
|
+
stopProgressIndicator(`Imported ${templateId}`);
|
|
161
161
|
}).catch(putEmailTemplateError => {
|
|
162
|
-
|
|
162
|
+
stopProgressIndicator(`${putEmailTemplateError}`);
|
|
163
163
|
printMessage(putEmailTemplateError, 'error');
|
|
164
164
|
});
|
|
165
165
|
} else {
|
|
166
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
243
|
+
updateProgressIndicator(`Imported ${file}`);
|
|
244
244
|
} else {
|
|
245
245
|
printMessage(`Validation of ${file} failed!`, 'error');
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
248
|
|
|
249
|
-
|
|
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
|
-
|
|
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
|
-
|
|
268
|
-
|
|
267
|
+
updateProgressIndicator(`Imported ${id}`);
|
|
268
|
+
stopProgressIndicator(`Imported ${id}`);
|
|
269
269
|
}).catch(putEmailTemplateError => {
|
|
270
|
-
|
|
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
|
});
|