@webex/webex-core 3.7.0 → 3.8.0-next.1

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/README.md CHANGED
@@ -32,6 +32,7 @@ The following environment variables are used by this plugin:
32
32
 
33
33
  - `HYDRA_SERVICE_URL` - Stores the public hydra api url for managing Webex resources.
34
34
  - `U2C_SERVICE_URL` - Stores the service catalog collecting url, typically the **U2C** service.
35
+ - `SQDISCOVERY_SERVICE_URL` - Stores the URL for client region information, such as country code and timezone
35
36
 
36
37
  ### Configuration
37
38
 
@@ -43,7 +44,8 @@ const webex = new Webex({
43
44
  services: {
44
45
  // Services that are available before catalog retrieval.
45
46
  discovery: {
46
- hydra: 'https://api.ciscospark.com/v1'
47
+ hydra: 'https://api.ciscospark.com/v1',
48
+ sqdiscovery: 'https://ds.ciscospark.com/v1/region'
47
49
  },
48
50
 
49
51
  // Services that have a persistant host, typically for testing.
@@ -65,6 +67,7 @@ The default configuration includes the following service urls:
65
67
 
66
68
  - `U2C_SERVICE_URL` [ **U2C** ] - `https://u2c.wbx2.com/u2c/api/v1`
67
69
  - `HYDRA_SERVICE_URL` [ **Hydra** ] - `https://api.ciscospark.com/v1`
70
+ - `SQDISCOVERY_SERVICE_URL` [ **SQDISCOVERY** ] - `https://ds.ciscospark.com/v1/region`
68
71
 
69
72
  ## Maintainers
70
73
 
package/dist/config.js CHANGED
@@ -36,6 +36,10 @@ var _default = exports.default = {
36
36
  * @type {string}
37
37
  */
38
38
  hydra: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1',
39
+ /**
40
+ * load balanced region info url
41
+ */
42
+ sqdiscovery: process.env.SQDISCOVERY_SERVICE_URL || 'https://ds.ciscospark.com/v1/region',
39
43
  /**
40
44
  * The u2c discovery url
41
45
  *
@@ -1 +1 @@
1
- {"version":3,"names":["_storage","require","_credentialsConfig","_interopRequireDefault","_default","exports","default","maxAppLevelRedirects","maxLocusRedirects","maxAuthenticationReplays","maxReconnectAttempts","onBeforeLogout","trackingIdPrefix","trackingIdSuffix","AlternateLogger","undefined","credentials","CredentialsConfig","fedramp","process","env","ENABLE_FEDRAMP","services","discovery","hydra","HYDRA_SERVICE_URL","u2c","U2C_SERVICE_URL","validateDomains","servicesNotNeedValidation","allowedDomains","device","preDiscoveryServices","hydraServiceUrl","metrics","type","payloadTransformer","predicates","transforms","storage","boundedAdapter","MemoryStoreAdapter","unboundedAdapter"],"sources":["config.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint camelcase: [0] */\n\nimport {MemoryStoreAdapter} from './lib/storage';\nimport CredentialsConfig from './credentials-config';\n\nexport default {\n maxAppLevelRedirects: 10,\n maxLocusRedirects: 5,\n maxAuthenticationReplays: 1,\n maxReconnectAttempts: 1,\n onBeforeLogout: [],\n trackingIdPrefix: 'webex-js-sdk',\n trackingIdSuffix: '',\n AlternateLogger: undefined,\n credentials: new CredentialsConfig(),\n fedramp: process.env.ENABLE_FEDRAMP || false,\n services: {\n /**\n * A list of services that are available prior to catalog collection.\n *\n * @type {Object}\n */\n discovery: {\n /**\n * The hydra discovery url.\n *\n * @type {string}\n */\n hydra: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1',\n\n /**\n * The u2c discovery url\n *\n * @type {string}\n */\n u2c: process.env.U2C_SERVICE_URL || 'https://u2c.wbx2.com/u2c/api/v1',\n },\n\n /**\n * When true, considers all urls in `allowedDomains` as safe for auth tokens\n *\n * @type {boolean}\n */\n validateDomains: true,\n\n /**\n * services that don't need auth validation\n */\n\n servicesNotNeedValidation: ['webex-appapi-service'],\n\n /**\n * Contains a list of allowed domain host addresses.\n *\n * @type {Array<string>}\n */\n allowedDomains: [],\n },\n device: {\n preDiscoveryServices: {\n hydra: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1',\n hydraServiceUrl: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1',\n },\n validateDomains: true,\n },\n metrics: {\n type: ['behavioral', 'operational'],\n },\n payloadTransformer: {\n predicates: [],\n transforms: [],\n },\n storage: {\n boundedAdapter: MemoryStoreAdapter,\n unboundedAdapter: MemoryStoreAdapter,\n },\n};\n"],"mappings":";;;;;;;;AAMA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAPA;AACA;AACA;AAEA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAKe;EACbC,oBAAoB,EAAE,EAAE;EACxBC,iBAAiB,EAAE,CAAC;EACpBC,wBAAwB,EAAE,CAAC;EAC3BC,oBAAoB,EAAE,CAAC;EACvBC,cAAc,EAAE,EAAE;EAClBC,gBAAgB,EAAE,cAAc;EAChCC,gBAAgB,EAAE,EAAE;EACpBC,eAAe,EAAEC,SAAS;EAC1BC,WAAW,EAAE,IAAIC,0BAAiB,CAAC,CAAC;EACpCC,OAAO,EAAEC,OAAO,CAACC,GAAG,CAACC,cAAc,IAAI,KAAK;EAC5CC,QAAQ,EAAE;IACR;AACJ;AACA;AACA;AACA;IACIC,SAAS,EAAE;MACT;AACN;AACA;AACA;AACA;MACMC,KAAK,EAAEL,OAAO,CAACC,GAAG,CAACK,iBAAiB,IAAI,+BAA+B;MAEvE;AACN;AACA;AACA;AACA;MACMC,GAAG,EAAEP,OAAO,CAACC,GAAG,CAACO,eAAe,IAAI;IACtC,CAAC;IAED;AACJ;AACA;AACA;AACA;IACIC,eAAe,EAAE,IAAI;IAErB;AACJ;AACA;;IAEIC,yBAAyB,EAAE,CAAC,sBAAsB,CAAC;IAEnD;AACJ;AACA;AACA;AACA;IACIC,cAAc,EAAE;EAClB,CAAC;EACDC,MAAM,EAAE;IACNC,oBAAoB,EAAE;MACpBR,KAAK,EAAEL,OAAO,CAACC,GAAG,CAACK,iBAAiB,IAAI,+BAA+B;MACvEQ,eAAe,EAAEd,OAAO,CAACC,GAAG,CAACK,iBAAiB,IAAI;IACpD,CAAC;IACDG,eAAe,EAAE;EACnB,CAAC;EACDM,OAAO,EAAE;IACPC,IAAI,EAAE,CAAC,YAAY,EAAE,aAAa;EACpC,CAAC;EACDC,kBAAkB,EAAE;IAClBC,UAAU,EAAE,EAAE;IACdC,UAAU,EAAE;EACd,CAAC;EACDC,OAAO,EAAE;IACPC,cAAc,EAAEC,2BAAkB;IAClCC,gBAAgB,EAAED;EACpB;AACF,CAAC"}
1
+ {"version":3,"names":["_storage","require","_credentialsConfig","_interopRequireDefault","_default","exports","default","maxAppLevelRedirects","maxLocusRedirects","maxAuthenticationReplays","maxReconnectAttempts","onBeforeLogout","trackingIdPrefix","trackingIdSuffix","AlternateLogger","undefined","credentials","CredentialsConfig","fedramp","process","env","ENABLE_FEDRAMP","services","discovery","hydra","HYDRA_SERVICE_URL","sqdiscovery","SQDISCOVERY_SERVICE_URL","u2c","U2C_SERVICE_URL","validateDomains","servicesNotNeedValidation","allowedDomains","device","preDiscoveryServices","hydraServiceUrl","metrics","type","payloadTransformer","predicates","transforms","storage","boundedAdapter","MemoryStoreAdapter","unboundedAdapter"],"sources":["config.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint camelcase: [0] */\n\nimport {MemoryStoreAdapter} from './lib/storage';\nimport CredentialsConfig from './credentials-config';\n\nexport default {\n maxAppLevelRedirects: 10,\n maxLocusRedirects: 5,\n maxAuthenticationReplays: 1,\n maxReconnectAttempts: 1,\n onBeforeLogout: [],\n trackingIdPrefix: 'webex-js-sdk',\n trackingIdSuffix: '',\n AlternateLogger: undefined,\n credentials: new CredentialsConfig(),\n fedramp: process.env.ENABLE_FEDRAMP || false,\n services: {\n /**\n * A list of services that are available prior to catalog collection.\n *\n * @type {Object}\n */\n discovery: {\n /**\n * The hydra discovery url.\n *\n * @type {string}\n */\n hydra: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1',\n\n /**\n * load balanced region info url\n */\n sqdiscovery: process.env.SQDISCOVERY_SERVICE_URL || 'https://ds.ciscospark.com/v1/region',\n\n /**\n * The u2c discovery url\n *\n * @type {string}\n */\n u2c: process.env.U2C_SERVICE_URL || 'https://u2c.wbx2.com/u2c/api/v1',\n },\n\n /**\n * When true, considers all urls in `allowedDomains` as safe for auth tokens\n *\n * @type {boolean}\n */\n validateDomains: true,\n\n /**\n * services that don't need auth validation\n */\n\n servicesNotNeedValidation: ['webex-appapi-service'],\n\n /**\n * Contains a list of allowed domain host addresses.\n *\n * @type {Array<string>}\n */\n allowedDomains: [],\n },\n device: {\n preDiscoveryServices: {\n hydra: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1',\n hydraServiceUrl: process.env.HYDRA_SERVICE_URL || 'https://api.ciscospark.com/v1',\n },\n validateDomains: true,\n },\n metrics: {\n type: ['behavioral', 'operational'],\n },\n payloadTransformer: {\n predicates: [],\n transforms: [],\n },\n storage: {\n boundedAdapter: MemoryStoreAdapter,\n unboundedAdapter: MemoryStoreAdapter,\n },\n};\n"],"mappings":";;;;;;;;AAMA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAPA;AACA;AACA;AAEA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAKe;EACbC,oBAAoB,EAAE,EAAE;EACxBC,iBAAiB,EAAE,CAAC;EACpBC,wBAAwB,EAAE,CAAC;EAC3BC,oBAAoB,EAAE,CAAC;EACvBC,cAAc,EAAE,EAAE;EAClBC,gBAAgB,EAAE,cAAc;EAChCC,gBAAgB,EAAE,EAAE;EACpBC,eAAe,EAAEC,SAAS;EAC1BC,WAAW,EAAE,IAAIC,0BAAiB,CAAC,CAAC;EACpCC,OAAO,EAAEC,OAAO,CAACC,GAAG,CAACC,cAAc,IAAI,KAAK;EAC5CC,QAAQ,EAAE;IACR;AACJ;AACA;AACA;AACA;IACIC,SAAS,EAAE;MACT;AACN;AACA;AACA;AACA;MACMC,KAAK,EAAEL,OAAO,CAACC,GAAG,CAACK,iBAAiB,IAAI,+BAA+B;MAEvE;AACN;AACA;MACMC,WAAW,EAAEP,OAAO,CAACC,GAAG,CAACO,uBAAuB,IAAI,qCAAqC;MAEzF;AACN;AACA;AACA;AACA;MACMC,GAAG,EAAET,OAAO,CAACC,GAAG,CAACS,eAAe,IAAI;IACtC,CAAC;IAED;AACJ;AACA;AACA;AACA;IACIC,eAAe,EAAE,IAAI;IAErB;AACJ;AACA;;IAEIC,yBAAyB,EAAE,CAAC,sBAAsB,CAAC;IAEnD;AACJ;AACA;AACA;AACA;IACIC,cAAc,EAAE;EAClB,CAAC;EACDC,MAAM,EAAE;IACNC,oBAAoB,EAAE;MACpBV,KAAK,EAAEL,OAAO,CAACC,GAAG,CAACK,iBAAiB,IAAI,+BAA+B;MACvEU,eAAe,EAAEhB,OAAO,CAACC,GAAG,CAACK,iBAAiB,IAAI;IACpD,CAAC;IACDK,eAAe,EAAE;EACnB,CAAC;EACDM,OAAO,EAAE;IACPC,IAAI,EAAE,CAAC,YAAY,EAAE,aAAa;EACpC,CAAC;EACDC,kBAAkB,EAAE;IAClBC,UAAU,EAAE,EAAE;IACdC,UAAU,EAAE;EACd,CAAC;EACDC,OAAO,EAAE;IACPC,cAAc,EAAEC,2BAAkB;IAClCC,gBAAgB,EAAED;EACpB;AACF,CAAC"}
@@ -286,7 +286,7 @@ var Batcher = _webexPlugin.default.extend({
286
286
  fingerprintResponse: function fingerprintResponse(item) {
287
287
  throw new Error('fingerprintResponse() must be implemented');
288
288
  },
289
- version: "3.7.0"
289
+ version: "3.8.0-next.1"
290
290
  });
291
291
  var _default2 = exports.default = Batcher;
292
292
  //# sourceMappingURL=batcher.js.map
@@ -558,7 +558,7 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
558
558
  this.refresh();
559
559
  }
560
560
  },
561
- version: "3.7.0"
561
+ version: "3.8.0-next.1"
562
562
  }, ((0, _applyDecoratedDescriptor2.default)(_obj, "getUserToken", [_dec, _dec2], (0, _getOwnPropertyDescriptor.default)(_obj, "getUserToken"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "initialize", [_dec3], (0, _getOwnPropertyDescriptor.default)(_obj, "initialize"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "invalidate", [_common.oneFlight, _dec4], (0, _getOwnPropertyDescriptor.default)(_obj, "invalidate"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "refresh", [_common.oneFlight, _dec5, _dec6], (0, _getOwnPropertyDescriptor.default)(_obj, "refresh"), _obj)), _obj)));
563
563
  var _default = exports.default = Credentials;
564
564
  //# sourceMappingURL=credentials.js.map
@@ -532,7 +532,7 @@ var Token = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
532
532
  return res.body;
533
533
  });
534
534
  },
535
- version: "3.7.0"
535
+ version: "3.8.0-next.1"
536
536
  }, ((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)));
