@rockcarver/frodo-lib 0.18.5 → 0.18.7
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 +14 -2
- package/cjs/api/BaseApi.js +3 -1
- package/cjs/api/BaseApi.js.map +1 -1
- package/cjs/ops/ConnectionProfileOps.js +3 -1
- package/cjs/ops/ConnectionProfileOps.js.map +1 -1
- package/cjs/ops/IdpOps.js +3 -1
- package/cjs/ops/IdpOps.js.map +1 -1
- package/cjs/ops/InfoOps.js +3 -1
- package/cjs/ops/InfoOps.js.map +1 -1
- package/cjs/ops/JourneyOps.js +4 -4
- package/cjs/ops/JourneyOps.js.map +1 -1
- package/cjs/ops/ServiceOps.js +3 -1
- package/cjs/ops/ServiceOps.js.map +1 -1
- package/cjs/ops/utils/ExportImportUtils.js +1 -3
- package/cjs/ops/utils/ExportImportUtils.js.map +1 -1
- package/cjs/shared/State.js +3 -1
- package/cjs/shared/State.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,11 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.18.7] - 2023-02-16
|
|
11
|
+
|
|
12
|
+
## [0.18.6] - 2023-02-16
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- Updated dependencies.
|
|
17
|
+
|
|
10
18
|
## [0.18.5] - 2023-02-14
|
|
11
19
|
|
|
12
20
|
### Fixed
|
|
13
21
|
|
|
14
|
-
- rockcarver/frodo-cli#196: Frodo now properly detects Encore environments as ForgeOps environments and obtains an access token for IDM APIs.
|
|
22
|
+
- rockcarver/frodo-cli#196 and rockcarver/frodo-cli#197: Frodo now properly detects Encore environments as ForgeOps environments and obtains an access token for IDM APIs.
|
|
15
23
|
|
|
16
24
|
## [0.18.4] - 2023-02-11
|
|
17
25
|
|
|
@@ -1058,7 +1066,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
1058
1066
|
- Fixed problem with adding connection profiles
|
|
1059
1067
|
- Miscellaneous bug fixes
|
|
1060
1068
|
|
|
1061
|
-
[Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.18.
|
|
1069
|
+
[Unreleased]: https://github.com/rockcarver/frodo-lib/compare/v0.18.7...HEAD
|
|
1070
|
+
|
|
1071
|
+
[0.18.7]: https://github.com/rockcarver/frodo-lib/compare/v0.18.6...v0.18.7
|
|
1072
|
+
|
|
1073
|
+
[0.18.6]: https://github.com/rockcarver/frodo-lib/compare/v0.18.5...v0.18.6
|
|
1062
1074
|
|
|
1063
1075
|
[0.18.5]: https://github.com/rockcarver/frodo-lib/compare/v0.18.4...v0.18.5
|
|
1064
1076
|
|
package/cjs/api/BaseApi.js
CHANGED
|
@@ -27,7 +27,9 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
27
27
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
28
28
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
29
29
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
30
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
30
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
31
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
32
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
31
33
|
if (process.env.FRODO_MOCK) {
|
|
32
34
|
(0, _SetupPollyForFrodoLib.setupPollyForFrodoLib)();
|
|
33
35
|
}
|
package/cjs/api/BaseApi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseApi.js","names":["process","env","FRODO_MOCK","setupPollyForFrodoLib","__dirname","path","dirname","fileURLToPath","pkg","JSON","parse","fs","readFileSync","resolve","axiosRetry","axios","retries","shouldResetTimeout","retryCondition","_error","timeout","maxSockets","maxFreeSockets","freeSocketTimeout","userAgent","name","version","transactionId","randomUUID","httpAgent","httpsAgent","getHttpAgent","Agent","getHttpsAgent","options","rejectUnauthorized","state","getAllowInsecureConnection","httpsProxy","HTTPS_PROXY","https_proxy","console","error","parsed","url","hostname","port","protocol","HttpsProxyAgent","HttpsAgent","getProxy","curlirize","request","_curlirize","result","err","command","printMessage","curlirizeMessage","generateAmApi","resource","requestOverride","headers","apiVersion","getUseBearerTokenForAmApis","getCookieName","getCookieValue","Cookie","getBearerToken","Authorization","requestDetails","getAuthenticationHeaderOverrides","proxy","create","getCurlirize","generateOauth2Api","generateIdmApi","generateLogKeysApi","generateLogApi","getLogApiKey","getLogApiSecret","generateEnvApi","generateReleaseApi","baseUrl","baseURL"],"sources":["api/BaseApi.ts"],"sourcesContent":["import axios, { AxiosProxyConfig } from 'axios';\nimport Agent from 'agentkeepalive';\nimport axiosRetry from 'axios-retry';\nimport HttpsProxyAgent from 'https-proxy-agent';\nimport url from 'url';\nimport fs from 'fs';\nimport * as state from '../shared/State';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport { curlirizeMessage, printMessage } from '../ops/utils/Console';\nimport _curlirize from '../ext/axios-curlirize/curlirize';\nimport { randomUUID } from 'crypto';\nimport { setupPollyForFrodoLib } from '../utils/SetupPollyForFrodoLib';\n\nif (process.env.FRODO_MOCK) {\n setupPollyForFrodoLib();\n}\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n retryCondition: (_error) => true, // retry no matter what\n});\n\n// all agents\nconst timeout = 30000;\n\n// agentkeepalive\nconst maxSockets = 100;\nconst maxFreeSockets = 10;\nconst freeSocketTimeout = 30000;\n\nconst userAgent = `${pkg.name}/${pkg.version}`;\nconst transactionId = `frodo-${randomUUID()}`;\nlet httpAgent, httpsAgent;\n\nfunction getHttpAgent() {\n if (httpAgent) return httpAgent;\n httpAgent = new Agent({\n maxSockets,\n maxFreeSockets,\n timeout,\n freeSocketTimeout,\n });\n return httpAgent;\n}\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: !state.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 = !state.getAllowInsecureConnection();\n httpsAgent = HttpsProxyAgent(options);\n return httpsAgent;\n }\n httpsAgent = new Agent.HttpsAgent({\n ...options,\n maxSockets,\n maxFreeSockets,\n timeout,\n freeSocketTimeout,\n });\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 * Customize curlirize output\n * @param request axios request object\n */\nfunction curlirize(request) {\n _curlirize(request, (result, err) => {\n const { command } = result;\n if (err) {\n printMessage(err, 'error');\n } else {\n curlirizeMessage(command);\n }\n });\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 'X-ForgeRock-TransactionId': transactionId,\n 'Content-Type': 'application/json',\n // only add API version if we have it\n ...(resource.apiVersion && { 'Accept-API-Version': resource.apiVersion }),\n // only send session cookie if we know its name and value and we are not instructed to use the bearer token for AM APIs\n ...(!state.getUseBearerTokenForAmApis() &&\n state.getCookieName() &&\n state.getCookieValue() && {\n Cookie: `${state.getCookieName()}=${state.getCookieValue()}`,\n }),\n // only add authorization header if we have a bearer token and are instructed to use it for AM APIs\n ...(state.getUseBearerTokenForAmApis() &&\n state.getBearerToken() && {\n Authorization: `Bearer ${state.getBearerToken()}`,\n }),\n };\n if (requestOverride['headers']) {\n headers = {\n ...headers,\n ...requestOverride['headers'],\n };\n }\n\n const requestDetails = {\n // baseURL: `${storage.session.getTenant()}/json`,\n timeout,\n ...requestOverride,\n headers: {\n ...headers,\n ...state.getAuthenticationHeaderOverrides(),\n },\n httpAgent: getHttpAgent(),\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n // enable curlirizer output in debug mode\n if (state.getCurlirize()) {\n curlirize(request);\n }\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 'X-ForgeRock-TransactionId': transactionId,\n // only add API version if we have it\n ...(resource.apiVersion && { 'Accept-API-Version': resource.apiVersion }),\n // only send session cookie if we know its name and value and we are not instructed to use the bearer token for AM APIs\n ...(!state.getUseBearerTokenForAmApis() &&\n state.getCookieName() &&\n state.getCookieValue() && {\n Cookie: `${state.getCookieName()}=${state.getCookieValue()}`,\n }),\n // only add authorization header if we have a bearer token and are instructed to use it for AM APIs\n ...(state.getUseBearerTokenForAmApis() &&\n state.getBearerToken() && {\n Authorization: `Bearer ${state.getBearerToken()}`,\n }),\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 ...headers,\n ...state.getAuthenticationHeaderOverrides(),\n },\n httpAgent: getHttpAgent(),\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n // enable curlirizer output in debug mode\n if (state.getCurlirize()) {\n curlirize(request);\n }\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 'X-ForgeRock-TransactionId': transactionId,\n 'Content-Type': 'application/json',\n // only add authorization header if we have a bearer token\n ...(state.getBearerToken() && {\n Authorization: `Bearer ${state.getBearerToken()}`,\n }),\n },\n ...requestOverride,\n httpAgent: getHttpAgent(),\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 // enable curlirizer output in debug mode\n if (state.getCurlirize()) {\n curlirize(request);\n }\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 // only add authorization header if we have a bearer token\n ...(state.getBearerToken() && {\n Authorization: `Bearer ${state.getBearerToken()}`,\n }),\n };\n const requestDetails = {\n // baseURL: getTenantURL(storage.session.getTenant()),\n timeout,\n headers,\n ...requestOverride,\n httpAgent: getHttpAgent(),\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n // enable curlirizer output in debug mode\n if (state.getCurlirize()) {\n curlirize(request);\n }\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': state.getLogApiKey(),\n 'X-API-Secret': state.getLogApiSecret(),\n };\n const requestDetails = {\n // baseURL: getTenantURL(storage.session.getTenant()),\n timeout,\n headers,\n ...requestOverride,\n httpAgent: getHttpAgent(),\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n // enable curlirizer output in debug mode\n if (state.getCurlirize()) {\n curlirize(request);\n }\n\n return request;\n}\n\n/**\n * Generates an Axios instance for the Identity Cloud Environment API\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 generateEnvApi(resource, requestOverride = {}) {\n const headers = {\n 'User-Agent': userAgent,\n 'Content-Type': 'application/json',\n // only add API version if we have it\n ...(resource.apiVersion && { 'Accept-API-Version': resource.apiVersion }),\n // only add authorization header if we have a bearer token\n ...(state.getBearerToken() && {\n Authorization: `Bearer ${state.getBearerToken()}`,\n }),\n };\n const requestDetails = {\n // baseURL: getTenantURL(storage.session.getTenant()),\n timeout,\n headers,\n ...requestOverride,\n httpAgent: getHttpAgent(),\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n // enable curlirizer output in debug mode\n if (state.getCurlirize()) {\n curlirize(request);\n }\n\n return request;\n}\n\n/**\n * Generates a release (Github or Npm) 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 generateReleaseApi(baseUrl, requestOverride = {}) {\n const requestDetails = {\n baseURL: baseUrl,\n timeout,\n headers: {\n 'User-Agent': userAgent,\n 'Content-Type': 'application/json',\n },\n ...requestOverride,\n httpAgent: getHttpAgent(),\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n // enable curlirizer output in debug mode\n if (state.getCurlirize()) {\n curlirize(request);\n }\n\n return request;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseApi.js","names":["process","env","FRODO_MOCK","setupPollyForFrodoLib","__dirname","path","dirname","fileURLToPath","pkg","JSON","parse","fs","readFileSync","resolve","axiosRetry","axios","retries","shouldResetTimeout","retryCondition","_error","timeout","maxSockets","maxFreeSockets","freeSocketTimeout","userAgent","name","version","transactionId","randomUUID","httpAgent","httpsAgent","getHttpAgent","Agent","getHttpsAgent","options","rejectUnauthorized","state","getAllowInsecureConnection","httpsProxy","HTTPS_PROXY","https_proxy","console","error","parsed","url","hostname","port","protocol","HttpsProxyAgent","HttpsAgent","getProxy","curlirize","request","_curlirize","result","err","command","printMessage","curlirizeMessage","generateAmApi","resource","requestOverride","headers","apiVersion","getUseBearerTokenForAmApis","getCookieName","getCookieValue","Cookie","getBearerToken","Authorization","requestDetails","getAuthenticationHeaderOverrides","proxy","create","getCurlirize","generateOauth2Api","generateIdmApi","generateLogKeysApi","generateLogApi","getLogApiKey","getLogApiSecret","generateEnvApi","generateReleaseApi","baseUrl","baseURL"],"sources":["api/BaseApi.ts"],"sourcesContent":["import axios, { AxiosProxyConfig } from 'axios';\nimport Agent from 'agentkeepalive';\nimport axiosRetry from 'axios-retry';\nimport HttpsProxyAgent from 'https-proxy-agent';\nimport url from 'url';\nimport fs from 'fs';\nimport * as state from '../shared/State';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport { curlirizeMessage, printMessage } from '../ops/utils/Console';\nimport _curlirize from '../ext/axios-curlirize/curlirize';\nimport { randomUUID } from 'crypto';\nimport { setupPollyForFrodoLib } from '../utils/SetupPollyForFrodoLib';\n\nif (process.env.FRODO_MOCK) {\n setupPollyForFrodoLib();\n}\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n retryCondition: (_error) => true, // retry no matter what\n});\n\n// all agents\nconst timeout = 30000;\n\n// agentkeepalive\nconst maxSockets = 100;\nconst maxFreeSockets = 10;\nconst freeSocketTimeout = 30000;\n\nconst userAgent = `${pkg.name}/${pkg.version}`;\nconst transactionId = `frodo-${randomUUID()}`;\nlet httpAgent, httpsAgent;\n\nfunction getHttpAgent() {\n if (httpAgent) return httpAgent;\n httpAgent = new Agent({\n maxSockets,\n maxFreeSockets,\n timeout,\n freeSocketTimeout,\n });\n return httpAgent;\n}\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: !state.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 = !state.getAllowInsecureConnection();\n httpsAgent = HttpsProxyAgent(options);\n return httpsAgent;\n }\n httpsAgent = new Agent.HttpsAgent({\n ...options,\n maxSockets,\n maxFreeSockets,\n timeout,\n freeSocketTimeout,\n });\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 * Customize curlirize output\n * @param request axios request object\n */\nfunction curlirize(request) {\n _curlirize(request, (result, err) => {\n const { command } = result;\n if (err) {\n printMessage(err, 'error');\n } else {\n curlirizeMessage(command);\n }\n });\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 'X-ForgeRock-TransactionId': transactionId,\n 'Content-Type': 'application/json',\n // only add API version if we have it\n ...(resource.apiVersion && { 'Accept-API-Version': resource.apiVersion }),\n // only send session cookie if we know its name and value and we are not instructed to use the bearer token for AM APIs\n ...(!state.getUseBearerTokenForAmApis() &&\n state.getCookieName() &&\n state.getCookieValue() && {\n Cookie: `${state.getCookieName()}=${state.getCookieValue()}`,\n }),\n // only add authorization header if we have a bearer token and are instructed to use it for AM APIs\n ...(state.getUseBearerTokenForAmApis() &&\n state.getBearerToken() && {\n Authorization: `Bearer ${state.getBearerToken()}`,\n }),\n };\n if (requestOverride['headers']) {\n headers = {\n ...headers,\n ...requestOverride['headers'],\n };\n }\n\n const requestDetails = {\n // baseURL: `${storage.session.getTenant()}/json`,\n timeout,\n ...requestOverride,\n headers: {\n ...headers,\n ...state.getAuthenticationHeaderOverrides(),\n },\n httpAgent: getHttpAgent(),\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n // enable curlirizer output in debug mode\n if (state.getCurlirize()) {\n curlirize(request);\n }\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 'X-ForgeRock-TransactionId': transactionId,\n // only add API version if we have it\n ...(resource.apiVersion && { 'Accept-API-Version': resource.apiVersion }),\n // only send session cookie if we know its name and value and we are not instructed to use the bearer token for AM APIs\n ...(!state.getUseBearerTokenForAmApis() &&\n state.getCookieName() &&\n state.getCookieValue() && {\n Cookie: `${state.getCookieName()}=${state.getCookieValue()}`,\n }),\n // only add authorization header if we have a bearer token and are instructed to use it for AM APIs\n ...(state.getUseBearerTokenForAmApis() &&\n state.getBearerToken() && {\n Authorization: `Bearer ${state.getBearerToken()}`,\n }),\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 ...headers,\n ...state.getAuthenticationHeaderOverrides(),\n },\n httpAgent: getHttpAgent(),\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n // enable curlirizer output in debug mode\n if (state.getCurlirize()) {\n curlirize(request);\n }\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 'X-ForgeRock-TransactionId': transactionId,\n 'Content-Type': 'application/json',\n // only add authorization header if we have a bearer token\n ...(state.getBearerToken() && {\n Authorization: `Bearer ${state.getBearerToken()}`,\n }),\n },\n ...requestOverride,\n httpAgent: getHttpAgent(),\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 // enable curlirizer output in debug mode\n if (state.getCurlirize()) {\n curlirize(request);\n }\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 // only add authorization header if we have a bearer token\n ...(state.getBearerToken() && {\n Authorization: `Bearer ${state.getBearerToken()}`,\n }),\n };\n const requestDetails = {\n // baseURL: getTenantURL(storage.session.getTenant()),\n timeout,\n headers,\n ...requestOverride,\n httpAgent: getHttpAgent(),\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n // enable curlirizer output in debug mode\n if (state.getCurlirize()) {\n curlirize(request);\n }\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': state.getLogApiKey(),\n 'X-API-Secret': state.getLogApiSecret(),\n };\n const requestDetails = {\n // baseURL: getTenantURL(storage.session.getTenant()),\n timeout,\n headers,\n ...requestOverride,\n httpAgent: getHttpAgent(),\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n // enable curlirizer output in debug mode\n if (state.getCurlirize()) {\n curlirize(request);\n }\n\n return request;\n}\n\n/**\n * Generates an Axios instance for the Identity Cloud Environment API\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 generateEnvApi(resource, requestOverride = {}) {\n const headers = {\n 'User-Agent': userAgent,\n 'Content-Type': 'application/json',\n // only add API version if we have it\n ...(resource.apiVersion && { 'Accept-API-Version': resource.apiVersion }),\n // only add authorization header if we have a bearer token\n ...(state.getBearerToken() && {\n Authorization: `Bearer ${state.getBearerToken()}`,\n }),\n };\n const requestDetails = {\n // baseURL: getTenantURL(storage.session.getTenant()),\n timeout,\n headers,\n ...requestOverride,\n httpAgent: getHttpAgent(),\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n // enable curlirizer output in debug mode\n if (state.getCurlirize()) {\n curlirize(request);\n }\n\n return request;\n}\n\n/**\n * Generates a release (Github or Npm) 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 generateReleaseApi(baseUrl, requestOverride = {}) {\n const requestDetails = {\n baseURL: baseUrl,\n timeout,\n headers: {\n 'User-Agent': userAgent,\n 'Content-Type': 'application/json',\n },\n ...requestOverride,\n httpAgent: getHttpAgent(),\n httpsAgent: getHttpsAgent(),\n proxy: getProxy(),\n };\n\n const request = axios.create(requestDetails);\n\n // enable curlirizer output in debug mode\n if (state.getCurlirize()) {\n curlirize(request);\n }\n\n return request;\n}\n"],"mappings":"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"}
|
|
@@ -30,7 +30,9 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
|
|
|
30
30
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
31
31
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
32
32
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
33
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
33
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
34
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
35
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
34
36
|
var crypto = new _DataProtection.default();
|
|
35
37
|
var fileOptions = {
|
|
36
38
|
indentation: 4
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionProfileOps.js","names":["crypto","DataProtection","fileOptions","indentation","legacyProfileFilename","newProfileFilename","getConnectionProfilesPath","state","process","env","FRODO_CONNECTION_PROFILES_PATH_KEY","os","homedir","findConnectionProfiles","connectionProfiles","host","profiles","tenant","includes","foundProfile","push","listConnectionProfiles","long","filename","data","fs","readFileSync","connectionsData","JSON","parse","Object","keys","length","printMessage","table","createTable","forEach","c","svcacctName","svcacctId","username","logApiKey","toString","e","message","migrateFromLegacyProfile","legacyPath","newPath","existsSync","writeFileSync","stringify","copyFileSync","renameSync","initConnectionProfiles","folderName","path","dirname","mkdirSync","recursive","convert","conn","encodedPassword","encrypt","encodedLogApiSecret","encodedSvcacctJwk","getConnectionProfileByHost","p","password","decrypt","logApiSecret","authenticationService","authenticationHeaderOverrides","svcacctJwk","getConnectionProfile","getHost","saveConnectionProfile","debugMessage","profile","statSync","found","setHost","verboseMessage","isValidUrl","error","getUsername","getPassword","getLogApiKey","getLogApiSecret","getServiceAccountId","getServiceAccount","name","getServiceAccountJwk","getAuthenticationService","getAuthenticationHeaderOverrides","entries","orderedProfiles","sort","reduce","obj","key","saveJsonToFile","deleteConnectionProfile","stat","err","code","describeConnectionProfile","showSecrets","present","jwk","keyMap","createObjectTable","addNewServiceAccount","Date","getTime","description","scope","jwkPrivate","createJwkRsa","jwkPublic","getJwkRsaPublic","jwks","createJwks","sa","createServiceAccount","_id","setServiceAccountId","setServiceAccountJwk"],"sources":["ops/ConnectionProfileOps.ts"],"sourcesContent":["import fs from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport * as state from '../shared/State';\nimport DataProtection from './utils/DataProtection';\nimport {\n createObjectTable,\n createTable,\n debugMessage,\n printMessage,\n verboseMessage,\n} from './utils/Console';\nimport { FRODO_CONNECTION_PROFILES_PATH_KEY } from '../storage/StaticStorage';\nimport { createJwkRsa, createJwks, getJwkRsaPublic, JwkRsa } from './JoseOps';\nimport {\n createServiceAccount,\n getServiceAccount,\n} from './cloud/ServiceAccountOps';\nimport { ObjectSkeletonInterface } from '../api/ApiTypes';\nimport { saveJsonToFile } from './utils/ExportImportUtils';\nimport { isValidUrl } from './utils/OpsUtils';\n\nconst crypto = new DataProtection();\n\nconst fileOptions = {\n indentation: 4,\n};\n\nexport interface SecureConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n encodedPassword?: string | null;\n logApiKey?: string | null;\n encodedLogApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n encodedSvcacctJwk?: string | null;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n password?: string | null;\n logApiKey?: string | null;\n logApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n svcacctJwk?: JwkRsa;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionsFileInterface {\n [key: string]: SecureConnectionProfileInterface;\n}\n\nconst legacyProfileFilename = '.frodorc';\nconst newProfileFilename = 'Connections.json';\n\n/**\n * Get connection profiles file name\n * @returns {String} connection profiles file name\n */\nexport function getConnectionProfilesPath(): string {\n return (\n state.getConnectionProfilesPath() ||\n process.env[FRODO_CONNECTION_PROFILES_PATH_KEY] ||\n `${os.homedir()}/.frodo/${newProfileFilename}`\n );\n}\n\n/**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\nfunction findConnectionProfiles(\n connectionProfiles: ConnectionsFileInterface,\n host: string\n): SecureConnectionProfileInterface[] {\n const profiles: SecureConnectionProfileInterface[] = [];\n for (const tenant in connectionProfiles) {\n if (tenant.includes(host)) {\n const foundProfile = { ...connectionProfiles[tenant] };\n foundProfile.tenant = tenant;\n profiles.push(foundProfile);\n }\n }\n return profiles;\n}\n\n/**\n * List connection profiles\n * @param {boolean} long Long list format with details\n */\nexport function listConnectionProfiles(long = false) {\n const filename = getConnectionProfilesPath();\n try {\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData = JSON.parse(data);\n if (Object.keys(connectionsData).length < 1) {\n printMessage(`No connections defined yet in ${filename}`, 'info');\n } else {\n if (long) {\n const table = createTable([\n 'Host',\n 'Service Account',\n 'Username',\n 'Log API Key',\n ]);\n Object.keys(connectionsData).forEach((c) => {\n table.push([\n c,\n connectionsData[c].svcacctName || connectionsData[c].svcacctId,\n connectionsData[c].username,\n connectionsData[c].logApiKey,\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n Object.keys(connectionsData).forEach((c) => {\n printMessage(`${c}`, 'data');\n });\n // getUniqueNames(5, Object.keys(connectionsData));\n }\n printMessage(\n 'Any unique substring of a saved host can be used as the value for host parameter in all commands',\n 'info'\n );\n }\n } catch (e) {\n printMessage(`No connections found in ${filename} (${e.message})`, 'error');\n }\n}\n\n/**\n * Migrate from .frodorc to Connections.json\n */\nfunction migrateFromLegacyProfile() {\n const legacyPath = `${os.homedir()}/.frodo/${legacyProfileFilename}`;\n const newPath = `${os.homedir()}/.frodo/${newProfileFilename}`;\n if (!fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // no connections file (old or new), create empty new one\n fs.writeFileSync(\n newPath,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n } else if (fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // old exists, new one does not - so copy old to new one\n fs.copyFileSync(legacyPath, newPath);\n // for now, just add a \"deprecated\" suffix. May delete the old file\n // in a future release\n fs.renameSync(legacyPath, `${legacyPath}.deprecated`);\n }\n // in other cases, where\n // (both old and new exist) OR (only new one exists) don't do anything\n}\n\n/**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n */\nexport async function initConnectionProfiles() {\n // create connections.json file if it doesn't exist\n const filename = getConnectionProfilesPath();\n const folderName = path.dirname(filename);\n if (!fs.existsSync(folderName)) {\n fs.mkdirSync(folderName, { recursive: true });\n if (!fs.existsSync(filename)) {\n fs.writeFileSync(\n filename,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n }\n }\n // encrypt the password and logApiSecret from clear text to aes-256-GCM\n else {\n migrateFromLegacyProfile();\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData: ConnectionsFileInterface = JSON.parse(data);\n let convert = false;\n for (const conn of Object.keys(connectionsData)) {\n if (connectionsData[conn]['password']) {\n convert = true;\n connectionsData[conn].encodedPassword = await crypto.encrypt(\n connectionsData[conn]['password']\n );\n delete connectionsData[conn]['password'];\n }\n if (connectionsData[conn]['logApiSecret']) {\n convert = true;\n connectionsData[conn].encodedLogApiSecret = await crypto.encrypt(\n connectionsData[conn]['logApiSecret']\n );\n delete connectionsData[conn]['logApiSecret'];\n }\n if (connectionsData[conn]['svcacctJwk']) {\n convert = true;\n connectionsData[conn].encodedSvcacctJwk = await crypto.encrypt(\n connectionsData[conn]['svcacctJwk']\n );\n delete connectionsData[conn]['svcacctJwk'];\n }\n }\n if (convert) {\n fs.writeFileSync(\n filename,\n JSON.stringify(connectionsData, null, fileOptions.indentation)\n );\n }\n }\n}\n\n/**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfileByHost(\n host: string\n): Promise<ConnectionProfileInterface> {\n try {\n const filename = getConnectionProfilesPath();\n const connectionsData = JSON.parse(fs.readFileSync(filename, 'utf8'));\n const profiles = findConnectionProfiles(connectionsData, host);\n if (profiles.length == 0) {\n printMessage(\n `Profile for ${host} not found. Please specify credentials on command line`,\n 'error'\n );\n return null;\n }\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n }\n return {\n tenant: profiles[0].tenant,\n username: profiles[0].username ? profiles[0].username : null,\n password: profiles[0].encodedPassword\n ? await crypto.decrypt(profiles[0].encodedPassword)\n : null,\n logApiKey: profiles[0].logApiKey ? profiles[0].logApiKey : null,\n logApiSecret: profiles[0].encodedLogApiSecret\n ? await crypto.decrypt(profiles[0].encodedLogApiSecret)\n : null,\n authenticationService: profiles[0].authenticationService\n ? profiles[0].authenticationService\n : null,\n authenticationHeaderOverrides: profiles[0].authenticationHeaderOverrides\n ? profiles[0].authenticationHeaderOverrides\n : {},\n svcacctName: profiles[0].svcacctName ? profiles[0].svcacctName : null,\n svcacctId: profiles[0].svcacctId ? profiles[0].svcacctId : null,\n svcacctJwk: profiles[0].encodedSvcacctJwk\n ? await crypto.decrypt(profiles[0].encodedSvcacctJwk)\n : null,\n };\n } catch (e) {\n printMessage(\n `Can not read saved connection info, please specify credentials on command line: ${e}`,\n 'error'\n );\n return null;\n }\n}\n\n/**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfile(): Promise<ConnectionProfileInterface> {\n return getConnectionProfileByHost(state.getHost());\n}\n\n/**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\nexport async function saveConnectionProfile(host: string): Promise<boolean> {\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: start`);\n const filename = getConnectionProfilesPath();\n debugMessage(`Saving connection profile in ${filename}`);\n let profiles: ConnectionsFileInterface = {};\n let profile: SecureConnectionProfileInterface = { tenant: '' };\n try {\n fs.statSync(filename);\n const data = fs.readFileSync(filename, 'utf8');\n profiles = JSON.parse(data);\n\n // find tenant\n const found = findConnectionProfiles(profiles, host);\n\n // replace tenant in session with real tenant url if necessary\n if (found.length === 1) {\n profile = found[0];\n state.setHost(profile.tenant);\n verboseMessage(`Existing profile: ${profile.tenant}`);\n debugMessage(profile);\n }\n\n // connection profile not found, validate host is a real URL\n if (found.length === 0) {\n if (isValidUrl(host)) {\n state.setHost(host);\n debugMessage(`New profile: ${host}`);\n } else {\n printMessage(\n `No existing profile found matching '${host}'. Provide a valid URL as the host argument to create a new profile.`,\n 'error'\n );\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: end [false]`);\n return false;\n }\n }\n } catch (error) {\n debugMessage(`New profiles file ${filename} with new profile ${host}`);\n }\n\n // user account\n if (state.getUsername()) profile.username = state.getUsername();\n if (state.getPassword())\n profile.encodedPassword = await crypto.encrypt(state.getPassword());\n\n // log API\n if (state.getLogApiKey()) profile.logApiKey = state.getLogApiKey();\n if (state.getLogApiSecret())\n profile.encodedLogApiSecret = await crypto.encrypt(state.getLogApiSecret());\n\n // service account\n if (state.getServiceAccountId()) {\n profile.svcacctId = state.getServiceAccountId();\n profile.svcacctName = (\n await getServiceAccount(state.getServiceAccountId())\n ).name;\n }\n if (state.getServiceAccountJwk())\n profile.encodedSvcacctJwk = await crypto.encrypt(\n state.getServiceAccountJwk()\n );\n // update existing service account profile\n if (profile.svcacctId && !profile.svcacctName) {\n profile.svcacctName = (await getServiceAccount(profile.svcacctId)).name;\n debugMessage(\n `ConnectionProfileOps.saveConnectionProfile: added missing service account name`\n );\n }\n\n // advanced settings\n if (state.getAuthenticationService()) {\n profile.authenticationService = state.getAuthenticationService();\n printMessage(\n 'Advanced setting: Authentication Service: ' +\n state.getAuthenticationService(),\n 'info'\n );\n }\n if (\n state.getAuthenticationHeaderOverrides() &&\n Object.entries(state.getAuthenticationHeaderOverrides()).length\n ) {\n profile.authenticationHeaderOverrides =\n state.getAuthenticationHeaderOverrides();\n printMessage('Advanced setting: Authentication Header Overrides: ', 'info');\n printMessage(state.getAuthenticationHeaderOverrides(), 'info');\n }\n\n // remove the helper key 'tenant'\n delete profile.tenant;\n\n // update profiles\n profiles[state.getHost()] = profile;\n\n // sort profiles\n const orderedProfiles = Object.keys(profiles)\n .sort()\n .reduce((obj, key) => {\n obj[key] = profiles[key];\n return obj;\n }, {});\n\n // save profiles\n saveJsonToFile(orderedProfiles, filename, false);\n verboseMessage(`Saved connection profile ${state.getHost()} in ${filename}`);\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: end [true]`);\n return true;\n}\n\n/**\n * Delete connection profile\n * @param {String} host host tenant host url or unique substring\n */\nexport function deleteConnectionProfile(host) {\n const filename = getConnectionProfilesPath();\n let connectionsData: ConnectionsFileInterface = {};\n fs.stat(filename, (err) => {\n if (err == null) {\n const data = fs.readFileSync(filename, 'utf8');\n connectionsData = JSON.parse(data);\n const profiles = findConnectionProfiles(connectionsData, host);\n if (profiles.length == 1) {\n delete connectionsData[profiles[0].tenant];\n fs.writeFileSync(filename, JSON.stringify(connectionsData, null, 2));\n printMessage(`Deleted connection profile ${profiles[0].tenant}`);\n } else {\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n }\n } else if (err.code === 'ENOENT') {\n printMessage(`Connection profile file ${filename} not found`);\n } else {\n printMessage(\n `Error in deleting connection profile: ${err.code}`,\n 'error'\n );\n }\n });\n}\n\n/**\n * Describe connection profile\n * @param {string} host Host URL or unique substring\n * @param {boolean} showSecrets Whether secrets should be shown in clear text or not\n */\nexport async function describeConnectionProfile(\n host: string,\n showSecrets: boolean\n) {\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: start`);\n const profile = await getConnectionProfileByHost(host);\n if (profile) {\n debugMessage(profile);\n const present = '[present]';\n const jwk = profile.svcacctJwk;\n if (!showSecrets) {\n if (profile.password) profile.password = present;\n if (profile.logApiSecret) profile.logApiSecret = present;\n if (profile.svcacctJwk) (profile as unknown)['svcacctJwk'] = present;\n }\n if (!profile.username) {\n delete profile.username;\n delete profile.password;\n }\n if (!profile.logApiKey) {\n delete profile.logApiKey;\n delete profile.logApiSecret;\n }\n if (!profile.svcacctId) {\n delete profile.svcacctId;\n delete profile.svcacctJwk;\n delete profile.svcacctName;\n }\n if (showSecrets && jwk) {\n (profile as unknown)['svcacctJwk'] = 'see below';\n }\n if (!profile.authenticationService) {\n delete profile.authenticationService;\n }\n const keyMap = {\n tenant: 'Host',\n username: 'Username',\n password: 'Password',\n logApiKey: 'Log API Key',\n logApiSecret: 'Log API Secret',\n authenticationService: 'Authentication Service',\n authenticationHeaderOverrides: 'Authentication Header Overrides',\n svcacctName: 'Service Account Name',\n svcacctId: 'Service Account Id',\n svcacctJwk: 'Service Account JWK',\n };\n const table = createObjectTable(profile, keyMap);\n printMessage(table.toString(), 'data');\n if (showSecrets && jwk) {\n printMessage(jwk, 'data');\n }\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: end`);\n}\n\n/**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<ObjectSkeletonInterface>} A promise resolving to a service account object\n */\nexport async function addNewServiceAccount(): Promise<ObjectSkeletonInterface> {\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: start`);\n const name = `Frodo-SA-${new Date().getTime()}`;\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: name=${name}...`);\n const description = `${state.getUsername()}'s Frodo Service Account`;\n const scope = ['fr:am:*', 'fr:idm:*', 'fr:idc:esv:*'];\n const jwkPrivate = await createJwkRsa();\n const jwkPublic = await getJwkRsaPublic(jwkPrivate);\n const jwks = createJwks(jwkPublic);\n const sa = await createServiceAccount(\n name,\n description,\n 'Active',\n scope,\n jwks\n );\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: id=${sa._id}`);\n state.setServiceAccountId(sa._id);\n state.setServiceAccountJwk(jwkPrivate);\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: end`);\n return sa;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConnectionProfileOps.js","names":["crypto","DataProtection","fileOptions","indentation","legacyProfileFilename","newProfileFilename","getConnectionProfilesPath","state","process","env","FRODO_CONNECTION_PROFILES_PATH_KEY","os","homedir","findConnectionProfiles","connectionProfiles","host","profiles","tenant","includes","foundProfile","push","listConnectionProfiles","long","filename","data","fs","readFileSync","connectionsData","JSON","parse","Object","keys","length","printMessage","table","createTable","forEach","c","svcacctName","svcacctId","username","logApiKey","toString","e","message","migrateFromLegacyProfile","legacyPath","newPath","existsSync","writeFileSync","stringify","copyFileSync","renameSync","initConnectionProfiles","folderName","path","dirname","mkdirSync","recursive","convert","conn","encodedPassword","encrypt","encodedLogApiSecret","encodedSvcacctJwk","getConnectionProfileByHost","p","password","decrypt","logApiSecret","authenticationService","authenticationHeaderOverrides","svcacctJwk","getConnectionProfile","getHost","saveConnectionProfile","debugMessage","profile","statSync","found","setHost","verboseMessage","isValidUrl","error","getUsername","getPassword","getLogApiKey","getLogApiSecret","getServiceAccountId","getServiceAccount","name","getServiceAccountJwk","getAuthenticationService","getAuthenticationHeaderOverrides","entries","orderedProfiles","sort","reduce","obj","key","saveJsonToFile","deleteConnectionProfile","stat","err","code","describeConnectionProfile","showSecrets","present","jwk","keyMap","createObjectTable","addNewServiceAccount","Date","getTime","description","scope","jwkPrivate","createJwkRsa","jwkPublic","getJwkRsaPublic","jwks","createJwks","sa","createServiceAccount","_id","setServiceAccountId","setServiceAccountJwk"],"sources":["ops/ConnectionProfileOps.ts"],"sourcesContent":["import fs from 'fs';\nimport os from 'os';\nimport path from 'path';\nimport * as state from '../shared/State';\nimport DataProtection from './utils/DataProtection';\nimport {\n createObjectTable,\n createTable,\n debugMessage,\n printMessage,\n verboseMessage,\n} from './utils/Console';\nimport { FRODO_CONNECTION_PROFILES_PATH_KEY } from '../storage/StaticStorage';\nimport { createJwkRsa, createJwks, getJwkRsaPublic, JwkRsa } from './JoseOps';\nimport {\n createServiceAccount,\n getServiceAccount,\n} from './cloud/ServiceAccountOps';\nimport { ObjectSkeletonInterface } from '../api/ApiTypes';\nimport { saveJsonToFile } from './utils/ExportImportUtils';\nimport { isValidUrl } from './utils/OpsUtils';\n\nconst crypto = new DataProtection();\n\nconst fileOptions = {\n indentation: 4,\n};\n\nexport interface SecureConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n encodedPassword?: string | null;\n logApiKey?: string | null;\n encodedLogApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n encodedSvcacctJwk?: string | null;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionProfileInterface {\n tenant: string;\n username?: string | null;\n password?: string | null;\n logApiKey?: string | null;\n logApiSecret?: string | null;\n authenticationService?: string | null;\n authenticationHeaderOverrides?: Record<string, string>;\n svcacctId?: string | null;\n svcacctJwk?: JwkRsa;\n svcacctName?: string | null;\n}\n\nexport interface ConnectionsFileInterface {\n [key: string]: SecureConnectionProfileInterface;\n}\n\nconst legacyProfileFilename = '.frodorc';\nconst newProfileFilename = 'Connections.json';\n\n/**\n * Get connection profiles file name\n * @returns {String} connection profiles file name\n */\nexport function getConnectionProfilesPath(): string {\n return (\n state.getConnectionProfilesPath() ||\n process.env[FRODO_CONNECTION_PROFILES_PATH_KEY] ||\n `${os.homedir()}/.frodo/${newProfileFilename}`\n );\n}\n\n/**\n * Find connection profiles\n * @param {ConnectionsFileInterface} connectionProfiles connection profile object\n * @param {string} host host url or unique substring\n * @returns {SecureConnectionProfileInterface[]} Array of connection profiles\n */\nfunction findConnectionProfiles(\n connectionProfiles: ConnectionsFileInterface,\n host: string\n): SecureConnectionProfileInterface[] {\n const profiles: SecureConnectionProfileInterface[] = [];\n for (const tenant in connectionProfiles) {\n if (tenant.includes(host)) {\n const foundProfile = { ...connectionProfiles[tenant] };\n foundProfile.tenant = tenant;\n profiles.push(foundProfile);\n }\n }\n return profiles;\n}\n\n/**\n * List connection profiles\n * @param {boolean} long Long list format with details\n */\nexport function listConnectionProfiles(long = false) {\n const filename = getConnectionProfilesPath();\n try {\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData = JSON.parse(data);\n if (Object.keys(connectionsData).length < 1) {\n printMessage(`No connections defined yet in ${filename}`, 'info');\n } else {\n if (long) {\n const table = createTable([\n 'Host',\n 'Service Account',\n 'Username',\n 'Log API Key',\n ]);\n Object.keys(connectionsData).forEach((c) => {\n table.push([\n c,\n connectionsData[c].svcacctName || connectionsData[c].svcacctId,\n connectionsData[c].username,\n connectionsData[c].logApiKey,\n ]);\n });\n printMessage(table.toString(), 'data');\n } else {\n Object.keys(connectionsData).forEach((c) => {\n printMessage(`${c}`, 'data');\n });\n // getUniqueNames(5, Object.keys(connectionsData));\n }\n printMessage(\n 'Any unique substring of a saved host can be used as the value for host parameter in all commands',\n 'info'\n );\n }\n } catch (e) {\n printMessage(`No connections found in ${filename} (${e.message})`, 'error');\n }\n}\n\n/**\n * Migrate from .frodorc to Connections.json\n */\nfunction migrateFromLegacyProfile() {\n const legacyPath = `${os.homedir()}/.frodo/${legacyProfileFilename}`;\n const newPath = `${os.homedir()}/.frodo/${newProfileFilename}`;\n if (!fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // no connections file (old or new), create empty new one\n fs.writeFileSync(\n newPath,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n } else if (fs.existsSync(legacyPath) && !fs.existsSync(newPath)) {\n // old exists, new one does not - so copy old to new one\n fs.copyFileSync(legacyPath, newPath);\n // for now, just add a \"deprecated\" suffix. May delete the old file\n // in a future release\n fs.renameSync(legacyPath, `${legacyPath}.deprecated`);\n }\n // in other cases, where\n // (both old and new exist) OR (only new one exists) don't do anything\n}\n\n/**\n * Initialize connection profiles\n *\n * This method is called from app.ts and runs before any of the message handlers are registered.\n * Therefore none of the Console message functions will produce any output.\n */\nexport async function initConnectionProfiles() {\n // create connections.json file if it doesn't exist\n const filename = getConnectionProfilesPath();\n const folderName = path.dirname(filename);\n if (!fs.existsSync(folderName)) {\n fs.mkdirSync(folderName, { recursive: true });\n if (!fs.existsSync(filename)) {\n fs.writeFileSync(\n filename,\n JSON.stringify({}, null, fileOptions.indentation)\n );\n }\n }\n // encrypt the password and logApiSecret from clear text to aes-256-GCM\n else {\n migrateFromLegacyProfile();\n const data = fs.readFileSync(filename, 'utf8');\n const connectionsData: ConnectionsFileInterface = JSON.parse(data);\n let convert = false;\n for (const conn of Object.keys(connectionsData)) {\n if (connectionsData[conn]['password']) {\n convert = true;\n connectionsData[conn].encodedPassword = await crypto.encrypt(\n connectionsData[conn]['password']\n );\n delete connectionsData[conn]['password'];\n }\n if (connectionsData[conn]['logApiSecret']) {\n convert = true;\n connectionsData[conn].encodedLogApiSecret = await crypto.encrypt(\n connectionsData[conn]['logApiSecret']\n );\n delete connectionsData[conn]['logApiSecret'];\n }\n if (connectionsData[conn]['svcacctJwk']) {\n convert = true;\n connectionsData[conn].encodedSvcacctJwk = await crypto.encrypt(\n connectionsData[conn]['svcacctJwk']\n );\n delete connectionsData[conn]['svcacctJwk'];\n }\n }\n if (convert) {\n fs.writeFileSync(\n filename,\n JSON.stringify(connectionsData, null, fileOptions.indentation)\n );\n }\n }\n}\n\n/**\n * Get connection profile by host\n * @param {String} host host tenant host url or unique substring\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfileByHost(\n host: string\n): Promise<ConnectionProfileInterface> {\n try {\n const filename = getConnectionProfilesPath();\n const connectionsData = JSON.parse(fs.readFileSync(filename, 'utf8'));\n const profiles = findConnectionProfiles(connectionsData, host);\n if (profiles.length == 0) {\n printMessage(\n `Profile for ${host} not found. Please specify credentials on command line`,\n 'error'\n );\n return null;\n }\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n }\n return {\n tenant: profiles[0].tenant,\n username: profiles[0].username ? profiles[0].username : null,\n password: profiles[0].encodedPassword\n ? await crypto.decrypt(profiles[0].encodedPassword)\n : null,\n logApiKey: profiles[0].logApiKey ? profiles[0].logApiKey : null,\n logApiSecret: profiles[0].encodedLogApiSecret\n ? await crypto.decrypt(profiles[0].encodedLogApiSecret)\n : null,\n authenticationService: profiles[0].authenticationService\n ? profiles[0].authenticationService\n : null,\n authenticationHeaderOverrides: profiles[0].authenticationHeaderOverrides\n ? profiles[0].authenticationHeaderOverrides\n : {},\n svcacctName: profiles[0].svcacctName ? profiles[0].svcacctName : null,\n svcacctId: profiles[0].svcacctId ? profiles[0].svcacctId : null,\n svcacctJwk: profiles[0].encodedSvcacctJwk\n ? await crypto.decrypt(profiles[0].encodedSvcacctJwk)\n : null,\n };\n } catch (e) {\n printMessage(\n `Can not read saved connection info, please specify credentials on command line: ${e}`,\n 'error'\n );\n return null;\n }\n}\n\n/**\n * Get connection profile\n * @returns {Object} connection profile or null\n */\nexport async function getConnectionProfile(): Promise<ConnectionProfileInterface> {\n return getConnectionProfileByHost(state.getHost());\n}\n\n/**\n * Save connection profile\n * @param {string} host host url for new profiles or unique substring for existing profiles\n * @returns {Promise<boolean>} true if the operation succeeded, false otherwise\n */\nexport async function saveConnectionProfile(host: string): Promise<boolean> {\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: start`);\n const filename = getConnectionProfilesPath();\n debugMessage(`Saving connection profile in ${filename}`);\n let profiles: ConnectionsFileInterface = {};\n let profile: SecureConnectionProfileInterface = { tenant: '' };\n try {\n fs.statSync(filename);\n const data = fs.readFileSync(filename, 'utf8');\n profiles = JSON.parse(data);\n\n // find tenant\n const found = findConnectionProfiles(profiles, host);\n\n // replace tenant in session with real tenant url if necessary\n if (found.length === 1) {\n profile = found[0];\n state.setHost(profile.tenant);\n verboseMessage(`Existing profile: ${profile.tenant}`);\n debugMessage(profile);\n }\n\n // connection profile not found, validate host is a real URL\n if (found.length === 0) {\n if (isValidUrl(host)) {\n state.setHost(host);\n debugMessage(`New profile: ${host}`);\n } else {\n printMessage(\n `No existing profile found matching '${host}'. Provide a valid URL as the host argument to create a new profile.`,\n 'error'\n );\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: end [false]`);\n return false;\n }\n }\n } catch (error) {\n debugMessage(`New profiles file ${filename} with new profile ${host}`);\n }\n\n // user account\n if (state.getUsername()) profile.username = state.getUsername();\n if (state.getPassword())\n profile.encodedPassword = await crypto.encrypt(state.getPassword());\n\n // log API\n if (state.getLogApiKey()) profile.logApiKey = state.getLogApiKey();\n if (state.getLogApiSecret())\n profile.encodedLogApiSecret = await crypto.encrypt(state.getLogApiSecret());\n\n // service account\n if (state.getServiceAccountId()) {\n profile.svcacctId = state.getServiceAccountId();\n profile.svcacctName = (\n await getServiceAccount(state.getServiceAccountId())\n ).name;\n }\n if (state.getServiceAccountJwk())\n profile.encodedSvcacctJwk = await crypto.encrypt(\n state.getServiceAccountJwk()\n );\n // update existing service account profile\n if (profile.svcacctId && !profile.svcacctName) {\n profile.svcacctName = (await getServiceAccount(profile.svcacctId)).name;\n debugMessage(\n `ConnectionProfileOps.saveConnectionProfile: added missing service account name`\n );\n }\n\n // advanced settings\n if (state.getAuthenticationService()) {\n profile.authenticationService = state.getAuthenticationService();\n printMessage(\n 'Advanced setting: Authentication Service: ' +\n state.getAuthenticationService(),\n 'info'\n );\n }\n if (\n state.getAuthenticationHeaderOverrides() &&\n Object.entries(state.getAuthenticationHeaderOverrides()).length\n ) {\n profile.authenticationHeaderOverrides =\n state.getAuthenticationHeaderOverrides();\n printMessage('Advanced setting: Authentication Header Overrides: ', 'info');\n printMessage(state.getAuthenticationHeaderOverrides(), 'info');\n }\n\n // remove the helper key 'tenant'\n delete profile.tenant;\n\n // update profiles\n profiles[state.getHost()] = profile;\n\n // sort profiles\n const orderedProfiles = Object.keys(profiles)\n .sort()\n .reduce((obj, key) => {\n obj[key] = profiles[key];\n return obj;\n }, {});\n\n // save profiles\n saveJsonToFile(orderedProfiles, filename, false);\n verboseMessage(`Saved connection profile ${state.getHost()} in ${filename}`);\n debugMessage(`ConnectionProfileOps.saveConnectionProfile: end [true]`);\n return true;\n}\n\n/**\n * Delete connection profile\n * @param {String} host host tenant host url or unique substring\n */\nexport function deleteConnectionProfile(host) {\n const filename = getConnectionProfilesPath();\n let connectionsData: ConnectionsFileInterface = {};\n fs.stat(filename, (err) => {\n if (err == null) {\n const data = fs.readFileSync(filename, 'utf8');\n connectionsData = JSON.parse(data);\n const profiles = findConnectionProfiles(connectionsData, host);\n if (profiles.length == 1) {\n delete connectionsData[profiles[0].tenant];\n fs.writeFileSync(filename, JSON.stringify(connectionsData, null, 2));\n printMessage(`Deleted connection profile ${profiles[0].tenant}`);\n } else {\n if (profiles.length > 1) {\n printMessage(`Multiple matching profiles found.`, 'error');\n profiles.forEach((p) => {\n printMessage(`- ${p.tenant}`, 'error');\n });\n printMessage(`Please specify a unique sub-string`, 'error');\n return null;\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n }\n } else if (err.code === 'ENOENT') {\n printMessage(`Connection profile file ${filename} not found`);\n } else {\n printMessage(\n `Error in deleting connection profile: ${err.code}`,\n 'error'\n );\n }\n });\n}\n\n/**\n * Describe connection profile\n * @param {string} host Host URL or unique substring\n * @param {boolean} showSecrets Whether secrets should be shown in clear text or not\n */\nexport async function describeConnectionProfile(\n host: string,\n showSecrets: boolean\n) {\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: start`);\n const profile = await getConnectionProfileByHost(host);\n if (profile) {\n debugMessage(profile);\n const present = '[present]';\n const jwk = profile.svcacctJwk;\n if (!showSecrets) {\n if (profile.password) profile.password = present;\n if (profile.logApiSecret) profile.logApiSecret = present;\n if (profile.svcacctJwk) (profile as unknown)['svcacctJwk'] = present;\n }\n if (!profile.username) {\n delete profile.username;\n delete profile.password;\n }\n if (!profile.logApiKey) {\n delete profile.logApiKey;\n delete profile.logApiSecret;\n }\n if (!profile.svcacctId) {\n delete profile.svcacctId;\n delete profile.svcacctJwk;\n delete profile.svcacctName;\n }\n if (showSecrets && jwk) {\n (profile as unknown)['svcacctJwk'] = 'see below';\n }\n if (!profile.authenticationService) {\n delete profile.authenticationService;\n }\n const keyMap = {\n tenant: 'Host',\n username: 'Username',\n password: 'Password',\n logApiKey: 'Log API Key',\n logApiSecret: 'Log API Secret',\n authenticationService: 'Authentication Service',\n authenticationHeaderOverrides: 'Authentication Header Overrides',\n svcacctName: 'Service Account Name',\n svcacctId: 'Service Account Id',\n svcacctJwk: 'Service Account JWK',\n };\n const table = createObjectTable(profile, keyMap);\n printMessage(table.toString(), 'data');\n if (showSecrets && jwk) {\n printMessage(jwk, 'data');\n }\n } else {\n printMessage(`No connection profile ${host} found`);\n }\n debugMessage(`ConnectionProfileOps.describeConnectionProfile: end`);\n}\n\n/**\n * Create a new service account using auto-generated parameters\n * @returns {Promise<ObjectSkeletonInterface>} A promise resolving to a service account object\n */\nexport async function addNewServiceAccount(): Promise<ObjectSkeletonInterface> {\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: start`);\n const name = `Frodo-SA-${new Date().getTime()}`;\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: name=${name}...`);\n const description = `${state.getUsername()}'s Frodo Service Account`;\n const scope = ['fr:am:*', 'fr:idm:*', 'fr:idc:esv:*'];\n const jwkPrivate = await createJwkRsa();\n const jwkPublic = await getJwkRsaPublic(jwkPrivate);\n const jwks = createJwks(jwkPublic);\n const sa = await createServiceAccount(\n name,\n description,\n 'Active',\n scope,\n jwks\n );\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: id=${sa._id}`);\n state.setServiceAccountId(sa._id);\n state.setServiceAccountJwk(jwkPrivate);\n debugMessage(`ConnectionProfileOps.addNewServiceAccount: end`);\n return sa;\n}\n"],"mappings":"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"}
|
package/cjs/ops/IdpOps.js
CHANGED
|
@@ -22,7 +22,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
22
22
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
23
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
24
24
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
25
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
25
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
26
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
27
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
26
28
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
27
29
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
28
30
|
/**
|
package/cjs/ops/IdpOps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdpOps.js","names":["createIdpExportTemplate","meta","getMetadata","script","idp","getSocialIdentityProviders","result","_getSocialIdentityProviders","getSocialProvider","providerId","response","foundProviders","filter","provider","_id","length","Error","putProviderByTypeAndId","providerType","providerData","debugMessage","_putProviderByTypeAndId","importError","status","data","message","validAttributes","detail","push","attribute","Object","keys","includes","state","getVerbose","printMessage","deleteSocialProvider","deleteProviderByTypeAndId","_type","exportSocialProvider","idpData","exportData","transform","scriptData","getScript","convertBase64TextToArray","exportSocialProviders","allIdpsData","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","importSocialProvider","importData","idpId","scriptId","convertTextArrayToBase64","putScript","importFirstSocialProvider","importSocialProviders","outcome","error"],"sources":["ops/IdpOps.ts"],"sourcesContent":["import {\n deleteProviderByTypeAndId,\n getSocialIdentityProviders as _getSocialIdentityProviders,\n putProviderByTypeAndId as _putProviderByTypeAndId,\n} from '../api/SocialIdentityProvidersApi';\nimport { getScript } from '../api/ScriptApi';\nimport { putScript } from './ScriptOps';\nimport {\n convertBase64TextToArray,\n convertTextArrayToBase64,\n} from './utils/ExportImportUtils';\nimport {\n printMessage,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n} from './utils/Console';\nimport { ExportMetaData } from './OpsTypes';\nimport { ScriptSkeleton, SocialIdpSkeleton } from '../api/ApiTypes';\nimport { getMetadata } from './utils/ExportImportUtils';\nimport * as state from '../shared/State';\nimport { debugMessage } from './utils/Console';\n\nexport interface SocialProviderExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n idp: Record<string, SocialIdpSkeleton>;\n}\n\n/**\n * Create an empty idp export template\n * @returns {SocialProviderExportInterface} an empty idp export template\n */\nfunction createIdpExportTemplate(): SocialProviderExportInterface {\n return {\n meta: getMetadata(),\n script: {},\n idp: {},\n } as SocialProviderExportInterface;\n}\n\n/**\n * Get all social identity providers\n * @returns {Promise} a promise that resolves to an object containing an array of social identity providers\n */\nexport async function getSocialIdentityProviders() {\n const { result } = await _getSocialIdentityProviders();\n return result;\n}\n\n/**\n * Get social identity provider by id\n * @param {String} providerId social identity provider id/name\n * @returns {Promise} a promise that resolves a social identity provider object\n */\nexport async function getSocialProvider(providerId) {\n const response = await getSocialIdentityProviders();\n const foundProviders = response.filter(\n (provider) => provider._id === providerId\n );\n switch (foundProviders.length) {\n case 1:\n return foundProviders[0];\n case 0:\n throw new Error(`Provider '${providerId}' not found`);\n default:\n throw new Error(\n `${foundProviders.length} providers '${providerId}' found`\n );\n }\n}\n\nexport async function putProviderByTypeAndId(\n providerType: string,\n providerId: string,\n providerData: object\n) {\n debugMessage(`IdpOps.putProviderByTypeAndId: start`);\n try {\n const response = await _putProviderByTypeAndId(\n providerType,\n providerId,\n providerData\n );\n debugMessage(`IdpOps.putProviderByTypeAndId: end`);\n return response;\n } catch (importError) {\n if (\n importError.response?.status === 400 &&\n importError.response?.data?.message === 'Invalid attribute specified.'\n ) {\n const { validAttributes } = importError.response.data.detail;\n validAttributes.push('_id', '_type');\n for (const attribute of Object.keys(providerData)) {\n if (!validAttributes.includes(attribute)) {\n if (state.getVerbose())\n printMessage(\n `\\nRemoving invalid attribute: ${attribute}`,\n 'warn',\n false\n );\n delete providerData[attribute];\n }\n }\n if (state.getVerbose()) printMessage('\\n', 'warn', false);\n const response = await _putProviderByTypeAndId(\n providerType,\n providerId,\n providerData\n );\n debugMessage(`IdpOps.putProviderByTypeAndId: end (after retry)`);\n return response;\n } else {\n // re-throw unhandleable error\n throw importError;\n }\n }\n}\n\n/**\n * Delete social identity provider by id\n * @param {String} providerId social identity provider id/name\n * @returns {Promise} a promise that resolves a social identity provider object\n */\nexport async function deleteSocialProvider(\n providerId: string\n): Promise<unknown> {\n const response = await getSocialIdentityProviders();\n const foundProviders = response.filter(\n (provider) => provider._id === providerId\n );\n switch (foundProviders.length) {\n case 1:\n return await deleteProviderByTypeAndId(\n foundProviders[0]._type._id,\n foundProviders[0]._id\n );\n case 0:\n throw new Error(`Provider '${providerId}' not found`);\n default:\n throw new Error(\n `${foundProviders.length} providers '${providerId}' found`\n );\n }\n}\n\n/**\n * Export social provider by id\n * @param {string} providerId provider id/name\n * @returns {Promise<SocialProviderExportInterface>} a promise that resolves to a SocialProviderExportInterface object\n */\nexport async function exportSocialProvider(\n providerId: string\n): Promise<SocialProviderExportInterface> {\n debugMessage(`IdpOps.exportSocialProvider: start`);\n const idpData = await getSocialProvider(providerId);\n const exportData = createIdpExportTemplate();\n exportData.idp[idpData._id] = idpData;\n if (idpData.transform) {\n const scriptData = await getScript(idpData.transform);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n exportData.script[idpData.transform] = scriptData;\n }\n debugMessage(`IdpOps.exportSocialProvider: end`);\n return exportData;\n}\n\n/**\n * Export all providers\n * @returns {Promise<SocialProviderExportInterface>} a promise that resolves to a SocialProviderExportInterface object\n */\nexport async function exportSocialProviders(): Promise<SocialProviderExportInterface> {\n const exportData = createIdpExportTemplate();\n const allIdpsData = await getSocialIdentityProviders();\n createProgressIndicator(allIdpsData.length, 'Exporting providers');\n for (const idpData of allIdpsData) {\n updateProgressIndicator(`Exporting provider ${idpData._id}`);\n exportData.idp[idpData._id] = idpData;\n if (idpData.transform) {\n // eslint-disable-next-line no-await-in-loop\n const scriptData = await getScript(idpData.transform);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n exportData.script[idpData.transform] = scriptData;\n }\n }\n stopProgressIndicator(`${allIdpsData.length} providers exported.`);\n return exportData;\n}\n\n/**\n * Import provider by id/name\n * @param {string} providerId provider id/name\n * @param {SocialProviderExportInterface} importData import data\n */\nexport async function importSocialProvider(\n providerId: string,\n importData: SocialProviderExportInterface\n): Promise<boolean> {\n for (const idpId of Object.keys(importData.idp)) {\n if (idpId === providerId) {\n const scriptId = importData.idp[idpId].transform as string;\n const scriptData = importData.script[scriptId as string];\n if (scriptId && scriptData) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await putScript(scriptId, scriptData);\n }\n await putProviderByTypeAndId(\n importData.idp[idpId]._type._id,\n idpId,\n importData.idp[idpId]\n );\n return true;\n }\n }\n return false;\n}\n\n/**\n * Import first provider\n * @param {SocialProviderExportInterface} importData import data\n */\nexport async function importFirstSocialProvider(\n importData: SocialProviderExportInterface\n): Promise<boolean> {\n for (const idpId of Object.keys(importData.idp)) {\n const scriptId = importData.idp[idpId].transform as string;\n const scriptData = importData.script[scriptId as string];\n if (scriptId && scriptData) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await putScript(scriptId, scriptData);\n }\n await putProviderByTypeAndId(\n importData.idp[idpId]._type._id,\n idpId,\n importData.idp[idpId]\n );\n return true;\n }\n return false;\n}\n\n/**\n * Import all providers\n * @param {SocialProviderExportInterface} importData import data\n */\nexport async function importSocialProviders(\n importData: SocialProviderExportInterface\n): Promise<boolean> {\n let outcome = true;\n for (const idpId of Object.keys(importData.idp)) {\n try {\n const scriptId = importData.idp[idpId].transform as string;\n const scriptData = { ...importData.script[scriptId as string] };\n if (scriptId && scriptData) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await putScript(scriptId, scriptData);\n }\n await putProviderByTypeAndId(\n importData.idp[idpId]._type._id,\n idpId,\n importData.idp[idpId]\n );\n } catch (error) {\n printMessage(error.response?.data || error, 'error');\n printMessage(`\\nError importing provider ${idpId}`, 'error');\n outcome = false;\n }\n }\n return outcome;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IdpOps.js","names":["createIdpExportTemplate","meta","getMetadata","script","idp","getSocialIdentityProviders","result","_getSocialIdentityProviders","getSocialProvider","providerId","response","foundProviders","filter","provider","_id","length","Error","putProviderByTypeAndId","providerType","providerData","debugMessage","_putProviderByTypeAndId","importError","status","data","message","validAttributes","detail","push","attribute","Object","keys","includes","state","getVerbose","printMessage","deleteSocialProvider","deleteProviderByTypeAndId","_type","exportSocialProvider","idpData","exportData","transform","scriptData","getScript","convertBase64TextToArray","exportSocialProviders","allIdpsData","createProgressIndicator","updateProgressIndicator","stopProgressIndicator","importSocialProvider","importData","idpId","scriptId","convertTextArrayToBase64","putScript","importFirstSocialProvider","importSocialProviders","outcome","error"],"sources":["ops/IdpOps.ts"],"sourcesContent":["import {\n deleteProviderByTypeAndId,\n getSocialIdentityProviders as _getSocialIdentityProviders,\n putProviderByTypeAndId as _putProviderByTypeAndId,\n} from '../api/SocialIdentityProvidersApi';\nimport { getScript } from '../api/ScriptApi';\nimport { putScript } from './ScriptOps';\nimport {\n convertBase64TextToArray,\n convertTextArrayToBase64,\n} from './utils/ExportImportUtils';\nimport {\n printMessage,\n createProgressIndicator,\n updateProgressIndicator,\n stopProgressIndicator,\n} from './utils/Console';\nimport { ExportMetaData } from './OpsTypes';\nimport { ScriptSkeleton, SocialIdpSkeleton } from '../api/ApiTypes';\nimport { getMetadata } from './utils/ExportImportUtils';\nimport * as state from '../shared/State';\nimport { debugMessage } from './utils/Console';\n\nexport interface SocialProviderExportInterface {\n meta?: ExportMetaData;\n script: Record<string, ScriptSkeleton>;\n idp: Record<string, SocialIdpSkeleton>;\n}\n\n/**\n * Create an empty idp export template\n * @returns {SocialProviderExportInterface} an empty idp export template\n */\nfunction createIdpExportTemplate(): SocialProviderExportInterface {\n return {\n meta: getMetadata(),\n script: {},\n idp: {},\n } as SocialProviderExportInterface;\n}\n\n/**\n * Get all social identity providers\n * @returns {Promise} a promise that resolves to an object containing an array of social identity providers\n */\nexport async function getSocialIdentityProviders() {\n const { result } = await _getSocialIdentityProviders();\n return result;\n}\n\n/**\n * Get social identity provider by id\n * @param {String} providerId social identity provider id/name\n * @returns {Promise} a promise that resolves a social identity provider object\n */\nexport async function getSocialProvider(providerId) {\n const response = await getSocialIdentityProviders();\n const foundProviders = response.filter(\n (provider) => provider._id === providerId\n );\n switch (foundProviders.length) {\n case 1:\n return foundProviders[0];\n case 0:\n throw new Error(`Provider '${providerId}' not found`);\n default:\n throw new Error(\n `${foundProviders.length} providers '${providerId}' found`\n );\n }\n}\n\nexport async function putProviderByTypeAndId(\n providerType: string,\n providerId: string,\n providerData: object\n) {\n debugMessage(`IdpOps.putProviderByTypeAndId: start`);\n try {\n const response = await _putProviderByTypeAndId(\n providerType,\n providerId,\n providerData\n );\n debugMessage(`IdpOps.putProviderByTypeAndId: end`);\n return response;\n } catch (importError) {\n if (\n importError.response?.status === 400 &&\n importError.response?.data?.message === 'Invalid attribute specified.'\n ) {\n const { validAttributes } = importError.response.data.detail;\n validAttributes.push('_id', '_type');\n for (const attribute of Object.keys(providerData)) {\n if (!validAttributes.includes(attribute)) {\n if (state.getVerbose())\n printMessage(\n `\\nRemoving invalid attribute: ${attribute}`,\n 'warn',\n false\n );\n delete providerData[attribute];\n }\n }\n if (state.getVerbose()) printMessage('\\n', 'warn', false);\n const response = await _putProviderByTypeAndId(\n providerType,\n providerId,\n providerData\n );\n debugMessage(`IdpOps.putProviderByTypeAndId: end (after retry)`);\n return response;\n } else {\n // re-throw unhandleable error\n throw importError;\n }\n }\n}\n\n/**\n * Delete social identity provider by id\n * @param {String} providerId social identity provider id/name\n * @returns {Promise} a promise that resolves a social identity provider object\n */\nexport async function deleteSocialProvider(\n providerId: string\n): Promise<unknown> {\n const response = await getSocialIdentityProviders();\n const foundProviders = response.filter(\n (provider) => provider._id === providerId\n );\n switch (foundProviders.length) {\n case 1:\n return await deleteProviderByTypeAndId(\n foundProviders[0]._type._id,\n foundProviders[0]._id\n );\n case 0:\n throw new Error(`Provider '${providerId}' not found`);\n default:\n throw new Error(\n `${foundProviders.length} providers '${providerId}' found`\n );\n }\n}\n\n/**\n * Export social provider by id\n * @param {string} providerId provider id/name\n * @returns {Promise<SocialProviderExportInterface>} a promise that resolves to a SocialProviderExportInterface object\n */\nexport async function exportSocialProvider(\n providerId: string\n): Promise<SocialProviderExportInterface> {\n debugMessage(`IdpOps.exportSocialProvider: start`);\n const idpData = await getSocialProvider(providerId);\n const exportData = createIdpExportTemplate();\n exportData.idp[idpData._id] = idpData;\n if (idpData.transform) {\n const scriptData = await getScript(idpData.transform);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n exportData.script[idpData.transform] = scriptData;\n }\n debugMessage(`IdpOps.exportSocialProvider: end`);\n return exportData;\n}\n\n/**\n * Export all providers\n * @returns {Promise<SocialProviderExportInterface>} a promise that resolves to a SocialProviderExportInterface object\n */\nexport async function exportSocialProviders(): Promise<SocialProviderExportInterface> {\n const exportData = createIdpExportTemplate();\n const allIdpsData = await getSocialIdentityProviders();\n createProgressIndicator(allIdpsData.length, 'Exporting providers');\n for (const idpData of allIdpsData) {\n updateProgressIndicator(`Exporting provider ${idpData._id}`);\n exportData.idp[idpData._id] = idpData;\n if (idpData.transform) {\n // eslint-disable-next-line no-await-in-loop\n const scriptData = await getScript(idpData.transform);\n scriptData.script = convertBase64TextToArray(scriptData.script);\n exportData.script[idpData.transform] = scriptData;\n }\n }\n stopProgressIndicator(`${allIdpsData.length} providers exported.`);\n return exportData;\n}\n\n/**\n * Import provider by id/name\n * @param {string} providerId provider id/name\n * @param {SocialProviderExportInterface} importData import data\n */\nexport async function importSocialProvider(\n providerId: string,\n importData: SocialProviderExportInterface\n): Promise<boolean> {\n for (const idpId of Object.keys(importData.idp)) {\n if (idpId === providerId) {\n const scriptId = importData.idp[idpId].transform as string;\n const scriptData = importData.script[scriptId as string];\n if (scriptId && scriptData) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await putScript(scriptId, scriptData);\n }\n await putProviderByTypeAndId(\n importData.idp[idpId]._type._id,\n idpId,\n importData.idp[idpId]\n );\n return true;\n }\n }\n return false;\n}\n\n/**\n * Import first provider\n * @param {SocialProviderExportInterface} importData import data\n */\nexport async function importFirstSocialProvider(\n importData: SocialProviderExportInterface\n): Promise<boolean> {\n for (const idpId of Object.keys(importData.idp)) {\n const scriptId = importData.idp[idpId].transform as string;\n const scriptData = importData.script[scriptId as string];\n if (scriptId && scriptData) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await putScript(scriptId, scriptData);\n }\n await putProviderByTypeAndId(\n importData.idp[idpId]._type._id,\n idpId,\n importData.idp[idpId]\n );\n return true;\n }\n return false;\n}\n\n/**\n * Import all providers\n * @param {SocialProviderExportInterface} importData import data\n */\nexport async function importSocialProviders(\n importData: SocialProviderExportInterface\n): Promise<boolean> {\n let outcome = true;\n for (const idpId of Object.keys(importData.idp)) {\n try {\n const scriptId = importData.idp[idpId].transform as string;\n const scriptData = { ...importData.script[scriptId as string] };\n if (scriptId && scriptData) {\n scriptData.script = convertTextArrayToBase64(scriptData.script);\n await putScript(scriptId, scriptData);\n }\n await putProviderByTypeAndId(\n importData.idp[idpId]._type._id,\n idpId,\n importData.idp[idpId]\n );\n } catch (error) {\n printMessage(error.response?.data || error, 'error');\n printMessage(`\\nError importing provider ${idpId}`, 'error');\n outcome = false;\n }\n }\n return outcome;\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAKA;AACA;AACA;AAIA;AASA;AAAyC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASzC;AACA;AACA;AACA;AACA,SAASA,uBAAuB,GAAkC;EAChE,OAAO;IACLC,IAAI,EAAE,IAAAC,8BAAW,GAAE;IACnBC,MAAM,EAAE,CAAC,CAAC;IACVC,GAAG,EAAE,CAAC;EACR,CAAC;AACH;;AAEA;AACA;AACA;AACA;AAHA,SAIsBC,0BAA0B;EAAA;AAAA;AAKhD;AACA;AACA;AACA;AACA;AAJA;EAAA,iDALO,aAA4C;IACjD,IAAM;MAAEC;IAAO,CAAC,SAAS,IAAAC,sDAA2B,GAAE;IACtD,OAAOD,MAAM;EACf,CAAC;EAAA;AAAA;AAAA,SAOqBE,iBAAiB;EAAA;AAAA;AAAA;EAAA,uCAAhC,WAAiCC,UAAU,EAAE;IAClD,IAAMC,QAAQ,SAASL,0BAA0B,EAAE;IACnD,IAAMM,cAAc,GAAGD,QAAQ,CAACE,MAAM,CACnCC,QAAQ,IAAKA,QAAQ,CAACC,GAAG,KAAKL,UAAU,CAC1C;IACD,QAAQE,cAAc,CAACI,MAAM;MAC3B,KAAK,CAAC;QACJ,OAAOJ,cAAc,CAAC,CAAC,CAAC;MAC1B,KAAK,CAAC;QACJ,MAAM,IAAIK,KAAK,qBAAcP,UAAU,iBAAc;MACvD;QACE,MAAM,IAAIO,KAAK,WACVL,cAAc,CAACI,MAAM,yBAAeN,UAAU,aAClD;IAAC;EAER,CAAC;EAAA;AAAA;AAAA,SAEqBQ,sBAAsB;EAAA;AAAA;AA+C5C;AACA;AACA;AACA;AACA;AAJA;EAAA,6CA/CO,WACLC,YAAoB,EACpBT,UAAkB,EAClBU,YAAoB,EACpB;IACA,IAAAC,qBAAY,yCAAwC;IACpD,IAAI;MACF,IAAMV,QAAQ,SAAS,IAAAW,kDAAuB,EAC5CH,YAAY,EACZT,UAAU,EACVU,YAAY,CACb;MACD,IAAAC,qBAAY,uCAAsC;MAClD,OAAOV,QAAQ;IACjB,CAAC,CAAC,OAAOY,WAAW,EAAE;MAAA;MACpB,IACE,0BAAAA,WAAW,CAACZ,QAAQ,0DAApB,sBAAsBa,MAAM,MAAK,GAAG,IACpC,2BAAAD,WAAW,CAACZ,QAAQ,qFAApB,uBAAsBc,IAAI,2DAA1B,uBAA4BC,OAAO,MAAK,8BAA8B,EACtE;QACA,IAAM;UAAEC;QAAgB,CAAC,GAAGJ,WAAW,CAACZ,QAAQ,CAACc,IAAI,CAACG,MAAM;QAC5DD,eAAe,CAACE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;QACpC,KAAK,IAAMC,SAAS,IAAIC,MAAM,CAACC,IAAI,CAACZ,YAAY,CAAC,EAAE;UACjD,IAAI,CAACO,eAAe,CAACM,QAAQ,CAACH,SAAS,CAAC,EAAE;YACxC,IAAII,KAAK,CAACC,UAAU,EAAE,EACpB,IAAAC,qBAAY,0CACuBN,SAAS,GAC1C,MAAM,EACN,KAAK,CACN;YACH,OAAOV,YAAY,CAACU,SAAS,CAAC;UAChC;QACF;QACA,IAAII,KAAK,CAACC,UAAU,EAAE,EAAE,IAAAC,qBAAY,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;QACzD,IAAMzB,SAAQ,SAAS,IAAAW,kDAAuB,EAC5CH,YAAY,EACZT,UAAU,EACVU,YAAY,CACb;QACD,IAAAC,qBAAY,qDAAoD;QAChE,OAAOV,SAAQ;MACjB,CAAC,MAAM;QACL;QACA,MAAMY,WAAW;MACnB;IACF;EACF,CAAC;EAAA;AAAA;AAAA,SAOqBc,oBAAoB;EAAA;AAAA;AAsB1C;AACA;AACA;AACA;AACA;AAJA;EAAA,0CAtBO,WACL3B,UAAkB,EACA;IAClB,IAAMC,QAAQ,SAASL,0BAA0B,EAAE;IACnD,IAAMM,cAAc,GAAGD,QAAQ,CAACE,MAAM,CACnCC,QAAQ,IAAKA,QAAQ,CAACC,GAAG,KAAKL,UAAU,CAC1C;IACD,QAAQE,cAAc,CAACI,MAAM;MAC3B,KAAK,CAAC;QACJ,aAAa,IAAAsB,qDAAyB,EACpC1B,cAAc,CAAC,CAAC,CAAC,CAAC2B,KAAK,CAACxB,GAAG,EAC3BH,cAAc,CAAC,CAAC,CAAC,CAACG,GAAG,CACtB;MACH,KAAK,CAAC;QACJ,MAAM,IAAIE,KAAK,qBAAcP,UAAU,iBAAc;MACvD;QACE,MAAM,IAAIO,KAAK,WACVL,cAAc,CAACI,MAAM,yBAAeN,UAAU,aAClD;IAAC;EAER,CAAC;EAAA;AAAA;AAAA,SAOqB8B,oBAAoB;EAAA;AAAA;AAgB1C;AACA;AACA;AACA;AAHA;EAAA,0CAhBO,WACL9B,UAAkB,EACsB;IACxC,IAAAW,qBAAY,uCAAsC;IAClD,IAAMoB,OAAO,SAAShC,iBAAiB,CAACC,UAAU,CAAC;IACnD,IAAMgC,UAAU,GAAGzC,uBAAuB,EAAE;IAC5CyC,UAAU,CAACrC,GAAG,CAACoC,OAAO,CAAC1B,GAAG,CAAC,GAAG0B,OAAO;IACrC,IAAIA,OAAO,CAACE,SAAS,EAAE;MACrB,IAAMC,UAAU,SAAS,IAAAC,oBAAS,EAACJ,OAAO,CAACE,SAAS,CAAC;MACrDC,UAAU,CAACxC,MAAM,GAAG,IAAA0C,2CAAwB,EAACF,UAAU,CAACxC,MAAM,CAAC;MAC/DsC,UAAU,CAACtC,MAAM,CAACqC,OAAO,CAACE,SAAS,CAAC,GAAGC,UAAU;IACnD;IACA,IAAAvB,qBAAY,qCAAoC;IAChD,OAAOqB,UAAU;EACnB,CAAC;EAAA;AAAA;AAAA,SAMqBK,qBAAqB;EAAA;AAAA;AAkB3C;AACA;AACA;AACA;AACA;AAJA;EAAA,2CAlBO,aAA+E;IACpF,IAAML,UAAU,GAAGzC,uBAAuB,EAAE;IAC5C,IAAM+C,WAAW,SAAS1C,0BAA0B,EAAE;IACtD,IAAA2C,gCAAuB,EAACD,WAAW,CAAChC,MAAM,EAAE,qBAAqB,CAAC;IAClE,KAAK,IAAMyB,OAAO,IAAIO,WAAW,EAAE;MACjC,IAAAE,gCAAuB,+BAAuBT,OAAO,CAAC1B,GAAG,EAAG;MAC5D2B,UAAU,CAACrC,GAAG,CAACoC,OAAO,CAAC1B,GAAG,CAAC,GAAG0B,OAAO;MACrC,IAAIA,OAAO,CAACE,SAAS,EAAE;QACrB;QACA,IAAMC,UAAU,SAAS,IAAAC,oBAAS,EAACJ,OAAO,CAACE,SAAS,CAAC;QACrDC,UAAU,CAACxC,MAAM,GAAG,IAAA0C,2CAAwB,EAACF,UAAU,CAACxC,MAAM,CAAC;QAC/DsC,UAAU,CAACtC,MAAM,CAACqC,OAAO,CAACE,SAAS,CAAC,GAAGC,UAAU;MACnD;IACF;IACA,IAAAO,8BAAqB,YAAIH,WAAW,CAAChC,MAAM,0BAAuB;IAClE,OAAO0B,UAAU;EACnB,CAAC;EAAA;AAAA;AAAA,SAOqBU,oBAAoB;EAAA;AAAA;AAuB1C;AACA;AACA;AACA;AAHA;EAAA,0CAvBO,WACL1C,UAAkB,EAClB2C,UAAyC,EACvB;IAClB,KAAK,IAAMC,KAAK,IAAIvB,MAAM,CAACC,IAAI,CAACqB,UAAU,CAAChD,GAAG,CAAC,EAAE;MAC/C,IAAIiD,KAAK,KAAK5C,UAAU,EAAE;QACxB,IAAM6C,QAAQ,GAAGF,UAAU,CAAChD,GAAG,CAACiD,KAAK,CAAC,CAACX,SAAmB;QAC1D,IAAMC,UAAU,GAAGS,UAAU,CAACjD,MAAM,CAACmD,QAAQ,CAAW;QACxD,IAAIA,QAAQ,IAAIX,UAAU,EAAE;UAC1BA,UAAU,CAACxC,MAAM,GAAG,IAAAoD,2CAAwB,EAACZ,UAAU,CAACxC,MAAM,CAAC;UAC/D,MAAM,IAAAqD,oBAAS,EAACF,QAAQ,EAAEX,UAAU,CAAC;QACvC;QACA,MAAM1B,sBAAsB,CAC1BmC,UAAU,CAAChD,GAAG,CAACiD,KAAK,CAAC,CAACf,KAAK,CAACxB,GAAG,EAC/BuC,KAAK,EACLD,UAAU,CAAChD,GAAG,CAACiD,KAAK,CAAC,CACtB;QACD,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd,CAAC;EAAA;AAAA;AAAA,SAMqBI,yBAAyB;EAAA;AAAA;AAoB/C;AACA;AACA;AACA;AAHA;EAAA,+CApBO,WACLL,UAAyC,EACvB;IAClB,KAAK,IAAMC,KAAK,IAAIvB,MAAM,CAACC,IAAI,CAACqB,UAAU,CAAChD,GAAG,CAAC,EAAE;MAC/C,IAAMkD,QAAQ,GAAGF,UAAU,CAAChD,GAAG,CAACiD,KAAK,CAAC,CAACX,SAAmB;MAC1D,IAAMC,UAAU,GAAGS,UAAU,CAACjD,MAAM,CAACmD,QAAQ,CAAW;MACxD,IAAIA,QAAQ,IAAIX,UAAU,EAAE;QAC1BA,UAAU,CAACxC,MAAM,GAAG,IAAAoD,2CAAwB,EAACZ,UAAU,CAACxC,MAAM,CAAC;QAC/D,MAAM,IAAAqD,oBAAS,EAACF,QAAQ,EAAEX,UAAU,CAAC;MACvC;MACA,MAAM1B,sBAAsB,CAC1BmC,UAAU,CAAChD,GAAG,CAACiD,KAAK,CAAC,CAACf,KAAK,CAACxB,GAAG,EAC/BuC,KAAK,EACLD,UAAU,CAAChD,GAAG,CAACiD,KAAK,CAAC,CACtB;MACD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd,CAAC;EAAA;AAAA;AAAA,SAMqBK,qBAAqB;EAAA;AAAA;AAAA;EAAA,2CAApC,WACLN,UAAyC,EACvB;IAClB,IAAIO,OAAO,GAAG,IAAI;IAClB,KAAK,IAAMN,KAAK,IAAIvB,MAAM,CAACC,IAAI,CAACqB,UAAU,CAAChD,GAAG,CAAC,EAAE;MAC/C,IAAI;QACF,IAAMkD,QAAQ,GAAGF,UAAU,CAAChD,GAAG,CAACiD,KAAK,CAAC,CAACX,SAAmB;QAC1D,IAAMC,UAAU,qBAAQS,UAAU,CAACjD,MAAM,CAACmD,QAAQ,CAAW,CAAE;QAC/D,IAAIA,QAAQ,IAAIX,UAAU,EAAE;UAC1BA,UAAU,CAACxC,MAAM,GAAG,IAAAoD,2CAAwB,EAACZ,UAAU,CAACxC,MAAM,CAAC;UAC/D,MAAM,IAAAqD,oBAAS,EAACF,QAAQ,EAAEX,UAAU,CAAC;QACvC;QACA,MAAM1B,sBAAsB,CAC1BmC,UAAU,CAAChD,GAAG,CAACiD,KAAK,CAAC,CAACf,KAAK,CAACxB,GAAG,EAC/BuC,KAAK,EACLD,UAAU,CAAChD,GAAG,CAACiD,KAAK,CAAC,CACtB;MACH,CAAC,CAAC,OAAOO,KAAK,EAAE;QAAA;QACd,IAAAzB,qBAAY,EAAC,oBAAAyB,KAAK,CAAClD,QAAQ,oDAAd,gBAAgBc,IAAI,KAAIoC,KAAK,EAAE,OAAO,CAAC;QACpD,IAAAzB,qBAAY,uCAA+BkB,KAAK,GAAI,OAAO,CAAC;QAC5DM,OAAO,GAAG,KAAK;MACjB;IACF;IACA,OAAOA,OAAO;EAChB,CAAC;EAAA;AAAA"}
|
package/cjs/ops/InfoOps.js
CHANGED
|
@@ -14,7 +14,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
14
14
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
15
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
16
16
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
17
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
17
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
18
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
19
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
18
20
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
19
21
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
20
22
|
function getCloudInfo() {
|
package/cjs/ops/InfoOps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InfoOps.js","names":["getCloudInfo","info","getEnvInfo","message_box_html","message_box_title","message_variant","warning_message_html","placeholder_management_migration_date","error","printMessage","response","data","message","getAmVersion","versionObj","getServerVersionInfo","amVersion","getAuthenticatedSubject","subjectString","state","getUsername","getUseBearerTokenForAmApis","name","getServiceAccount","getServiceAccountId","getInfo","host","getHost","authenticatedSubject","deploymentType","getDeploymentType","cookieName","getCookieName","sessionToken","getCookieValue","getBearerToken","bearerToken","globalConfig","CLOUD_DEPLOYMENT_TYPE_KEY"],"sources":["ops/InfoOps.ts"],"sourcesContent":["import { getEnvInfo } from '../api/cloud/EnvInfoApi';\nimport * as state from '../shared/State';\nimport { EnvInfoInterface } from '../api/cloud/EnvInfoApi';\nimport * as globalConfig from '../storage/StaticStorage';\nimport { getServerVersionInfo } from '../api/ServerInfoApi';\nimport { printMessage } from './utils/Console';\nimport { getServiceAccount } from './cloud/ServiceAccountOps';\n\nexport interface PlatformInfoInterface {\n host: string;\n authenticatedSubject: string;\n amVersion: string;\n cookieName: string;\n sessionToken: string;\n bearerToken?: string;\n deploymentType: string;\n}\n\nexport type PlatformInfo = PlatformInfoInterface & Partial<EnvInfoInterface>;\n\nasync function getCloudInfo(): Promise<Partial<EnvInfoInterface>> {\n let info: Partial<EnvInfoInterface> = {};\n try {\n info = await getEnvInfo();\n delete info.message_box_html;\n delete info.message_box_title;\n delete info.message_variant;\n delete info.warning_message_html;\n if (!info.placeholder_management_migration_date)\n delete info.placeholder_management_migration_date;\n } catch (error) {\n printMessage(error.response?.data, 'error');\n printMessage(`Error getting env info: ${error.message}`, 'error');\n }\n return info;\n}\n\nasync function getAmVersion(): Promise<string> {\n const versionObj = await getServerVersionInfo();\n const amVersion = `${versionObj['version']} Build ${versionObj['revision']} (${versionObj['date']})`;\n return amVersion;\n}\n\nasync function getAuthenticatedSubject(): Promise<string> {\n let subjectString = `${state.getUsername()} (User)`;\n if (state.getUseBearerTokenForAmApis()) {\n const name = (await getServiceAccount(state.getServiceAccountId())).name;\n subjectString = `${name} [${state.getServiceAccountId()}] (Service Account)`;\n }\n return subjectString;\n}\n\n/**\n * Get info about the platform instance\n * @returns {Promise<PlatformInfo>} a promise that resolves to a json blob with information about the instance and tokens\n */\nexport async function getInfo(): Promise<PlatformInfo> {\n const info: PlatformInfo = {\n host: state.getHost(),\n amVersion: await getAmVersion(),\n authenticatedSubject: await getAuthenticatedSubject(),\n deploymentType: state.getDeploymentType(),\n cookieName: state.getCookieName(),\n sessionToken: state.getCookieValue(),\n // only add bearerToken if we have it\n ...(state.getBearerToken() && { bearerToken: state.getBearerToken() }),\n // only add cloud env info if deployment type is cloud\n ...(state.getDeploymentType() === globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY &&\n (await getCloudInfo())),\n };\n return info;\n}\n"],"mappings":";;;;;;AAAA;AACA;AAEA;AACA;AACA;AACA;AAA8D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAc/CA,YAAY;EAAA;AAAA;AAAA;EAAA,kCAA3B,aAAkE;IAChE,IAAIC,IAA+B,GAAG,CAAC,CAAC;IACxC,IAAI;MACFA,IAAI,SAAS,IAAAC,sBAAU,GAAE;MACzB,OAAOD,IAAI,CAACE,gBAAgB;MAC5B,OAAOF,IAAI,CAACG,iBAAiB;MAC7B,OAAOH,IAAI,CAACI,eAAe;MAC3B,OAAOJ,IAAI,CAACK,oBAAoB;MAChC,IAAI,CAACL,IAAI,CAACM,qCAAqC,EAC7C,OAAON,IAAI,CAACM,qCAAqC;IACrD,CAAC,CAAC,OAAOC,KAAK,EAAE;MAAA;MACd,IAAAC,qBAAY,qBAACD,KAAK,CAACE,QAAQ,oDAAd,gBAAgBC,IAAI,EAAE,OAAO,CAAC;MAC3C,IAAAF,qBAAY,oCAA4BD,KAAK,CAACI,OAAO,GAAI,OAAO,CAAC;IACnE;IACA,OAAOX,IAAI;EACb,CAAC;EAAA;AAAA;AAAA,SAEcY,YAAY;EAAA;AAAA;AAAA;EAAA,kCAA3B,aAA+C;IAC7C,IAAMC,UAAU,SAAS,IAAAC,mCAAoB,GAAE;IAC/C,IAAMC,SAAS,aAAMF,UAAU,CAAC,SAAS,CAAC,oBAAUA,UAAU,CAAC,UAAU,CAAC,eAAKA,UAAU,CAAC,MAAM,CAAC,MAAG;IACpG,OAAOE,SAAS;EAClB,CAAC;EAAA;AAAA;AAAA,SAEcC,uBAAuB;EAAA;AAAA;AAStC;AACA;AACA;AACA;AAHA;EAAA,6CATA,aAA0D;IACxD,IAAIC,aAAa,aAAMC,KAAK,CAACC,WAAW,EAAE,YAAS;IACnD,IAAID,KAAK,CAACE,0BAA0B,EAAE,EAAE;MACtC,IAAMC,IAAI,GAAG,OAAO,IAAAC,oCAAiB,EAACJ,KAAK,CAACK,mBAAmB,EAAE,CAAC,EAAEF,IAAI;MACxEJ,aAAa,aAAMI,IAAI,eAAKH,KAAK,CAACK,mBAAmB,EAAE,wBAAqB;IAC9E;IACA,OAAON,aAAa;EACtB,CAAC;EAAA;AAAA;AAAA,SAMqBO,OAAO;EAAA;AAAA;AAAA;EAAA,6BAAtB,aAAgD;IACrD,IAAMxB,IAAkB;MACtByB,IAAI,EAAEP,KAAK,CAACQ,OAAO,EAAE;MACrBX,SAAS,QAAQH,YAAY,EAAE;MAC/Be,oBAAoB,QAAQX,uBAAuB,EAAE;MACrDY,cAAc,EAAEV,KAAK,CAACW,iBAAiB,EAAE;MACzCC,UAAU,EAAEZ,KAAK,CAACa,aAAa,EAAE;MACjCC,YAAY,EAAEd,KAAK,CAACe,cAAc;IAAE,GAEhCf,KAAK,CAACgB,cAAc,EAAE,IAAI;MAAEC,WAAW,EAAEjB,KAAK,CAACgB,cAAc;IAAG,CAAC,GAEjEhB,KAAK,CAACW,iBAAiB,EAAE,KAAKO,YAAY,CAACC,yBAAyB,WAC/DtC,YAAY,EAAE,CAAC,CACzB;IACD,OAAOC,IAAI;EACb,CAAC;EAAA;AAAA"}
|
|
1
|
+
{"version":3,"file":"InfoOps.js","names":["getCloudInfo","info","getEnvInfo","message_box_html","message_box_title","message_variant","warning_message_html","placeholder_management_migration_date","error","printMessage","response","data","message","getAmVersion","versionObj","getServerVersionInfo","amVersion","getAuthenticatedSubject","subjectString","state","getUsername","getUseBearerTokenForAmApis","name","getServiceAccount","getServiceAccountId","getInfo","host","getHost","authenticatedSubject","deploymentType","getDeploymentType","cookieName","getCookieName","sessionToken","getCookieValue","getBearerToken","bearerToken","globalConfig","CLOUD_DEPLOYMENT_TYPE_KEY"],"sources":["ops/InfoOps.ts"],"sourcesContent":["import { getEnvInfo } from '../api/cloud/EnvInfoApi';\nimport * as state from '../shared/State';\nimport { EnvInfoInterface } from '../api/cloud/EnvInfoApi';\nimport * as globalConfig from '../storage/StaticStorage';\nimport { getServerVersionInfo } from '../api/ServerInfoApi';\nimport { printMessage } from './utils/Console';\nimport { getServiceAccount } from './cloud/ServiceAccountOps';\n\nexport interface PlatformInfoInterface {\n host: string;\n authenticatedSubject: string;\n amVersion: string;\n cookieName: string;\n sessionToken: string;\n bearerToken?: string;\n deploymentType: string;\n}\n\nexport type PlatformInfo = PlatformInfoInterface & Partial<EnvInfoInterface>;\n\nasync function getCloudInfo(): Promise<Partial<EnvInfoInterface>> {\n let info: Partial<EnvInfoInterface> = {};\n try {\n info = await getEnvInfo();\n delete info.message_box_html;\n delete info.message_box_title;\n delete info.message_variant;\n delete info.warning_message_html;\n if (!info.placeholder_management_migration_date)\n delete info.placeholder_management_migration_date;\n } catch (error) {\n printMessage(error.response?.data, 'error');\n printMessage(`Error getting env info: ${error.message}`, 'error');\n }\n return info;\n}\n\nasync function getAmVersion(): Promise<string> {\n const versionObj = await getServerVersionInfo();\n const amVersion = `${versionObj['version']} Build ${versionObj['revision']} (${versionObj['date']})`;\n return amVersion;\n}\n\nasync function getAuthenticatedSubject(): Promise<string> {\n let subjectString = `${state.getUsername()} (User)`;\n if (state.getUseBearerTokenForAmApis()) {\n const name = (await getServiceAccount(state.getServiceAccountId())).name;\n subjectString = `${name} [${state.getServiceAccountId()}] (Service Account)`;\n }\n return subjectString;\n}\n\n/**\n * Get info about the platform instance\n * @returns {Promise<PlatformInfo>} a promise that resolves to a json blob with information about the instance and tokens\n */\nexport async function getInfo(): Promise<PlatformInfo> {\n const info: PlatformInfo = {\n host: state.getHost(),\n amVersion: await getAmVersion(),\n authenticatedSubject: await getAuthenticatedSubject(),\n deploymentType: state.getDeploymentType(),\n cookieName: state.getCookieName(),\n sessionToken: state.getCookieValue(),\n // only add bearerToken if we have it\n ...(state.getBearerToken() && { bearerToken: state.getBearerToken() }),\n // only add cloud env info if deployment type is cloud\n ...(state.getDeploymentType() === globalConfig.CLOUD_DEPLOYMENT_TYPE_KEY &&\n (await getCloudInfo())),\n };\n return info;\n}\n"],"mappings":";;;;;;AAAA;AACA;AAEA;AACA;AACA;AACA;AAA8D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAc/CA,YAAY;EAAA;AAAA;AAAA;EAAA,kCAA3B,aAAkE;IAChE,IAAIC,IAA+B,GAAG,CAAC,CAAC;IACxC,IAAI;MACFA,IAAI,SAAS,IAAAC,sBAAU,GAAE;MACzB,OAAOD,IAAI,CAACE,gBAAgB;MAC5B,OAAOF,IAAI,CAACG,iBAAiB;MAC7B,OAAOH,IAAI,CAACI,eAAe;MAC3B,OAAOJ,IAAI,CAACK,oBAAoB;MAChC,IAAI,CAACL,IAAI,CAACM,qCAAqC,EAC7C,OAAON,IAAI,CAACM,qCAAqC;IACrD,CAAC,CAAC,OAAOC,KAAK,EAAE;MAAA;MACd,IAAAC,qBAAY,qBAACD,KAAK,CAACE,QAAQ,oDAAd,gBAAgBC,IAAI,EAAE,OAAO,CAAC;MAC3C,IAAAF,qBAAY,oCAA4BD,KAAK,CAACI,OAAO,GAAI,OAAO,CAAC;IACnE;IACA,OAAOX,IAAI;EACb,CAAC;EAAA;AAAA;AAAA,SAEcY,YAAY;EAAA;AAAA;AAAA;EAAA,kCAA3B,aAA+C;IAC7C,IAAMC,UAAU,SAAS,IAAAC,mCAAoB,GAAE;IAC/C,IAAMC,SAAS,aAAMF,UAAU,CAAC,SAAS,CAAC,oBAAUA,UAAU,CAAC,UAAU,CAAC,eAAKA,UAAU,CAAC,MAAM,CAAC,MAAG;IACpG,OAAOE,SAAS;EAClB,CAAC;EAAA;AAAA;AAAA,SAEcC,uBAAuB;EAAA;AAAA;AAStC;AACA;AACA;AACA;AAHA;EAAA,6CATA,aAA0D;IACxD,IAAIC,aAAa,aAAMC,KAAK,CAACC,WAAW,EAAE,YAAS;IACnD,IAAID,KAAK,CAACE,0BAA0B,EAAE,EAAE;MACtC,IAAMC,IAAI,GAAG,OAAO,IAAAC,oCAAiB,EAACJ,KAAK,CAACK,mBAAmB,EAAE,CAAC,EAAEF,IAAI;MACxEJ,aAAa,aAAMI,IAAI,eAAKH,KAAK,CAACK,mBAAmB,EAAE,wBAAqB;IAC9E;IACA,OAAON,aAAa;EACtB,CAAC;EAAA;AAAA;AAAA,SAMqBO,OAAO;EAAA;AAAA;AAAA;EAAA,6BAAtB,aAAgD;IACrD,IAAMxB,IAAkB;MACtByB,IAAI,EAAEP,KAAK,CAACQ,OAAO,EAAE;MACrBX,SAAS,QAAQH,YAAY,EAAE;MAC/Be,oBAAoB,QAAQX,uBAAuB,EAAE;MACrDY,cAAc,EAAEV,KAAK,CAACW,iBAAiB,EAAE;MACzCC,UAAU,EAAEZ,KAAK,CAACa,aAAa,EAAE;MACjCC,YAAY,EAAEd,KAAK,CAACe,cAAc;IAAE,GAEhCf,KAAK,CAACgB,cAAc,EAAE,IAAI;MAAEC,WAAW,EAAEjB,KAAK,CAACgB,cAAc;IAAG,CAAC,GAEjEhB,KAAK,CAACW,iBAAiB,EAAE,KAAKO,YAAY,CAACC,yBAAyB,WAC/DtC,YAAY,EAAE,CAAC,CACzB;IACD,OAAOC,IAAI;EACb,CAAC;EAAA;AAAA"}
|
package/cjs/ops/JourneyOps.js
CHANGED
|
@@ -583,7 +583,7 @@ function _importJourney() {
|
|
|
583
583
|
// Process saml providers
|
|
584
584
|
if (deps && treeObject.saml2Entities && Object.entries(treeObject.saml2Entities).length > 0) {
|
|
585
585
|
if (verbose) (0, _Console.printMessage)(' - SAML2 entity providers:');
|
|
586
|
-
var _loop = function* _loop(
|
|
586
|
+
var _loop = function* _loop() {
|
|
587
587
|
delete _providerData['_rev'];
|
|
588
588
|
var entityId = _providerData['entityId'];
|
|
589
589
|
var entityLocation = _providerData['entityLocation'];
|
|
@@ -614,7 +614,7 @@ function _importJourney() {
|
|
|
614
614
|
}
|
|
615
615
|
};
|
|
616
616
|
for (var [, _providerData] of Object.entries(treeObject.saml2Entities)) {
|
|
617
|
-
yield* _loop(
|
|
617
|
+
yield* _loop();
|
|
618
618
|
}
|
|
619
619
|
}
|
|
620
620
|
|
|
@@ -1279,7 +1279,7 @@ function _deleteJourney() {
|
|
|
1279
1279
|
// eslint-disable-next-line no-await-in-loop
|
|
1280
1280
|
var containerNode = yield (0, _NodeApi.getNode)(nodeId, nodeObject['nodeType']);
|
|
1281
1281
|
if (verbose) (0, _Console.printMessage)("Read ".concat(nodeId, " (").concat(nodeObject['nodeType'], ") from ").concat(journeyId), 'info');
|
|
1282
|
-
var _loop3 = function _loop3(innerNodeObject) {
|
|
1282
|
+
var _loop3 = function* _loop3(innerNodeObject) {
|
|
1283
1283
|
nodePromises.push((0, _NodeApi.deleteNode)(innerNodeObject._id, innerNodeObject.nodeType).then(response2 => {
|
|
1284
1284
|
status.nodes[innerNodeObject._id] = {
|
|
1285
1285
|
status: 'success'
|
|
@@ -1295,7 +1295,7 @@ function _deleteJourney() {
|
|
|
1295
1295
|
}));
|
|
1296
1296
|
};
|
|
1297
1297
|
for (var innerNodeObject of containerNode.nodes) {
|
|
1298
|
-
_loop3(innerNodeObject);
|
|
1298
|
+
yield* _loop3(innerNodeObject);
|
|
1299
1299
|
}
|
|
1300
1300
|
// finally delete the container node
|
|
1301
1301
|
nodePromises.push((0, _NodeApi.deleteNode)(containerNode._id, containerNode['_type']['_id']).then(response2 => {
|