@webex/webex-core 1.159.3 → 1.159.6
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/dist/config.js.map +1 -1
- package/dist/credentials-config.js.map +1 -1
- package/dist/index.js +88 -88
- package/dist/index.js.map +1 -1
- package/dist/interceptors/auth.js.map +1 -1
- package/dist/interceptors/default-options.js.map +1 -1
- package/dist/interceptors/embargo.js.map +1 -1
- package/dist/interceptors/network-timing.js.map +1 -1
- package/dist/interceptors/payload-transformer.js.map +1 -1
- package/dist/interceptors/rate-limit.js.map +1 -1
- package/dist/interceptors/redirect.js.map +1 -1
- package/dist/interceptors/request-event.js.map +1 -1
- package/dist/interceptors/request-logger.js.map +1 -1
- package/dist/interceptors/request-timing.js.map +1 -1
- package/dist/interceptors/response-logger.js.map +1 -1
- package/dist/interceptors/user-agent.js.map +1 -1
- package/dist/interceptors/webex-tracking-id.js.map +1 -1
- package/dist/interceptors/webex-user-agent.js.map +1 -1
- package/dist/lib/batcher.js +1 -1
- package/dist/lib/batcher.js.map +1 -1
- package/dist/lib/credentials/credentials.js +1 -1
- package/dist/lib/credentials/credentials.js.map +1 -1
- package/dist/lib/credentials/grant-errors.js +6 -6
- package/dist/lib/credentials/grant-errors.js.map +1 -1
- package/dist/lib/credentials/index.js +8 -8
- package/dist/lib/credentials/index.js.map +1 -1
- package/dist/lib/credentials/scope.js +1 -1
- package/dist/lib/credentials/scope.js.map +1 -1
- package/dist/lib/credentials/token-collection.js.map +1 -1
- package/dist/lib/credentials/token.js +1 -1
- package/dist/lib/credentials/token.js.map +1 -1
- package/dist/lib/page.js.map +1 -1
- package/dist/lib/services/constants.js +1 -1
- package/dist/lib/services/constants.js.map +1 -1
- package/dist/lib/services/index.js +12 -12
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/interceptors/server-error.js.map +1 -1
- package/dist/lib/services/interceptors/service.js +1 -1
- package/dist/lib/services/interceptors/service.js.map +1 -1
- package/dist/lib/services/metrics.js.map +1 -1
- package/dist/lib/services/service-catalog.js +2 -2
- package/dist/lib/services/service-catalog.js.map +1 -1
- package/dist/lib/services/service-fed-ramp.js.map +1 -1
- package/dist/lib/services/service-host.js.map +1 -1
- package/dist/lib/services/service-registry.js +2 -2
- package/dist/lib/services/service-registry.js.map +1 -1
- package/dist/lib/services/service-state.js.map +1 -1
- package/dist/lib/services/service-url.js.map +1 -1
- package/dist/lib/services/services.js +3 -3
- package/dist/lib/services/services.js.map +1 -1
- package/dist/lib/stateless-webex-plugin.js.map +1 -1
- package/dist/lib/storage/decorators.js.map +1 -1
- package/dist/lib/storage/errors.js +5 -3
- package/dist/lib/storage/errors.js.map +1 -1
- package/dist/lib/storage/index.js +12 -12
- package/dist/lib/storage/index.js.map +1 -1
- package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
- package/dist/lib/storage/make-webex-store.js.map +1 -1
- package/dist/lib/storage/memory-store-adapter.js.map +1 -1
- package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
- package/dist/lib/webex-http-error.js +1 -1
- package/dist/lib/webex-http-error.js.map +1 -1
- package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
- package/dist/lib/webex-plugin.js.map +1 -1
- package/dist/plugins/logger.js +1 -1
- package/dist/plugins/logger.js.map +1 -1
- package/dist/webex-core.js +6 -6
- package/dist/webex-core.js.map +1 -1
- package/dist/webex-internal-core.js.map +1 -1
- package/package.json +5 -5
- package/src/lib/services/interceptors/service.js +1 -1
- package/src/lib/stateless-webex-plugin.js +1 -1
|
@@ -15,31 +15,31 @@ _Object$defineProperty(exports, "Credentials", {
|
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
17
|
|
|
18
|
-
_Object$defineProperty(exports, "
|
|
18
|
+
_Object$defineProperty(exports, "Token", {
|
|
19
19
|
enumerable: true,
|
|
20
20
|
get: function get() {
|
|
21
|
-
return
|
|
21
|
+
return _token.default;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
24
|
|
|
25
|
-
_Object$defineProperty(exports, "
|
|
25
|
+
_Object$defineProperty(exports, "filterScope", {
|
|
26
26
|
enumerable: true,
|
|
27
27
|
get: function get() {
|
|
28
|
-
return _scope.
|
|
28
|
+
return _scope.filterScope;
|
|
29
29
|
}
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
-
_Object$defineProperty(exports, "
|
|
32
|
+
_Object$defineProperty(exports, "grantErrors", {
|
|
33
33
|
enumerable: true,
|
|
34
34
|
get: function get() {
|
|
35
|
-
return
|
|
35
|
+
return _grantErrors.default;
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
|
|
39
|
-
_Object$defineProperty(exports, "
|
|
39
|
+
_Object$defineProperty(exports, "sortScope", {
|
|
40
40
|
enumerable: true,
|
|
41
41
|
get: function get() {
|
|
42
|
-
return
|
|
42
|
+
return _scope.sortScope;
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["Credentials","proxies"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {registerPlugin} from '../../webex-core';\n\nimport Credentials from './credentials';\n\nregisterPlugin('credentials', Credentials, {\n proxies: [\n 'canAuthorize',\n 'canRefresh'\n ]\n});\n\nexport {default as Credentials} from './credentials';\nexport {filterScope, sortScope} from './scope';\nexport {default as Token} from './token';\nexport {default as grantErrors} from './grant-errors';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;AAEA;;AAUA;;AACA;;AACA;;AAlBA;AACA;AACA;AAMA,+BAAe,aAAf,EAA8BA,oBAA9B,EAA2C;EACzCC,OAAO,EAAE,CACP,cADO,EAEP,YAFO;AADgC,CAA3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["sortScope","scope","split","sort","join","filterScope","toFilter","filter","item"],"sources":["scope.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/**\n * sorts a list of scopes\n * @param {string} scope\n * @returns {string}\n */\nexport function sortScope(scope) {\n if (!scope) {\n return '';\n }\n\n return scope\n .split(' ')\n .sort()\n .join(' ');\n}\n\n/**\n * sorts a list of scopes and filters the specified scope\n * @param {string} toFilter\n * @param {string} scope\n * @returns {string}\n */\nexport function filterScope(toFilter, scope) {\n if (!scope) {\n return '';\n }\n\n return scope\n .split(' ')\n .filter((item) => item !== toFilter)\n .sort()\n .join(' ');\n}\n"],"mappings":";;;;;;;;;;;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASA,SAAT,CAAmBC,KAAnB,EAA0B;EAC/B,IAAI,CAACA,KAAL,EAAY;IACV,OAAO,EAAP;EACD;;EAED,OAAOA,KAAK,CACTC,KADI,CACE,GADF,EAEJC,IAFI,GAGJC,IAHI,CAGC,GAHD,CAAP;AAID;AAED;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,WAAT,CAAqBC,QAArB,EAA+BL,KAA/B,EAAsC;EAC3C,IAAI,CAACA,KAAL,EAAY;IACV,OAAO,EAAP;EACD;;EAED,OAAOA,KAAK,CACTC,KADI,CACE,GADF,EAEJK,MAFI,CAEG,UAACC,IAAD;IAAA,OAAUA,IAAI,KAAKF,QAAnB;EAAA,CAFH,EAGJH,IAHI,GAIJC,IAJI,CAIC,GAJD,CAAP;AAKD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["TokenCollection","AmpCollection","extend","mainIndex","model","Token","namespace"],"sources":["token-collection.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport AmpCollection from 'ampersand-collection';\n\nimport Token from './token';\n\nconst TokenCollection = AmpCollection.extend({\n mainIndex: 'scope',\n\n model: Token,\n\n namespace: 'Credentials'\n});\n\nexport default TokenCollection;\n"],"mappings":";;;;;;;;;;;;AAIA;;AAEA;;AANA;AACA;AACA;AAMA,IAAMA,eAAe,GAAGC,6BAAcC,MAAd,CAAqB;EAC3CC,SAAS,EAAE,OADgC;EAG3CC,KAAK,EAAEC,cAHoC;EAK3CC,SAAS,EAAE;AALgC,CAArB,CAAxB;;eAQeN,e"}
|
|
@@ -605,7 +605,7 @@ var Token = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
605
605
|
return res.body;
|
|
606
606
|
});
|
|
607
607
|
},
|
|
608
|
-
version: "1.159.
|
|
608
|
+
version: "1.159.6"
|
|
609
609
|
}, ((0, _applyDecoratedDescriptor2.default)(_obj, "downscope", [_dec], (0, _getOwnPropertyDescriptor.default)(_obj, "downscope"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "refresh", [_common.oneFlight], (0, _getOwnPropertyDescriptor.default)(_obj, "refresh"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "revoke", [_common.oneFlight], (0, _getOwnPropertyDescriptor.default)(_obj, "revoke"), _obj)), _obj)));
|
|
610
610
|
|
|
611
611
|
var _default = Token;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["token.js"],"names":["processGrantError","res","statusCode","reject","ErrorConstructor","grantErrors","select","body","error","OAuthError","WebexHttpError","_res","Token","WebexPlugin","extend","keyFactory","scope","derived","canAuthorize","deps","fn","access_token","isExpired","canDownscope","config","client_id","canRefresh","inBrowser","refresh_token","refreshCallback","client_secret","expires","_isExpired","_string","token_type","namespace","props","expires_in","refresh_token_expires","refresh_token_expires_in","default","type","session","previousToken","downscope","logger","info","Error","trace","webex","request","method","uri","tokenUrl","addAuthHeader","form","grant_type","token","self_contained_token","then","parent","initialize","attrs","options","prototype","refresh","promise","resolve","redirect_uri","auth","user","pass","sendImmediately","shouldRefreshAccessToken","obj","process","env","NODE_ENV","revoke","unset","catch","revokeUrl","token_type_hint","set","_filterSetParameters","includes","split","now","toString","validate","service","resource","reason","convApi","CONVERSATION_SERVICE","CONVERSATION_SERVICE_URL","headers","authorization","oneFlight"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {pick} from 'lodash';\nimport {inBrowser, oneFlight} from '@webex/common';\nimport {safeSetTimeout} from '@webex/common-timers';\n\nimport WebexHttpError from '../webex-http-error';\nimport WebexPlugin from '../webex-plugin';\n\nimport {sortScope} from './scope';\nimport grantErrors, {OAuthError} from './grant-errors';\n\n/* eslint-disable camelcase */\n\n/**\n * Parse response from CI and converts to structured error when appropriate\n * @param {WebexHttpError} res\n * @private\n * @returns {GrantError}\n */\nfunction processGrantError(res) {\n if (res.statusCode !== 400) {\n return Promise.reject(res);\n }\n\n const ErrorConstructor = grantErrors.select(res.body.error);\n\n if (ErrorConstructor === OAuthError && res instanceof WebexHttpError) {\n return Promise.reject(res);\n }\n if (!ErrorConstructor) {\n return Promise.reject(res);\n }\n\n return Promise.reject(new ErrorConstructor(res._res || res));\n}\n\n/**\n * @class\n */\nconst Token = WebexPlugin.extend({\n derived: {\n /**\n * Indicates if this token can be used in an auth header. `true` iff\n * {@link Token#access_token} is defined and {@link Token#isExpired} is\n * false.\n * @instance\n * @memberof Token\n * @readonly\n * @type {boolean}\n */\n canAuthorize: {\n deps: ['access_token', 'isExpired'],\n fn() {\n return !!this.access_token && !this.isExpired;\n }\n },\n\n /**\n * Indicates that this token can be downscoped. `true` iff\n * {@link config.credentials.client_id} is defined and if\n * {@link Token#canAuthorize} is true\n *\n * Note: since {@link config} is not evented, we can't listen for changes to\n * {@link config.credentials.client_id}. As such,\n * {@link config.credentials.client_id} must always be set before\n * instantiating a {@link Token}\n * @instance\n * @memberof Token\n * @readonly\n * @type {boolean}\n */\n canDownscope: {\n deps: ['canAuthorize'],\n fn() {\n return this.canAuthorize && !!this.config.client_id;\n }\n },\n\n /**\n * Indicates if this token can be refreshed. `true` iff\n * {@link Token@refresh_token} is defined and\n * {@link config.credentials.refreshCallback()} is defined\n *\n * Note: since {@link config} is not evented, we can't listen for changes to\n * {@link config.credentials.refreshCallback()}. As such,\n * {@link config.credentials.refreshCallback()} must always be set before\n * instantiating a {@link Token}\n * @instance\n * @memberof Token\n * @readonly\n * @type {boolean}\n */\n canRefresh: {\n deps: ['refresh_token'],\n fn() {\n if (inBrowser) {\n return !!this.refresh_token && !!this.config.refreshCallback;\n }\n\n return !!this.refresh_token && !!this.config.client_secret;\n }\n },\n\n /**\n * Indicates if this `Token` is expired. `true` iff {@link Token#expires} is\n * defined and is less than {@link Date.now()}.\n * @instance\n * @memberof Token\n * @readonly\n * @type {boolean}\n */\n isExpired: {\n deps: ['expires', '_isExpired'],\n fn() {\n // in order to avoid setting `cache:false`, we'll use a private property\n // and a timer rather than comparing to `Date.now()`;\n return !!this.expires && this._isExpired;\n }\n },\n\n /**\n * Cache for toString()\n * @instance\n * @memberof Token\n * @private\n * @readonly\n * @type {string}\n */\n _string: {\n deps: ['access_token', 'token_type'],\n fn() {\n if (!this.access_token || !this.token_type) {\n return '';\n }\n\n return `${this.token_type} ${this.access_token}`;\n }\n }\n },\n\n namespace: 'Credentials',\n\n props: {\n /**\n * Used for indexing in the credentials userTokens collection\n * @instance\n * @memberof Token\n * @private\n * @type {string}\n */\n scope: 'string',\n /**\n * @instance\n * @memberof Token\n * @type {string}\n */\n access_token: 'string',\n /**\n * @instance\n * @memberof Token\n * @type {number}\n */\n expires: 'number',\n /**\n * @instance\n * @memberof Token\n * @type {number}\n */\n expires_in: 'number',\n /**\n * @instance\n * @memberof Token\n * @type {string}\n */\n refresh_token: 'string',\n /**\n * @instance\n * @memberof Token\n * @type {number}\n */\n refresh_token_expires: 'number',\n /**\n * @instance\n * @memberof Token\n * @type {number}\n */\n refresh_token_expires_in: 'number',\n /**\n * @default \"Bearer\"\n * @instance\n * @memberof Token\n * @type {string}\n */\n token_type: {\n default: 'Bearer',\n type: 'string'\n }\n },\n\n session: {\n /**\n * Used by {@link Token#isExpired} to avoid doing a Date comparison.\n * @instance\n * @memberof Token\n * @private\n * @type {boolean}\n */\n _isExpired: {\n default: false,\n type: 'boolean'\n },\n /**\n * Handle to the previous token that we'll revoke when we refresh this\n * token. The idea is to keep allow two valid tokens when a refresh occurs;\n * we don't want revoke a token that's in the middle of being used, so when\n * we do a token refresh, we won't revoke the token being refreshed, but\n * we'll revoke the previous one.\n * @instance\n * @memberof Token\n * @private\n * @type {Object}\n */\n previousToken: {\n type: 'state'\n }\n },\n\n @oneFlight({\n keyFactory(scope) {\n return scope;\n }\n })\n /**\n * Uses this token to request a new Token with a subset of this Token's scopes\n * @instance\n * @memberof Token\n * @param {string} scope\n * @returns {Promise<Token>}\n */\n downscope(scope) {\n this.logger.info(`token: downscoping token to ${scope}`);\n\n if (this.isExpired) {\n this.logger.info('token: request received to downscope expired access_token');\n\n return Promise.reject(new Error('cannot downscope expired access token'));\n }\n\n if (!this.canDownscope) {\n if (this.config.client_id) {\n this.logger.info('token: request received to downscope invalid access_token');\n }\n else {\n this.logger.trace('token: cannot downscope without client_id');\n }\n\n return Promise.reject(new Error('cannot downscope access token'));\n }\n\n // Since we're going to use scope as the index in our token collection, it's\n // important scopes are always deterministically specified.\n if (scope) {\n scope = sortScope(scope);\n }\n\n // Ideally, we could depend on the service to communicate this error, but\n // all we get is \"invalid scope\", which, to the lay person, implies\n // something wrong with *one* of the scopes, not the whole thing.\n if (scope === sortScope(this.config.scope)) {\n return Promise.reject(new Error('token: scope reduction requires a reduced scope'));\n }\n\n return this.webex.request({\n method: 'POST',\n uri: this.config.tokenUrl,\n addAuthHeader: false,\n form: {\n grant_type: 'urn:cisco:oauth:grant-type:scope-reduction',\n token: this.access_token,\n scope,\n client_id: this.config.client_id,\n self_contained_token: true\n }\n })\n .then((res) => {\n this.logger.info(`token: downscoped token to ${scope}`);\n\n return new Token(Object.assign(res.body, {scope}), {parent: this.parent});\n });\n },\n\n /**\n * Initializer\n * @instance\n * @memberof Token\n * @param {Object} [attrs={}]\n * @param {Object} [options={}]\n * @see {@link WebexPlugin#initialize()}\n * @returns {Token}\n */\n initialize(attrs = {}, options = {}) {\n Reflect.apply(WebexPlugin.prototype.initialize, this, [attrs, options]);\n\n if (typeof attrs === 'string') {\n this.access_token = attrs;\n }\n\n if (!this.access_token) {\n throw new Error('`access_token` is required');\n }\n\n // We don't want the derived property `isExpired` to need {cache:false}, so\n // we'll set up a timer the runs when this token should expire.\n if (this.expires) {\n if (this.expires < Date.now()) {\n this._isExpired = true;\n }\n else {\n safeSetTimeout(() => {\n this._isExpired = true;\n }, this.expires - Date.now());\n }\n }\n },\n\n @oneFlight\n /**\n * Refreshes this Token. Relies on\n * {@link config.credentials.refreshCallback()}\n * @instance\n * @memberof Token\n * @returns {Promise<Token>}\n */\n refresh() {\n if (!this.canRefresh) {\n throw new Error('Not enough information available to refresh this access token');\n }\n\n let promise;\n\n if (inBrowser) {\n if (!this.config.refreshCallback) {\n throw new Error('Cannot refresh access token without refreshCallback');\n }\n\n promise = Promise.resolve(this.config.refreshCallback(this.webex, this));\n }\n\n return (promise || this.webex.request({\n method: 'POST',\n uri: this.config.tokenUrl,\n form: {\n grant_type: 'refresh_token',\n redirect_uri: this.config.redirect_uri,\n refresh_token: this.refresh_token\n },\n auth: {\n user: this.config.client_id,\n pass: this.config.client_secret,\n sendImmediately: true\n },\n shouldRefreshAccessToken: false\n })\n .then((res) => res.body))\n .then((obj) => {\n if (!obj) {\n throw new Error('token: refreshCallback() did not produce an object');\n }\n // If the authentication server did not send back a refresh token, copy\n // the current refresh token and related values to the response (note:\n // at time of implementation, CI never sends a new refresh token)\n if (!obj.refresh_token) {\n Object.assign(obj, pick(this, 'refresh_token', 'refresh_token_expires', 'refresh_token_expires_in'));\n }\n\n // If the new token is the same as the previous token, then we may have\n // found a bug in CI; log the details and reject the Promise\n if (this.access_token === obj.access_token) {\n this.logger.error('token: new token matches current token');\n // log the tokens if it is not production\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error('token: current token:', this.access_token);\n this.logger.error('token: new token:', obj.access_token);\n }\n\n return Promise.reject(new Error('new token matches current token'));\n }\n\n if (this.previousToken) {\n this.previousToken.revoke();\n this.unset('previousToken');\n }\n\n obj.previousToken = this;\n obj.scope = this.scope;\n\n return new Token(obj, {parent: this.parent});\n })\n .catch(processGrantError);\n },\n\n @oneFlight\n /**\n * Revokes this token and unsets its local properties\n * @instance\n * @memberof Token\n * @returns {Promise}\n */\n revoke() {\n if (this.isExpired) {\n this.logger.info('token: already expired, not making making revocation request');\n\n return Promise.resolve();\n }\n\n if (!this.canAuthorize) {\n this.logger.info('token: no longer valid, not making revocation request');\n\n return Promise.resolve();\n }\n\n // FIXME we need to use the user token revocation endpoint to revoke a token\n // without a client_secret, but it doesn't current support using a token to\n // revoke itself\n // Note: I'm not making a canRevoke property because there should be changes\n // coming to the user token revocation endpoint that allow us to do this\n // correctly.\n if (!this.config.client_secret) {\n this.logger.info('token: no client secret available, not making revocation request');\n\n return Promise.resolve();\n }\n\n this.logger.info('token: revoking access token');\n\n return this.webex.request({\n method: 'POST',\n uri: this.config.revokeUrl,\n form: {\n token: this.access_token,\n token_type_hint: 'access_token'\n },\n auth: {\n user: this.config.client_id,\n pass: this.config.client_secret,\n sendImmediately: true\n },\n shouldRefreshAccessToken: false\n })\n .then(() => {\n this.unset([\n 'access_token',\n 'expires',\n 'expires_in',\n 'token_type'\n ]);\n this.logger.info('token: access token revoked');\n })\n .catch(processGrantError);\n },\n\n set(...args) {\n // eslint-disable-next-line prefer-const\n let [attrs, options] = this._filterSetParameters(...args);\n\n if (!attrs.token_type && attrs.access_token && attrs.access_token.includes(' ')) {\n const [token_type, access_token] = attrs.access_token.split(' ');\n\n attrs = Object.assign({}, attrs, {access_token, token_type});\n }\n const now = Date.now();\n\n if (!attrs.expires && attrs.expires_in) {\n attrs.expires = now + attrs.expires_in * 1000;\n }\n\n if (!attrs.refresh_token_expires && attrs.refresh_token_expires_in) {\n attrs.refresh_token_expires = now + attrs.refresh_token_expires_in * 1000;\n }\n\n if (attrs.scope) {\n attrs.scope = sortScope(attrs.scope);\n }\n\n return Reflect.apply(WebexPlugin.prototype.set, this, [attrs, options]);\n },\n\n /**\n * Renders the token object as an HTTP Header Value\n * @instance\n * @memberof Token\n * @returns {string}\n * @see {@link Object#toString()}\n */\n toString() {\n if (!this._string) {\n throw new Error('cannot stringify Token');\n }\n\n return this._string;\n },\n\n /**\n * Uses a non-producation api to return information about this token. This\n * method is primarily for tests and will throw if NODE_ENV === production\n * @instance\n * @memberof Token\n * @private\n * @returns {Promise}\n */\n validate() {\n if (process.env.NODE_ENV === 'production') {\n throw new Error('Token#validate() must not be used in production');\n }\n\n return this.webex.request({\n method: 'POST',\n service: 'conversation',\n resource: 'users/validateAuthToken',\n body: {\n token: this.access_token\n }\n })\n .catch((reason) => {\n if ('statusCode' in reason) {\n return Promise.reject(reason);\n }\n this.logger.info('REMINDER: If you\\'re investigating a network error here, it\\'s normal');\n\n // If we got an error that isn't a WebexHttpError, assume the problem is\n // that we don't have the wdm plugin loaded and service/resource isn't\n // a valid means of identifying a request.\n const convApi = process.env.CONVERSATION_SERVICE || process.env.CONVERSATION_SERVICE_URL || 'https://conv-a.wbx2.com/conversation/api/v1';\n\n return this.webex.request({\n method: 'POST',\n uri: `${convApi}/users/validateAuthToken`,\n body: {\n token: this.access_token\n },\n headers: {\n authorization: `Bearer ${this.access_token}`\n }\n });\n })\n .then((res) => res.body);\n }\n});\n\nexport default Token;\n"]}
|
|
1
|
+
{"version":3,"names":["processGrantError","res","statusCode","reject","ErrorConstructor","grantErrors","select","body","error","OAuthError","WebexHttpError","_res","Token","WebexPlugin","extend","keyFactory","scope","derived","canAuthorize","deps","fn","access_token","isExpired","canDownscope","config","client_id","canRefresh","inBrowser","refresh_token","refreshCallback","client_secret","expires","_isExpired","_string","token_type","namespace","props","expires_in","refresh_token_expires","refresh_token_expires_in","default","type","session","previousToken","downscope","logger","info","Error","trace","webex","request","method","uri","tokenUrl","addAuthHeader","form","grant_type","token","self_contained_token","then","parent","initialize","attrs","options","prototype","refresh","promise","resolve","redirect_uri","auth","user","pass","sendImmediately","shouldRefreshAccessToken","obj","process","env","NODE_ENV","revoke","unset","catch","revokeUrl","token_type_hint","set","_filterSetParameters","includes","split","now","toString","validate","service","resource","reason","convApi","CONVERSATION_SERVICE","CONVERSATION_SERVICE_URL","headers","authorization","oneFlight"],"sources":["token.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {pick} from 'lodash';\nimport {inBrowser, oneFlight} from '@webex/common';\nimport {safeSetTimeout} from '@webex/common-timers';\n\nimport WebexHttpError from '../webex-http-error';\nimport WebexPlugin from '../webex-plugin';\n\nimport {sortScope} from './scope';\nimport grantErrors, {OAuthError} from './grant-errors';\n\n/* eslint-disable camelcase */\n\n/**\n * Parse response from CI and converts to structured error when appropriate\n * @param {WebexHttpError} res\n * @private\n * @returns {GrantError}\n */\nfunction processGrantError(res) {\n if (res.statusCode !== 400) {\n return Promise.reject(res);\n }\n\n const ErrorConstructor = grantErrors.select(res.body.error);\n\n if (ErrorConstructor === OAuthError && res instanceof WebexHttpError) {\n return Promise.reject(res);\n }\n if (!ErrorConstructor) {\n return Promise.reject(res);\n }\n\n return Promise.reject(new ErrorConstructor(res._res || res));\n}\n\n/**\n * @class\n */\nconst Token = WebexPlugin.extend({\n derived: {\n /**\n * Indicates if this token can be used in an auth header. `true` iff\n * {@link Token#access_token} is defined and {@link Token#isExpired} is\n * false.\n * @instance\n * @memberof Token\n * @readonly\n * @type {boolean}\n */\n canAuthorize: {\n deps: ['access_token', 'isExpired'],\n fn() {\n return !!this.access_token && !this.isExpired;\n }\n },\n\n /**\n * Indicates that this token can be downscoped. `true` iff\n * {@link config.credentials.client_id} is defined and if\n * {@link Token#canAuthorize} is true\n *\n * Note: since {@link config} is not evented, we can't listen for changes to\n * {@link config.credentials.client_id}. As such,\n * {@link config.credentials.client_id} must always be set before\n * instantiating a {@link Token}\n * @instance\n * @memberof Token\n * @readonly\n * @type {boolean}\n */\n canDownscope: {\n deps: ['canAuthorize'],\n fn() {\n return this.canAuthorize && !!this.config.client_id;\n }\n },\n\n /**\n * Indicates if this token can be refreshed. `true` iff\n * {@link Token@refresh_token} is defined and\n * {@link config.credentials.refreshCallback()} is defined\n *\n * Note: since {@link config} is not evented, we can't listen for changes to\n * {@link config.credentials.refreshCallback()}. As such,\n * {@link config.credentials.refreshCallback()} must always be set before\n * instantiating a {@link Token}\n * @instance\n * @memberof Token\n * @readonly\n * @type {boolean}\n */\n canRefresh: {\n deps: ['refresh_token'],\n fn() {\n if (inBrowser) {\n return !!this.refresh_token && !!this.config.refreshCallback;\n }\n\n return !!this.refresh_token && !!this.config.client_secret;\n }\n },\n\n /**\n * Indicates if this `Token` is expired. `true` iff {@link Token#expires} is\n * defined and is less than {@link Date.now()}.\n * @instance\n * @memberof Token\n * @readonly\n * @type {boolean}\n */\n isExpired: {\n deps: ['expires', '_isExpired'],\n fn() {\n // in order to avoid setting `cache:false`, we'll use a private property\n // and a timer rather than comparing to `Date.now()`;\n return !!this.expires && this._isExpired;\n }\n },\n\n /**\n * Cache for toString()\n * @instance\n * @memberof Token\n * @private\n * @readonly\n * @type {string}\n */\n _string: {\n deps: ['access_token', 'token_type'],\n fn() {\n if (!this.access_token || !this.token_type) {\n return '';\n }\n\n return `${this.token_type} ${this.access_token}`;\n }\n }\n },\n\n namespace: 'Credentials',\n\n props: {\n /**\n * Used for indexing in the credentials userTokens collection\n * @instance\n * @memberof Token\n * @private\n * @type {string}\n */\n scope: 'string',\n /**\n * @instance\n * @memberof Token\n * @type {string}\n */\n access_token: 'string',\n /**\n * @instance\n * @memberof Token\n * @type {number}\n */\n expires: 'number',\n /**\n * @instance\n * @memberof Token\n * @type {number}\n */\n expires_in: 'number',\n /**\n * @instance\n * @memberof Token\n * @type {string}\n */\n refresh_token: 'string',\n /**\n * @instance\n * @memberof Token\n * @type {number}\n */\n refresh_token_expires: 'number',\n /**\n * @instance\n * @memberof Token\n * @type {number}\n */\n refresh_token_expires_in: 'number',\n /**\n * @default \"Bearer\"\n * @instance\n * @memberof Token\n * @type {string}\n */\n token_type: {\n default: 'Bearer',\n type: 'string'\n }\n },\n\n session: {\n /**\n * Used by {@link Token#isExpired} to avoid doing a Date comparison.\n * @instance\n * @memberof Token\n * @private\n * @type {boolean}\n */\n _isExpired: {\n default: false,\n type: 'boolean'\n },\n /**\n * Handle to the previous token that we'll revoke when we refresh this\n * token. The idea is to keep allow two valid tokens when a refresh occurs;\n * we don't want revoke a token that's in the middle of being used, so when\n * we do a token refresh, we won't revoke the token being refreshed, but\n * we'll revoke the previous one.\n * @instance\n * @memberof Token\n * @private\n * @type {Object}\n */\n previousToken: {\n type: 'state'\n }\n },\n\n @oneFlight({\n keyFactory(scope) {\n return scope;\n }\n })\n /**\n * Uses this token to request a new Token with a subset of this Token's scopes\n * @instance\n * @memberof Token\n * @param {string} scope\n * @returns {Promise<Token>}\n */\n downscope(scope) {\n this.logger.info(`token: downscoping token to ${scope}`);\n\n if (this.isExpired) {\n this.logger.info('token: request received to downscope expired access_token');\n\n return Promise.reject(new Error('cannot downscope expired access token'));\n }\n\n if (!this.canDownscope) {\n if (this.config.client_id) {\n this.logger.info('token: request received to downscope invalid access_token');\n }\n else {\n this.logger.trace('token: cannot downscope without client_id');\n }\n\n return Promise.reject(new Error('cannot downscope access token'));\n }\n\n // Since we're going to use scope as the index in our token collection, it's\n // important scopes are always deterministically specified.\n if (scope) {\n scope = sortScope(scope);\n }\n\n // Ideally, we could depend on the service to communicate this error, but\n // all we get is \"invalid scope\", which, to the lay person, implies\n // something wrong with *one* of the scopes, not the whole thing.\n if (scope === sortScope(this.config.scope)) {\n return Promise.reject(new Error('token: scope reduction requires a reduced scope'));\n }\n\n return this.webex.request({\n method: 'POST',\n uri: this.config.tokenUrl,\n addAuthHeader: false,\n form: {\n grant_type: 'urn:cisco:oauth:grant-type:scope-reduction',\n token: this.access_token,\n scope,\n client_id: this.config.client_id,\n self_contained_token: true\n }\n })\n .then((res) => {\n this.logger.info(`token: downscoped token to ${scope}`);\n\n return new Token(Object.assign(res.body, {scope}), {parent: this.parent});\n });\n },\n\n /**\n * Initializer\n * @instance\n * @memberof Token\n * @param {Object} [attrs={}]\n * @param {Object} [options={}]\n * @see {@link WebexPlugin#initialize()}\n * @returns {Token}\n */\n initialize(attrs = {}, options = {}) {\n Reflect.apply(WebexPlugin.prototype.initialize, this, [attrs, options]);\n\n if (typeof attrs === 'string') {\n this.access_token = attrs;\n }\n\n if (!this.access_token) {\n throw new Error('`access_token` is required');\n }\n\n // We don't want the derived property `isExpired` to need {cache:false}, so\n // we'll set up a timer the runs when this token should expire.\n if (this.expires) {\n if (this.expires < Date.now()) {\n this._isExpired = true;\n }\n else {\n safeSetTimeout(() => {\n this._isExpired = true;\n }, this.expires - Date.now());\n }\n }\n },\n\n @oneFlight\n /**\n * Refreshes this Token. Relies on\n * {@link config.credentials.refreshCallback()}\n * @instance\n * @memberof Token\n * @returns {Promise<Token>}\n */\n refresh() {\n if (!this.canRefresh) {\n throw new Error('Not enough information available to refresh this access token');\n }\n\n let promise;\n\n if (inBrowser) {\n if (!this.config.refreshCallback) {\n throw new Error('Cannot refresh access token without refreshCallback');\n }\n\n promise = Promise.resolve(this.config.refreshCallback(this.webex, this));\n }\n\n return (promise || this.webex.request({\n method: 'POST',\n uri: this.config.tokenUrl,\n form: {\n grant_type: 'refresh_token',\n redirect_uri: this.config.redirect_uri,\n refresh_token: this.refresh_token\n },\n auth: {\n user: this.config.client_id,\n pass: this.config.client_secret,\n sendImmediately: true\n },\n shouldRefreshAccessToken: false\n })\n .then((res) => res.body))\n .then((obj) => {\n if (!obj) {\n throw new Error('token: refreshCallback() did not produce an object');\n }\n // If the authentication server did not send back a refresh token, copy\n // the current refresh token and related values to the response (note:\n // at time of implementation, CI never sends a new refresh token)\n if (!obj.refresh_token) {\n Object.assign(obj, pick(this, 'refresh_token', 'refresh_token_expires', 'refresh_token_expires_in'));\n }\n\n // If the new token is the same as the previous token, then we may have\n // found a bug in CI; log the details and reject the Promise\n if (this.access_token === obj.access_token) {\n this.logger.error('token: new token matches current token');\n // log the tokens if it is not production\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error('token: current token:', this.access_token);\n this.logger.error('token: new token:', obj.access_token);\n }\n\n return Promise.reject(new Error('new token matches current token'));\n }\n\n if (this.previousToken) {\n this.previousToken.revoke();\n this.unset('previousToken');\n }\n\n obj.previousToken = this;\n obj.scope = this.scope;\n\n return new Token(obj, {parent: this.parent});\n })\n .catch(processGrantError);\n },\n\n @oneFlight\n /**\n * Revokes this token and unsets its local properties\n * @instance\n * @memberof Token\n * @returns {Promise}\n */\n revoke() {\n if (this.isExpired) {\n this.logger.info('token: already expired, not making making revocation request');\n\n return Promise.resolve();\n }\n\n if (!this.canAuthorize) {\n this.logger.info('token: no longer valid, not making revocation request');\n\n return Promise.resolve();\n }\n\n // FIXME we need to use the user token revocation endpoint to revoke a token\n // without a client_secret, but it doesn't current support using a token to\n // revoke itself\n // Note: I'm not making a canRevoke property because there should be changes\n // coming to the user token revocation endpoint that allow us to do this\n // correctly.\n if (!this.config.client_secret) {\n this.logger.info('token: no client secret available, not making revocation request');\n\n return Promise.resolve();\n }\n\n this.logger.info('token: revoking access token');\n\n return this.webex.request({\n method: 'POST',\n uri: this.config.revokeUrl,\n form: {\n token: this.access_token,\n token_type_hint: 'access_token'\n },\n auth: {\n user: this.config.client_id,\n pass: this.config.client_secret,\n sendImmediately: true\n },\n shouldRefreshAccessToken: false\n })\n .then(() => {\n this.unset([\n 'access_token',\n 'expires',\n 'expires_in',\n 'token_type'\n ]);\n this.logger.info('token: access token revoked');\n })\n .catch(processGrantError);\n },\n\n set(...args) {\n // eslint-disable-next-line prefer-const\n let [attrs, options] = this._filterSetParameters(...args);\n\n if (!attrs.token_type && attrs.access_token && attrs.access_token.includes(' ')) {\n const [token_type, access_token] = attrs.access_token.split(' ');\n\n attrs = Object.assign({}, attrs, {access_token, token_type});\n }\n const now = Date.now();\n\n if (!attrs.expires && attrs.expires_in) {\n attrs.expires = now + attrs.expires_in * 1000;\n }\n\n if (!attrs.refresh_token_expires && attrs.refresh_token_expires_in) {\n attrs.refresh_token_expires = now + attrs.refresh_token_expires_in * 1000;\n }\n\n if (attrs.scope) {\n attrs.scope = sortScope(attrs.scope);\n }\n\n return Reflect.apply(WebexPlugin.prototype.set, this, [attrs, options]);\n },\n\n /**\n * Renders the token object as an HTTP Header Value\n * @instance\n * @memberof Token\n * @returns {string}\n * @see {@link Object#toString()}\n */\n toString() {\n if (!this._string) {\n throw new Error('cannot stringify Token');\n }\n\n return this._string;\n },\n\n /**\n * Uses a non-producation api to return information about this token. This\n * method is primarily for tests and will throw if NODE_ENV === production\n * @instance\n * @memberof Token\n * @private\n * @returns {Promise}\n */\n validate() {\n if (process.env.NODE_ENV === 'production') {\n throw new Error('Token#validate() must not be used in production');\n }\n\n return this.webex.request({\n method: 'POST',\n service: 'conversation',\n resource: 'users/validateAuthToken',\n body: {\n token: this.access_token\n }\n })\n .catch((reason) => {\n if ('statusCode' in reason) {\n return Promise.reject(reason);\n }\n this.logger.info('REMINDER: If you\\'re investigating a network error here, it\\'s normal');\n\n // If we got an error that isn't a WebexHttpError, assume the problem is\n // that we don't have the wdm plugin loaded and service/resource isn't\n // a valid means of identifying a request.\n const convApi = process.env.CONVERSATION_SERVICE || process.env.CONVERSATION_SERVICE_URL || 'https://conv-a.wbx2.com/conversation/api/v1';\n\n return this.webex.request({\n method: 'POST',\n uri: `${convApi}/users/validateAuthToken`,\n body: {\n token: this.access_token\n },\n headers: {\n authorization: `Bearer ${this.access_token}`\n }\n });\n })\n .then((res) => res.body);\n }\n});\n\nexport default Token;\n"],"mappings":"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"}
|
package/dist/lib/page.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["itemsMap","linksMap","webexsMap","Page","res","webex","set","body","items","parseLinkHeaders","headers","link","get","length","getLink","hasLink","request","uri","links","then","Boolean","i","next","value","done","linkHeaders","reduce","linkHeader","split","replace","rel"],"sources":["page.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nconst itemsMap = new WeakMap();\nconst linksMap = new WeakMap();\nconst webexsMap = new WeakMap();\n\n/**\n * @class Page\n */\nexport default class Page {\n /**\n * @type {Array}\n */\n get items() {\n return itemsMap.get(this);\n }\n\n /**\n * @type {number}\n */\n get length() {\n return this.items.length;\n }\n\n /**\n * @private\n * @type {Object}\n */\n get links() {\n return linksMap.get(this);\n }\n\n /**\n * @private\n * @type {ProxyWebex}\n */\n get webex() {\n return webexsMap.get(this);\n }\n\n /**\n * @constructs {Page}\n * @param {HttpResponse} res\n * @param {ProxyWebex} webex\n * @returns {Page}\n */\n constructor(res, webex) {\n itemsMap.set(this, res.body.items);\n linksMap.set(this, Page.parseLinkHeaders(res.headers.link));\n webexsMap.set(this, webex);\n\n return this;\n }\n\n /**\n * Separate a single link header string into an actionable object\n * @param {string} linkHeaders\n * @private\n * @returns {Object}\n */\n static parseLinkHeaders(linkHeaders) {\n if (!linkHeaders) {\n return {};\n }\n\n linkHeaders = Array.isArray(linkHeaders) ? linkHeaders : [linkHeaders];\n\n return linkHeaders.reduce((links, linkHeader) => {\n linkHeader = linkHeader.split(';');\n const link = linkHeader[0]\n .replace('<', '')\n .replace('>', '');\n const rel = linkHeader[1]\n .split('=')[1]\n .replace(/\"/g, '');\n\n links[rel] = link;\n\n return links;\n }, {});\n }\n\n /**\n * Get next page\n * @returns {Function}\n */\n next() {\n return this.getLink('next');\n }\n\n /**\n * Indicates if there's another page\n * @returns {Boolean}\n */\n hasNext() {\n return this.hasLink('next');\n }\n\n /**\n * Get previous page\n * @returns {Page}\n */\n previous() {\n return this.getLink('previous');\n }\n\n /**\n * Indicates if there is a previous Page\n * @returns {Boolean}\n */\n hasPrevious() {\n return this.hasLink('previous');\n }\n\n /**\n * Retrieves the `Page` at url specified by `link`\n * @param {string} link Specifies which link header to return\n * @private\n * @returns {Promise<Page>}\n */\n getLink(link) {\n return this.webex.request({\n uri: this.links[link]\n })\n .then((res) => new Page(res, this.webex));\n }\n\n /**\n * Indicates if the specified link is in the link header\n * @param {string} link\n * @private\n * @returns {Boolean}\n */\n hasLink(link) {\n return Boolean(this.links[link]);\n }\n\n /**\n * Iterator\n * @returns {Object}\n */\n [Symbol.iterator]() {\n let i = -1;\n\n return {\n next: () => {\n i += 1;\n if (i < this.length) {\n return {\n value: this.items[i]\n };\n }\n\n return {done: true};\n }\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAEA,IAAMA,QAAQ,GAAG,sBAAjB;AACA,IAAMC,QAAQ,GAAG,sBAAjB;AACA,IAAMC,SAAS,GAAG,sBAAlB;AAEA;AACA;AACA;;IACqBC,I;EA+BnB;AACF;AACA;AACA;AACA;AACA;EACE,cAAYC,GAAZ,EAAiBC,KAAjB,EAAwB;IAAA;IACtBL,QAAQ,CAACM,GAAT,CAAa,IAAb,EAAmBF,GAAG,CAACG,IAAJ,CAASC,KAA5B;IACAP,QAAQ,CAACK,GAAT,CAAa,IAAb,EAAmBH,IAAI,CAACM,gBAAL,CAAsBL,GAAG,CAACM,OAAJ,CAAYC,IAAlC,CAAnB;IACAT,SAAS,CAACI,GAAV,CAAc,IAAd,EAAoBD,KAApB;IAEA,OAAO,IAAP;EACD;EAED;AACF;AACA;AACA;AACA;AACA;;;;;;IAjDE;AACF;AACA;IACE,eAAY;MACV,OAAOL,QAAQ,CAACY,GAAT,CAAa,IAAb,CAAP;IACD;IAED;AACF;AACA;;;;SACE,eAAa;MACX,OAAO,KAAKJ,KAAL,CAAWK,MAAlB;IACD;IAED;AACF;AACA;AACA;;;;SACE,eAAY;MACV,OAAOZ,QAAQ,CAACW,GAAT,CAAa,IAAb,CAAP;IACD;IAED;AACF;AACA;AACA;;;;SACE,eAAY;MACV,OAAOV,SAAS,CAACU,GAAV,CAAc,IAAd,CAAP;IACD;;;;IA4CD;AACF;AACA;AACA;IACE,gBAAO;MACL,OAAO,KAAKE,OAAL,CAAa,MAAb,CAAP;IACD;IAED;AACF;AACA;AACA;;;;WACE,mBAAU;MACR,OAAO,KAAKC,OAAL,CAAa,MAAb,CAAP;IACD;IAED;AACF;AACA;AACA;;;;WACE,oBAAW;MACT,OAAO,KAAKD,OAAL,CAAa,UAAb,CAAP;IACD;IAED;AACF;AACA;AACA;;;;WACE,uBAAc;MACZ,OAAO,KAAKC,OAAL,CAAa,UAAb,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,iBAAQJ,IAAR,EAAc;MAAA;;MACZ,OAAO,KAAKN,KAAL,CAAWW,OAAX,CAAmB;QACxBC,GAAG,EAAE,KAAKC,KAAL,CAAWP,IAAX;MADmB,CAAnB,EAGJQ,IAHI,CAGC,UAACf,GAAD;QAAA,OAAS,IAAID,IAAJ,CAASC,GAAT,EAAc,KAAI,CAACC,KAAnB,CAAT;MAAA,CAHD,CAAP;IAID;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,iBAAQM,IAAR,EAAc;MACZ,OAAOS,OAAO,CAAC,KAAKF,KAAL,CAAWP,IAAX,CAAD,CAAd;IACD;IAED;AACF;AACA;AACA;;;;WACE,iBAAoB;MAAA;;MAClB,IAAIU,CAAC,GAAG,CAAC,CAAT;MAEA,OAAO;QACLC,IAAI,EAAE,gBAAM;UACVD,CAAC,IAAI,CAAL;;UACA,IAAIA,CAAC,GAAG,MAAI,CAACR,MAAb,EAAqB;YACnB,OAAO;cACLU,KAAK,EAAE,MAAI,CAACf,KAAL,CAAWa,CAAX;YADF,CAAP;UAGD;;UAED,OAAO;YAACG,IAAI,EAAE;UAAP,CAAP;QACD;MAVI,CAAP;IAYD;;;WAhGD,0BAAwBC,WAAxB,EAAqC;MACnC,IAAI,CAACA,WAAL,EAAkB;QAChB,OAAO,EAAP;MACD;;MAEDA,WAAW,GAAG,sBAAcA,WAAd,IAA6BA,WAA7B,GAA2C,CAACA,WAAD,CAAzD;MAEA,OAAOA,WAAW,CAACC,MAAZ,CAAmB,UAACR,KAAD,EAAQS,UAAR,EAAuB;QAC/CA,UAAU,GAAGA,UAAU,CAACC,KAAX,CAAiB,GAAjB,CAAb;QACA,IAAMjB,IAAI,GAAGgB,UAAU,CAAC,CAAD,CAAV,CACVE,OADU,CACF,GADE,EACG,EADH,EAEVA,OAFU,CAEF,GAFE,EAEG,EAFH,CAAb;QAGA,IAAMC,GAAG,GAAGH,UAAU,CAAC,CAAD,CAAV,CACTC,KADS,CACH,GADG,EACE,CADF,EAETC,OAFS,CAED,IAFC,EAEK,EAFL,CAAZ;QAIAX,KAAK,CAACY,GAAD,CAAL,GAAanB,IAAb;QAEA,OAAOO,KAAP;MACD,CAZM,EAYJ,EAZI,CAAP;IAaD"}
|
|
@@ -6,7 +6,7 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
|
|
9
|
-
exports.
|
|
9
|
+
exports.SERVICE_CATALOGS_ENUM_TYPES = exports.SERVICE_CATALOGS = exports.NAMESPACE = void 0;
|
|
10
10
|
var NAMESPACE = 'services';
|
|
11
11
|
exports.NAMESPACE = NAMESPACE;
|
|
12
12
|
var SERVICE_CATALOGS = ['discovery', 'limited', 'signin', 'postauth', 'custom'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["NAMESPACE","SERVICE_CATALOGS","SERVICE_CATALOGS_ENUM_TYPES","STRING","NUMBER"],"sources":["constants.js"],"sourcesContent":["const NAMESPACE = 'services';\n\nconst SERVICE_CATALOGS = [\n 'discovery',\n 'limited',\n 'signin',\n 'postauth',\n 'custom'\n];\n\nconst SERVICE_CATALOGS_ENUM_TYPES = {\n STRING: 'SERVICE_CATALOGS_ENUM_TYPES_STRING',\n NUMBER: 'SERVICE_CATALOGS_ENUM_TYPES_NUMBER'\n};\n\nexport {\n SERVICE_CATALOGS_ENUM_TYPES,\n NAMESPACE,\n SERVICE_CATALOGS\n};\n"],"mappings":";;;;;;;;;AAAA,IAAMA,SAAS,GAAG,UAAlB;;AAEA,IAAMC,gBAAgB,GAAG,CACvB,WADuB,EAEvB,SAFuB,EAGvB,QAHuB,EAIvB,UAJuB,EAKvB,QALuB,CAAzB;;AAQA,IAAMC,2BAA2B,GAAG;EAClCC,MAAM,EAAE,oCAD0B;EAElCC,MAAM,EAAE;AAF0B,CAApC"}
|
|
@@ -14,31 +14,31 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
14
14
|
value: true
|
|
15
15
|
});
|
|
16
16
|
|
|
17
|
-
_Object$defineProperty(exports, "
|
|
17
|
+
_Object$defineProperty(exports, "ServerErrorInterceptor", {
|
|
18
18
|
enumerable: true,
|
|
19
19
|
get: function get() {
|
|
20
|
-
return
|
|
20
|
+
return _serverError.default;
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
23
|
|
|
24
|
-
_Object$defineProperty(exports, "
|
|
24
|
+
_Object$defineProperty(exports, "ServiceCatalog", {
|
|
25
25
|
enumerable: true,
|
|
26
26
|
get: function get() {
|
|
27
|
-
return
|
|
27
|
+
return _serviceCatalog.default;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
30
|
|
|
31
|
-
_Object$defineProperty(exports, "
|
|
31
|
+
_Object$defineProperty(exports, "ServiceHost", {
|
|
32
32
|
enumerable: true,
|
|
33
33
|
get: function get() {
|
|
34
|
-
return
|
|
34
|
+
return _serviceHost.default;
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
37
|
|
|
38
|
-
_Object$defineProperty(exports, "
|
|
38
|
+
_Object$defineProperty(exports, "ServiceInterceptor", {
|
|
39
39
|
enumerable: true,
|
|
40
40
|
get: function get() {
|
|
41
|
-
return
|
|
41
|
+
return _service.default;
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
44
|
|
|
@@ -56,17 +56,17 @@ _Object$defineProperty(exports, "ServiceState", {
|
|
|
56
56
|
}
|
|
57
57
|
});
|
|
58
58
|
|
|
59
|
-
_Object$defineProperty(exports, "
|
|
59
|
+
_Object$defineProperty(exports, "ServiceUrl", {
|
|
60
60
|
enumerable: true,
|
|
61
61
|
get: function get() {
|
|
62
|
-
return
|
|
62
|
+
return _serviceUrl.default;
|
|
63
63
|
}
|
|
64
64
|
});
|
|
65
65
|
|
|
66
|
-
_Object$defineProperty(exports, "
|
|
66
|
+
_Object$defineProperty(exports, "Services", {
|
|
67
67
|
enumerable: true,
|
|
68
68
|
get: function get() {
|
|
69
|
-
return
|
|
69
|
+
return _services.default;
|
|
70
70
|
}
|
|
71
71
|
});
|
|
72
72
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["Services","interceptors","ServiceInterceptor","create","ServerErrorInterceptor"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport {registerInternalPlugin} from '../../webex-core';\n\nimport * as constants from './constants';\nimport Services from './services';\nimport ServerErrorInterceptor from './interceptors/server-error';\nimport ServiceInterceptor from './interceptors/service';\n\nregisterInternalPlugin('services', Services, {\n interceptors: {\n ServiceInterceptor: ServiceInterceptor.create,\n ServerErrorInterceptor: ServerErrorInterceptor.create\n }\n});\n\nexport {constants};\nexport {default as ServiceInterceptor} from './interceptors/service';\nexport {default as ServerErrorInterceptor} from './interceptors/server-error';\nexport {default as Services} from './services';\nexport {default as ServiceCatalog} from './service-catalog';\nexport {default as ServiceRegistry} from './service-registry';\nexport {default as ServiceState} from './service-state';\nexport {default as ServiceHost} from './service-host';\nexport {default as ServiceUrl} from './service-url';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;AAEA;;;;AACA;;AACA;;AACA;;AAaA;;AACA;;AACA;;AACA;;AACA;;;;;;AAzBA;AACA;AACA;AAQA,uCAAuB,UAAvB,EAAmCA,iBAAnC,EAA6C;EAC3CC,YAAY,EAAE;IACZC,kBAAkB,EAAEA,iBAAmBC,MAD3B;IAEZC,sBAAsB,EAAEA,qBAAuBD;EAFnC;AAD6B,CAA7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["ServerErrorInterceptor","options","reason","WebexHttpError","InternalServerError","BadGateway","ServiceUnavailable","uri","feature","webex","internal","device","features","developer","get","value","metrics","submitClientMetrics","fields","success","tags","action","error","message","url","resolve","services","markFailedUrl","then","reject","Interceptor"],"sources":["server-error.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\nimport {WebexHttpError} from '@webex/webex-core';\n/**\n * Changes server url when it fails\n */\nexport default class ServerErrorInterceptor extends Interceptor {\n /**\n * @returns {HAMessagingInterceptor}\n */\n static create() {\n // eslint-disable-next-line no-invalid-this\n return new ServerErrorInterceptor({webex: this});\n }\n\n\n /**\n * @see Interceptor#onResponseError\n * @param {Object} options\n * @param {Object} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n if ((reason instanceof WebexHttpError.InternalServerError || reason instanceof WebexHttpError.BadGateway || reason instanceof WebexHttpError.ServiceUnavailable) && options.uri) {\n const feature = this.webex.internal.device.features.developer.get('web-high-availability');\n\n if (feature && feature.value) {\n this.webex.internal.metrics.submitClientMetrics('web-ha', {\n fields: {success: false},\n tags: {action: 'failed', error: reason.message, url: options.uri}\n });\n\n return Promise.resolve(this.webex.internal.services.markFailedUrl(options.uri))\n .then(() => Promise.reject(reason));\n }\n }\n\n return Promise.reject(reason);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;AACA;;;;;;AACA;AACA;AACA;IACqBA,sB;;;;;;;;;;;;;IAUnB;AACF;AACA;AACA;AACA;AACA;IACE,yBAAgBC,OAAhB,EAAyBC,MAAzB,EAAiC;MAC/B,IAAI,CAACA,MAAM,YAAYC,0BAAeC,mBAAjC,IAAwDF,MAAM,YAAYC,0BAAeE,UAAzF,IAAuGH,MAAM,YAAYC,0BAAeG,kBAAzI,KAAgKL,OAAO,CAACM,GAA5K,EAAiL;QAC/K,IAAMC,OAAO,GAAG,KAAKC,KAAL,CAAWC,QAAX,CAAoBC,MAApB,CAA2BC,QAA3B,CAAoCC,SAApC,CAA8CC,GAA9C,CAAkD,uBAAlD,CAAhB;;QAEA,IAAIN,OAAO,IAAIA,OAAO,CAACO,KAAvB,EAA8B;UAC5B,KAAKN,KAAL,CAAWC,QAAX,CAAoBM,OAApB,CAA4BC,mBAA5B,CAAgD,QAAhD,EAA0D;YACxDC,MAAM,EAAE;cAACC,OAAO,EAAE;YAAV,CADgD;YAExDC,IAAI,EAAE;cAACC,MAAM,EAAE,QAAT;cAAmBC,KAAK,EAAEpB,MAAM,CAACqB,OAAjC;cAA0CC,GAAG,EAAEvB,OAAO,CAACM;YAAvD;UAFkD,CAA1D;UAKA,OAAO,iBAAQkB,OAAR,CAAgB,KAAKhB,KAAL,CAAWC,QAAX,CAAoBgB,QAApB,CAA6BC,aAA7B,CAA2C1B,OAAO,CAACM,GAAnD,CAAhB,EACJqB,IADI,CACC;YAAA,OAAM,iBAAQC,MAAR,CAAe3B,MAAf,CAAN;UAAA,CADD,CAAP;QAED;MACF;;MAED,OAAO,iBAAQ2B,MAAR,CAAe3B,MAAf,CAAP;IACD;;;;IA/BD;AACF;AACA;IACE,kBAAgB;MACd;MACA,OAAO,IAAIF,sBAAJ,CAA2B;QAACS,KAAK,EAAE;MAAR,CAA3B,CAAP;IACD;;;EAPiDqB,qB"}
|
|
@@ -134,7 +134,7 @@ var ServiceInterceptor = /*#__PURE__*/function (_Interceptor) {
|
|
|
134
134
|
throw new Error('a valid \'service\' parameter is required');
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
|
-
/* eslint-enable class-methods-use-this no-param-reassign */
|
|
137
|
+
/* eslint-enable class-methods-use-this, no-param-reassign */
|
|
138
138
|
|
|
139
139
|
}], [{
|
|
140
140
|
key: "create",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["trailingSlashes","ServiceInterceptor","options","uri","normalizeOptions","validateOptions","services","webex","internal","service","resource","waitForService","name","then","serviceUrl","generateUri","catch","reject","Error","formattedService","replace","formattedResource","api","Interceptor"],"sources":["service.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\nconst trailingSlashes = /(?:^\\/)|(?:\\/$)/;\n\n/**\n * @class\n */\nexport default class ServiceInterceptor extends Interceptor {\n /**\n * @returns {ServiceInterceptor}\n */\n static create() {\n /* eslint no-invalid-this: [0] */\n return new ServiceInterceptor({webex: this});\n }\n\n /* eslint-disable no-param-reassign */\n /**\n * @see Interceptor#onRequest\n * @param {Object} options - The request PTO.\n * @returns {Object} - The mutated request PTO.\n */\n onRequest(options) {\n // Validate that the PTO includes a uri property.\n if (options.uri) {\n return options;\n }\n\n // Normalize and validate the PTO.\n this.normalizeOptions(options);\n this.validateOptions(options);\n\n // Destructure commonly referenced namespaces.\n const {services} = this.webex.internal;\n const {service, resource} = options;\n\n // Attempt to collect the service url.\n return services.waitForService({name: service})\n .then((serviceUrl) => {\n // Generate the combined service url and resource.\n options.uri = this.generateUri(serviceUrl, resource);\n\n return options;\n })\n .catch(() => Promise.reject(new Error(\n `service-interceptor: '${service}' is not a known service`\n )));\n }\n\n /* eslint-disable class-methods-use-this */\n /**\n * Generate a usable request uri string from a service url and a resouce.\n *\n * @param {string} serviceUrl - The service url.\n * @param {string} [resource] - The resouce to be appended to the service url.\n * @returns {string} - The combined service url and resource.\n */\n generateUri(serviceUrl, resource = '') {\n const formattedService = serviceUrl.replace(trailingSlashes, '');\n const formattedResource = resource.replace(trailingSlashes, '');\n\n return `${formattedService}/${formattedResource}`;\n }\n\n /**\n * Normalizes request options relative to service identification.\n *\n * @param {Object} options - The request PTO.\n * @returns {Object} - The mutated request PTO.\n */\n normalizeOptions(options) {\n // Validate if the api property is used.\n if (options.api) {\n // Assign the service property the value of the api property if necessary.\n options.service = options.service || options.api;\n delete options.api;\n }\n }\n\n /**\n * Validates that the appropriate options for this interceptor are present.\n *\n * @param {Object} options - The request PTO.\n * @returns {Object} - The mutated request PTO.\n */\n validateOptions(options) {\n if (!options.resource) {\n throw new Error('a `resource` parameter is required');\n }\n\n if (!options.service) {\n throw new Error('a valid \\'service\\' parameter is required');\n }\n }\n /* eslint-enable class-methods-use-this, no-param-reassign */\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;;;;;AAEA,IAAMA,eAAe,GAAG,iBAAxB;AAEA;AACA;AACA;;IACqBC,kB;;;;;;;;;;;;;IASnB;;IACA;AACF;AACA;AACA;AACA;IACE,mBAAUC,OAAV,EAAmB;MAAA;;MACjB;MACA,IAAIA,OAAO,CAACC,GAAZ,EAAiB;QACf,OAAOD,OAAP;MACD,CAJgB,CAMjB;;;MACA,KAAKE,gBAAL,CAAsBF,OAAtB;MACA,KAAKG,eAAL,CAAqBH,OAArB,EARiB,CAUjB;;MACA,IAAOI,QAAP,GAAmB,KAAKC,KAAL,CAAWC,QAA9B,CAAOF,QAAP;MACA,IAAOG,OAAP,GAA4BP,OAA5B,CAAOO,OAAP;MAAA,IAAgBC,QAAhB,GAA4BR,OAA5B,CAAgBQ,QAAhB,CAZiB,CAcjB;;MACA,OAAOJ,QAAQ,CAACK,cAAT,CAAwB;QAACC,IAAI,EAAEH;MAAP,CAAxB,EACJI,IADI,CACC,UAACC,UAAD,EAAgB;QACpB;QACAZ,OAAO,CAACC,GAAR,GAAc,KAAI,CAACY,WAAL,CAAiBD,UAAjB,EAA6BJ,QAA7B,CAAd;QAEA,OAAOR,OAAP;MACD,CANI,EAOJc,KAPI,CAOE;QAAA,OAAM,iBAAQC,MAAR,CAAe,IAAIC,KAAJ,iCACDT,OADC,8BAAf,CAAN;MAAA,CAPF,CAAP;IAUD;IAED;;IACA;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,qBAAYK,UAAZ,EAAuC;MAAA,IAAfJ,QAAe,uEAAJ,EAAI;MACrC,IAAMS,gBAAgB,GAAGL,UAAU,CAACM,OAAX,CAAmBpB,eAAnB,EAAoC,EAApC,CAAzB;MACA,IAAMqB,iBAAiB,GAAGX,QAAQ,CAACU,OAAT,CAAiBpB,eAAjB,EAAkC,EAAlC,CAA1B;MAEA,iBAAUmB,gBAAV,cAA8BE,iBAA9B;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,0BAAiBnB,OAAjB,EAA0B;MACxB;MACA,IAAIA,OAAO,CAACoB,GAAZ,EAAiB;QACf;QACApB,OAAO,CAACO,OAAR,GAAkBP,OAAO,CAACO,OAAR,IAAmBP,OAAO,CAACoB,GAA7C;QACA,OAAOpB,OAAO,CAACoB,GAAf;MACD;IACF;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,yBAAgBpB,OAAhB,EAAyB;MACvB,IAAI,CAACA,OAAO,CAACQ,QAAb,EAAuB;QACrB,MAAM,IAAIQ,KAAJ,CAAU,oCAAV,CAAN;MACD;;MAED,IAAI,CAAChB,OAAO,CAACO,OAAb,EAAsB;QACpB,MAAM,IAAIS,KAAJ,CAAU,2CAAV,CAAN;MACD;IACF;IACD;;;;;IAtFA;AACF;AACA;IACE,kBAAgB;MACd;MACA,OAAO,IAAIjB,kBAAJ,CAAuB;QAACM,KAAK,EAAE;MAAR,CAAvB,CAAP;IACD;;;EAP6CgB,qB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["JS_SDK_SERVICE_NOT_FOUND"],"sources":["metrics.js"],"sourcesContent":["// Metrics for service catalog\nexport default {\n JS_SDK_SERVICE_NOT_FOUND: 'JS_SDK_SERVICE_NOT_FOUND'\n};\n"],"mappings":";;;;;;;;;AAAA;eACe;EACbA,wBAAwB,EAAE;AADb,C"}
|
|
@@ -42,9 +42,9 @@ var _ampersandState = _interopRequireDefault(require("ampersand-state"));
|
|
|
42
42
|
|
|
43
43
|
var _serviceUrl = _interopRequireDefault(require("./service-url"));
|
|
44
44
|
|
|
45
|
-
function ownKeys(object, enumerableOnly) { var keys = _Object$keys3(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object);
|
|
45
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys3(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; }
|
|
46
46
|
|
|
47
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
47
|
+
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) { (0, _defineProperty2.default)(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; }
|
|
48
48
|
|
|
49
49
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
50
50
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["service-catalog.js"],"names":["ServiceCatalog","AmpState","extend","namespace","props","serviceGroups","discovery","override","preauth","postauth","signin","status","ready","collecting","isReady","allowedDomains","_getUrl","name","serviceGroup","serviceUrls","find","serviceUrl","_listServiceUrls","_loadServiceUrls","services","existingService","forEach","service","push","_unloadServiceUrls","splice","indexOf","clean","length","findClusterId","url","incomingUrlObj","Url","parse","serviceUrlObj","key","defaultUrl","hosts","host","hostname","id","homeCluster","undefined","findServiceFromClusterId","clusterId","priorityHost","identifiedServiceUrl","get","findServiceUrlFromUrl","findAllowedDomain","urlObj","allowedDomain","includes","getAllowedDomains","list","output","markFailedUrl","noPriorityHosts","failHost","setAllowedDomains","updateServiceUrls","serviceHostmap","currentServiceUrls","unusedUrls","filter","every","item","serviceObj","ServiceUrl","trigger","waitForCatalog","timeout","resolve","reject","timeoutTimer","setTimeout","Error","once","clearTimeout"],"mappings":"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","sourcesContent":["import Url from 'url';\n\nimport AmpState from 'ampersand-state';\n\nimport ServiceUrl from './service-url';\n\n/* eslint-disable no-underscore-dangle */\n/**\n * @class\n */\nconst ServiceCatalog = AmpState.extend({\n namespace: 'ServiceCatalog',\n\n props: {\n serviceGroups: ['object', true, (() => ({\n discovery: [],\n override: [],\n preauth: [],\n postauth: [],\n signin: []\n }))],\n status: ['object', true, (() => ({\n discovery: {\n ready: false,\n collecting: false\n },\n override: {\n ready: false,\n collecting: false\n },\n preauth: {\n ready: false,\n collecting: false\n },\n postauth: {\n ready: false,\n collecting: false\n },\n signin: {\n ready: false,\n collecting: false\n }\n }))],\n isReady: ['boolean', false, false],\n allowedDomains: ['array', false, (() => [])]\n },\n\n /**\n * @private\n * Search the service url array to locate a `ServiceUrl`\n * class object based on its name.\n * @param {string} name\n * @param {string} [serviceGroup]\n * @returns {ServiceUrl}\n */\n _getUrl(name, serviceGroup) {\n const serviceUrls = (typeof serviceGroup === 'string') ?\n this.serviceGroups[serviceGroup] || [] :\n [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery\n ];\n\n return serviceUrls.find((serviceUrl) => serviceUrl.name === name);\n },\n\n /**\n * @private\n * Generate an array of `ServiceUrl`s that is organized from highest auth\n * level to lowest auth level.\n * @returns {Array<ServiceUrl>} - array of `ServiceUrl`s\n */\n _listServiceUrls() {\n return [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery\n ];\n },\n\n /**\n * @private\n * Safely load one or more `ServiceUrl`s into this `Services` instance.\n * @param {string} serviceGroup\n * @param {Array<ServiceUrl>} services\n * @returns {Services}\n */\n _loadServiceUrls(serviceGroup, services) {\n // declare namespaces outside of loop\n let existingService;\n\n services.forEach((service) => {\n existingService = this._getUrl(service.name, serviceGroup);\n\n if (!existingService) {\n this.serviceGroups[serviceGroup].push(service);\n }\n });\n\n return this;\n },\n\n /**\n * @private\n * Safely unload one or more `ServiceUrl`s into this `Services` instance\n * @param {string} serviceGroup\n * @param {Array<ServiceUrl>} services\n * @returns {Services}\n */\n _unloadServiceUrls(serviceGroup, services) {\n // declare namespaces outside of loop\n let existingService;\n\n services.forEach((service) => {\n existingService = this._getUrl(service.name, serviceGroup);\n\n if (existingService) {\n this.serviceGroups[serviceGroup].splice(\n this.serviceGroups[serviceGroup].indexOf(existingService), 1\n );\n }\n });\n\n return this;\n },\n\n /**\n * Clear all collected catalog data and reset catalog status.\n *\n * @returns {void}\n */\n clean() {\n this.serviceGroups.preauth.length = 0;\n this.serviceGroups.signin.length = 0;\n this.serviceGroups.postauth.length = 0;\n this.status.preauth = {ready: false};\n this.status.signin = {ready: false};\n this.status.postauth = {ready: false};\n },\n\n /**\n * Search over all service groups to find a cluster id based\n * on a given url.\n * @param {string} url - Must be parsable by `Url`\n * @returns {string} - ClusterId of a given url\n */\n findClusterId(url) {\n const incomingUrlObj = Url.parse(url);\n let serviceUrlObj;\n\n for (const key of Object.keys(this.serviceGroups)) {\n for (const service of this.serviceGroups[key]) {\n serviceUrlObj = Url.parse(service.defaultUrl);\n\n for (const host of service.hosts) {\n if (incomingUrlObj.hostname === host.host && host.id) {\n return host.id;\n }\n }\n\n if (serviceUrlObj.hostname === incomingUrlObj.hostname &&\n service.hosts.length > 0) {\n // no exact match, so try to grab the first home cluster\n for (const host of service.hosts) {\n if (host.homeCluster) {\n return host.id;\n }\n }\n\n // no match found still, so return the first entry\n return service.hosts[0].id;\n }\n }\n }\n\n return undefined;\n },\n\n /**\n * Search over all service groups and return a service value from a provided\n * clusterId. Currently, this method will return either a service name, or a\n * service url depending on the `value` parameter. If the `value` parameter\n * is set to `name`, it will return a service name to be utilized within the\n * Services plugin methods.\n * @param {object} params\n * @param {string} params.clusterId - clusterId of found service\n * @param {boolean} [params.priorityHost = true] - returns priority host url if true\n * @param {string} [params.serviceGroup] - specify service group\n * @returns {object} service\n * @returns {string} service.name\n * @returns {string} service.url\n */\n findServiceFromClusterId({clusterId, priorityHost = true, serviceGroup} = {}) {\n const serviceUrls = (typeof serviceGroup === 'string') ?\n this.serviceGroups[serviceGroup] || [] : [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery\n ];\n\n const identifiedServiceUrl = serviceUrls.find(\n (serviceUrl) => serviceUrl.hosts.find(\n (host) => host.id === clusterId\n )\n );\n\n if (identifiedServiceUrl) {\n return {\n name: identifiedServiceUrl.name,\n url: identifiedServiceUrl.get(priorityHost, clusterId)\n };\n }\n\n return undefined;\n },\n\n /**\n * Find a service based on the provided url.\n * @param {string} url - Must be parsable by `Url`\n * @returns {serviceUrl} - ServiceUrl assocated with provided url\n */\n findServiceUrlFromUrl(url) {\n const incomingUrlObj = Url.parse(url);\n const serviceUrls = [\n ...this.serviceGroups.discovery,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.override\n ];\n\n return serviceUrls.find(\n (serviceUrl) => {\n if (incomingUrlObj.hostname ===\n Url.parse(serviceUrl.defaultUrl).hostname) {\n return true;\n }\n\n if (serviceUrl.hosts.find((host) => host.host === incomingUrlObj.hostname)) {\n return true;\n }\n\n return false;\n }\n );\n },\n\n /**\n * Finds an allowed domain that matches a specific url.\n *\n * @param {string} url - The url to match the allowed domains against.\n * @returns {string} - The matching allowed domain.\n */\n findAllowedDomain(url) {\n const urlObj = Url.parse(url);\n\n if (!urlObj.host) {\n return undefined;\n }\n\n return this.allowedDomains.find(\n (allowedDomain) => urlObj.host.includes(allowedDomain)\n );\n },\n\n /**\n * Get a service url from the current services list by name.\n * @param {string} name\n * @param {boolean} priorityHost\n * @param {string} serviceGroup\n * @returns {string}\n */\n get(name, priorityHost, serviceGroup) {\n const serviceUrl = this._getUrl(name, serviceGroup);\n\n return (serviceUrl) ? serviceUrl.get(priorityHost) : undefined;\n },\n\n /**\n * Get the current allowed domains list.\n *\n * @returns {Array<string>} - the current allowed domains list.\n */\n getAllowedDomains() {\n return [...this.allowedDomains];\n },\n\n /**\n * Creates an object where the keys are the service names\n * and the values are the service urls.\n * @param {boolean} priorityHost - use the highest priority if set to `true`\n * @param {string} [serviceGroup]\n * @returns {Record<string, string>}\n */\n list(priorityHost, serviceGroup) {\n const output = {};\n\n const serviceUrls = (typeof serviceGroup === 'string') ?\n this.serviceGroups[serviceGroup] || [] :\n [\n ...this.serviceGroups.discovery,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.override\n ];\n\n if (serviceUrls) {\n serviceUrls.forEach((serviceUrl) => {\n output[serviceUrl.name] = serviceUrl.get(priorityHost);\n });\n }\n\n return output;\n },\n\n /**\n * Mark a priority host service url as failed.\n * This will mark the host associated with the\n * `ServiceUrl` to be removed from the its\n * respective host array, and then return the next\n * viable host from the `ServiceUrls` host array,\n * or the `ServiceUrls` default url if no other priority\n * hosts are available, or if `noPriorityHosts` is set to\n * `true`.\n * @param {string} url\n * @param {boolean} noPriorityHosts\n * @returns {string}\n */\n markFailedUrl(url, noPriorityHosts) {\n const serviceUrl = this._getUrl(Object.keys(this.list()).find(\n (key) => this._getUrl(key).failHost(url)\n ));\n\n if (!serviceUrl) {\n return undefined;\n }\n\n return (noPriorityHosts) ? serviceUrl.get(false) : serviceUrl.get(true);\n },\n\n /**\n * Set the allowed domains for the catalog.\n *\n * @param {Array<string>} allowedDomains - allowed domains to be assigned.\n * @returns {void}\n */\n setAllowedDomains(allowedDomains) {\n this.allowedDomains = [...allowedDomains];\n },\n\n /**\n * Update the current list of `ServiceUrl`s against a provided\n * service hostmap.\n * @emits ServiceCatalog#preauthorized\n * @emits ServiceCatalog#postauthorized\n * @param {string} serviceGroup\n * @param {object} serviceHostmap\n * @returns {Services}\n */\n updateServiceUrls(serviceGroup, serviceHostmap) {\n const currentServiceUrls = this.serviceGroups[serviceGroup];\n\n const unusedUrls = currentServiceUrls.filter(\n (serviceUrl) => serviceHostmap.every(\n (item) => item.name !== serviceUrl.name\n )\n );\n\n this._unloadServiceUrls(serviceGroup, unusedUrls);\n\n serviceHostmap.forEach((serviceObj) => {\n const service = this._getUrl(serviceObj.name, serviceGroup);\n\n if (service) {\n service.defaultUrl = serviceObj.defaultUrl;\n service.hosts = serviceObj.hosts || [];\n }\n else {\n this._loadServiceUrls(serviceGroup, [new ServiceUrl({\n ...serviceObj\n })]);\n }\n });\n\n this.status[serviceGroup].ready = true;\n this.trigger(serviceGroup);\n\n return this;\n },\n\n /**\n * Wait until the service catalog is available,\n * or reject after a timeout of 60 seconds.\n * @param {string} serviceGroup\n * @param {number} [timeout] - in seconds\n * @returns {Promise<void>}\n */\n waitForCatalog(serviceGroup, timeout) {\n return new Promise((resolve, reject) => {\n if (this.status[serviceGroup].ready) {\n resolve();\n }\n\n const timeoutTimer = setTimeout(() => reject(\n new Error(`services: timeout occured while waiting for '${serviceGroup}' catalog to populate`)\n ), (timeout) ? timeout * 1000 : 60000);\n\n this.once(serviceGroup, () => {\n clearTimeout(timeoutTimer);\n resolve();\n });\n });\n }\n});\n/* eslint-enable no-underscore-dangle */\n\nexport default ServiceCatalog;\n"]}
|
|
1
|
+
{"version":3,"names":["ServiceCatalog","AmpState","extend","namespace","props","serviceGroups","discovery","override","preauth","postauth","signin","status","ready","collecting","isReady","allowedDomains","_getUrl","name","serviceGroup","serviceUrls","find","serviceUrl","_listServiceUrls","_loadServiceUrls","services","existingService","forEach","service","push","_unloadServiceUrls","splice","indexOf","clean","length","findClusterId","url","incomingUrlObj","Url","parse","serviceUrlObj","key","defaultUrl","hosts","host","hostname","id","homeCluster","undefined","findServiceFromClusterId","clusterId","priorityHost","identifiedServiceUrl","get","findServiceUrlFromUrl","findAllowedDomain","urlObj","allowedDomain","includes","getAllowedDomains","list","output","markFailedUrl","noPriorityHosts","failHost","setAllowedDomains","updateServiceUrls","serviceHostmap","currentServiceUrls","unusedUrls","filter","every","item","serviceObj","ServiceUrl","trigger","waitForCatalog","timeout","resolve","reject","timeoutTimer","setTimeout","Error","once","clearTimeout"],"sources":["service-catalog.js"],"sourcesContent":["import Url from 'url';\n\nimport AmpState from 'ampersand-state';\n\nimport ServiceUrl from './service-url';\n\n/* eslint-disable no-underscore-dangle */\n/**\n * @class\n */\nconst ServiceCatalog = AmpState.extend({\n namespace: 'ServiceCatalog',\n\n props: {\n serviceGroups: ['object', true, (() => ({\n discovery: [],\n override: [],\n preauth: [],\n postauth: [],\n signin: []\n }))],\n status: ['object', true, (() => ({\n discovery: {\n ready: false,\n collecting: false\n },\n override: {\n ready: false,\n collecting: false\n },\n preauth: {\n ready: false,\n collecting: false\n },\n postauth: {\n ready: false,\n collecting: false\n },\n signin: {\n ready: false,\n collecting: false\n }\n }))],\n isReady: ['boolean', false, false],\n allowedDomains: ['array', false, (() => [])]\n },\n\n /**\n * @private\n * Search the service url array to locate a `ServiceUrl`\n * class object based on its name.\n * @param {string} name\n * @param {string} [serviceGroup]\n * @returns {ServiceUrl}\n */\n _getUrl(name, serviceGroup) {\n const serviceUrls = (typeof serviceGroup === 'string') ?\n this.serviceGroups[serviceGroup] || [] :\n [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery\n ];\n\n return serviceUrls.find((serviceUrl) => serviceUrl.name === name);\n },\n\n /**\n * @private\n * Generate an array of `ServiceUrl`s that is organized from highest auth\n * level to lowest auth level.\n * @returns {Array<ServiceUrl>} - array of `ServiceUrl`s\n */\n _listServiceUrls() {\n return [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery\n ];\n },\n\n /**\n * @private\n * Safely load one or more `ServiceUrl`s into this `Services` instance.\n * @param {string} serviceGroup\n * @param {Array<ServiceUrl>} services\n * @returns {Services}\n */\n _loadServiceUrls(serviceGroup, services) {\n // declare namespaces outside of loop\n let existingService;\n\n services.forEach((service) => {\n existingService = this._getUrl(service.name, serviceGroup);\n\n if (!existingService) {\n this.serviceGroups[serviceGroup].push(service);\n }\n });\n\n return this;\n },\n\n /**\n * @private\n * Safely unload one or more `ServiceUrl`s into this `Services` instance\n * @param {string} serviceGroup\n * @param {Array<ServiceUrl>} services\n * @returns {Services}\n */\n _unloadServiceUrls(serviceGroup, services) {\n // declare namespaces outside of loop\n let existingService;\n\n services.forEach((service) => {\n existingService = this._getUrl(service.name, serviceGroup);\n\n if (existingService) {\n this.serviceGroups[serviceGroup].splice(\n this.serviceGroups[serviceGroup].indexOf(existingService), 1\n );\n }\n });\n\n return this;\n },\n\n /**\n * Clear all collected catalog data and reset catalog status.\n *\n * @returns {void}\n */\n clean() {\n this.serviceGroups.preauth.length = 0;\n this.serviceGroups.signin.length = 0;\n this.serviceGroups.postauth.length = 0;\n this.status.preauth = {ready: false};\n this.status.signin = {ready: false};\n this.status.postauth = {ready: false};\n },\n\n /**\n * Search over all service groups to find a cluster id based\n * on a given url.\n * @param {string} url - Must be parsable by `Url`\n * @returns {string} - ClusterId of a given url\n */\n findClusterId(url) {\n const incomingUrlObj = Url.parse(url);\n let serviceUrlObj;\n\n for (const key of Object.keys(this.serviceGroups)) {\n for (const service of this.serviceGroups[key]) {\n serviceUrlObj = Url.parse(service.defaultUrl);\n\n for (const host of service.hosts) {\n if (incomingUrlObj.hostname === host.host && host.id) {\n return host.id;\n }\n }\n\n if (serviceUrlObj.hostname === incomingUrlObj.hostname &&\n service.hosts.length > 0) {\n // no exact match, so try to grab the first home cluster\n for (const host of service.hosts) {\n if (host.homeCluster) {\n return host.id;\n }\n }\n\n // no match found still, so return the first entry\n return service.hosts[0].id;\n }\n }\n }\n\n return undefined;\n },\n\n /**\n * Search over all service groups and return a service value from a provided\n * clusterId. Currently, this method will return either a service name, or a\n * service url depending on the `value` parameter. If the `value` parameter\n * is set to `name`, it will return a service name to be utilized within the\n * Services plugin methods.\n * @param {object} params\n * @param {string} params.clusterId - clusterId of found service\n * @param {boolean} [params.priorityHost = true] - returns priority host url if true\n * @param {string} [params.serviceGroup] - specify service group\n * @returns {object} service\n * @returns {string} service.name\n * @returns {string} service.url\n */\n findServiceFromClusterId({clusterId, priorityHost = true, serviceGroup} = {}) {\n const serviceUrls = (typeof serviceGroup === 'string') ?\n this.serviceGroups[serviceGroup] || [] : [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery\n ];\n\n const identifiedServiceUrl = serviceUrls.find(\n (serviceUrl) => serviceUrl.hosts.find(\n (host) => host.id === clusterId\n )\n );\n\n if (identifiedServiceUrl) {\n return {\n name: identifiedServiceUrl.name,\n url: identifiedServiceUrl.get(priorityHost, clusterId)\n };\n }\n\n return undefined;\n },\n\n /**\n * Find a service based on the provided url.\n * @param {string} url - Must be parsable by `Url`\n * @returns {serviceUrl} - ServiceUrl assocated with provided url\n */\n findServiceUrlFromUrl(url) {\n const incomingUrlObj = Url.parse(url);\n const serviceUrls = [\n ...this.serviceGroups.discovery,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.override\n ];\n\n return serviceUrls.find(\n (serviceUrl) => {\n if (incomingUrlObj.hostname ===\n Url.parse(serviceUrl.defaultUrl).hostname) {\n return true;\n }\n\n if (serviceUrl.hosts.find((host) => host.host === incomingUrlObj.hostname)) {\n return true;\n }\n\n return false;\n }\n );\n },\n\n /**\n * Finds an allowed domain that matches a specific url.\n *\n * @param {string} url - The url to match the allowed domains against.\n * @returns {string} - The matching allowed domain.\n */\n findAllowedDomain(url) {\n const urlObj = Url.parse(url);\n\n if (!urlObj.host) {\n return undefined;\n }\n\n return this.allowedDomains.find(\n (allowedDomain) => urlObj.host.includes(allowedDomain)\n );\n },\n\n /**\n * Get a service url from the current services list by name.\n * @param {string} name\n * @param {boolean} priorityHost\n * @param {string} serviceGroup\n * @returns {string}\n */\n get(name, priorityHost, serviceGroup) {\n const serviceUrl = this._getUrl(name, serviceGroup);\n\n return (serviceUrl) ? serviceUrl.get(priorityHost) : undefined;\n },\n\n /**\n * Get the current allowed domains list.\n *\n * @returns {Array<string>} - the current allowed domains list.\n */\n getAllowedDomains() {\n return [...this.allowedDomains];\n },\n\n /**\n * Creates an object where the keys are the service names\n * and the values are the service urls.\n * @param {boolean} priorityHost - use the highest priority if set to `true`\n * @param {string} [serviceGroup]\n * @returns {Record<string, string>}\n */\n list(priorityHost, serviceGroup) {\n const output = {};\n\n const serviceUrls = (typeof serviceGroup === 'string') ?\n this.serviceGroups[serviceGroup] || [] :\n [\n ...this.serviceGroups.discovery,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.override\n ];\n\n if (serviceUrls) {\n serviceUrls.forEach((serviceUrl) => {\n output[serviceUrl.name] = serviceUrl.get(priorityHost);\n });\n }\n\n return output;\n },\n\n /**\n * Mark a priority host service url as failed.\n * This will mark the host associated with the\n * `ServiceUrl` to be removed from the its\n * respective host array, and then return the next\n * viable host from the `ServiceUrls` host array,\n * or the `ServiceUrls` default url if no other priority\n * hosts are available, or if `noPriorityHosts` is set to\n * `true`.\n * @param {string} url\n * @param {boolean} noPriorityHosts\n * @returns {string}\n */\n markFailedUrl(url, noPriorityHosts) {\n const serviceUrl = this._getUrl(Object.keys(this.list()).find(\n (key) => this._getUrl(key).failHost(url)\n ));\n\n if (!serviceUrl) {\n return undefined;\n }\n\n return (noPriorityHosts) ? serviceUrl.get(false) : serviceUrl.get(true);\n },\n\n /**\n * Set the allowed domains for the catalog.\n *\n * @param {Array<string>} allowedDomains - allowed domains to be assigned.\n * @returns {void}\n */\n setAllowedDomains(allowedDomains) {\n this.allowedDomains = [...allowedDomains];\n },\n\n /**\n * Update the current list of `ServiceUrl`s against a provided\n * service hostmap.\n * @emits ServiceCatalog#preauthorized\n * @emits ServiceCatalog#postauthorized\n * @param {string} serviceGroup\n * @param {object} serviceHostmap\n * @returns {Services}\n */\n updateServiceUrls(serviceGroup, serviceHostmap) {\n const currentServiceUrls = this.serviceGroups[serviceGroup];\n\n const unusedUrls = currentServiceUrls.filter(\n (serviceUrl) => serviceHostmap.every(\n (item) => item.name !== serviceUrl.name\n )\n );\n\n this._unloadServiceUrls(serviceGroup, unusedUrls);\n\n serviceHostmap.forEach((serviceObj) => {\n const service = this._getUrl(serviceObj.name, serviceGroup);\n\n if (service) {\n service.defaultUrl = serviceObj.defaultUrl;\n service.hosts = serviceObj.hosts || [];\n }\n else {\n this._loadServiceUrls(serviceGroup, [new ServiceUrl({\n ...serviceObj\n })]);\n }\n });\n\n this.status[serviceGroup].ready = true;\n this.trigger(serviceGroup);\n\n return this;\n },\n\n /**\n * Wait until the service catalog is available,\n * or reject after a timeout of 60 seconds.\n * @param {string} serviceGroup\n * @param {number} [timeout] - in seconds\n * @returns {Promise<void>}\n */\n waitForCatalog(serviceGroup, timeout) {\n return new Promise((resolve, reject) => {\n if (this.status[serviceGroup].ready) {\n resolve();\n }\n\n const timeoutTimer = setTimeout(() => reject(\n new Error(`services: timeout occured while waiting for '${serviceGroup}' catalog to populate`)\n ), (timeout) ? timeout * 1000 : 60000);\n\n this.once(serviceGroup, () => {\n clearTimeout(timeoutTimer);\n resolve();\n });\n });\n }\n});\n/* eslint-enable no-underscore-dangle */\n\nexport default ServiceCatalog;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["hydra","u2c"],"sources":["service-fed-ramp.js"],"sourcesContent":["\nexport default {\n hydra: 'https://api-usgov.webex.com/v1',\n u2c: 'https://u2c.gov.ciscospark.com/u2c/api/v1'\n};\n"],"mappings":";;;;;;;;;eACe;EACbA,KAAK,EAAE,gCADM;EAEbC,GAAG,EAAE;AAFQ,C"}
|