537
537
  var _default = exports.default = Token;
538
538
  //# sourceMappingURL=token.js.map
@@ -254,33 +254,78 @@ var ServiceCatalog = _ampersandState.default.extend({
254
254
  */
255
255
  findServiceUrlFromUrl: function findServiceUrlFromUrl(url) {
256
256
  var serviceUrls = [].concat((0, _toConsumableArray2.default)(this.serviceGroups.discovery), (0, _toConsumableArray2.default)(this.serviceGroups.preauth), (0, _toConsumableArray2.default)(this.serviceGroups.signin), (0, _toConsumableArray2.default)(this.serviceGroups.postauth), (0, _toConsumableArray2.default)(this.serviceGroups.override));
257
- return serviceUrls.find(function (serviceUrl) {
258
- // Check to see if the URL we are checking starts with the default URL
259
- if (url.startsWith(serviceUrl.defaultUrl)) {
260
- return true;
261
- }
257
+ var inputUrl;
258
+ try {
259
+ inputUrl = new URL(url);
260
+ } catch (error) {
261
+ // If URL parsing fails, return false
262
+ return false;
263
+ }
264
+ var exactMatch = null;
265
+ var anyMatch = null;
266
+ var _iterator4 = _createForOfIteratorHelper(serviceUrls),
267
+ _step4;
268
+ try {
269
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
270
+ var serviceUrl = _step4.value;
271
+ var defaultServiceUrl = void 0;
272
+ try {
273
+ defaultServiceUrl = new URL(serviceUrl.defaultUrl);
274
+ } catch (error) {
275
+ // If URL parsing fails for the default URL, skip this service URL
262
276
 
263
- // If not, we check to see if the alternate URLs match
264
- // These are made by swapping the host of the default URL
265
- // with that of an alternate host
266
- var _iterator4 = _createForOfIteratorHelper(serviceUrl.hosts),
267
- _step4;
268
- try {
269
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
270
- var host = _step4.value;
271
- var alternateUrl = new URL(serviceUrl.defaultUrl);
272
- alternateUrl.host = host.host;
273
- if (url.startsWith(alternateUrl.toString())) {
274
- return true;
277
+ // eslint-disable-next-line no-continue
278
+ continue;
279
+ }
280
+ var defaultHostname = defaultServiceUrl.hostname;
281
+
282
+ // Check if the hostname matches the default URL's hostname
283
+ if (inputUrl.hostname === defaultHostname) {
284
+ if (inputUrl.protocol === defaultServiceUrl.protocol) {
285
+ exactMatch = serviceUrl;
286
+ break;
287
+ } else {
288
+ anyMatch = serviceUrl;
275
289
  }
276
290
  }
277
- } catch (err) {
278
- _iterator4.e(err);
279
- } finally {
280
- _iterator4.f();
291
+
292
+ // Check alternate hostnames
293
+ var _iterator5 = _createForOfIteratorHelper(serviceUrl.hosts),
294
+ _step5;
295
+ try {
296
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
297
+ var host = _step5.value;
298
+ try {
299
+ var alternateUrl = new URL(serviceUrl.defaultUrl);
300
+ alternateUrl.hostname = host.host;
301
+ if (inputUrl.hostname === alternateUrl.hostname) {
302
+ if (inputUrl.protocol === alternateUrl.protocol) {
303
+ exactMatch = serviceUrl;
304
+ break;
305
+ } else {
306
+ anyMatch = serviceUrl;
307
+ }
308
+ }
309
+ } catch (error) {
310
+ // If URL parsing fails for the alternate URL, skip this host
311
+ // Just let the loop proceed to the next iteration
312
+ }
313
+ }
314
+ } catch (err) {
315
+ _iterator5.e(err);
316
+ } finally {
317
+ _iterator5.f();
318
+ }
319
+ if (exactMatch) {
320
+ break;
321
+ }
281
322
  }
282
- return false;
283
- });
323
+ } catch (err) {
324
+ _iterator4.e(err);
325
+ } finally {
326
+ _iterator4.f();
327
+ }
328
+ return exactMatch || anyMatch || false;
284
329
  },
285
330
  /**
286
331
  * Finds an allowed domain that matches a specific url.
@@ -1 +1 @@
1
- {"version":3,"names":["_url","_interopRequireDefault","require","_ampersandState","_lodash","_serviceUrl","ownKeys","e","r","t","_Object$keys3","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createForOfIteratorHelper","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","i","F","s","n","done","value","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","ServiceCatalog","AmpState","extend","namespace","props","serviceGroups","discovery","override","preauth","postauth","signin","status","ready","collecting","isReady","allowedDomains","_getUrl","serviceGroup","serviceUrls","concat","_toConsumableArray2","find","serviceUrl","_listServiceUrls","_loadServiceUrls","services","_this","existingService","service","_unloadServiceUrls","_this2","splice","indexOf","clean","findClusterId","url","incomingUrlObj","Url","parse","serviceUrlObj","_i","_Object$keys","_keys","key","_iterator","_step","defaultUrl","_iterator2","hosts","_step2","host","hostname","id","_iterator3","_step3","homeCluster","undefined","findServiceFromClusterId","_ref","clusterId","_ref$priorityHost","priorityHost","identifiedServiceUrl","get","findServiceUrlFromUrl","startsWith","_iterator4","_step4","alternateUrl","URL","findAllowedDomain","urlObj","allowedDomain","includes","getAllowedDomains","list","output","markFailedUrl","noPriorityHosts","_this3","failHost","setAllowedDomains","addAllowedDomains","newAllowedDomains","union","updateServiceUrls","serviceHostmap","_this4","currentServiceUrls","unusedUrls","every","item","serviceObj","ServiceUrl","trigger","waitForCatalog","timeout","_this5","_promise","resolve","reject","validatedTimeout","timeoutTimer","setTimeout","Error","once","clearTimeout","_default","exports"],"sources":["service-catalog.js"],"sourcesContent":["import Url from 'url';\n\nimport AmpState from 'ampersand-state';\n\nimport {union} from 'lodash';\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: [\n 'object',\n true,\n () => ({\n discovery: [],\n override: [],\n preauth: [],\n postauth: [],\n signin: [],\n }),\n ],\n status: [\n 'object',\n true,\n () => ({\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 ],\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 =\n 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),\n 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 && 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 =\n 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 const identifiedServiceUrl = serviceUrls.find((serviceUrl) =>\n serviceUrl.hosts.find((host) => host.id === clusterId)\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 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((serviceUrl) => {\n // Check to see if the URL we are checking starts with the default URL\n if (url.startsWith(serviceUrl.defaultUrl)) {\n return true;\n }\n\n // If not, we check to see if the alternate URLs match\n // These are made by swapping the host of the default URL\n // with that of an alternate host\n for (const host of serviceUrl.hosts) {\n const alternateUrl = new URL(serviceUrl.defaultUrl);\n alternateUrl.host = host.host;\n\n if (url.startsWith(alternateUrl.toString())) {\n return true;\n }\n }\n\n return false;\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((allowedDomain) => urlObj.host.includes(allowedDomain));\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 =\n 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(\n Object.keys(this.list()).find((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 *\n * @param {Array<string>} newAllowedDomains - new allowed domains to add to existing set of allowed domains\n * @returns {void}\n */\n addAllowedDomains(newAllowedDomains) {\n this.allowedDomains = union(this.allowedDomains, newAllowedDomains);\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((serviceUrl) =>\n serviceHostmap.every((item) => item.name !== serviceUrl.name)\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 } else {\n this._loadServiceUrls(serviceGroup, [\n new ServiceUrl({\n ...serviceObj,\n }),\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 validatedTimeout = typeof timeout === 'number' && timeout >= 0 ? timeout : 60;\n\n const timeoutTimer = setTimeout(\n () =>\n reject(\n new Error(\n `services: timeout occured while waiting for '${serviceGroup}' catalog to populate`\n )\n ),\n validatedTimeout * 1000\n );\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
+ {"version":3,"names":["_url","_interopRequireDefault","require","_ampersandState","_lodash","_serviceUrl","ownKeys","e","r","t","_Object$keys3","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createForOfIteratorHelper","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","i","F","s","n","done","value","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","ServiceCatalog","AmpState","extend","namespace","props","serviceGroups","discovery","override","preauth","postauth","signin","status","ready","collecting","isReady","allowedDomains","_getUrl","serviceGroup","serviceUrls","concat","_toConsumableArray2","find","serviceUrl","_listServiceUrls","_loadServiceUrls","services","_this","existingService","service","_unloadServiceUrls","_this2","splice","indexOf","clean","findClusterId","url","incomingUrlObj","Url","parse","serviceUrlObj","_i","_Object$keys","_keys","key","_iterator","_step","defaultUrl","_iterator2","hosts","_step2","host","hostname","id","_iterator3","_step3","homeCluster","undefined","findServiceFromClusterId","_ref","clusterId","_ref$priorityHost","priorityHost","identifiedServiceUrl","get","findServiceUrlFromUrl","inputUrl","URL","error","exactMatch","anyMatch","_iterator4","_step4","defaultServiceUrl","defaultHostname","protocol","_iterator5","_step5","alternateUrl","findAllowedDomain","urlObj","allowedDomain","includes","getAllowedDomains","list","output","markFailedUrl","noPriorityHosts","_this3","failHost","setAllowedDomains","addAllowedDomains","newAllowedDomains","union","updateServiceUrls","serviceHostmap","_this4","currentServiceUrls","unusedUrls","every","item","serviceObj","ServiceUrl","trigger","waitForCatalog","timeout","_this5","_promise","resolve","reject","validatedTimeout","timeoutTimer","setTimeout","Error","once","clearTimeout","_default","exports"],"sources":["service-catalog.js"],"sourcesContent":["import Url from 'url';\n\nimport AmpState from 'ampersand-state';\n\nimport {union} from 'lodash';\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: [\n 'object',\n true,\n () => ({\n discovery: [],\n override: [],\n preauth: [],\n postauth: [],\n signin: [],\n }),\n ],\n status: [\n 'object',\n true,\n () => ({\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 ],\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 =\n 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),\n 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 && 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 =\n 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 const identifiedServiceUrl = serviceUrls.find((serviceUrl) =>\n serviceUrl.hosts.find((host) => host.id === clusterId)\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 serviceUrls = [\n ...this.serviceGroups.discovery,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.override,\n ];\n\n let inputUrl;\n try {\n inputUrl = new URL(url);\n } catch (error) {\n // If URL parsing fails, return false\n return false;\n }\n\n let exactMatch = null;\n let anyMatch = null;\n\n for (const serviceUrl of serviceUrls) {\n let defaultServiceUrl;\n try {\n defaultServiceUrl = new URL(serviceUrl.defaultUrl);\n } catch (error) {\n // If URL parsing fails for the default URL, skip this service URL\n\n // eslint-disable-next-line no-continue\n continue;\n }\n\n const defaultHostname = defaultServiceUrl.hostname;\n\n // Check if the hostname matches the default URL's hostname\n if (inputUrl.hostname === defaultHostname) {\n if (inputUrl.protocol === defaultServiceUrl.protocol) {\n exactMatch = serviceUrl;\n break;\n } else {\n anyMatch = serviceUrl;\n }\n }\n\n // Check alternate hostnames\n for (const host of serviceUrl.hosts) {\n try {\n const alternateUrl = new URL(serviceUrl.defaultUrl);\n alternateUrl.hostname = host.host;\n\n if (inputUrl.hostname === alternateUrl.hostname) {\n if (inputUrl.protocol === alternateUrl.protocol) {\n exactMatch = serviceUrl;\n break;\n } else {\n anyMatch = serviceUrl;\n }\n }\n } catch (error) {\n // If URL parsing fails for the alternate URL, skip this host\n // Just let the loop proceed to the next iteration\n }\n }\n\n if (exactMatch) {\n break;\n }\n }\n\n return exactMatch || anyMatch || false;\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((allowedDomain) => urlObj.host.includes(allowedDomain));\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 =\n 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(\n Object.keys(this.list()).find((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 *\n * @param {Array<string>} newAllowedDomains - new allowed domains to add to existing set of allowed domains\n * @returns {void}\n */\n addAllowedDomains(newAllowedDomains) {\n this.allowedDomains = union(this.allowedDomains, newAllowedDomains);\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((serviceUrl) =>\n serviceHostmap.every((item) => item.name !== serviceUrl.name)\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 } else {\n this._loadServiceUrls(serviceGroup, [\n new ServiceUrl({\n ...serviceObj,\n }),\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 validatedTimeout = typeof timeout === 'number' && timeout >= 0 ? timeout : 60;\n\n const timeoutTimer = setTimeout(\n () =>\n reject(\n new Error(\n `services: timeout occured while waiting for '${serviceGroup}' catalog to populate`\n )\n ),\n validatedTimeout * 1000\n );\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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"}
@@ -7,6 +7,7 @@ _Object$defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _default = exports.default = {
9
9
  hydra: 'https://api-usgov.webex.com/v1',
10
- u2c: 'https://u2c.gov.ciscospark.com/u2c/api/v1'
10
+ u2c: 'https://u2c.gov.ciscospark.com/u2c/api/v1',
11
+ sqdiscovery: 'https://ds.ciscospark.com/v1/region' // TODO: fedramp load balanced URL? this has been here for years as of now but now explicitly done
11
12
  };
12
13
  //# sourceMappingURL=service-fed-ramp.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["hydra","u2c"],"sources":["service-fed-ramp.js"],"sourcesContent":["export default {\n hydra: 'https://api-usgov.webex.com/v1',\n u2c: 'https://u2c.gov.ciscospark.com/u2c/api/v1',\n};\n"],"mappings":";;;;;;;iCAAe;EACbA,KAAK,EAAE,gCAAgC;EACvCC,GAAG,EAAE;AACP,CAAC"}
1
+ {"version":3,"names":["hydra","u2c","sqdiscovery"],"sources":["service-fed-ramp.js"],"sourcesContent":["export default {\n hydra: 'https://api-usgov.webex.com/v1',\n u2c: 'https://u2c.gov.ciscospark.com/u2c/api/v1',\n sqdiscovery: 'https://ds.ciscospark.com/v1/region', // TODO: fedramp load balanced URL? this has been here for years as of now but now explicitly done\n};\n"],"mappings":";;;;;;;iCAAe;EACbA,KAAK,EAAE,gCAAgC;EACvCC,GAAG,EAAE,2CAA2C;EAChDC,WAAW,EAAE,qCAAqC,CAAE;AACtD,CAAC"}
@@ -416,8 +416,9 @@ var Services = _webexPlugin.default.extend({
416
416
  */
417
417
  fetchClientRegionInfo: function fetchClientRegionInfo() {
418
418
  var _this4 = this;
419
+ var services = this.webex.config.services;
419
420
  return this.request({
420
- uri: 'https://ds.ciscospark.com/v1/region',
421
+ uri: services.discovery.sqdiscovery,
421
422
  addAuthHeader: false,
422
423
  headers: {
423
424
  'spark-user-agent': null
@@ -493,6 +494,17 @@ var Services = _webexPlugin.default.extend({
493
494
  return _promise.default.reject(error);
494
495
  });
495
496
  },
497
+ /**
498
+ * Updates a given service group i.e. preauth, signin, postauth with a new hostmap.
499
+ * @param {string} serviceGroup - preauth, signin, postauth
500
+ * @param {object} hostMap - The new hostmap to update the service group with.
501
+ * @returns {Promise<void>}
502
+ */
503
+ updateCatalog: function updateCatalog(serviceGroup, hostMap) {
504
+ var catalog = this._getCatalog();
505
+ var serviceHostMap = this._formatReceivedHostmap(hostMap);
506
+ return catalog.updateServiceUrls(serviceGroup, serviceHostMap);
507
+ },
496
508
  /**
497
509
  * simplified method to update the preauth catalog via email
498
510
  *
@@ -1055,7 +1067,7 @@ var Services = _webexPlugin.default.extend({
1055
1067
  }
1056
1068
  });
1057
1069
  },
1058
- version: "3.7.0"
1070
+ version: "3.8.0-next.1"
1059
1071
  });
1060
1072
  /* eslint-enable no-underscore-dangle */
1061
1073
  var _default = exports.default = Services;