@webex/webex-core 3.5.0-next.9 → 3.5.0-wxcc.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/dist/index.js CHANGED
@@ -278,12 +278,6 @@ _Object$defineProperty(exports, "waitForValue", {
278
278
  return _storage.waitForValue;
279
279
  }
280
280
  });
281
- _Object$defineProperty(exports, "webexTrackingIdSequenceNumbers", {
282
- enumerable: true,
283
- get: function get() {
284
- return _webexTrackingId.sequenceNumbers;
285
- }
286
- });
287
281
  require("./plugins/logger");
288
282
  var _credentials = require("./lib/credentials");
289
283
  var _services = require("./lib/services");
@@ -301,7 +295,7 @@ var _requestEvent = _interopRequireDefault(require("./interceptors/request-event
301
295
  var _requestLogger = _interopRequireDefault(require("./interceptors/request-logger"));
302
296
  var _requestTiming = _interopRequireDefault(require("./interceptors/request-timing"));
303
297
  var _userAgent = _interopRequireDefault(require("./interceptors/user-agent"));
304
- var _webexTrackingId = _interopRequireWildcard(require("./interceptors/webex-tracking-id"));
298
+ var _webexTrackingId = _interopRequireDefault(require("./interceptors/webex-tracking-id"));
305
299
  var _webexUserAgent = _interopRequireDefault(require("./interceptors/webex-user-agent"));
306
300
  var _rateLimit = _interopRequireDefault(require("./interceptors/rate-limit"));
307
301
  var _embargo = _interopRequireDefault(require("./interceptors/embargo"));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["require","_credentials","_services","_storage","_webexCore","_interopRequireWildcard","_webexHttpError","_interopRequireDefault","_statelessWebexPlugin","_webexPlugin","_auth","_networkTiming","_payloadTransformer","_redirect","_responseLogger","_requestEvent","_requestLogger","_requestTiming","_userAgent","_webexTrackingId","_webexUserAgent","_rateLimit","_embargo","_defaultOptions","_batcher","_page","_config","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n *\n * Services is currently a part of webex-core due to how the contents of\n * the original internal-plugin-services needed to be accessed when webex-core\n * is initialized. As a plugin outside of webex-core, it would initialize after\n * credentials, causing all requests prior to its initialization to fail\n * federation requirements, and instead send requests to the environmentally-\n * assigned urls.\n */\n\nimport './plugins/logger';\nimport './lib/credentials';\nimport './lib/services';\n\nexport {Credentials, filterScope, grantErrors, sortScope, Token} from './lib/credentials';\n\nexport {\n constants as serviceConstants,\n ServiceCatalog,\n ServiceRegistry,\n ServiceState,\n ServiceInterceptor,\n ServerErrorInterceptor,\n Services,\n ServiceHost,\n ServiceUrl,\n HostMapInterceptor,\n} from './lib/services';\n\nexport {\n makeWebexStore,\n makeWebexPluginStore,\n MemoryStoreAdapter,\n NotFoundError,\n persist,\n StorageError,\n waitForValue,\n} from './lib/storage';\n\nexport {default, registerPlugin, registerInternalPlugin} from './webex-core';\n\nexport {default as WebexHttpError} from './lib/webex-http-error';\nexport {default as StatelessWebexPlugin} from './lib/stateless-webex-plugin';\nexport {default as WebexPlugin} from './lib/webex-plugin';\nexport {default as AuthInterceptor} from './interceptors/auth';\nexport {default as NetworkTimingInterceptor} from './interceptors/network-timing';\nexport {default as PayloadTransformerInterceptor} from './interceptors/payload-transformer';\nexport {default as RedirectInterceptor} from './interceptors/redirect';\nexport {default as ResponseLoggerInterceptor} from './interceptors/response-logger';\nexport {default as RequestEventInterceptor} from './interceptors/request-event';\nexport {default as RequestLoggerInterceptor} from './interceptors/request-logger';\nexport {default as RequestTimingInterceptor} from './interceptors/request-timing';\nexport {default as UserAgentInterceptor} from './interceptors/user-agent';\nexport {default as WebexTrackingIdInterceptor} from './interceptors/webex-tracking-id';\nexport {sequenceNumbers as webexTrackingIdSequenceNumbers} from './interceptors/webex-tracking-id';\nexport {default as WebexUserAgentInterceptor} from './interceptors/webex-user-agent';\nexport {default as RateLimitInterceptor} from './interceptors/rate-limit';\nexport {default as EmbargoInterceptor} from './interceptors/embargo';\nexport {default as DefaultOptionsInterceptor} from './interceptors/default-options';\n\nexport {default as Batcher} from './lib/batcher';\nexport {default as Page} from './lib/page';\nexport {default as config} from './config';\n"],"mappings":"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"}
1
+ {"version":3,"names":["require","_credentials","_services","_storage","_webexCore","_interopRequireWildcard","_webexHttpError","_interopRequireDefault","_statelessWebexPlugin","_webexPlugin","_auth","_networkTiming","_payloadTransformer","_redirect","_responseLogger","_requestEvent","_requestLogger","_requestTiming","_userAgent","_webexTrackingId","_webexUserAgent","_rateLimit","_embargo","_defaultOptions","_batcher","_page","_config","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n *\n * Services is currently a part of webex-core due to how the contents of\n * the original internal-plugin-services needed to be accessed when webex-core\n * is initialized. As a plugin outside of webex-core, it would initialize after\n * credentials, causing all requests prior to its initialization to fail\n * federation requirements, and instead send requests to the environmentally-\n * assigned urls.\n */\n\nimport './plugins/logger';\nimport './lib/credentials';\nimport './lib/services';\n\nexport {Credentials, filterScope, grantErrors, sortScope, Token} from './lib/credentials';\n\nexport {\n constants as serviceConstants,\n ServiceCatalog,\n ServiceRegistry,\n ServiceState,\n ServiceInterceptor,\n ServerErrorInterceptor,\n Services,\n ServiceHost,\n ServiceUrl,\n HostMapInterceptor,\n} from './lib/services';\n\nexport {\n makeWebexStore,\n makeWebexPluginStore,\n MemoryStoreAdapter,\n NotFoundError,\n persist,\n StorageError,\n waitForValue,\n} from './lib/storage';\n\nexport {default, registerPlugin, registerInternalPlugin} from './webex-core';\n\nexport {default as WebexHttpError} from './lib/webex-http-error';\nexport {default as StatelessWebexPlugin} from './lib/stateless-webex-plugin';\nexport {default as WebexPlugin} from './lib/webex-plugin';\nexport {default as AuthInterceptor} from './interceptors/auth';\nexport {default as NetworkTimingInterceptor} from './interceptors/network-timing';\nexport {default as PayloadTransformerInterceptor} from './interceptors/payload-transformer';\nexport {default as RedirectInterceptor} from './interceptors/redirect';\nexport {default as ResponseLoggerInterceptor} from './interceptors/response-logger';\nexport {default as RequestEventInterceptor} from './interceptors/request-event';\nexport {default as RequestLoggerInterceptor} from './interceptors/request-logger';\nexport {default as RequestTimingInterceptor} from './interceptors/request-timing';\nexport {default as UserAgentInterceptor} from './interceptors/user-agent';\nexport {default as WebexTrackingIdInterceptor} from './interceptors/webex-tracking-id';\nexport {default as WebexUserAgentInterceptor} from './interceptors/webex-user-agent';\nexport {default as RateLimitInterceptor} from './interceptors/rate-limit';\nexport {default as EmbargoInterceptor} from './interceptors/embargo';\nexport {default as DefaultOptionsInterceptor} from './interceptors/default-options';\n\nexport {default as Batcher} from './lib/batcher';\nexport {default as Page} from './lib/page';\nexport {default as config} from './config';\n"],"mappings":"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"}
@@ -6,20 +6,20 @@ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequ
6
6
  _Object$defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
- exports.sequenceNumbers = exports.default = void 0;
9
+ exports.default = void 0;
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
11
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
12
12
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
13
13
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
14
14
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
15
- var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
15
+ var _weakMap = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/weak-map"));
16
16
  var _deleteProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/delete-property"));
17
17
  var _httpCore = require("@webex/http-core");
18
18
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
19
19
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /*!
20
20
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
21
21
  */
22
- var sequenceNumbers = exports.sequenceNumbers = new _map.default();
22
+ var sequenceNumbers = new _weakMap.default();
23
23
 
24
24
  /**
25
25
  * @class
@@ -1 +1 @@
1
- {"version":3,"names":["_httpCore","require","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","sequenceNumbers","exports","_map","WebexTrackingIdInterceptor","_Interceptor","_inherits2","_super","_classCallCheck2","_createClass2","key","get","sq","set","value","onRequest","options","headers","trackingid","_deleteProperty","requiresTrackingId","concat","webex","sessionId","sequence","replayCount","tid","split","join","create","Interceptor"],"sources":["webex-tracking-id.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\nexport const sequenceNumbers = new Map();\n\n/**\n * @class\n */\nexport default class WebexTrackingIdInterceptor extends Interceptor {\n /**\n * Sequence number; increments on access\n * @type {Number}\n */\n get sequence() {\n let sq = sequenceNumbers.get(this) || 0;\n\n sq += 1;\n sequenceNumbers.set(this, sq);\n\n return sq;\n }\n\n /**\n * @returns {WebexTrackingIdInterceptor}\n */\n static create() {\n return new WebexTrackingIdInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n options.headers = options.headers || {};\n // If trackingid is already set, don't overwrite it\n if ('trackingid' in options.headers) {\n // If trackingid is set to null, false, or undefined, delete it to\n // prevent a CORS preflight.\n if (!options.headers.trackingid) {\n Reflect.deleteProperty(options.headers, 'trackingid');\n }\n\n return options;\n }\n\n if (this.requiresTrackingId(options)) {\n options.headers.trackingid = `${this.webex.sessionId}_${this.sequence}`;\n }\n\n if (options.headers.trackingid && options.replayCount) {\n const tid = options.headers.trackingid.split('+');\n\n tid[1] = options.replayCount;\n options.headers.trackingid = tid.join('+');\n }\n\n return options;\n }\n\n /**\n * Determines whether or not include a tracking id\n * @param {Object} options\n * @returns {boolean}\n */\n requiresTrackingId(options) {\n return !options.headers.trackingid;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_httpCore","require","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","sequenceNumbers","_weakMap","WebexTrackingIdInterceptor","exports","_Interceptor","_inherits2","_super","_classCallCheck2","_createClass2","key","get","sq","set","value","onRequest","options","headers","trackingid","_deleteProperty","requiresTrackingId","concat","webex","sessionId","sequence","replayCount","tid","split","join","create","Interceptor"],"sources":["webex-tracking-id.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\nconst sequenceNumbers = new WeakMap();\n\n/**\n * @class\n */\nexport default class WebexTrackingIdInterceptor extends Interceptor {\n /**\n * Sequence number; increments on access\n * @type {Number}\n */\n get sequence() {\n let sq = sequenceNumbers.get(this) || 0;\n\n sq += 1;\n sequenceNumbers.set(this, sq);\n\n return sq;\n }\n\n /**\n * @returns {WebexTrackingIdInterceptor}\n */\n static create() {\n return new WebexTrackingIdInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n options.headers = options.headers || {};\n // If trackingid is already set, don't overwrite it\n if ('trackingid' in options.headers) {\n // If trackingid is set to null, false, or undefined, delete it to\n // prevent a CORS preflight.\n if (!options.headers.trackingid) {\n Reflect.deleteProperty(options.headers, 'trackingid');\n }\n\n return options;\n }\n\n if (this.requiresTrackingId(options)) {\n options.headers.trackingid = `${this.webex.sessionId}_${this.sequence}`;\n }\n\n if (options.headers.trackingid && options.replayCount) {\n const tid = options.headers.trackingid.split('+');\n\n tid[1] = options.replayCount;\n options.headers.trackingid = tid.join('+');\n }\n\n return options;\n }\n\n /**\n * Determines whether or not include a tracking id\n * @param {Object} options\n * @returns {boolean}\n */\n requiresTrackingId(options) {\n return !options.headers.trackingid;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAIA,IAAAA,SAAA,GAAAC,OAAA;AAA6C,SAAAC,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAC,OAAA,EAAAN,OAAA,GAAAO,MAAA,MAAAN,yBAAA,QAAAO,SAAA,OAAAH,gBAAA,CAAAC,OAAA,QAAAG,WAAA,EAAAF,MAAA,GAAAG,kBAAA,CAAAN,KAAA,EAAAO,SAAA,EAAAH,SAAA,YAAAD,MAAA,GAAAH,KAAA,CAAAQ,KAAA,OAAAD,SAAA,gBAAAE,2BAAA,CAAAP,OAAA,QAAAC,MAAA;AAAA,SAAAL,0BAAA,eAAAY,OAAA,qBAAAJ,kBAAA,oBAAAA,kBAAA,CAAAK,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAV,kBAAA,CAAAO,OAAA,8CAAAI,CAAA,sBAJ7C;AACA;AACA;AAIA,IAAMC,eAAe,GAAG,IAAAC,QAAA,CAAAjB,OAAA,CAAY,CAAC;;AAErC;AACA;AACA;AAFA,IAGqBkB,0BAA0B,GAAAC,OAAA,CAAAnB,OAAA,0BAAAoB,YAAA;EAAA,IAAAC,UAAA,CAAArB,OAAA,EAAAkB,0BAAA,EAAAE,YAAA;EAAA,IAAAE,MAAA,GAAA7B,YAAA,CAAAyB,0BAAA;EAAA,SAAAA,2BAAA;IAAA,IAAAK,gBAAA,CAAAvB,OAAA,QAAAkB,0BAAA;IAAA,OAAAI,MAAA,CAAAhB,KAAA,OAAAD,SAAA;EAAA;EAAA,IAAAmB,aAAA,CAAAxB,OAAA,EAAAkB,0BAAA;IAAAO,GAAA;IAAAC,GAAA;IAC7C;AACF;AACA;AACA;IACE,SAAAA,IAAA,EAAe;MACb,IAAIC,EAAE,GAAGX,eAAe,CAACU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;MAEvCC,EAAE,IAAI,CAAC;MACPX,eAAe,CAACY,GAAG,CAAC,IAAI,EAAED,EAAE,CAAC;MAE7B,OAAOA,EAAE;IACX;;IAEA;AACF;AACA;EAFE;IAAAF,GAAA;IAAAI,KAAA;IAOA;AACF;AACA;AACA;AACA;IACE,SAAAC,UAAUC,OAAO,EAAE;MACjBA,OAAO,CAACC,OAAO,GAAGD,OAAO,CAACC,OAAO,IAAI,CAAC,CAAC;MACvC;MACA,IAAI,YAAY,IAAID,OAAO,CAACC,OAAO,EAAE;QACnC;QACA;QACA,IAAI,CAACD,OAAO,CAACC,OAAO,CAACC,UAAU,EAAE;UAC/B,IAAAC,eAAA,CAAAlC,OAAA,EAAuB+B,OAAO,CAACC,OAAO,EAAE,YAAY,CAAC;QACvD;QAEA,OAAOD,OAAO;MAChB;MAEA,IAAI,IAAI,CAACI,kBAAkB,CAACJ,OAAO,CAAC,EAAE;QACpCA,OAAO,CAACC,OAAO,CAACC,UAAU,MAAAG,MAAA,CAAM,IAAI,CAACC,KAAK,CAACC,SAAS,OAAAF,MAAA,CAAI,IAAI,CAACG,QAAQ,CAAE;MACzE;MAEA,IAAIR,OAAO,CAACC,OAAO,CAACC,UAAU,IAAIF,OAAO,CAACS,WAAW,EAAE;QACrD,IAAMC,GAAG,GAAGV,OAAO,CAACC,OAAO,CAACC,UAAU,CAACS,KAAK,CAAC,GAAG,CAAC;QAEjDD,GAAG,CAAC,CAAC,CAAC,GAAGV,OAAO,CAACS,WAAW;QAC5BT,OAAO,CAACC,OAAO,CAACC,UAAU,GAAGQ,GAAG,CAACE,IAAI,CAAC,GAAG,CAAC;MAC5C;MAEA,OAAOZ,OAAO;IAChB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAN,GAAA;IAAAI,KAAA,EAKA,SAAAM,mBAAmBJ,OAAO,EAAE;MAC1B,OAAO,CAACA,OAAO,CAACC,OAAO,CAACC,UAAU;IACpC;EAAC;IAAAR,GAAA;IAAAI,KAAA,EA3CD,SAAAe,OAAA,EAAgB;MACd,OAAO,IAAI1B,0BAA0B,CAAC;QAACmB,KAAK,EAAE;MAAI,CAAC,CAAC;IACtD;EAAC;EAAA,OAAAnB,0BAAA;AAAA,EAnBqD2B,qBAAW"}
@@ -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.5.0-next.9"
289
+ version: "3.5.0-wxcc.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.5.0-next.9"
561
+ version: "3.5.0-wxcc.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.5.0-next.9"
535
+ version: "3.5.0-wxcc.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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"}
@@ -1054,7 +1054,7 @@ var Services = _webexPlugin.default.extend({
1054
1054
  }
1055
1055
  });
1056
1056
  },
1057
- version: "3.5.0-next.9"
1057
+ version: "3.5.0-wxcc.1"
1058
1058
  });
1059
1059
  /* eslint-enable no-underscore-dangle */
1060
1060
  var _default = exports.default = Services;
@@ -57,7 +57,7 @@ var Logger = _webexPlugin.default.extend({
57
57
  info: wrapConsoleMethod('info'),
58
58
  debug: wrapConsoleMethod('debug'),
59
59
  trace: wrapConsoleMethod('trace'),
60
- version: "3.5.0-next.9"
60
+ version: "3.5.0-wxcc.1"
61
61
  });
62
62
  (0, _webexCore.registerPlugin)('logger', Logger);
63
63
  var _default = exports.default = Logger;
@@ -96,7 +96,7 @@ var MAX_FILE_SIZE_IN_MB = 2048;
96
96
  * @class
97
97
  */
98
98
  var WebexCore = _ampersandState.default.extend((_obj = {
99
- version: "3.5.0-next.9",
99
+ version: "3.5.0-wxcc.1",
100
100
  children: {
101
101
  internal: _webexInternalCore.default
102
102
  },
@@ -181,6 +181,7 @@ var WebexCore = _ampersandState.default.extend((_obj = {
181
181
  type: 'any'
182
182
  },
183
183
  sessionId: {
184
+ setOnce: true,
184
185
  type: 'string'
185
186
  }
186
187
  },
@@ -637,7 +638,7 @@ var WebexCore = _ampersandState.default.extend((_obj = {
637
638
  });
638
639
  }
639
640
  }, ((0, _applyDecoratedDescriptor2.default)(_obj, "_uploadPhaseUpload", [_common.retry], (0, _getOwnPropertyDescriptor.default)(_obj, "_uploadPhaseUpload"), _obj)), _obj));
640
- WebexCore.version = "3.5.0-next.9";
641
+ WebexCore.version = "3.5.0-wxcc.1";
641
642
  (0, _webexInternalCorePluginMixin.default)(_webexInternalCore.default, _config.default, interceptors);
642
643
  (0, _webexCorePluginMixin.default)(WebexCore, _config.default, interceptors);
643
644
  var _default = exports.default = WebexCore;
@@ -1 +1 @@
1
- {"version":3,"names":["_events","require","_util","_interopRequireDefault","_common","_httpCore","_lodash","_ampersandState","_uuid","_auth","_networkTiming","_payloadTransformer","_redirect","_requestEvent","_requestLogger","_requestTiming","_responseLogger","_webexHttpError","_userAgent","_webexTrackingId","_webexUserAgent","_rateLimit","_embargo","_defaultOptions","_hostmap","_config","_storage","_webexCorePluginMixin","_webexInternalCorePluginMixin","_webexInternalCore","_obj","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor2","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","interceptors","WebexTrackingIdInterceptor","create","RequestEventInterceptor","RateLimitInterceptor","RequestLoggerInterceptor","process","env","ENABLE_NETWORK_LOGGING","ENABLE_VERBOSE_NETWORK_LOGGING","undefined","ResponseLoggerInterceptor","RequestTimingInterceptor","ServiceInterceptor","UserAgentInterceptor","WebexUserAgentInterceptor","AuthInterceptor","KmsDryErrorInterceptor","PayloadTransformerInterceptor","ConversationInterceptor","RedirectInterceptor","HttpStatusInterceptor","error","WebexHttpError","NetworkTimingInterceptor","EmbargoInterceptor","DefaultOptionsInterceptor","HostMapInterceptor","preInterceptors","postInterceptors","MAX_FILE_SIZE_IN_MB","WebexCore","AmpState","extend","version","children","internal","WebexInternalCore","constructor","attrs","options","credentials","supertoken","access_token","path","val","get","unset","set","bearerValidator","trim","_apply","derived","boundedStorage","deps","fn","makeWebexStore","unboundedStorage","ready","_this","loaded","_keys","_children","reduce","name","session","config","type","request","setOnce","sessionId","refresh","_this$credentials","transform","direction","object","_this2","predicates","payloadTransformer","p","ctx","webex","_promise","all","map","test","then","shouldTransform","extract","target","data","d","Boolean","promise","_ref","alias","applyNamedTransform","resolve","_this3","_len","rest","Array","_key","isString","unshift","_len2","args","_key2","concat","transforms","tx","_ctx","last","getWindow","window","initialize","_this4","merge","trigger","onLoaded","stopListening","nextTick","listenToAndRun","onReady","prototype","key","listenTo","_len3","_key3","addInterceptor","ints","interceptor","isFunction","includes","requestDefaults","json","prepareFetchOptions","setTimingsAndFetch","_setTimingsAndFetch","uuid","v4","setConfig","newConfig","token","split","console","warn","replace","info","inspect","depth","util","omit","serialize","props","logout","_this5","_len4","_key4","refresh_token","_assign","onBeforeLogout","reverse","_ref2","plugin","catch","err","logger","clear","_this5$credentials","invalidate","_this5$authorization","authorization","measure","metrics","_this$metrics","sendUnstructured","upload","_this6","_asyncToGenerator2","_regenerator","mark","_callee","shunt","wrap","_callee$","_context","prev","next","file","abrupt","reject","Error","phases","finalize","defaultsDeep","method","body","uploadProtocol","withCredentials","headers","EventEmitter","_uploadPhaseInitialize","_uploadPhaseUpload","transferEvents","_len5","_key5","_uploadPhaseFinalize","res","proxyEvents","stop","_this7","debug","_len6","_key6","fileUploadSizeLimitInBytes","fileUploadSizeLimit","currentFileSizeInBytes","byteLength","_uploadAbortSession","_uploadApplySession","response","_this8","url","abortErrorDetails","fileUploadSizeLimitInMB","message","_stringify","opts","phaseOptions","phaseKey","startsWith","substr","_deleteProperty","_this9","NODE_ENV","on","event","total","_this10","_applyDecoratedDescriptor2","retry","_getOwnPropertyDescriptor","mixinWebexInternalCorePlugins","mixinWebexCorePlugins","_default","exports","registerPlugin","registerInternalPlugin"],"sources":["webex-core.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {EventEmitter} from 'events';\nimport util from 'util';\n\nimport {proxyEvents, retry, transferEvents} from '@webex/common';\nimport {\n HttpStatusInterceptor,\n defaults as requestDefaults,\n protoprepareFetchOptions as prepareFetchOptions,\n setTimingsAndFetch as _setTimingsAndFetch,\n} from '@webex/http-core';\nimport {defaultsDeep, get, isFunction, isString, last, merge, omit, set, unset} from 'lodash';\nimport AmpState from 'ampersand-state';\nimport uuid from 'uuid';\n\nimport AuthInterceptor from './interceptors/auth';\nimport NetworkTimingInterceptor from './interceptors/network-timing';\nimport PayloadTransformerInterceptor from './interceptors/payload-transformer';\nimport RedirectInterceptor from './interceptors/redirect';\nimport RequestEventInterceptor from './interceptors/request-event';\nimport RequestLoggerInterceptor from './interceptors/request-logger';\nimport RequestTimingInterceptor from './interceptors/request-timing';\nimport ResponseLoggerInterceptor from './interceptors/response-logger';\nimport WebexHttpError from './lib/webex-http-error';\nimport UserAgentInterceptor from './interceptors/user-agent';\nimport WebexTrackingIdInterceptor from './interceptors/webex-tracking-id';\nimport WebexUserAgentInterceptor from './interceptors/webex-user-agent';\nimport RateLimitInterceptor from './interceptors/rate-limit';\nimport EmbargoInterceptor from './interceptors/embargo';\nimport DefaultOptionsInterceptor from './interceptors/default-options';\nimport HostMapInterceptor from './lib/services/interceptors/hostmap';\nimport config from './config';\nimport {makeWebexStore} from './lib/storage';\nimport mixinWebexCorePlugins from './lib/webex-core-plugin-mixin';\nimport mixinWebexInternalCorePlugins from './lib/webex-internal-core-plugin-mixin';\nimport WebexInternalCore from './webex-internal-core';\n\n// TODO replace the Interceptor.create with Reflect.construct (\n// Interceptor.create exists because new was really hard to call on an array of\n// constructors)\nconst interceptors = {\n WebexTrackingIdInterceptor: WebexTrackingIdInterceptor.create,\n RequestEventInterceptor: RequestEventInterceptor.create,\n RateLimitInterceptor: RateLimitInterceptor.create,\n /* eslint-disable no-extra-parens */\n RequestLoggerInterceptor:\n process.env.ENABLE_NETWORK_LOGGING || process.env.ENABLE_VERBOSE_NETWORK_LOGGING\n ? RequestLoggerInterceptor.create\n : undefined,\n ResponseLoggerInterceptor:\n process.env.ENABLE_NETWORK_LOGGING || process.env.ENABLE_VERBOSE_NETWORK_LOGGING\n ? ResponseLoggerInterceptor.create\n : undefined,\n /* eslint-enable no-extra-parens */\n RequestTimingInterceptor: RequestTimingInterceptor.create,\n ServiceInterceptor: undefined,\n UserAgentInterceptor: UserAgentInterceptor.create,\n WebexUserAgentInterceptor: WebexUserAgentInterceptor.create,\n AuthInterceptor: AuthInterceptor.create,\n KmsDryErrorInterceptor: undefined,\n PayloadTransformerInterceptor: PayloadTransformerInterceptor.create,\n ConversationInterceptor: undefined,\n RedirectInterceptor: RedirectInterceptor.create,\n HttpStatusInterceptor() {\n return HttpStatusInterceptor.create({\n error: WebexHttpError,\n });\n },\n NetworkTimingInterceptor: NetworkTimingInterceptor.create,\n EmbargoInterceptor: EmbargoInterceptor.create,\n DefaultOptionsInterceptor: DefaultOptionsInterceptor.create,\n HostMapInterceptor: HostMapInterceptor.create,\n};\n\nconst preInterceptors = [\n 'ResponseLoggerInterceptor',\n 'RequestTimingInterceptor',\n 'RequestEventInterceptor',\n 'WebexTrackingIdInterceptor',\n 'RateLimitInterceptor',\n];\n\nconst postInterceptors = [\n 'HttpStatusInterceptor',\n 'NetworkTimingInterceptor',\n 'EmbargoInterceptor',\n 'RequestLoggerInterceptor',\n 'RateLimitInterceptor',\n];\n\nconst MAX_FILE_SIZE_IN_MB = 2048;\n\n/**\n * @class\n */\nconst WebexCore = AmpState.extend({\n version: PACKAGE_VERSION,\n\n children: {\n internal: WebexInternalCore,\n },\n\n constructor(attrs = {}, options) {\n if (typeof attrs === 'string') {\n attrs = {\n credentials: {\n supertoken: {\n // eslint-disable-next-line camelcase\n access_token: attrs,\n },\n },\n };\n } else {\n // Reminder: order is important here\n [\n 'credentials.authorization',\n 'authorization',\n 'credentials.supertoken.supertoken',\n 'supertoken',\n 'access_token',\n 'credentials.authorization.supertoken',\n ].forEach((path) => {\n const val = get(attrs, path);\n\n if (val) {\n unset(attrs, path);\n set(attrs, 'credentials.supertoken', val);\n }\n });\n\n ['credentials', 'credentials.authorization'].forEach((path) => {\n const val = get(attrs, path);\n\n if (typeof val === 'string') {\n unset(attrs, path);\n set(attrs, 'credentials.supertoken', val);\n }\n });\n\n if (typeof get(attrs, 'credentials.access_token') === 'string') {\n // Send access_token to get validated and corrected and then set it\n set(\n attrs,\n 'credentials.access_token',\n this.bearerValidator(get(attrs, 'credentials.access_token').trim())\n );\n\n set(attrs, 'credentials.supertoken', attrs.credentials);\n }\n }\n\n return Reflect.apply(AmpState, this, [attrs, options]);\n },\n\n derived: {\n boundedStorage: {\n deps: [],\n fn() {\n return makeWebexStore('bounded', this);\n },\n },\n unboundedStorage: {\n deps: [],\n fn() {\n return makeWebexStore('unbounded', this);\n },\n },\n ready: {\n deps: ['loaded', 'internal.ready'],\n fn() {\n return (\n this.loaded &&\n Object.keys(this._children).reduce(\n (ready, name) => ready && this[name] && this[name].ready !== false,\n true\n )\n );\n },\n },\n },\n\n session: {\n config: {\n type: 'object',\n },\n /**\n * When true, indicates that the initial load from the storage layer is\n * complete\n * @instance\n * @memberof WebexCore\n * @type {boolean}\n */\n loaded: {\n default: false,\n type: 'boolean',\n },\n request: {\n setOnce: true,\n // It's supposed to be a function, but that's not a type defined in\n // Ampersand\n type: 'any',\n },\n sessionId: {\n type: 'string',\n },\n },\n\n /**\n * @instance\n * @memberof WebexCore\n * @param {[type]} args\n * @returns {[type]}\n */\n refresh(...args) {\n return this.credentials.refresh(...args);\n },\n\n /**\n * Applies the directionally appropriate transforms to the specified object\n * @param {string} direction\n * @param {Object} object\n * @returns {Promise}\n */\n transform(direction, object) {\n const predicates = this.config.payloadTransformer.predicates.filter(\n (p) => !p.direction || p.direction === direction\n );\n const ctx = {\n webex: this,\n };\n\n return Promise.all(\n predicates.map((p) =>\n p.test(ctx, object).then((shouldTransform) => {\n if (!shouldTransform) {\n return undefined;\n }\n\n return (\n p\n .extract(object)\n // eslint-disable-next-line max-nested-callbacks\n .then((target) => ({\n name: p.name,\n target,\n }))\n );\n })\n )\n )\n .then((data) =>\n data\n .filter((d) => Boolean(d))\n // eslint-disable-next-line max-nested-callbacks\n .reduce(\n (promise, {name, target, alias}) =>\n promise.then(() => {\n if (alias) {\n return this.applyNamedTransform(direction, alias, target);\n }\n\n return this.applyNamedTransform(direction, name, target);\n }),\n Promise.resolve()\n )\n )\n .then(() => object);\n },\n\n /**\n * Applies the directionally appropriate transform to the specified parameters\n * @param {string} direction\n * @param {Object} ctx\n * @param {string} name\n * @returns {Promise}\n */\n applyNamedTransform(direction, ctx, name, ...rest) {\n if (isString(ctx)) {\n rest.unshift(name);\n name = ctx;\n ctx = {\n webex: this,\n transform: (...args) => this.applyNamedTransform(direction, ctx, ...args),\n };\n }\n\n const transforms = ctx.webex.config.payloadTransformer.transforms.filter(\n (tx) => tx.name === name && (!tx.direction || tx.direction === direction)\n );\n\n // too many implicit returns on the same line is difficult to interpret\n // eslint-disable-next-line arrow-body-style\n return transforms\n .reduce(\n (promise, tx) =>\n promise.then(() => {\n if (tx.alias) {\n return ctx.transform(tx.alias, ...rest);\n }\n\n return Promise.resolve(tx.fn(ctx, ...rest));\n }),\n Promise.resolve()\n )\n .then(() => last(rest));\n },\n\n /**\n * @private\n * @returns {Window}\n */\n getWindow() {\n // eslint-disable-next-line\n return window;\n },\n\n /**\n * Initializer\n *\n * @emits WebexCore#loaded\n * @emits WebexCore#ready\n * @instance\n * @memberof WebexCore\n * @param {Object} attrs\n * @returns {WebexCore}\n */\n initialize(attrs = {}) {\n this.config = merge({}, config, attrs.config);\n\n // There's some unfortunateness with the way {@link AmpersandState#children}\n // get initialized. We'll fire the change:config event so that\n // {@link WebexPlugin#initialize()} can use\n // `this.listenToOnce(parent, 'change:config', () => {});` to act on config\n // during initialization\n this.trigger('change:config');\n\n const onLoaded = () => {\n if (this.loaded) {\n /**\n * Fires when all data has been loaded from the storage layer\n * @event loaded\n * @instance\n * @memberof WebexCore\n */\n this.trigger('loaded');\n\n this.stopListening(this, 'change:loaded', onLoaded);\n }\n };\n\n // This needs to run on nextTick or we'll never be able to wire up listeners\n process.nextTick(() => {\n this.listenToAndRun(this, 'change:loaded', onLoaded);\n });\n\n const onReady = () => {\n if (this.ready) {\n /**\n * Fires when all plugins have fully initialized\n * @event ready\n * @instance\n * @memberof WebexCore\n */\n this.trigger('ready');\n\n this.stopListening(this, 'change:ready', onReady);\n }\n };\n\n // This needs to run on nextTick or we'll never be able to wire up listeners\n process.nextTick(() => {\n this.listenToAndRun(this, 'change:ready', onReady);\n });\n\n // Make nested events propagate in a consistent manner\n Object.keys(this.constructor.prototype._children).forEach((key) => {\n this.listenTo(this[key], 'change', (...args) => {\n args.unshift(`change:${key}`);\n this.trigger(...args);\n });\n });\n\n const addInterceptor = (ints, key) => {\n const interceptor = interceptors[key];\n\n if (!isFunction(interceptor)) {\n return ints;\n }\n\n ints.push(Reflect.apply(interceptor, this, []));\n\n return ints;\n };\n\n let ints = [];\n\n ints = preInterceptors.reduce(addInterceptor, ints);\n ints = Object.keys(interceptors)\n .filter((key) => !(preInterceptors.includes(key) || postInterceptors.includes(key)))\n .reduce(addInterceptor, ints);\n ints = postInterceptors.reduce(addInterceptor, ints);\n\n this.request = requestDefaults({\n json: true,\n interceptors: ints,\n });\n\n this.prepareFetchOptions = prepareFetchOptions({\n json: true,\n interceptors: ints,\n });\n\n this.setTimingsAndFetch = _setTimingsAndFetch;\n\n let sessionId = `${get(this, 'config.trackingIdPrefix', 'webex-js-sdk')}_${get(\n this,\n 'config.trackingIdBase',\n uuid.v4()\n )}`;\n\n if (get(this, 'config.trackingIdSuffix')) {\n sessionId += `_${get(this, 'config.trackingIdSuffix')}`;\n }\n\n this.sessionId = sessionId;\n },\n\n /**\n * setConfig\n *\n * Allows updating config\n *\n * @instance\n * @memberof WebexCore\n * @param {Object} newConfig\n * @returns {null}\n */\n setConfig(newConfig = {}) {\n this.config = merge({}, this.config, newConfig);\n },\n\n /**\n *\n * Check if access token is correctly formated and correct if it's not\n * Warn user if token string has errors in it\n * @param {string} token\n * @returns {string}\n */\n bearerValidator(token) {\n if (token.includes('Bearer') && token.split(' ').length - 1 === 0) {\n console.warn(\n `Your access token does not have a space between 'Bearer' and the token, please add a space to it or replace it with this already fixed version:\\n\\n${token\n .replace('Bearer', 'Bearer ')\n .replace(/\\s+/g, ' ')}`\n );\n console.info(\n \"Tip: You don't need to add 'Bearer' to the access_token field. The token by itself is fine\"\n );\n\n return token.replace('Bearer', 'Bearer ').replace(/\\s+/g, ' ');\n }\n // Allow elseIf return\n // eslint-disable-next-line no-else-return\n else if (token.split(' ').length - 1 > 1) {\n console.warn(\n `Your access token has ${\n token.split(' ').length - 2\n } too many spaces, please use this format:\\n\\n${token.replace(/\\s+/g, ' ')}`\n );\n console.info(\n \"Tip: You don't need to add 'Bearer' to the access_token field, the token by itself is fine\"\n );\n\n return token.replace(/\\s+/g, ' ');\n }\n\n return token.replace(/\\s+/g, ' '); // Clean it anyway (just in case)\n },\n\n /**\n * @instance\n * @memberof WebexPlugin\n * @param {number} depth\n * @private\n * @returns {Object}\n */\n inspect(depth) {\n return util.inspect(\n omit(\n this.serialize({\n props: true,\n session: true,\n derived: true,\n }),\n 'boundedStorage',\n 'unboundedStorage',\n 'request',\n 'config'\n ),\n {depth}\n );\n },\n\n /**\n * Invokes all `onBeforeLogout` handlers in the scope of their plugin, clears\n * all stores, and revokes the access token\n * Note: If you're using the sdk in a server environment, you may be more\n * interested in {@link `webex.internal.mercury.disconnect()`| Mercury#disconnect()}\n * and {@link `webex.internal.device.unregister()`|Device#unregister()}\n * or {@link `webex.phone.unregister()`|Phone#unregister}\n * @instance\n * @memberof WebexCore\n * @param {Object} options Passed as the first argument to all\n * `onBeforeLogout` handlers\n * @returns {Promise}\n */\n logout(options, ...rest) {\n // prefer the refresh token, but for clients that don't have one, fallback\n // to the access token\n const token =\n this.credentials.supertoken &&\n (this.credentials.supertoken.refresh_token || this.credentials.supertoken.access_token);\n\n options = Object.assign({token}, options);\n\n // onBeforeLogout should be executed in the opposite order in which handlers\n // were registered. In that way, wdm unregister() will be above mercury\n // disconnect(), but disconnect() will execute first.\n // eslint-disable-next-line arrow-body-style\n return this.config.onBeforeLogout\n .reverse()\n .reduce(\n (promise, {plugin, fn}) =>\n promise.then(() => {\n return (\n Promise.resolve(\n Reflect.apply(fn, this[plugin] || this.internal[plugin], [options, ...rest])\n )\n // eslint-disable-next-line max-nested-callbacks\n .catch((err) => {\n this.logger.warn(`onBeforeLogout from plugin ${plugin}: failed`, err);\n })\n );\n }),\n Promise.resolve()\n )\n .then(() => Promise.all([this.boundedStorage.clear(), this.unboundedStorage.clear()]))\n .then(() => this.credentials.invalidate(...rest))\n .then(\n () =>\n this.authorization &&\n this.authorization.logout &&\n this.authorization.logout(options, ...rest)\n )\n .then(() => this.trigger('client:logout'));\n },\n\n /**\n * General purpose wrapper to submit metrics via the metrics plugin (if the\n * metrics plugin is installed)\n * @instance\n * @memberof WebexCore\n * @returns {Promise}\n */\n measure(...args) {\n if (this.metrics) {\n return this.metrics.sendUnstructured(...args);\n }\n\n return Promise.resolve();\n },\n\n async upload(options) {\n if (!options.file) {\n return Promise.reject(new Error('`options.file` is required'));\n }\n\n options.phases = options.phases || {};\n options.phases.initialize = options.phases.initialize || {};\n options.phases.upload = options.phases.upload || {};\n options.phases.finalize = options.phases.finalize || {};\n\n defaultsDeep(\n options.phases.initialize,\n {\n method: 'POST',\n body: {\n uploadProtocol: 'content-length',\n },\n },\n omit(options, 'file', 'phases')\n );\n\n defaultsDeep(options.phases.upload, {\n method: 'PUT',\n json: false,\n withCredentials: false,\n body: options.file,\n headers: {\n 'x-trans-id': uuid.v4(),\n authorization: undefined,\n },\n });\n\n defaultsDeep(\n options.phases.finalize,\n {\n method: 'POST',\n },\n omit(options, 'file', 'phases')\n );\n\n const shunt = new EventEmitter();\n\n const promise = this._uploadPhaseInitialize(options)\n .then(() => {\n const p = this._uploadPhaseUpload(options);\n\n transferEvents('progress', p, shunt);\n\n return p;\n })\n .then((...args) => this._uploadPhaseFinalize(options, ...args))\n .then((res) => ({...res.body, ...res.headers}));\n\n proxyEvents(shunt, promise);\n\n return promise;\n },\n\n _uploadPhaseInitialize: function _uploadPhaseInitialize(options) {\n this.logger.debug('client: initiating upload session');\n\n return this.request(options.phases.initialize)\n .then((...args) => {\n const fileUploadSizeLimitInBytes =\n (args[0].body.fileUploadSizeLimit || MAX_FILE_SIZE_IN_MB) * 1024 * 1024;\n const currentFileSizeInBytes = options.file.byteLength;\n\n if (fileUploadSizeLimitInBytes && fileUploadSizeLimitInBytes < currentFileSizeInBytes) {\n return this._uploadAbortSession(currentFileSizeInBytes, ...args);\n }\n\n return this._uploadApplySession(options, ...args);\n })\n .then((res) => {\n this.logger.debug('client: initiated upload session');\n\n return res;\n });\n },\n\n _uploadAbortSession(currentFileSizeInBytes, response) {\n this.logger.debug('client: deleting uploaded file');\n\n return this.request({\n method: 'DELETE',\n url: response.body.url,\n headers: response.options.headers,\n }).then(() => {\n this.logger.debug('client: deleting uploaded file complete');\n\n const abortErrorDetails = {\n currentFileSizeInBytes,\n fileUploadSizeLimitInMB: response.body.fileUploadSizeLimit || MAX_FILE_SIZE_IN_MB,\n message: 'file-upload-size-limit-enabled',\n };\n\n return Promise.reject(new Error(`${JSON.stringify(abortErrorDetails)}`));\n });\n },\n\n _uploadApplySession(options, res) {\n const session = res.body;\n\n ['upload', 'finalize'].reduce((opts, key) => {\n opts[key] = Object.keys(opts[key]).reduce((phaseOptions, phaseKey) => {\n if (phaseKey.startsWith('$')) {\n phaseOptions[phaseKey.substr(1)] = phaseOptions[phaseKey](session);\n Reflect.deleteProperty(phaseOptions, phaseKey);\n }\n\n return phaseOptions;\n }, opts[key]);\n\n return opts;\n }, options.phases);\n },\n\n @retry\n _uploadPhaseUpload(options) {\n this.logger.debug('client: uploading file');\n\n const promise = this.request(options.phases.upload).then((res) => {\n this.logger.debug('client: uploaded file');\n\n return res;\n });\n\n proxyEvents(options.phases.upload.upload, promise);\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV === 'test') {\n promise.on('progress', (event) => {\n this.logger.info('upload progress', event.loaded, event.total);\n });\n }\n\n return promise;\n },\n\n _uploadPhaseFinalize: function _uploadPhaseFinalize(options) {\n this.logger.debug('client: finalizing upload session');\n\n return this.request(options.phases.finalize).then((res) => {\n this.logger.debug('client: finalized upload session');\n\n return res;\n });\n },\n});\n\nWebexCore.version = PACKAGE_VERSION;\n\nmixinWebexInternalCorePlugins(WebexInternalCore, config, interceptors);\nmixinWebexCorePlugins(WebexCore, config, interceptors);\n\nexport default WebexCore;\n\n/**\n * @method registerPlugin\n * @param {string} name\n * @param {function} constructor\n * @param {Object} options\n * @param {Array<string>} options.proxies\n * @param {Object} options.interceptors\n * @returns {null}\n */\nexport function registerPlugin(name, constructor, options = {}) {\n WebexCore.registerPlugin(name, constructor, options);\n}\n\n/**\n * Registers plugins used by internal products that do not talk to public APIs.\n * @method registerInternalPlugin\n * @param {string} name\n * @param {function} constructor\n * @param {Object} options\n * @param {Object} options.interceptors\n * @private\n * @returns {null}\n */\nexport function registerInternalPlugin(name, constructor, options) {\n WebexInternalCore.registerPlugin(name, constructor, options);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_events","require","_util","_interopRequireDefault","_common","_httpCore","_lodash","_ampersandState","_uuid","_auth","_networkTiming","_payloadTransformer","_redirect","_requestEvent","_requestLogger","_requestTiming","_responseLogger","_webexHttpError","_userAgent","_webexTrackingId","_webexUserAgent","_rateLimit","_embargo","_defaultOptions","_hostmap","_config","_storage","_webexCorePluginMixin","_webexInternalCorePluginMixin","_webexInternalCore","_obj","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor2","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","interceptors","WebexTrackingIdInterceptor","create","RequestEventInterceptor","RateLimitInterceptor","RequestLoggerInterceptor","process","env","ENABLE_NETWORK_LOGGING","ENABLE_VERBOSE_NETWORK_LOGGING","undefined","ResponseLoggerInterceptor","RequestTimingInterceptor","ServiceInterceptor","UserAgentInterceptor","WebexUserAgentInterceptor","AuthInterceptor","KmsDryErrorInterceptor","PayloadTransformerInterceptor","ConversationInterceptor","RedirectInterceptor","HttpStatusInterceptor","error","WebexHttpError","NetworkTimingInterceptor","EmbargoInterceptor","DefaultOptionsInterceptor","HostMapInterceptor","preInterceptors","postInterceptors","MAX_FILE_SIZE_IN_MB","WebexCore","AmpState","extend","version","children","internal","WebexInternalCore","constructor","attrs","options","credentials","supertoken","access_token","path","val","get","unset","set","bearerValidator","trim","_apply","derived","boundedStorage","deps","fn","makeWebexStore","unboundedStorage","ready","_this","loaded","_keys","_children","reduce","name","session","config","type","request","setOnce","sessionId","refresh","_this$credentials","transform","direction","object","_this2","predicates","payloadTransformer","p","ctx","webex","_promise","all","map","test","then","shouldTransform","extract","target","data","d","Boolean","promise","_ref","alias","applyNamedTransform","resolve","_this3","_len","rest","Array","_key","isString","unshift","_len2","args","_key2","concat","transforms","tx","_ctx","last","getWindow","window","initialize","_this4","merge","trigger","onLoaded","stopListening","nextTick","listenToAndRun","onReady","prototype","key","listenTo","_len3","_key3","addInterceptor","ints","interceptor","isFunction","includes","requestDefaults","json","prepareFetchOptions","setTimingsAndFetch","_setTimingsAndFetch","uuid","v4","setConfig","newConfig","token","split","console","warn","replace","info","inspect","depth","util","omit","serialize","props","logout","_this5","_len4","_key4","refresh_token","_assign","onBeforeLogout","reverse","_ref2","plugin","catch","err","logger","clear","_this5$credentials","invalidate","_this5$authorization","authorization","measure","metrics","_this$metrics","sendUnstructured","upload","_this6","_asyncToGenerator2","_regenerator","mark","_callee","shunt","wrap","_callee$","_context","prev","next","file","abrupt","reject","Error","phases","finalize","defaultsDeep","method","body","uploadProtocol","withCredentials","headers","EventEmitter","_uploadPhaseInitialize","_uploadPhaseUpload","transferEvents","_len5","_key5","_uploadPhaseFinalize","res","proxyEvents","stop","_this7","debug","_len6","_key6","fileUploadSizeLimitInBytes","fileUploadSizeLimit","currentFileSizeInBytes","byteLength","_uploadAbortSession","_uploadApplySession","response","_this8","url","abortErrorDetails","fileUploadSizeLimitInMB","message","_stringify","opts","phaseOptions","phaseKey","startsWith","substr","_deleteProperty","_this9","NODE_ENV","on","event","total","_this10","_applyDecoratedDescriptor2","retry","_getOwnPropertyDescriptor","mixinWebexInternalCorePlugins","mixinWebexCorePlugins","_default","exports","registerPlugin","registerInternalPlugin"],"sources":["webex-core.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {EventEmitter} from 'events';\nimport util from 'util';\n\nimport {proxyEvents, retry, transferEvents} from '@webex/common';\nimport {\n HttpStatusInterceptor,\n defaults as requestDefaults,\n protoprepareFetchOptions as prepareFetchOptions,\n setTimingsAndFetch as _setTimingsAndFetch,\n} from '@webex/http-core';\nimport {defaultsDeep, get, isFunction, isString, last, merge, omit, set, unset} from 'lodash';\nimport AmpState from 'ampersand-state';\nimport uuid from 'uuid';\n\nimport AuthInterceptor from './interceptors/auth';\nimport NetworkTimingInterceptor from './interceptors/network-timing';\nimport PayloadTransformerInterceptor from './interceptors/payload-transformer';\nimport RedirectInterceptor from './interceptors/redirect';\nimport RequestEventInterceptor from './interceptors/request-event';\nimport RequestLoggerInterceptor from './interceptors/request-logger';\nimport RequestTimingInterceptor from './interceptors/request-timing';\nimport ResponseLoggerInterceptor from './interceptors/response-logger';\nimport WebexHttpError from './lib/webex-http-error';\nimport UserAgentInterceptor from './interceptors/user-agent';\nimport WebexTrackingIdInterceptor from './interceptors/webex-tracking-id';\nimport WebexUserAgentInterceptor from './interceptors/webex-user-agent';\nimport RateLimitInterceptor from './interceptors/rate-limit';\nimport EmbargoInterceptor from './interceptors/embargo';\nimport DefaultOptionsInterceptor from './interceptors/default-options';\nimport HostMapInterceptor from './lib/services/interceptors/hostmap';\nimport config from './config';\nimport {makeWebexStore} from './lib/storage';\nimport mixinWebexCorePlugins from './lib/webex-core-plugin-mixin';\nimport mixinWebexInternalCorePlugins from './lib/webex-internal-core-plugin-mixin';\nimport WebexInternalCore from './webex-internal-core';\n\n// TODO replace the Interceptor.create with Reflect.construct (\n// Interceptor.create exists because new was really hard to call on an array of\n// constructors)\nconst interceptors = {\n WebexTrackingIdInterceptor: WebexTrackingIdInterceptor.create,\n RequestEventInterceptor: RequestEventInterceptor.create,\n RateLimitInterceptor: RateLimitInterceptor.create,\n /* eslint-disable no-extra-parens */\n RequestLoggerInterceptor:\n process.env.ENABLE_NETWORK_LOGGING || process.env.ENABLE_VERBOSE_NETWORK_LOGGING\n ? RequestLoggerInterceptor.create\n : undefined,\n ResponseLoggerInterceptor:\n process.env.ENABLE_NETWORK_LOGGING || process.env.ENABLE_VERBOSE_NETWORK_LOGGING\n ? ResponseLoggerInterceptor.create\n : undefined,\n /* eslint-enable no-extra-parens */\n RequestTimingInterceptor: RequestTimingInterceptor.create,\n ServiceInterceptor: undefined,\n UserAgentInterceptor: UserAgentInterceptor.create,\n WebexUserAgentInterceptor: WebexUserAgentInterceptor.create,\n AuthInterceptor: AuthInterceptor.create,\n KmsDryErrorInterceptor: undefined,\n PayloadTransformerInterceptor: PayloadTransformerInterceptor.create,\n ConversationInterceptor: undefined,\n RedirectInterceptor: RedirectInterceptor.create,\n HttpStatusInterceptor() {\n return HttpStatusInterceptor.create({\n error: WebexHttpError,\n });\n },\n NetworkTimingInterceptor: NetworkTimingInterceptor.create,\n EmbargoInterceptor: EmbargoInterceptor.create,\n DefaultOptionsInterceptor: DefaultOptionsInterceptor.create,\n HostMapInterceptor: HostMapInterceptor.create,\n};\n\nconst preInterceptors = [\n 'ResponseLoggerInterceptor',\n 'RequestTimingInterceptor',\n 'RequestEventInterceptor',\n 'WebexTrackingIdInterceptor',\n 'RateLimitInterceptor',\n];\n\nconst postInterceptors = [\n 'HttpStatusInterceptor',\n 'NetworkTimingInterceptor',\n 'EmbargoInterceptor',\n 'RequestLoggerInterceptor',\n 'RateLimitInterceptor',\n];\n\nconst MAX_FILE_SIZE_IN_MB = 2048;\n\n/**\n * @class\n */\nconst WebexCore = AmpState.extend({\n version: PACKAGE_VERSION,\n\n children: {\n internal: WebexInternalCore,\n },\n\n constructor(attrs = {}, options) {\n if (typeof attrs === 'string') {\n attrs = {\n credentials: {\n supertoken: {\n // eslint-disable-next-line camelcase\n access_token: attrs,\n },\n },\n };\n } else {\n // Reminder: order is important here\n [\n 'credentials.authorization',\n 'authorization',\n 'credentials.supertoken.supertoken',\n 'supertoken',\n 'access_token',\n 'credentials.authorization.supertoken',\n ].forEach((path) => {\n const val = get(attrs, path);\n\n if (val) {\n unset(attrs, path);\n set(attrs, 'credentials.supertoken', val);\n }\n });\n\n ['credentials', 'credentials.authorization'].forEach((path) => {\n const val = get(attrs, path);\n\n if (typeof val === 'string') {\n unset(attrs, path);\n set(attrs, 'credentials.supertoken', val);\n }\n });\n\n if (typeof get(attrs, 'credentials.access_token') === 'string') {\n // Send access_token to get validated and corrected and then set it\n set(\n attrs,\n 'credentials.access_token',\n this.bearerValidator(get(attrs, 'credentials.access_token').trim())\n );\n\n set(attrs, 'credentials.supertoken', attrs.credentials);\n }\n }\n\n return Reflect.apply(AmpState, this, [attrs, options]);\n },\n\n derived: {\n boundedStorage: {\n deps: [],\n fn() {\n return makeWebexStore('bounded', this);\n },\n },\n unboundedStorage: {\n deps: [],\n fn() {\n return makeWebexStore('unbounded', this);\n },\n },\n ready: {\n deps: ['loaded', 'internal.ready'],\n fn() {\n return (\n this.loaded &&\n Object.keys(this._children).reduce(\n (ready, name) => ready && this[name] && this[name].ready !== false,\n true\n )\n );\n },\n },\n },\n\n session: {\n config: {\n type: 'object',\n },\n /**\n * When true, indicates that the initial load from the storage layer is\n * complete\n * @instance\n * @memberof WebexCore\n * @type {boolean}\n */\n loaded: {\n default: false,\n type: 'boolean',\n },\n request: {\n setOnce: true,\n // It's supposed to be a function, but that's not a type defined in\n // Ampersand\n type: 'any',\n },\n sessionId: {\n setOnce: true,\n type: 'string',\n },\n },\n\n /**\n * @instance\n * @memberof WebexCore\n * @param {[type]} args\n * @returns {[type]}\n */\n refresh(...args) {\n return this.credentials.refresh(...args);\n },\n\n /**\n * Applies the directionally appropriate transforms to the specified object\n * @param {string} direction\n * @param {Object} object\n * @returns {Promise}\n */\n transform(direction, object) {\n const predicates = this.config.payloadTransformer.predicates.filter(\n (p) => !p.direction || p.direction === direction\n );\n const ctx = {\n webex: this,\n };\n\n return Promise.all(\n predicates.map((p) =>\n p.test(ctx, object).then((shouldTransform) => {\n if (!shouldTransform) {\n return undefined;\n }\n\n return (\n p\n .extract(object)\n // eslint-disable-next-line max-nested-callbacks\n .then((target) => ({\n name: p.name,\n target,\n }))\n );\n })\n )\n )\n .then((data) =>\n data\n .filter((d) => Boolean(d))\n // eslint-disable-next-line max-nested-callbacks\n .reduce(\n (promise, {name, target, alias}) =>\n promise.then(() => {\n if (alias) {\n return this.applyNamedTransform(direction, alias, target);\n }\n\n return this.applyNamedTransform(direction, name, target);\n }),\n Promise.resolve()\n )\n )\n .then(() => object);\n },\n\n /**\n * Applies the directionally appropriate transform to the specified parameters\n * @param {string} direction\n * @param {Object} ctx\n * @param {string} name\n * @returns {Promise}\n */\n applyNamedTransform(direction, ctx, name, ...rest) {\n if (isString(ctx)) {\n rest.unshift(name);\n name = ctx;\n ctx = {\n webex: this,\n transform: (...args) => this.applyNamedTransform(direction, ctx, ...args),\n };\n }\n\n const transforms = ctx.webex.config.payloadTransformer.transforms.filter(\n (tx) => tx.name === name && (!tx.direction || tx.direction === direction)\n );\n\n // too many implicit returns on the same line is difficult to interpret\n // eslint-disable-next-line arrow-body-style\n return transforms\n .reduce(\n (promise, tx) =>\n promise.then(() => {\n if (tx.alias) {\n return ctx.transform(tx.alias, ...rest);\n }\n\n return Promise.resolve(tx.fn(ctx, ...rest));\n }),\n Promise.resolve()\n )\n .then(() => last(rest));\n },\n\n /**\n * @private\n * @returns {Window}\n */\n getWindow() {\n // eslint-disable-next-line\n return window;\n },\n\n /**\n * Initializer\n *\n * @emits WebexCore#loaded\n * @emits WebexCore#ready\n * @instance\n * @memberof WebexCore\n * @param {Object} attrs\n * @returns {WebexCore}\n */\n initialize(attrs = {}) {\n this.config = merge({}, config, attrs.config);\n\n // There's some unfortunateness with the way {@link AmpersandState#children}\n // get initialized. We'll fire the change:config event so that\n // {@link WebexPlugin#initialize()} can use\n // `this.listenToOnce(parent, 'change:config', () => {});` to act on config\n // during initialization\n this.trigger('change:config');\n\n const onLoaded = () => {\n if (this.loaded) {\n /**\n * Fires when all data has been loaded from the storage layer\n * @event loaded\n * @instance\n * @memberof WebexCore\n */\n this.trigger('loaded');\n\n this.stopListening(this, 'change:loaded', onLoaded);\n }\n };\n\n // This needs to run on nextTick or we'll never be able to wire up listeners\n process.nextTick(() => {\n this.listenToAndRun(this, 'change:loaded', onLoaded);\n });\n\n const onReady = () => {\n if (this.ready) {\n /**\n * Fires when all plugins have fully initialized\n * @event ready\n * @instance\n * @memberof WebexCore\n */\n this.trigger('ready');\n\n this.stopListening(this, 'change:ready', onReady);\n }\n };\n\n // This needs to run on nextTick or we'll never be able to wire up listeners\n process.nextTick(() => {\n this.listenToAndRun(this, 'change:ready', onReady);\n });\n\n // Make nested events propagate in a consistent manner\n Object.keys(this.constructor.prototype._children).forEach((key) => {\n this.listenTo(this[key], 'change', (...args) => {\n args.unshift(`change:${key}`);\n this.trigger(...args);\n });\n });\n\n const addInterceptor = (ints, key) => {\n const interceptor = interceptors[key];\n\n if (!isFunction(interceptor)) {\n return ints;\n }\n\n ints.push(Reflect.apply(interceptor, this, []));\n\n return ints;\n };\n\n let ints = [];\n\n ints = preInterceptors.reduce(addInterceptor, ints);\n ints = Object.keys(interceptors)\n .filter((key) => !(preInterceptors.includes(key) || postInterceptors.includes(key)))\n .reduce(addInterceptor, ints);\n ints = postInterceptors.reduce(addInterceptor, ints);\n\n this.request = requestDefaults({\n json: true,\n interceptors: ints,\n });\n\n this.prepareFetchOptions = prepareFetchOptions({\n json: true,\n interceptors: ints,\n });\n\n this.setTimingsAndFetch = _setTimingsAndFetch;\n\n let sessionId = `${get(this, 'config.trackingIdPrefix', 'webex-js-sdk')}_${get(\n this,\n 'config.trackingIdBase',\n uuid.v4()\n )}`;\n\n if (get(this, 'config.trackingIdSuffix')) {\n sessionId += `_${get(this, 'config.trackingIdSuffix')}`;\n }\n\n this.sessionId = sessionId;\n },\n\n /**\n * setConfig\n *\n * Allows updating config\n *\n * @instance\n * @memberof WebexCore\n * @param {Object} newConfig\n * @returns {null}\n */\n setConfig(newConfig = {}) {\n this.config = merge({}, this.config, newConfig);\n },\n\n /**\n *\n * Check if access token is correctly formated and correct if it's not\n * Warn user if token string has errors in it\n * @param {string} token\n * @returns {string}\n */\n bearerValidator(token) {\n if (token.includes('Bearer') && token.split(' ').length - 1 === 0) {\n console.warn(\n `Your access token does not have a space between 'Bearer' and the token, please add a space to it or replace it with this already fixed version:\\n\\n${token\n .replace('Bearer', 'Bearer ')\n .replace(/\\s+/g, ' ')}`\n );\n console.info(\n \"Tip: You don't need to add 'Bearer' to the access_token field. The token by itself is fine\"\n );\n\n return token.replace('Bearer', 'Bearer ').replace(/\\s+/g, ' ');\n }\n // Allow elseIf return\n // eslint-disable-next-line no-else-return\n else if (token.split(' ').length - 1 > 1) {\n console.warn(\n `Your access token has ${\n token.split(' ').length - 2\n } too many spaces, please use this format:\\n\\n${token.replace(/\\s+/g, ' ')}`\n );\n console.info(\n \"Tip: You don't need to add 'Bearer' to the access_token field, the token by itself is fine\"\n );\n\n return token.replace(/\\s+/g, ' ');\n }\n\n return token.replace(/\\s+/g, ' '); // Clean it anyway (just in case)\n },\n\n /**\n * @instance\n * @memberof WebexPlugin\n * @param {number} depth\n * @private\n * @returns {Object}\n */\n inspect(depth) {\n return util.inspect(\n omit(\n this.serialize({\n props: true,\n session: true,\n derived: true,\n }),\n 'boundedStorage',\n 'unboundedStorage',\n 'request',\n 'config'\n ),\n {depth}\n );\n },\n\n /**\n * Invokes all `onBeforeLogout` handlers in the scope of their plugin, clears\n * all stores, and revokes the access token\n * Note: If you're using the sdk in a server environment, you may be more\n * interested in {@link `webex.internal.mercury.disconnect()`| Mercury#disconnect()}\n * and {@link `webex.internal.device.unregister()`|Device#unregister()}\n * or {@link `webex.phone.unregister()`|Phone#unregister}\n * @instance\n * @memberof WebexCore\n * @param {Object} options Passed as the first argument to all\n * `onBeforeLogout` handlers\n * @returns {Promise}\n */\n logout(options, ...rest) {\n // prefer the refresh token, but for clients that don't have one, fallback\n // to the access token\n const token =\n this.credentials.supertoken &&\n (this.credentials.supertoken.refresh_token || this.credentials.supertoken.access_token);\n\n options = Object.assign({token}, options);\n\n // onBeforeLogout should be executed in the opposite order in which handlers\n // were registered. In that way, wdm unregister() will be above mercury\n // disconnect(), but disconnect() will execute first.\n // eslint-disable-next-line arrow-body-style\n return this.config.onBeforeLogout\n .reverse()\n .reduce(\n (promise, {plugin, fn}) =>\n promise.then(() => {\n return (\n Promise.resolve(\n Reflect.apply(fn, this[plugin] || this.internal[plugin], [options, ...rest])\n )\n // eslint-disable-next-line max-nested-callbacks\n .catch((err) => {\n this.logger.warn(`onBeforeLogout from plugin ${plugin}: failed`, err);\n })\n );\n }),\n Promise.resolve()\n )\n .then(() => Promise.all([this.boundedStorage.clear(), this.unboundedStorage.clear()]))\n .then(() => this.credentials.invalidate(...rest))\n .then(\n () =>\n this.authorization &&\n this.authorization.logout &&\n this.authorization.logout(options, ...rest)\n )\n .then(() => this.trigger('client:logout'));\n },\n\n /**\n * General purpose wrapper to submit metrics via the metrics plugin (if the\n * metrics plugin is installed)\n * @instance\n * @memberof WebexCore\n * @returns {Promise}\n */\n measure(...args) {\n if (this.metrics) {\n return this.metrics.sendUnstructured(...args);\n }\n\n return Promise.resolve();\n },\n\n async upload(options) {\n if (!options.file) {\n return Promise.reject(new Error('`options.file` is required'));\n }\n\n options.phases = options.phases || {};\n options.phases.initialize = options.phases.initialize || {};\n options.phases.upload = options.phases.upload || {};\n options.phases.finalize = options.phases.finalize || {};\n\n defaultsDeep(\n options.phases.initialize,\n {\n method: 'POST',\n body: {\n uploadProtocol: 'content-length',\n },\n },\n omit(options, 'file', 'phases')\n );\n\n defaultsDeep(options.phases.upload, {\n method: 'PUT',\n json: false,\n withCredentials: false,\n body: options.file,\n headers: {\n 'x-trans-id': uuid.v4(),\n authorization: undefined,\n },\n });\n\n defaultsDeep(\n options.phases.finalize,\n {\n method: 'POST',\n },\n omit(options, 'file', 'phases')\n );\n\n const shunt = new EventEmitter();\n\n const promise = this._uploadPhaseInitialize(options)\n .then(() => {\n const p = this._uploadPhaseUpload(options);\n\n transferEvents('progress', p, shunt);\n\n return p;\n })\n .then((...args) => this._uploadPhaseFinalize(options, ...args))\n .then((res) => ({...res.body, ...res.headers}));\n\n proxyEvents(shunt, promise);\n\n return promise;\n },\n\n _uploadPhaseInitialize: function _uploadPhaseInitialize(options) {\n this.logger.debug('client: initiating upload session');\n\n return this.request(options.phases.initialize)\n .then((...args) => {\n const fileUploadSizeLimitInBytes =\n (args[0].body.fileUploadSizeLimit || MAX_FILE_SIZE_IN_MB) * 1024 * 1024;\n const currentFileSizeInBytes = options.file.byteLength;\n\n if (fileUploadSizeLimitInBytes && fileUploadSizeLimitInBytes < currentFileSizeInBytes) {\n return this._uploadAbortSession(currentFileSizeInBytes, ...args);\n }\n\n return this._uploadApplySession(options, ...args);\n })\n .then((res) => {\n this.logger.debug('client: initiated upload session');\n\n return res;\n });\n },\n\n _uploadAbortSession(currentFileSizeInBytes, response) {\n this.logger.debug('client: deleting uploaded file');\n\n return this.request({\n method: 'DELETE',\n url: response.body.url,\n headers: response.options.headers,\n }).then(() => {\n this.logger.debug('client: deleting uploaded file complete');\n\n const abortErrorDetails = {\n currentFileSizeInBytes,\n fileUploadSizeLimitInMB: response.body.fileUploadSizeLimit || MAX_FILE_SIZE_IN_MB,\n message: 'file-upload-size-limit-enabled',\n };\n\n return Promise.reject(new Error(`${JSON.stringify(abortErrorDetails)}`));\n });\n },\n\n _uploadApplySession(options, res) {\n const session = res.body;\n\n ['upload', 'finalize'].reduce((opts, key) => {\n opts[key] = Object.keys(opts[key]).reduce((phaseOptions, phaseKey) => {\n if (phaseKey.startsWith('$')) {\n phaseOptions[phaseKey.substr(1)] = phaseOptions[phaseKey](session);\n Reflect.deleteProperty(phaseOptions, phaseKey);\n }\n\n return phaseOptions;\n }, opts[key]);\n\n return opts;\n }, options.phases);\n },\n\n @retry\n _uploadPhaseUpload(options) {\n this.logger.debug('client: uploading file');\n\n const promise = this.request(options.phases.upload).then((res) => {\n this.logger.debug('client: uploaded file');\n\n return res;\n });\n\n proxyEvents(options.phases.upload.upload, promise);\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV === 'test') {\n promise.on('progress', (event) => {\n this.logger.info('upload progress', event.loaded, event.total);\n });\n }\n\n return promise;\n },\n\n _uploadPhaseFinalize: function _uploadPhaseFinalize(options) {\n this.logger.debug('client: finalizing upload session');\n\n return this.request(options.phases.finalize).then((res) => {\n this.logger.debug('client: finalized upload session');\n\n return res;\n });\n },\n});\n\nWebexCore.version = PACKAGE_VERSION;\n\nmixinWebexInternalCorePlugins(WebexInternalCore, config, interceptors);\nmixinWebexCorePlugins(WebexCore, config, interceptors);\n\nexport default WebexCore;\n\n/**\n * @method registerPlugin\n * @param {string} name\n * @param {function} constructor\n * @param {Object} options\n * @param {Array<string>} options.proxies\n * @param {Object} options.interceptors\n * @returns {null}\n */\nexport function registerPlugin(name, constructor, options = {}) {\n WebexCore.registerPlugin(name, constructor, options);\n}\n\n/**\n * Registers plugins used by internal products that do not talk to public APIs.\n * @method registerInternalPlugin\n * @param {string} name\n * @param {function} constructor\n * @param {Object} options\n * @param {Object} options.interceptors\n * @private\n * @returns {null}\n */\nexport function registerInternalPlugin(name, constructor, options) {\n WebexInternalCore.registerPlugin(name, constructor, options);\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -35,12 +35,12 @@
35
35
  "@webex/eslint-config-legacy": "0.0.0",
36
36
  "@webex/jest-config-legacy": "0.0.0",
37
37
  "@webex/legacy-tools": "0.0.0",
38
- "@webex/test-helper-chai": "3.5.0-next.9",
39
- "@webex/test-helper-make-local-url": "3.5.0-next.9",
40
- "@webex/test-helper-mocha": "3.5.0-next.9",
41
- "@webex/test-helper-mock-webex": "3.5.0-next.9",
42
- "@webex/test-helper-refresh-callback": "3.5.0-next.9",
43
- "@webex/test-helper-test-users": "3.5.0-next.9",
38
+ "@webex/test-helper-chai": "3.5.0-wxcc.1",
39
+ "@webex/test-helper-make-local-url": "3.5.0-wxcc.1",
40
+ "@webex/test-helper-mocha": "3.5.0-wxcc.1",
41
+ "@webex/test-helper-mock-webex": "3.5.0-wxcc.1",
42
+ "@webex/test-helper-refresh-callback": "3.5.0-wxcc.1",
43
+ "@webex/test-helper-test-users": "3.5.0-wxcc.1",
44
44
  "chai": "^4.3.4",
45
45
  "chai-as-promised": "^7.1.1",
46
46
  "eslint": "^8.24.0",
@@ -48,12 +48,12 @@
48
48
  "sinon": "^9.2.4"
49
49
  },
50
50
  "dependencies": {
51
- "@webex/common": "3.5.0-next.9",
52
- "@webex/common-timers": "3.5.0-next.9",
53
- "@webex/http-core": "3.5.0-next.9",
54
- "@webex/internal-plugin-device": "3.5.0-next.9",
55
- "@webex/plugin-logger": "3.5.0-next.9",
56
- "@webex/storage-adapter-spec": "3.5.0-next.9",
51
+ "@webex/common": "3.5.0-wxcc.1",
52
+ "@webex/common-timers": "3.5.0-wxcc.1",
53
+ "@webex/http-core": "3.5.0-wxcc.1",
54
+ "@webex/internal-plugin-device": "3.5.0-wxcc.1",
55
+ "@webex/plugin-logger": "3.5.0-wxcc.1",
56
+ "@webex/storage-adapter-spec": "3.5.0-wxcc.1",
57
57
  "ampersand-collection": "^2.0.2",
58
58
  "ampersand-events": "^2.0.2",
59
59
  "ampersand-state": "^5.0.3",
@@ -73,5 +73,5 @@
73
73
  "test:style": "eslint ./src/**/*.*",
74
74
  "test:unit": "webex-legacy-tools test --unit --runner jest"
75
75
  },
76
- "version": "3.5.0-next.9"
76
+ "version": "3.5.0-wxcc.1"
77
77
  }
package/src/index.js CHANGED
@@ -53,7 +53,6 @@ export {default as RequestLoggerInterceptor} from './interceptors/request-logger
53
53
  export {default as RequestTimingInterceptor} from './interceptors/request-timing';
54
54
  export {default as UserAgentInterceptor} from './interceptors/user-agent';
55
55
  export {default as WebexTrackingIdInterceptor} from './interceptors/webex-tracking-id';
56
- export {sequenceNumbers as webexTrackingIdSequenceNumbers} from './interceptors/webex-tracking-id';
57
56
  export {default as WebexUserAgentInterceptor} from './interceptors/webex-user-agent';
58
57
  export {default as RateLimitInterceptor} from './interceptors/rate-limit';
59
58
  export {default as EmbargoInterceptor} from './interceptors/embargo';
@@ -4,7 +4,7 @@
4
4
 
5
5
  import {Interceptor} from '@webex/http-core';
6
6
 
7
- export const sequenceNumbers = new Map();
7
+ const sequenceNumbers = new WeakMap();
8
8
 
9
9
  /**
10
10
  * @class
@@ -245,26 +245,66 @@ const ServiceCatalog = AmpState.extend({
245
245
  ...this.serviceGroups.override,
246
246
  ];
247
247
 
248
- return serviceUrls.find((serviceUrl) => {
249
- // Check to see if the URL we are checking starts with the default URL
250
- if (url.startsWith(serviceUrl.defaultUrl)) {
251
- return true;
248
+ let inputUrl;
249
+ try {
250
+ inputUrl = new URL(url);
251
+ } catch (error) {
252
+ // If URL parsing fails, return false
253
+ return false;
254
+ }
255
+
256
+ let exactMatch = null;
257
+ let anyMatch = null;
258
+
259
+ for (const serviceUrl of serviceUrls) {
260
+ let defaultServiceUrl;
261
+ try {
262
+ defaultServiceUrl = new URL(serviceUrl.defaultUrl);
263
+ } catch (error) {
264
+ // If URL parsing fails for the default URL, skip this service URL
265
+
266
+ // eslint-disable-next-line no-continue
267
+ continue;
252
268
  }
253
269
 
254
- // If not, we check to see if the alternate URLs match
255
- // These are made by swapping the host of the default URL
256
- // with that of an alternate host
257
- for (const host of serviceUrl.hosts) {
258
- const alternateUrl = new URL(serviceUrl.defaultUrl);
259
- alternateUrl.host = host.host;
270
+ const defaultHostname = defaultServiceUrl.hostname;
260
271
 
261
- if (url.startsWith(alternateUrl.toString())) {
262
- return true;
272
+ // Check if the hostname matches the default URL's hostname
273
+ if (inputUrl.hostname === defaultHostname) {
274
+ if (inputUrl.protocol === defaultServiceUrl.protocol) {
275
+ exactMatch = serviceUrl;
276
+ break;
277
+ } else {
278
+ anyMatch = serviceUrl;
263
279
  }
264
280
  }
265
281
 
266
- return false;
267
- });
282
+ // Check alternate hostnames
283
+ for (const host of serviceUrl.hosts) {
284
+ try {
285
+ const alternateUrl = new URL(serviceUrl.defaultUrl);
286
+ alternateUrl.hostname = host.host;
287
+
288
+ if (inputUrl.hostname === alternateUrl.hostname) {
289
+ if (inputUrl.protocol === alternateUrl.protocol) {
290
+ exactMatch = serviceUrl;
291
+ break;
292
+ } else {
293
+ anyMatch = serviceUrl;
294
+ }
295
+ }
296
+ } catch (error) {
297
+ // If URL parsing fails for the alternate URL, skip this host
298
+ // Just let the loop proceed to the next iteration
299
+ }
300
+ }
301
+
302
+ if (exactMatch) {
303
+ break;
304
+ }
305
+ }
306
+
307
+ return exactMatch || anyMatch || false;
268
308
  },
269
309
 
270
310
  /**
package/src/webex-core.js CHANGED
@@ -204,6 +204,7 @@ const WebexCore = AmpState.extend({
204
204
  type: 'any',
205
205
  },
206
206
  sessionId: {
207
+ setOnce: true,
207
208
  type: 'string',
208
209
  },
209
210
  },
@@ -208,48 +208,108 @@ describe('webex-core', () => {
208
208
  hosts: [{host: 'example1.com'}, {host: 'example2.com'}],
209
209
  };
210
210
 
211
- it.each([
212
- 'discovery',
213
- 'preauth',
214
- 'signin',
215
- 'postauth',
216
- 'override'
217
- ])('matches a default url correctly', (serviceGroup) => {
218
- const url = 'https://example.com/resource/id';
219
-
220
-
221
- const exampleService = {
222
- defaultUrl: 'https://example.com/resource',
223
- hosts: [{host: 'example1.com'}, {host: 'example2.com'}],
211
+ it('should return false if the URL is invalid', () => {
212
+ const result = catalog.findServiceUrlFromUrl('invalid-url');
213
+ assert.isFalse(result);
214
+ });
215
+
216
+ it('should return the service URL object if found in the service groups', () => {
217
+ catalog.serviceGroups = {
218
+ discovery: [{defaultUrl: 'https://discovery.example.com', hosts: []}],
219
+ preauth: [{defaultUrl: 'https://preauth.example.com', hosts: []}],
220
+ signin: [{defaultUrl: 'https://signin.example.com', hosts: []}],
221
+ postauth: [{defaultUrl: 'https://postauth.example.com', hosts: []}],
222
+ override: [{defaultUrl: 'https://override.example.com', hosts: []}],
224
223
  };
225
224
 
226
- catalog.serviceGroups[serviceGroup].push(otherService, exampleService);
225
+ const result = catalog.findServiceUrlFromUrl('https://signin.example.com/resource');
226
+ assert.deepEqual(result, {defaultUrl: 'https://signin.example.com', hosts: []});
227
+ });
227
228
 
228
- const service = catalog.findServiceUrlFromUrl(url);
229
+ it('should return false if the service URL is not found in the service groups', () => {
230
+ catalog.serviceGroups = {
231
+ discovery: [{defaultUrl: 'https://discovery.example.com', hosts: []}],
232
+ preauth: [{defaultUrl: 'https://preauth.example.com', hosts: []}],
233
+ signin: [{defaultUrl: 'https://signin.example.com', hosts: []}],
234
+ postauth: [{defaultUrl: 'https://postauth.example.com', hosts: []}],
235
+ override: [{defaultUrl: 'https://override.example.com', hosts: []}],
236
+ };
229
237
 
230
- assert.equal(service, exampleService);
238
+ const result = catalog.findServiceUrlFromUrl('https://unknown.example.com/resource');
239
+ assert.isFalse(result);
231
240
  });
232
241
 
233
- it.each([
234
- 'discovery',
235
- 'preauth',
236
- 'signin',
237
- 'postauth',
238
- 'override'
239
- ])('matches an alternate host url', (serviceGroup) => {
240
- const url = 'https://example2.com/resource/id';
242
+ it('should handle alternate hostnames correctly', () => {
243
+ catalog.serviceGroups = {
244
+ discovery: [{defaultUrl: 'https://discovery.example.com', hosts: [{host: 'alt.discovery.example.com'}]}],
245
+ preauth: [{defaultUrl: 'https://preauth.example.com', hosts: [{host: 'alt.preauth.example.com'}]}],
246
+ signin: [{defaultUrl: 'https://signin.example.com', hosts: [{host: 'alt.signin.example.com'}]}],
247
+ postauth: [{defaultUrl: 'https://postauth.example.com', hosts: [{host: 'alt.postauth.example.com'}]}],
248
+ override: [{defaultUrl: 'https://override.example.com', hosts: [{host: 'alt.override.example.com'}]}],
249
+ };
241
250
 
242
- const exampleService = {
243
- defaultUrl: 'https://example.com/resource',
244
- hosts: [{host: 'example1.com'}, {host: 'example2.com'}],
251
+ const result = catalog.findServiceUrlFromUrl('https://alt.signin.example.com/resource');
252
+ assert.deepEqual(result, {defaultUrl: 'https://signin.example.com', hosts: [{host: 'alt.signin.example.com'}]});
253
+ });
254
+
255
+ it('should skip service URLs with invalid default URLs', () => {
256
+ catalog.serviceGroups = {
257
+ discovery: [{defaultUrl: 'invalid-url', hosts: []}],
258
+ preauth: [{defaultUrl: 'https://preauth.example.com', hosts: []}],
259
+ signin: [{defaultUrl: 'https://signin.example.com', hosts: []}],
260
+ postauth: [{defaultUrl: 'https://postauth.example.com', hosts: []}],
261
+ override: [{defaultUrl: 'https://override.example.com', hosts: []}],
245
262
  };
246
263
 
247
- catalog.serviceGroups[serviceGroup].push(otherService, exampleService);
264
+ const result = catalog.findServiceUrlFromUrl('https://signin.example.com/resource');
265
+ assert.deepEqual(result, {defaultUrl: 'https://signin.example.com', hosts: []});
266
+ });
267
+
268
+ it('should skip alternate hostnames with invalid URLs', () => {
269
+ catalog.serviceGroups = {
270
+ discovery: [{defaultUrl: 'https://discovery.example.com', hosts: [{host: 'invalid-url'}]}],
271
+ preauth: [{defaultUrl: 'https://preauth.example.com', hosts: []}],
272
+ signin: [{defaultUrl: 'https://signin.example.com', hosts: []}],
273
+ postauth: [{defaultUrl: 'https://postauth.example.com', hosts: []}],
274
+ override: [{defaultUrl: 'https://override.example.com', hosts: []}],
275
+ };
276
+
277
+ const result = catalog.findServiceUrlFromUrl('https://signin.example.com/resource');
278
+ assert.deepEqual(result, {defaultUrl: 'https://signin.example.com', hosts: []});
279
+ });
280
+
281
+ it('should return the service URL object if found with a different protocol', () => {
282
+ catalog.serviceGroups = {
283
+ discovery: [{defaultUrl: 'https://discovery.example.com', hosts: []}],
284
+ preauth: [{defaultUrl: 'https://preauth.example.com', hosts: []}],
285
+ signin: [{defaultUrl: 'https://signin.example.com', hosts: []}],
286
+ postauth: [{defaultUrl: 'https://postauth.example.com', hosts: []}],
287
+ override: [{defaultUrl: 'https://override.example.com', hosts: []}],
288
+ };
289
+
290
+ const result = catalog.findServiceUrlFromUrl('wss://signin.example.com/resource');
291
+ assert.deepEqual(result, {defaultUrl: 'https://signin.example.com', hosts: []});
292
+ });
293
+
294
+ it('should return the exact protocol service URL object if both protocols are present', () => {
295
+ catalog.serviceGroups = {
296
+ discovery: [{defaultUrl: 'https://discovery.example.com', hosts: []}],
297
+ preauth: [{defaultUrl: 'https://preauth.example.com', hosts: []}],
298
+ signin: [
299
+ {defaultUrl: 'https://signin.example.com', hosts: []},
300
+ {defaultUrl: 'wss://signin.example.com', hosts: []},
301
+ ],
302
+ postauth: [{defaultUrl: 'https://postauth.example.com', hosts: []}],
303
+ override: [{defaultUrl: 'https://override.example.com', hosts: []}],
304
+ };
248
305
 
249
- const service = catalog.findServiceUrlFromUrl(url);
306
+ const resultHttps = catalog.findServiceUrlFromUrl('https://signin.example.com/resource');
307
+ const resultWss = catalog.findServiceUrlFromUrl('wss://signin.example.com/resource');
250
308
 
251
- assert.equal(service, exampleService);
309
+ assert.deepEqual(resultHttps, {defaultUrl: 'https://signin.example.com', hosts: []});
310
+ assert.deepEqual(resultWss, {defaultUrl: 'wss://signin.example.com', hosts: []});
252
311
  });
312
+
253
313
  });
254
314
  });
255
315
  });