@webex/webex-core 2.59.8-next.1 → 2.60.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/config.js +1 -2
  2. package/dist/config.js.map +1 -1
  3. package/dist/credentials-config.js +1 -2
  4. package/dist/credentials-config.js.map +1 -1
  5. package/dist/index.js +2 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/interceptors/auth.js +4 -3
  8. package/dist/interceptors/auth.js.map +1 -1
  9. package/dist/interceptors/default-options.js +4 -3
  10. package/dist/interceptors/default-options.js.map +1 -1
  11. package/dist/interceptors/embargo.js +4 -3
  12. package/dist/interceptors/embargo.js.map +1 -1
  13. package/dist/interceptors/network-timing.js +4 -3
  14. package/dist/interceptors/network-timing.js.map +1 -1
  15. package/dist/interceptors/payload-transformer.js +4 -3
  16. package/dist/interceptors/payload-transformer.js.map +1 -1
  17. package/dist/interceptors/rate-limit.js +4 -3
  18. package/dist/interceptors/rate-limit.js.map +1 -1
  19. package/dist/interceptors/redirect.js +4 -3
  20. package/dist/interceptors/redirect.js.map +1 -1
  21. package/dist/interceptors/request-event.js +4 -3
  22. package/dist/interceptors/request-event.js.map +1 -1
  23. package/dist/interceptors/request-logger.js +4 -3
  24. package/dist/interceptors/request-logger.js.map +1 -1
  25. package/dist/interceptors/request-timing.js +4 -3
  26. package/dist/interceptors/request-timing.js.map +1 -1
  27. package/dist/interceptors/response-logger.js +4 -3
  28. package/dist/interceptors/response-logger.js.map +1 -1
  29. package/dist/interceptors/user-agent.js +4 -3
  30. package/dist/interceptors/user-agent.js.map +1 -1
  31. package/dist/interceptors/webex-tracking-id.js +4 -3
  32. package/dist/interceptors/webex-tracking-id.js.map +1 -1
  33. package/dist/interceptors/webex-user-agent.js +4 -3
  34. package/dist/interceptors/webex-user-agent.js.map +1 -1
  35. package/dist/lib/batcher.js +2 -3
  36. package/dist/lib/batcher.js.map +1 -1
  37. package/dist/lib/constants.js +13 -0
  38. package/dist/lib/constants.js.map +1 -0
  39. package/dist/lib/credentials/credentials.js +67 -26
  40. package/dist/lib/credentials/credentials.js.map +1 -1
  41. package/dist/lib/credentials/grant-errors.js +5 -5
  42. package/dist/lib/credentials/grant-errors.js.map +1 -1
  43. package/dist/lib/credentials/scope.js +21 -2
  44. package/dist/lib/credentials/scope.js.map +1 -1
  45. package/dist/lib/credentials/token-collection.js +1 -2
  46. package/dist/lib/credentials/token-collection.js.map +1 -1
  47. package/dist/lib/credentials/token.js +9 -8
  48. package/dist/lib/credentials/token.js.map +1 -1
  49. package/dist/lib/page.js +1 -2
  50. package/dist/lib/page.js.map +1 -1
  51. package/dist/lib/services/constants.js +3 -6
  52. package/dist/lib/services/constants.js.map +1 -1
  53. package/dist/lib/services/index.js +2 -2
  54. package/dist/lib/services/index.js.map +1 -1
  55. package/dist/lib/services/interceptors/server-error.js +4 -3
  56. package/dist/lib/services/interceptors/server-error.js.map +1 -1
  57. package/dist/lib/services/interceptors/service.js +8 -5
  58. package/dist/lib/services/interceptors/service.js.map +1 -1
  59. package/dist/lib/services/metrics.js +1 -2
  60. package/dist/lib/services/metrics.js.map +1 -1
  61. package/dist/lib/services/service-catalog.js +5 -5
  62. package/dist/lib/services/service-catalog.js.map +1 -1
  63. package/dist/lib/services/service-fed-ramp.js +1 -2
  64. package/dist/lib/services/service-fed-ramp.js.map +1 -1
  65. package/dist/lib/services/service-host.js +1 -2
  66. package/dist/lib/services/service-host.js.map +1 -1
  67. package/dist/lib/services/service-registry.js +3 -4
  68. package/dist/lib/services/service-registry.js.map +1 -1
  69. package/dist/lib/services/service-state.js +1 -2
  70. package/dist/lib/services/service-state.js.map +1 -1
  71. package/dist/lib/services/service-url.js +1 -2
  72. package/dist/lib/services/service-url.js.map +1 -1
  73. package/dist/lib/services/services.js +6 -9
  74. package/dist/lib/services/services.js.map +1 -1
  75. package/dist/lib/stateless-webex-plugin.js +1 -2
  76. package/dist/lib/stateless-webex-plugin.js.map +1 -1
  77. package/dist/lib/storage/decorators.js.map +1 -1
  78. package/dist/lib/storage/errors.js +5 -5
  79. package/dist/lib/storage/errors.js.map +1 -1
  80. package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
  81. package/dist/lib/storage/make-webex-store.js.map +1 -1
  82. package/dist/lib/storage/memory-store-adapter.js +1 -2
  83. package/dist/lib/storage/memory-store-adapter.js.map +1 -1
  84. package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
  85. package/dist/lib/webex-http-error.js +4 -3
  86. package/dist/lib/webex-http-error.js.map +1 -1
  87. package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
  88. package/dist/lib/webex-plugin.js +1 -2
  89. package/dist/lib/webex-plugin.js.map +1 -1
  90. package/dist/plugins/logger.js +2 -3
  91. package/dist/plugins/logger.js.map +1 -1
  92. package/dist/webex-core.js +13 -6
  93. package/dist/webex-core.js.map +1 -1
  94. package/dist/webex-internal-core.js +1 -2
  95. package/dist/webex-internal-core.js.map +1 -1
  96. package/package.json +14 -14
  97. package/src/lib/constants.js +6 -0
  98. package/src/lib/credentials/credentials.js +82 -40
  99. package/src/lib/credentials/scope.js +19 -2
  100. package/src/lib/services/interceptors/service.js +2 -2
  101. package/src/lib/services/service-catalog.js +3 -1
  102. package/src/webex-core.js +13 -1
  103. package/test/unit/spec/credentials/credentials.js +169 -13
  104. package/test/unit/spec/credentials/scope.js +55 -0
  105. package/test/unit/spec/interceptors/auth.js +3 -0
  106. package/test/unit/spec/services/interceptors/service.js +9 -3
  107. package/test/unit/spec/webex-core.js +12 -0
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
 
3
+ var _typeof = require("@babel/runtime-corejs2/helpers/typeof");
3
4
  var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
4
5
  var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
5
6
  var _Object$getOwnPropertyDescriptor2 = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
6
7
  var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
7
8
  var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
8
9
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
10
+ var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
9
11
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
10
12
  _Object$defineProperty(exports, "__esModule", {
11
13
  value: true
@@ -28,13 +30,19 @@ var _commonTimers = require("@webex/common-timers");
28
30
  var _lodash = require("lodash");
29
31
  var _webexPlugin = _interopRequireDefault(require("../webex-plugin"));
30
32
  var _decorators = require("../storage/decorators");
31
- var _grantErrors = _interopRequireDefault(require("./grant-errors"));
33
+ var _grantErrors = _interopRequireWildcard(require("./grant-errors"));
32
34
  var _scope = require("./scope");
33
35
  var _token = _interopRequireDefault(require("./token"));
34
36
  var _tokenCollection = _interopRequireDefault(require("./token-collection"));
37
+ var _constants = require("../constants");
35
38
  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _obj;
36
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor2(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
37
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor2(source, key)); }); } return target; }
39
+ /*!
40
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
41
+ */
42
+ function _getRequireWildcardCache(e) { if ("function" != typeof _WeakMap) return null; var r = new _WeakMap(), t = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
43
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = _Object$defineProperty && _Object$getOwnPropertyDescriptor2; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? _Object$getOwnPropertyDescriptor2(e, u) : null; i && (i.get || i.set) ? _Object$defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
44
+ function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor2(e, r).enumerable; })), t.push.apply(t, o); } return t; }
45
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor2(t, r)); }); } return e; }
38
46
  /**
39
47
  * @class
40
48
  */
@@ -65,6 +73,22 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
65
73
  }
66
74
  return Boolean(this.supertoken && this.supertoken.canRefresh);
67
75
  }
76
+ },
77
+ isUnverifiedGuest: {
78
+ deps: ['supertoken'],
79
+ /**
80
+ * Returns true if the user is an unverified guest
81
+ * @returns {boolean}
82
+ */
83
+ fn: function fn() {
84
+ var isGuest = false;
85
+ try {
86
+ isGuest = JSON.parse(_common.base64.decode(this.supertoken.access_token.split('.')[1])).user_type === 'guest';
87
+ } catch (_unused) {
88
+ /* the non-guest token is formatted differently so catch is expected */
89
+ }
90
+ return isGuest;
91
+ }
68
92
  }
69
93
  },
70
94
  props: {
@@ -249,8 +273,16 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
249
273
  downscope: function downscope(scope) {
250
274
  var _this2 = this;
251
275
  return this.supertoken.downscope(scope).catch(function (reason) {
252
- _this2.logger.trace("credentials: failed to downscope supertoken to ".concat(scope), reason);
276
+ var _reason$body;
277
+ var failReason = (_reason$body = reason === null || reason === void 0 ? void 0 : reason.body) !== null && _reason$body !== void 0 ? _reason$body : reason;
278
+ _this2.logger.warn("credentials: failed to downscope supertoken to \"".concat(scope, "\""), failReason);
253
279
  _this2.logger.trace("credentials: falling back to supertoken for ".concat(scope));
280
+ _this2.webex.internal.metrics.submitClientMetrics(_constants.METRICS.JS_SDK_CREDENTIALS_DOWNSCOPE_FAILED, {
281
+ fields: {
282
+ requestedScope: scope,
283
+ failReason: failReason
284
+ }
285
+ });
254
286
  return _promise.default.resolve(new _token.default(_objectSpread({
255
287
  scope: scope
256
288
  }, _this2.supertoken.serialize())), {
@@ -322,10 +354,10 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
322
354
  return _promise.default.reject(new Error('Current state cannot produce an access token'));
323
355
  }
324
356
  if (!scope) {
325
- scope = (0, _scope.filterScope)('spark:kms', _this4.config.scope);
357
+ scope = (0, _scope.filterScope)('spark:kms', _this4.supertoken.scope);
326
358
  }
327
359
  scope = (0, _scope.sortScope)(scope);
328
- if (scope === (0, _scope.sortScope)(_this4.config.scope)) {
360
+ if (scope === (0, _scope.sortScope)(_this4.supertoken.scope)) {
329
361
  return _promise.default.resolve(_this4.supertoken);
330
362
  }
331
363
  var token = _this4.userTokens.get(scope);
@@ -457,15 +489,40 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
457
489
  if (this.webex.internal.services) {
458
490
  this.webex.internal.services.updateCredentialsConfig();
459
491
  }
460
- return supertoken.refresh().then(function (st) {
492
+ return supertoken.refresh().catch(function (error) {
493
+ if (error instanceof _grantErrors.OAuthError) {
494
+ // Error: super token refresh failed with 400 status code.
495
+ // Hence emit an event to the client, an opportunity to logout.
496
+ _this6.unset('supertoken');
497
+ while (_this6.userTokens.models.length) {
498
+ try {
499
+ _this6.userTokens.remove(_this6.userTokens.models[0]);
500
+ } catch (err) {
501
+ _this6.logger.warn('credentials: failed to remove user token', err);
502
+ }
503
+ }
504
+ _this6.webex.trigger('client:InvalidRequestError');
505
+ }
506
+ return _promise.default.reject(error);
507
+ }).then(function (st) {
461
508
  // clear refresh timer
462
509
  if (_this6.refreshTimer) {
463
510
  clearTimeout(_this6.refreshTimer);
464
511
  _this6.unset('refreshTimer');
465
512
  }
466
513
  _this6.supertoken = st;
514
+ var invalidScopes = (0, _scope.diffScopes)(_this6.config.scope, st.scope);
515
+ if (invalidScopes !== '') {
516
+ _this6.logger.warn("credentials: \"".concat(invalidScopes, "\" scope(s) are invalid because not listed in the supertoken, they will be excluded from user token requests."));
517
+ _this6.webex.internal.metrics.submitClientMetrics(_constants.METRICS.JS_SDK_CREDENTIALS_TOKEN_REFRESH_SCOPE_MISMATCH, {
518
+ fields: {
519
+ invalidScopes: invalidScopes
520
+ }
521
+ });
522
+ }
467
523
  return _promise.default.all(tokens.map(function (token) {
468
- return _this6.downscope(token.scope)
524
+ var tokenScope = (0, _scope.filterScope)((0, _scope.diffScopes)(token.scope, st.scope), token.scope);
525
+ return _this6.downscope(tokenScope)
469
526
  // eslint-disable-next-line max-nested-callbacks
470
527
  .then(function (t) {
471
528
  _this6.logger.info("credentials: revoking token for ".concat(token.scope));
@@ -479,21 +536,6 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
479
536
  }));
480
537
  }).then(function () {
481
538
  _this6.scheduleRefresh(_this6.supertoken.expires);
482
- }).catch(function (error) {
483
- var InvalidRequestError = _grantErrors.default.InvalidRequestError;
484
- if (error instanceof InvalidRequestError) {
485
- // Error: The refresh token provided is expired, revoked, malformed, or invalid. Hence emit an event to the client, an opportunity to logout.
486
- _this6.unset('supertoken');
487
- while (_this6.userTokens.models.length) {
488
- try {
489
- _this6.userTokens.remove(_this6.userTokens.models[0]);
490
- } catch (err) {
491
- _this6.logger.warn('credentials: failed to remove user token', err);
492
- }
493
- }
494
- _this6.webex.trigger('client:InvalidRequestError');
495
- }
496
- return _promise.default.reject(error);
497
539
  });
498
540
  },
499
541
  /**
@@ -516,8 +558,7 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
516
558
  this.refresh();
517
559
  }
518
560
  },
519
- version: "2.59.8-next.1"
561
+ version: "2.60.0-next.1"
520
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)));
521
- var _default = Credentials;
522
- exports.default = _default;
563
+ var _default = exports.default = Credentials;
523
564
  //# sourceMappingURL=credentials.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_querystring","_interopRequireDefault","require","_url","_jsonwebtoken","_common","_commonTimers","_lodash","_webexPlugin","_decorators","_grantErrors","_scope","_token","_tokenCollection","_dec","_dec2","_dec3","_dec4","_dec5","_dec6","_obj","ownKeys","object","enumerableOnly","keys","_Object$keys2","_Object$getOwnPropertySymbols","symbols","filter","sym","_Object$getOwnPropertyDescriptor2","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","Object","forEach","key","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","Credentials","WebexPlugin","extend","oneFlight","keyFactory","scope","waitForValue","persist","whileInFlight","collections","userTokens","TokenCollection","dataTypes","token","makeStateDataType","Token","dataType","derived","canAuthorize","deps","fn","Boolean","supertoken","canRefresh","config","jwtRefreshCallback","props","prop","namespace","session","isRefreshing","type","ready","refreshTimer","undefined","buildLoginUrl","options","clientType","state","isObject","Error","client_id","redirect_uri","cloneDeep","response_type","_deleteProperty","isEmpty","base64","toBase64Url","_stringify","concat","authorizeUrl","querystring","stringify","getOrgId","logger","info","extractOrgIdFromJWT","access_token","e","_this$supertoken","extractOrgIdFromUserToken","f","decodedJWT","jwt","decode","realm","fields","split","buildLogoutUrl","logoutUrl","cisService","service","goto","calcRefreshTimeout","expiration","Math","floor","random","constructor","_this","_dataTypes","_keys","set","bind","_len","args","Array","_key","_apply","downscope","_this2","catch","reason","trace","_promise","resolve","serialize","parent","getClientToken","_this3","webex","request","method","uri","tokenUrl","form","grant_type","self_contained_token","auth","user","pass","client_secret","sendImmediately","shouldRefreshAccessToken","then","res","body","statusCode","reject","ErrorConstructor","grantErrors","select","error","_res","getUserToken","_this4","once","filterScope","sortScope","get","tap","t","add","initialize","attrs","_this5","authorization","expires","scheduleRefresh","prototype","listenToOnce","authorizationString","parsed","url","parse","query","href","substr","indexOf","invalidate","clearTimeout","unset","err","warn","models","remove","refresh","_this6","tokens","clone","requestAccessTokenFromJwt","internal","services","updateCredentialsConfig","st","all","map","revoke","InvalidRequestError","trigger","_this7","expiresIn","_now","timeoutLength","safeSetTimeout","version","_applyDecoratedDescriptor2","_getOwnPropertyDescriptor","_default","exports"],"sources":["credentials.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport querystring from 'querystring';\nimport url from 'url';\n\nimport jwt from 'jsonwebtoken';\nimport {base64, makeStateDataType, oneFlight, tap, whileInFlight} from '@webex/common';\nimport {safeSetTimeout} from '@webex/common-timers';\nimport {clone, cloneDeep, isObject, isEmpty} from 'lodash';\n\nimport WebexPlugin from '../webex-plugin';\nimport {persist, waitForValue} from '../storage/decorators';\n\nimport grantErrors from './grant-errors';\nimport {filterScope, sortScope} from './scope';\nimport Token from './token';\nimport TokenCollection from './token-collection';\n\n/**\n * @class\n */\nconst Credentials = WebexPlugin.extend({\n collections: {\n userTokens: TokenCollection,\n },\n\n dataTypes: {\n token: makeStateDataType(Token, 'token').dataType,\n },\n\n derived: {\n canAuthorize: {\n deps: ['supertoken', 'supertoken.canAuthorize', 'canRefresh'],\n fn() {\n return Boolean((this.supertoken && this.supertoken.canAuthorize) || this.canRefresh);\n },\n },\n canRefresh: {\n deps: ['supertoken', 'supertoken.canRefresh'],\n fn() {\n // If we're operating in JWT mode, we have to delegate to the consumer\n if (this.config.jwtRefreshCallback) {\n return true;\n }\n\n return Boolean(this.supertoken && this.supertoken.canRefresh);\n },\n },\n },\n\n props: {\n supertoken: makeStateDataType(Token, 'token').prop,\n },\n\n namespace: 'Credentials',\n\n session: {\n isRefreshing: {\n default: false,\n type: 'boolean',\n },\n /**\n * Becomes `true` once the {@link loaded} event fires.\n * @see {@link WebexPlugin#ready}\n * @instance\n * @memberof Credentials\n * @type {boolean}\n */\n ready: {\n default: false,\n type: 'boolean',\n },\n refreshTimer: {\n default: undefined,\n type: 'any',\n },\n },\n\n /**\n * Generates an OAuth Login URL. Prefers the api.ciscospark.com proxy if the\n * instance is initialize with an authorizatUrl, but fallsback to idbroker\n * as the base otherwise.\n * @instance\n * @memberof Credentials\n * @param {Object} [options={}]\n * @returns {string}\n */\n buildLoginUrl(options = {clientType: 'public'}) {\n /* eslint-disable camelcase */\n if (options.state && !isObject(options.state)) {\n throw new Error('if specified, `options.state` must be an object');\n }\n\n options.client_id = this.config.client_id;\n options.redirect_uri = this.config.redirect_uri;\n options.scope = this.config.scope;\n\n options = cloneDeep(options);\n\n if (!options.response_type) {\n options.response_type = options.clientType === 'public' ? 'token' : 'code';\n }\n Reflect.deleteProperty(options, 'clientType');\n\n if (options.state) {\n if (!isEmpty(options.state)) {\n options.state = base64.toBase64Url(JSON.stringify(options.state));\n } else {\n delete options.state;\n }\n }\n\n return `${this.config.authorizeUrl}?${querystring.stringify(options)}`;\n /* eslint-enable camelcase */\n },\n\n /**\n * Get the determined OrgId.\n *\n * @throws {Error} - If the OrgId could not be determined.\n * @returns {string} - The OrgId.\n */\n getOrgId() {\n this.logger.info('credentials: attempting to retrieve the OrgId from token');\n\n try {\n // Attempt to extract a client-authenticated token's OrgId.\n this.logger.info('credentials: trying to extract OrgId from JWT');\n\n return this.extractOrgIdFromJWT(this.supertoken.access_token);\n } catch (e) {\n // Attempt to extract a user token's OrgId.\n this.logger.info('credentials: could not extract OrgId from JWT');\n this.logger.info('credentials: attempting to extract OrgId from user token');\n\n try {\n return this.extractOrgIdFromUserToken(this.supertoken?.access_token);\n } catch (f) {\n this.logger.info('credentials: could not extract OrgId from user token');\n throw f;\n }\n }\n },\n\n /**\n * Extract the OrgId [realm] from a provided JWT.\n *\n * @private\n * @param {string} token - The JWT to extract the OrgId from.\n * @throws {Error} - If the token does not pass JWT general/realm validation.\n * @returns {string} - The OrgId.\n */\n extractOrgIdFromJWT(token = '') {\n // Decoded the provided token.\n const decodedJWT = jwt.decode(token);\n\n // Validate that the provided token is a JWT.\n if (!decodedJWT) {\n throw new Error('unable to extract the OrgId from the provided JWT');\n }\n\n if (!decodedJWT.realm) {\n throw new Error('the provided JWT does not contain an OrgId');\n }\n\n // Return the OrgId [realm].\n return decodedJWT.realm;\n },\n\n /**\n * Extract the OrgId [realm] from a provided user token.\n *\n * @private\n * @param {string} token - The user token to extract the OrgId from.\n * @throws {Error} - Will throw an error if the provided token is invalid.\n * @returns {string} - The OrgId.\n */\n extractOrgIdFromUserToken(token = '') {\n // Split the provided token into subsections.\n const fields = token.split('_');\n\n // Validate that the provided token has the proper amount of sections.\n if (fields.length !== 3) {\n throw new Error('the provided token is not a valid format');\n }\n\n // Return the token section that contains the OrgId.\n return fields[2];\n },\n\n /**\n * Generates a Logout URL\n * @instance\n * @memberof Credentials\n * @param {Object} [options={}]\n * @returns {[type]}\n */\n buildLogoutUrl(options = {}) {\n return `${this.config.logoutUrl}?${querystring.stringify({\n cisService: this.config.service,\n goto: this.config.redirect_uri,\n ...options,\n })}`;\n },\n\n /**\n * Generates a number between 60% - 90% of expired value\n * @instance\n * @memberof Credentials\n * @param {number} expiration\n * @private\n * @returns {number}\n */\n calcRefreshTimeout(expiration) {\n return Math.floor(((Math.floor(Math.random() * 4) + 6) / 10) * expiration);\n },\n\n constructor(...args) {\n // HACK to deal with the fact that AmpersandState#dataTypes#set is a pure\n // function.\n this._dataTypes = cloneDeep(this._dataTypes);\n Object.keys(this._dataTypes).forEach((key) => {\n if (this._dataTypes[key].set) {\n this._dataTypes[key].set = this._dataTypes[key].set.bind(this);\n }\n });\n // END HACK\n Reflect.apply(WebexPlugin, this, args);\n },\n\n /**\n * Downscopes a token\n * @instance\n * @memberof Credentials\n * @param {string} scope\n * @private\n * @returns {Promise<Token>}\n */\n downscope(scope) {\n return this.supertoken.downscope(scope).catch((reason) => {\n this.logger.trace(`credentials: failed to downscope supertoken to ${scope}`, reason);\n this.logger.trace(`credentials: falling back to supertoken for ${scope}`);\n\n return Promise.resolve(new Token({scope, ...this.supertoken.serialize()}), {\n parent: this,\n });\n });\n },\n\n /**\n * Requests a client credentials grant and returns the token. Given the\n * limited use for such tokens as this time, this method does not cache its\n * token.\n * @instance\n * @memberof Credentials\n * @param {Object} options\n * @returns {Promise<Token>}\n */\n getClientToken(options = {}) {\n this.logger.info('credentials: requesting client credentials grant');\n\n return this.webex\n .request({\n /* eslint-disable camelcase */\n method: 'POST',\n uri: options.uri || this.config.tokenUrl,\n form: {\n grant_type: 'client_credentials',\n scope: options.scope || 'webexsquare:admin',\n self_contained_token: true,\n },\n auth: {\n user: this.config.client_id,\n pass: this.config.client_secret,\n sendImmediately: true,\n },\n shouldRefreshAccessToken: false,\n /* eslint-enable camelcase */\n })\n .then((res) => new Token(res.body, {parent: this}))\n .catch((res) => {\n if (res.statusCode !== 400) {\n return Promise.reject(res);\n }\n\n const ErrorConstructor = grantErrors.select(res.body.error);\n\n return Promise.reject(new ErrorConstructor(res._res || res));\n });\n },\n\n @oneFlight({keyFactory: (scope) => scope})\n @waitForValue('@')\n /**\n * Resolves with a token with the specified scopes. If no scope is specified,\n * defaults to omit(webex.credentials.scope, 'spark:kms'). If no such token is\n * available, downscopes the supertoken to that scope.\n * @instance\n * @memberof Credentials\n * @param {string} scope\n * @returns {Promise<Token>}\n */\n getUserToken(scope) {\n return Promise.resolve(\n !this.isRefreshing ||\n new Promise((resolve) => {\n this.logger.info(\n 'credentials: token refresh inflight; delaying getUserToken until refresh completes'\n );\n this.once('change:isRefreshing', () => {\n this.logger.info('credentials: token refresh complete; reinvoking getUserToken');\n resolve();\n });\n })\n ).then(() => {\n if (!this.canAuthorize) {\n this.logger.info('credentials: cannot produce an access token from current state');\n\n return Promise.reject(new Error('Current state cannot produce an access token'));\n }\n\n if (!scope) {\n scope = filterScope('spark:kms', this.config.scope);\n }\n\n scope = sortScope(scope);\n\n if (scope === sortScope(this.config.scope)) {\n return Promise.resolve(this.supertoken);\n }\n\n const token = this.userTokens.get(scope);\n\n // we should also check for the token.access_token since token object does\n // not get cleared on unsetting while logging out.\n if (!token || !token.access_token) {\n return this.downscope(scope).then(tap((t) => this.userTokens.add(t)));\n }\n\n return Promise.resolve(token);\n });\n },\n\n @persist('@')\n /**\n * Initializer\n * @instance\n * @memberof Credentials\n * @param {Object} attrs\n * @param {Object} options\n * @private\n * @returns {Credentials}\n */\n initialize(attrs, options) {\n if (attrs) {\n if (typeof attrs === 'string') {\n this.supertoken = attrs;\n }\n\n if (attrs.access_token) {\n this.supertoken = attrs;\n }\n\n if (attrs.authorization) {\n if (attrs.authorization.supertoken) {\n this.supertoken = attrs.authorization.supertoken;\n } else {\n this.supertoken = attrs.authorization;\n }\n }\n\n // schedule refresh\n if (this.supertoken && this.supertoken.expires) {\n this.scheduleRefresh(this.supertoken.expires);\n }\n }\n\n Reflect.apply(WebexPlugin.prototype.initialize, this, [attrs, options]);\n\n this.listenToOnce(this.parent, 'change:config', () => {\n if (this.config.authorizationString) {\n const parsed = url.parse(this.config.authorizationString, true);\n\n /* eslint-disable camelcase */\n this.config.client_id = parsed.query.client_id;\n this.config.redirect_uri = parsed.query.redirect_uri;\n this.config.scope = parsed.query.scope;\n this.config.authorizeUrl = parsed.href.substr(0, parsed.href.indexOf('?'));\n /* eslint-enable camelcase */\n }\n });\n\n this.webex.once('loaded', () => {\n this.ready = true;\n });\n },\n\n @oneFlight\n @waitForValue('@')\n /**\n * Clears all tokens from store them from the stores.\n *\n * This is no longer quite the right name for this method, but all of the\n * alternatives I'm coming up with are already taken.\n * @instance\n * @memberof Credentials\n * @returns {Promise}\n */\n invalidate() {\n this.logger.info('credentials: invalidating tokens');\n\n // clear refresh timer\n if (this.refreshTimer) {\n clearTimeout(this.refreshTimer);\n this.unset('refreshTimer');\n }\n\n try {\n this.unset('supertoken');\n } catch (err) {\n this.logger.warn('credentials: failed to clear supertoken', err);\n }\n\n while (this.userTokens.models.length) {\n try {\n this.userTokens.remove(this.userTokens.models[0]);\n } catch (err) {\n this.logger.warn('credentials: failed to remove user token', err);\n }\n }\n\n this.logger.info('credentials: finished removing tokens');\n\n // Return a promise to give the storage layer a tick or two to clear\n // localStorage\n return Promise.resolve();\n },\n\n @oneFlight\n @whileInFlight('isRefreshing')\n @waitForValue('@')\n /**\n * Removes the supertoken and child tokens, then refreshes the supertoken;\n * subsequent calls to {@link Credentials#getUserToken()} will re-downscope\n * child tokens. Enqueus revocation of previous previousTokens. Yes, that's\n * the correct number of \"previous\"es.\n * @instance\n * @memberof Credentials\n * @returns {Promise}\n */\n refresh() {\n this.logger.info('credentials: refresh requested');\n\n const {supertoken} = this;\n const tokens = clone(this.userTokens.models);\n\n // This is kind of a leaky abstraction, since it relies on the authorization\n // plugin, but the only alternatives I see are\n // 1. put all JWT support in core\n // 2. have separate jwt and non-jwt auth plugins\n // while I like #2 from a code simplicity standpoint, the third-party DX\n // isn't great\n if (this.config.jwtRefreshCallback) {\n return (\n this.config\n .jwtRefreshCallback(this.webex)\n // eslint-disable-next-line no-shadow\n .then((jwt) => this.webex.authorization.requestAccessTokenFromJwt({jwt}))\n );\n }\n\n if (this.webex.internal.services) {\n this.webex.internal.services.updateCredentialsConfig();\n }\n\n return supertoken\n .refresh()\n .then((st) => {\n // clear refresh timer\n if (this.refreshTimer) {\n clearTimeout(this.refreshTimer);\n this.unset('refreshTimer');\n }\n this.supertoken = st;\n\n return Promise.all(\n tokens.map((token) =>\n this.downscope(token.scope)\n // eslint-disable-next-line max-nested-callbacks\n .then((t) => {\n this.logger.info(`credentials: revoking token for ${token.scope}`);\n\n return token\n .revoke()\n .catch((err) => {\n this.logger.warn('credentials: failed to revoke user token', err);\n })\n .then(() => {\n this.userTokens.remove(token.scope);\n this.userTokens.add(t);\n });\n })\n )\n );\n })\n .then(() => {\n this.scheduleRefresh(this.supertoken.expires);\n })\n .catch((error) => {\n const {InvalidRequestError} = grantErrors;\n\n if (error instanceof InvalidRequestError) {\n // Error: The refresh token provided is expired, revoked, malformed, or invalid. Hence emit an event to the client, an opportunity to logout.\n this.unset('supertoken');\n while (this.userTokens.models.length) {\n try {\n this.userTokens.remove(this.userTokens.models[0]);\n } catch (err) {\n this.logger.warn('credentials: failed to remove user token', err);\n }\n }\n this.webex.trigger('client:InvalidRequestError');\n }\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Schedules a token refresh or refreshes the token if token has expired\n * @instance\n * @memberof Credentials\n * @param {number} expires\n * @private\n * @returns {undefined}\n */\n scheduleRefresh(expires) {\n const expiresIn = expires - Date.now();\n\n if (expiresIn > 0) {\n const timeoutLength = this.calcRefreshTimeout(expiresIn);\n\n this.refreshTimer = safeSetTimeout(() => this.refresh(), timeoutLength);\n } else {\n this.refresh();\n }\n },\n});\n\nexport default Credentials;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_querystring","_interopRequireDefault","require","_url","_jsonwebtoken","_common","_commonTimers","_lodash","_webexPlugin","_decorators","_grantErrors","_interopRequireWildcard","_scope","_token","_tokenCollection","_constants","_dec","_dec2","_dec3","_dec4","_dec5","_dec6","_obj","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor2","u","Object","prototype","hasOwnProperty","call","i","set","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","Credentials","WebexPlugin","extend","oneFlight","keyFactory","scope","waitForValue","persist","whileInFlight","collections","userTokens","TokenCollection","dataTypes","token","makeStateDataType","Token","dataType","derived","canAuthorize","deps","fn","Boolean","supertoken","canRefresh","config","jwtRefreshCallback","isUnverifiedGuest","isGuest","JSON","parse","base64","decode","access_token","split","user_type","_unused","props","prop","namespace","session","isRefreshing","type","ready","refreshTimer","undefined","buildLoginUrl","options","clientType","state","isObject","Error","client_id","redirect_uri","cloneDeep","response_type","_deleteProperty","isEmpty","toBase64Url","_stringify","concat","authorizeUrl","querystring","stringify","getOrgId","logger","info","extractOrgIdFromJWT","_this$supertoken","extractOrgIdFromUserToken","f","decodedJWT","jwt","realm","fields","buildLogoutUrl","logoutUrl","cisService","service","goto","calcRefreshTimeout","expiration","Math","floor","random","constructor","_this","_dataTypes","_keys","key","bind","_len","args","Array","_key","_apply","downscope","_this2","catch","reason","_reason$body","failReason","body","warn","trace","webex","internal","metrics","submitClientMetrics","METRICS","JS_SDK_CREDENTIALS_DOWNSCOPE_FAILED","requestedScope","_promise","resolve","serialize","parent","getClientToken","_this3","request","method","uri","tokenUrl","form","grant_type","self_contained_token","auth","user","pass","client_secret","sendImmediately","shouldRefreshAccessToken","then","res","statusCode","reject","ErrorConstructor","grantErrors","select","error","_res","getUserToken","_this4","once","filterScope","sortScope","tap","add","initialize","attrs","_this5","authorization","expires","scheduleRefresh","listenToOnce","authorizationString","parsed","url","query","href","substr","indexOf","invalidate","clearTimeout","unset","err","models","remove","refresh","_this6","tokens","clone","requestAccessTokenFromJwt","services","updateCredentialsConfig","OAuthError","trigger","st","invalidScopes","diffScopes","JS_SDK_CREDENTIALS_TOKEN_REFRESH_SCOPE_MISMATCH","all","map","tokenScope","revoke","_this7","expiresIn","_now","timeoutLength","safeSetTimeout","version","_applyDecoratedDescriptor2","_getOwnPropertyDescriptor","_default","exports"],"sources":["credentials.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport querystring from 'querystring';\nimport url from 'url';\n\nimport jwt from 'jsonwebtoken';\nimport {base64, makeStateDataType, oneFlight, tap, whileInFlight} from '@webex/common';\nimport {safeSetTimeout} from '@webex/common-timers';\nimport {clone, cloneDeep, isObject, isEmpty} from 'lodash';\n\nimport WebexPlugin from '../webex-plugin';\nimport {persist, waitForValue} from '../storage/decorators';\n\nimport grantErrors, {OAuthError} from './grant-errors';\nimport {filterScope, diffScopes, sortScope} from './scope';\nimport Token from './token';\nimport TokenCollection from './token-collection';\nimport {METRICS} from '../constants';\n\n/**\n * @class\n */\nconst Credentials = WebexPlugin.extend({\n collections: {\n userTokens: TokenCollection,\n },\n\n dataTypes: {\n token: makeStateDataType(Token, 'token').dataType,\n },\n\n derived: {\n canAuthorize: {\n deps: ['supertoken', 'supertoken.canAuthorize', 'canRefresh'],\n fn() {\n return Boolean((this.supertoken && this.supertoken.canAuthorize) || this.canRefresh);\n },\n },\n canRefresh: {\n deps: ['supertoken', 'supertoken.canRefresh'],\n fn() {\n // If we're operating in JWT mode, we have to delegate to the consumer\n if (this.config.jwtRefreshCallback) {\n return true;\n }\n\n return Boolean(this.supertoken && this.supertoken.canRefresh);\n },\n },\n isUnverifiedGuest: {\n deps: ['supertoken'],\n /**\n * Returns true if the user is an unverified guest\n * @returns {boolean}\n */\n fn() {\n let isGuest = false;\n try {\n isGuest =\n JSON.parse(base64.decode(this.supertoken.access_token.split('.')[1])).user_type ===\n 'guest';\n } catch {\n /* the non-guest token is formatted differently so catch is expected */\n }\n\n return isGuest;\n },\n },\n },\n\n props: {\n supertoken: makeStateDataType(Token, 'token').prop,\n },\n\n namespace: 'Credentials',\n\n session: {\n isRefreshing: {\n default: false,\n type: 'boolean',\n },\n /**\n * Becomes `true` once the {@link loaded} event fires.\n * @see {@link WebexPlugin#ready}\n * @instance\n * @memberof Credentials\n * @type {boolean}\n */\n ready: {\n default: false,\n type: 'boolean',\n },\n refreshTimer: {\n default: undefined,\n type: 'any',\n },\n },\n\n /**\n * Generates an OAuth Login URL. Prefers the api.ciscospark.com proxy if the\n * instance is initialize with an authorizatUrl, but fallsback to idbroker\n * as the base otherwise.\n * @instance\n * @memberof Credentials\n * @param {Object} [options={}]\n * @returns {string}\n */\n buildLoginUrl(options = {clientType: 'public'}) {\n /* eslint-disable camelcase */\n if (options.state && !isObject(options.state)) {\n throw new Error('if specified, `options.state` must be an object');\n }\n\n options.client_id = this.config.client_id;\n options.redirect_uri = this.config.redirect_uri;\n options.scope = this.config.scope;\n\n options = cloneDeep(options);\n\n if (!options.response_type) {\n options.response_type = options.clientType === 'public' ? 'token' : 'code';\n }\n Reflect.deleteProperty(options, 'clientType');\n\n if (options.state) {\n if (!isEmpty(options.state)) {\n options.state = base64.toBase64Url(JSON.stringify(options.state));\n } else {\n delete options.state;\n }\n }\n\n return `${this.config.authorizeUrl}?${querystring.stringify(options)}`;\n /* eslint-enable camelcase */\n },\n\n /**\n * Get the determined OrgId.\n *\n * @throws {Error} - If the OrgId could not be determined.\n * @returns {string} - The OrgId.\n */\n getOrgId() {\n this.logger.info('credentials: attempting to retrieve the OrgId from token');\n\n try {\n // Attempt to extract a client-authenticated token's OrgId.\n this.logger.info('credentials: trying to extract OrgId from JWT');\n\n return this.extractOrgIdFromJWT(this.supertoken.access_token);\n } catch (e) {\n // Attempt to extract a user token's OrgId.\n this.logger.info('credentials: could not extract OrgId from JWT');\n this.logger.info('credentials: attempting to extract OrgId from user token');\n\n try {\n return this.extractOrgIdFromUserToken(this.supertoken?.access_token);\n } catch (f) {\n this.logger.info('credentials: could not extract OrgId from user token');\n throw f;\n }\n }\n },\n\n /**\n * Extract the OrgId [realm] from a provided JWT.\n *\n * @private\n * @param {string} token - The JWT to extract the OrgId from.\n * @throws {Error} - If the token does not pass JWT general/realm validation.\n * @returns {string} - The OrgId.\n */\n extractOrgIdFromJWT(token = '') {\n // Decoded the provided token.\n const decodedJWT = jwt.decode(token);\n\n // Validate that the provided token is a JWT.\n if (!decodedJWT) {\n throw new Error('unable to extract the OrgId from the provided JWT');\n }\n\n if (!decodedJWT.realm) {\n throw new Error('the provided JWT does not contain an OrgId');\n }\n\n // Return the OrgId [realm].\n return decodedJWT.realm;\n },\n\n /**\n * Extract the OrgId [realm] from a provided user token.\n *\n * @private\n * @param {string} token - The user token to extract the OrgId from.\n * @throws {Error} - Will throw an error if the provided token is invalid.\n * @returns {string} - The OrgId.\n */\n extractOrgIdFromUserToken(token = '') {\n // Split the provided token into subsections.\n const fields = token.split('_');\n\n // Validate that the provided token has the proper amount of sections.\n if (fields.length !== 3) {\n throw new Error('the provided token is not a valid format');\n }\n\n // Return the token section that contains the OrgId.\n return fields[2];\n },\n\n /**\n * Generates a Logout URL\n * @instance\n * @memberof Credentials\n * @param {Object} [options={}]\n * @returns {[type]}\n */\n buildLogoutUrl(options = {}) {\n return `${this.config.logoutUrl}?${querystring.stringify({\n cisService: this.config.service,\n goto: this.config.redirect_uri,\n ...options,\n })}`;\n },\n\n /**\n * Generates a number between 60% - 90% of expired value\n * @instance\n * @memberof Credentials\n * @param {number} expiration\n * @private\n * @returns {number}\n */\n calcRefreshTimeout(expiration) {\n return Math.floor(((Math.floor(Math.random() * 4) + 6) / 10) * expiration);\n },\n\n constructor(...args) {\n // HACK to deal with the fact that AmpersandState#dataTypes#set is a pure\n // function.\n this._dataTypes = cloneDeep(this._dataTypes);\n Object.keys(this._dataTypes).forEach((key) => {\n if (this._dataTypes[key].set) {\n this._dataTypes[key].set = this._dataTypes[key].set.bind(this);\n }\n });\n // END HACK\n Reflect.apply(WebexPlugin, this, args);\n },\n\n /**\n * Downscopes a token\n * @instance\n * @memberof Credentials\n * @param {string} scope\n * @private\n * @returns {Promise<Token>}\n */\n downscope(scope) {\n return this.supertoken.downscope(scope).catch((reason) => {\n const failReason = reason?.body ?? reason;\n this.logger.warn(`credentials: failed to downscope supertoken to \"${scope}\"`, failReason);\n this.logger.trace(`credentials: falling back to supertoken for ${scope}`);\n this.webex.internal.metrics.submitClientMetrics(METRICS.JS_SDK_CREDENTIALS_DOWNSCOPE_FAILED, {\n fields: {\n requestedScope: scope,\n failReason,\n },\n });\n\n return Promise.resolve(new Token({scope, ...this.supertoken.serialize()}), {\n parent: this,\n });\n });\n },\n\n /**\n * Requests a client credentials grant and returns the token. Given the\n * limited use for such tokens as this time, this method does not cache its\n * token.\n * @instance\n * @memberof Credentials\n * @param {Object} options\n * @returns {Promise<Token>}\n */\n getClientToken(options = {}) {\n this.logger.info('credentials: requesting client credentials grant');\n\n return this.webex\n .request({\n /* eslint-disable camelcase */\n method: 'POST',\n uri: options.uri || this.config.tokenUrl,\n form: {\n grant_type: 'client_credentials',\n scope: options.scope || 'webexsquare:admin',\n self_contained_token: true,\n },\n auth: {\n user: this.config.client_id,\n pass: this.config.client_secret,\n sendImmediately: true,\n },\n shouldRefreshAccessToken: false,\n /* eslint-enable camelcase */\n })\n .then((res) => new Token(res.body, {parent: this}))\n .catch((res) => {\n if (res.statusCode !== 400) {\n return Promise.reject(res);\n }\n\n const ErrorConstructor = grantErrors.select(res.body.error);\n\n return Promise.reject(new ErrorConstructor(res._res || res));\n });\n },\n\n @oneFlight({keyFactory: (scope) => scope})\n @waitForValue('@')\n /**\n * Resolves with a token with the specified scopes. If no scope is specified,\n * defaults to omit(webex.credentials.scope, 'spark:kms'). If no such token is\n * available, downscopes the supertoken to that scope.\n * @instance\n * @memberof Credentials\n * @param {string} scope\n * @returns {Promise<Token>}\n */\n getUserToken(scope) {\n return Promise.resolve(\n !this.isRefreshing ||\n new Promise((resolve) => {\n this.logger.info(\n 'credentials: token refresh inflight; delaying getUserToken until refresh completes'\n );\n this.once('change:isRefreshing', () => {\n this.logger.info('credentials: token refresh complete; reinvoking getUserToken');\n resolve();\n });\n })\n ).then(() => {\n if (!this.canAuthorize) {\n this.logger.info('credentials: cannot produce an access token from current state');\n\n return Promise.reject(new Error('Current state cannot produce an access token'));\n }\n\n if (!scope) {\n scope = filterScope('spark:kms', this.supertoken.scope);\n }\n\n scope = sortScope(scope);\n\n if (scope === sortScope(this.supertoken.scope)) {\n return Promise.resolve(this.supertoken);\n }\n\n const token = this.userTokens.get(scope);\n\n // we should also check for the token.access_token since token object does\n // not get cleared on unsetting while logging out.\n if (!token || !token.access_token) {\n return this.downscope(scope).then(tap((t) => this.userTokens.add(t)));\n }\n\n return Promise.resolve(token);\n });\n },\n\n @persist('@')\n /**\n * Initializer\n * @instance\n * @memberof Credentials\n * @param {Object} attrs\n * @param {Object} options\n * @private\n * @returns {Credentials}\n */\n initialize(attrs, options) {\n if (attrs) {\n if (typeof attrs === 'string') {\n this.supertoken = attrs;\n }\n\n if (attrs.access_token) {\n this.supertoken = attrs;\n }\n\n if (attrs.authorization) {\n if (attrs.authorization.supertoken) {\n this.supertoken = attrs.authorization.supertoken;\n } else {\n this.supertoken = attrs.authorization;\n }\n }\n\n // schedule refresh\n if (this.supertoken && this.supertoken.expires) {\n this.scheduleRefresh(this.supertoken.expires);\n }\n }\n\n Reflect.apply(WebexPlugin.prototype.initialize, this, [attrs, options]);\n\n this.listenToOnce(this.parent, 'change:config', () => {\n if (this.config.authorizationString) {\n const parsed = url.parse(this.config.authorizationString, true);\n\n /* eslint-disable camelcase */\n this.config.client_id = parsed.query.client_id;\n this.config.redirect_uri = parsed.query.redirect_uri;\n this.config.scope = parsed.query.scope;\n this.config.authorizeUrl = parsed.href.substr(0, parsed.href.indexOf('?'));\n /* eslint-enable camelcase */\n }\n });\n\n this.webex.once('loaded', () => {\n this.ready = true;\n });\n },\n\n @oneFlight\n @waitForValue('@')\n /**\n * Clears all tokens from store them from the stores.\n *\n * This is no longer quite the right name for this method, but all of the\n * alternatives I'm coming up with are already taken.\n * @instance\n * @memberof Credentials\n * @returns {Promise}\n */\n invalidate() {\n this.logger.info('credentials: invalidating tokens');\n\n // clear refresh timer\n if (this.refreshTimer) {\n clearTimeout(this.refreshTimer);\n this.unset('refreshTimer');\n }\n\n try {\n this.unset('supertoken');\n } catch (err) {\n this.logger.warn('credentials: failed to clear supertoken', err);\n }\n\n while (this.userTokens.models.length) {\n try {\n this.userTokens.remove(this.userTokens.models[0]);\n } catch (err) {\n this.logger.warn('credentials: failed to remove user token', err);\n }\n }\n\n this.logger.info('credentials: finished removing tokens');\n\n // Return a promise to give the storage layer a tick or two to clear\n // localStorage\n return Promise.resolve();\n },\n\n @oneFlight\n @whileInFlight('isRefreshing')\n @waitForValue('@')\n /**\n * Removes the supertoken and child tokens, then refreshes the supertoken;\n * subsequent calls to {@link Credentials#getUserToken()} will re-downscope\n * child tokens. Enqueus revocation of previous previousTokens. Yes, that's\n * the correct number of \"previous\"es.\n * @instance\n * @memberof Credentials\n * @returns {Promise}\n */\n refresh() {\n this.logger.info('credentials: refresh requested');\n\n const {supertoken} = this;\n const tokens = clone(this.userTokens.models);\n\n // This is kind of a leaky abstraction, since it relies on the authorization\n // plugin, but the only alternatives I see are\n // 1. put all JWT support in core\n // 2. have separate jwt and non-jwt auth plugins\n // while I like #2 from a code simplicity standpoint, the third-party DX\n // isn't great\n if (this.config.jwtRefreshCallback) {\n return (\n this.config\n .jwtRefreshCallback(this.webex)\n // eslint-disable-next-line no-shadow\n .then((jwt) => this.webex.authorization.requestAccessTokenFromJwt({jwt}))\n );\n }\n\n if (this.webex.internal.services) {\n this.webex.internal.services.updateCredentialsConfig();\n }\n\n return supertoken\n .refresh()\n .catch((error) => {\n if (error instanceof OAuthError) {\n // Error: super token refresh failed with 400 status code.\n // Hence emit an event to the client, an opportunity to logout.\n this.unset('supertoken');\n while (this.userTokens.models.length) {\n try {\n this.userTokens.remove(this.userTokens.models[0]);\n } catch (err) {\n this.logger.warn('credentials: failed to remove user token', err);\n }\n }\n this.webex.trigger('client:InvalidRequestError');\n }\n\n return Promise.reject(error);\n })\n .then((st) => {\n // clear refresh timer\n if (this.refreshTimer) {\n clearTimeout(this.refreshTimer);\n this.unset('refreshTimer');\n }\n this.supertoken = st;\n\n const invalidScopes = diffScopes(this.config.scope, st.scope);\n\n if (invalidScopes !== '') {\n this.logger.warn(\n `credentials: \"${invalidScopes}\" scope(s) are invalid because not listed in the supertoken, they will be excluded from user token requests.`\n );\n this.webex.internal.metrics.submitClientMetrics(\n METRICS.JS_SDK_CREDENTIALS_TOKEN_REFRESH_SCOPE_MISMATCH,\n {fields: {invalidScopes}}\n );\n }\n\n return Promise.all(\n tokens.map((token) => {\n const tokenScope = filterScope(diffScopes(token.scope, st.scope), token.scope);\n\n return (\n this.downscope(tokenScope)\n // eslint-disable-next-line max-nested-callbacks\n .then((t) => {\n this.logger.info(`credentials: revoking token for ${token.scope}`);\n\n return token\n .revoke()\n .catch((err) => {\n this.logger.warn('credentials: failed to revoke user token', err);\n })\n .then(() => {\n this.userTokens.remove(token.scope);\n this.userTokens.add(t);\n });\n })\n );\n })\n );\n })\n .then(() => {\n this.scheduleRefresh(this.supertoken.expires);\n });\n },\n\n /**\n * Schedules a token refresh or refreshes the token if token has expired\n * @instance\n * @memberof Credentials\n * @param {number} expires\n * @private\n * @returns {undefined}\n */\n scheduleRefresh(expires) {\n const expiresIn = expires - Date.now();\n\n if (expiresIn > 0) {\n const timeoutLength = this.calcRefreshTimeout(expiresIn);\n\n this.refreshTimer = safeSetTimeout(() => this.refresh(), timeoutLength);\n } else {\n this.refresh();\n }\n },\n});\n\nexport default Credentials;\n"],"mappings":"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"}
@@ -15,11 +15,13 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
15
15
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
16
16
  var _common = require("@webex/common");
17
17
  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); }; }
18
- 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; } }
18
+ 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; } } /*!
19
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
20
+ */ /* eslint camelcase: [0] */
19
21
  /**
20
22
  * Error thrown during oauth flow
21
23
  */
22
- var OAuthError = /*#__PURE__*/function (_Exception) {
24
+ var OAuthError = exports.OAuthError = /*#__PURE__*/function (_Exception) {
23
25
  (0, _inherits2.default)(OAuthError, _Exception);
24
26
  var _super = _createSuper(OAuthError);
25
27
  function OAuthError() {
@@ -62,7 +64,6 @@ var OAuthError = /*#__PURE__*/function (_Exception) {
62
64
  /**
63
65
  * InvalidRequestError
64
66
  */
65
- exports.OAuthError = OAuthError;
66
67
  var InvalidRequestError = /*#__PURE__*/function (_OAuthError) {
67
68
  (0, _inherits2.default)(InvalidRequestError, _OAuthError);
68
69
  var _super2 = _createSuper(InvalidRequestError);
@@ -150,6 +151,5 @@ var errors = {
150
151
  return errors[errorString] || OAuthError;
151
152
  }
152
153
  };
153
- var _default = errors;
154
- exports.default = _default;
154
+ var _default = exports.default = errors;
155
155
  //# sourceMappingURL=grant-errors.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_common","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","OAuthError","_Exception","_inherits2","_super","_classCallCheck2","_createClass2","key","value","parse","res","body","_defineProperties","error","enumerable","errorDescription","error_description","errorUri","error_uri","Exception","exports","InvalidRequestError","_OAuthError","_super2","InvalidClientError","_OAuthError2","_super3","InvalidGrantError","_OAuthError3","_super4","UnauthorizedClientError","_OAuthError4","_super5","UnsupportGrantTypeError","_OAuthError5","_super6","InvalidScopeError","_OAuthError6","_super7","errors","invalid_request","invalid_client","invalid_grant","unauthorized_client","unsupported_grant_type","invalid_scope","select","errorString","_default"],"sources":["grant-errors.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint camelcase: [0] */\n\nimport {Exception} from '@webex/common';\n\n/**\n * Error thrown during oauth flow\n */\nexport class OAuthError extends Exception {\n /**\n * @param {HttpResponse} res\n * @returns {string}\n */\n parse(res) {\n // This error may be returned in an HTTPResponse or as part of a querystring\n const body = res.body || res;\n\n Object.defineProperties(this, {\n error: {\n enumerable: true,\n value: body.error,\n },\n errorDescription: {\n enumerable: true,\n value: body.error_description,\n },\n errorUri: {\n enumerable: true,\n value: body.error_uri,\n },\n res: {\n enumerable: false,\n value: res,\n },\n });\n\n return this.errorDescription;\n }\n}\n/**\n * InvalidRequestError\n */\nclass InvalidRequestError extends OAuthError {}\n\n/**\n * InvalidClientError\n */\nclass InvalidClientError extends OAuthError {}\n\n/**\n * InvalidGrantError\n */\nclass InvalidGrantError extends OAuthError {}\n\n/**\n * UnauthorizedClientError\n */\nclass UnauthorizedClientError extends OAuthError {}\n\n/**\n * UnsupportGrantTypeError\n */\nclass UnsupportGrantTypeError extends OAuthError {}\n\n/**\n * InvalidScopeError\n */\nclass InvalidScopeError extends OAuthError {}\n\nconst errors = {\n OAuthError,\n InvalidRequestError,\n InvalidClientError,\n InvalidGrantError,\n UnauthorizedClientError,\n UnsupportGrantTypeError,\n InvalidScopeError,\n invalid_request: InvalidRequestError,\n invalid_client: InvalidClientError,\n invalid_grant: InvalidGrantError,\n unauthorized_client: UnauthorizedClientError,\n unsupported_grant_type: UnsupportGrantTypeError,\n invalid_scope: InvalidScopeError,\n select(errorString) {\n return errors[errorString] || OAuthError;\n },\n};\n\nexport default errors;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_common","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","OAuthError","exports","_Exception","_inherits2","_super","_classCallCheck2","_createClass2","key","value","parse","res","body","_defineProperties","error","enumerable","errorDescription","error_description","errorUri","error_uri","Exception","InvalidRequestError","_OAuthError","_super2","InvalidClientError","_OAuthError2","_super3","InvalidGrantError","_OAuthError3","_super4","UnauthorizedClientError","_OAuthError4","_super5","UnsupportGrantTypeError","_OAuthError5","_super6","InvalidScopeError","_OAuthError6","_super7","errors","invalid_request","invalid_client","invalid_grant","unauthorized_client","unsupported_grant_type","invalid_scope","select","errorString","_default"],"sources":["grant-errors.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint camelcase: [0] */\n\nimport {Exception} from '@webex/common';\n\n/**\n * Error thrown during oauth flow\n */\nexport class OAuthError extends Exception {\n /**\n * @param {HttpResponse} res\n * @returns {string}\n */\n parse(res) {\n // This error may be returned in an HTTPResponse or as part of a querystring\n const body = res.body || res;\n\n Object.defineProperties(this, {\n error: {\n enumerable: true,\n value: body.error,\n },\n errorDescription: {\n enumerable: true,\n value: body.error_description,\n },\n errorUri: {\n enumerable: true,\n value: body.error_uri,\n },\n res: {\n enumerable: false,\n value: res,\n },\n });\n\n return this.errorDescription;\n }\n}\n/**\n * InvalidRequestError\n */\nclass InvalidRequestError extends OAuthError {}\n\n/**\n * InvalidClientError\n */\nclass InvalidClientError extends OAuthError {}\n\n/**\n * InvalidGrantError\n */\nclass InvalidGrantError extends OAuthError {}\n\n/**\n * UnauthorizedClientError\n */\nclass UnauthorizedClientError extends OAuthError {}\n\n/**\n * UnsupportGrantTypeError\n */\nclass UnsupportGrantTypeError extends OAuthError {}\n\n/**\n * InvalidScopeError\n */\nclass InvalidScopeError extends OAuthError {}\n\nconst errors = {\n OAuthError,\n InvalidRequestError,\n InvalidClientError,\n InvalidGrantError,\n UnauthorizedClientError,\n UnsupportGrantTypeError,\n InvalidScopeError,\n invalid_request: InvalidRequestError,\n invalid_client: InvalidClientError,\n invalid_grant: InvalidGrantError,\n unauthorized_client: UnauthorizedClientError,\n unsupported_grant_type: UnsupportGrantTypeError,\n invalid_scope: InvalidScopeError,\n select(errorString) {\n return errors[errorString] || OAuthError;\n },\n};\n\nexport default errors;\n"],"mappings":"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"}
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
4
5
  _Object$defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
8
+ exports.diffScopes = diffScopes;
7
9
  exports.filterScope = filterScope;
8
10
  exports.sortScope = sortScope;
11
+ var _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array"));
12
+ var _lodash = require("lodash");
9
13
  /*!
10
14
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
11
15
  */
@@ -24,7 +28,7 @@ function sortScope(scope) {
24
28
 
25
29
  /**
26
30
  * sorts a list of scopes and filters the specified scope
27
- * @param {string} toFilter
31
+ * @param {string|string[]} toFilter
28
32
  * @param {string} scope
29
33
  * @returns {string}
30
34
  */
@@ -32,8 +36,23 @@ function filterScope(toFilter, scope) {
32
36
  if (!scope) {
33
37
  return '';
34
38
  }
39
+ var toFilterArr = (0, _isArray.default)(toFilter) ? toFilter : [toFilter];
35
40
  return scope.split(' ').filter(function (item) {
36
- return item !== toFilter;
41
+ return !toFilterArr.includes(item);
37
42
  }).sort().join(' ');
38
43
  }
44
+
45
+ /**
46
+ * Returns a string containing all items in scopeA that are not in scopeB, or an empty string if there are none.
47
+ *
48
+ * @param {string} scopeA
49
+ * @param {string} scopeB
50
+ * @returns {string}
51
+ */
52
+ function diffScopes(scopeA, scopeB) {
53
+ var _scopeA$split, _scopeB$split;
54
+ var a = (_scopeA$split = scopeA === null || scopeA === void 0 ? void 0 : scopeA.split(' ')) !== null && _scopeA$split !== void 0 ? _scopeA$split : [];
55
+ var b = (_scopeB$split = scopeB === null || scopeB === void 0 ? void 0 : scopeB.split(' ')) !== null && _scopeB$split !== void 0 ? _scopeB$split : [];
56
+ return (0, _lodash.difference)(a, b).sort().join(' ');
57
+ }
39
58
  //# sourceMappingURL=scope.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["sortScope","scope","split","sort","join","filterScope","toFilter","filter","item"],"sources":["scope.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/**\n * sorts a list of scopes\n * @param {string} scope\n * @returns {string}\n */\nexport function sortScope(scope) {\n if (!scope) {\n return '';\n }\n\n return scope.split(' ').sort().join(' ');\n}\n\n/**\n * sorts a list of scopes and filters the specified scope\n * @param {string} toFilter\n * @param {string} scope\n * @returns {string}\n */\nexport function filterScope(toFilter, scope) {\n if (!scope) {\n return '';\n }\n\n return scope\n .split(' ')\n .filter((item) => item !== toFilter)\n .sort()\n .join(' ');\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASA,SAASA,CAACC,KAAK,EAAE;EAC/B,IAAI,CAACA,KAAK,EAAE;IACV,OAAO,EAAE;EACX;EAEA,OAAOA,KAAK,CAACC,KAAK,CAAC,GAAG,CAAC,CAACC,IAAI,EAAE,CAACC,IAAI,CAAC,GAAG,CAAC;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,WAAWA,CAACC,QAAQ,EAAEL,KAAK,EAAE;EAC3C,IAAI,CAACA,KAAK,EAAE;IACV,OAAO,EAAE;EACX;EAEA,OAAOA,KAAK,CACTC,KAAK,CAAC,GAAG,CAAC,CACVK,MAAM,CAAC,UAACC,IAAI;IAAA,OAAKA,IAAI,KAAKF,QAAQ;EAAA,EAAC,CACnCH,IAAI,EAAE,CACNC,IAAI,CAAC,GAAG,CAAC;AACd"}
1
+ {"version":3,"names":["_lodash","require","sortScope","scope","split","sort","join","filterScope","toFilter","toFilterArr","_isArray","default","filter","item","includes","diffScopes","scopeA","scopeB","_scopeA$split","_scopeB$split","a","b","difference"],"sources":["scope.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {difference} from 'lodash';\n\n/**\n * sorts a list of scopes\n * @param {string} scope\n * @returns {string}\n */\nexport function sortScope(scope) {\n if (!scope) {\n return '';\n }\n\n return scope.split(' ').sort().join(' ');\n}\n\n/**\n * sorts a list of scopes and filters the specified scope\n * @param {string|string[]} toFilter\n * @param {string} scope\n * @returns {string}\n */\nexport function filterScope(toFilter, scope) {\n if (!scope) {\n return '';\n }\n const toFilterArr = Array.isArray(toFilter) ? toFilter : [toFilter];\n\n return scope\n .split(' ')\n .filter((item) => !toFilterArr.includes(item))\n .sort()\n .join(' ');\n}\n\n/**\n * Returns a string containing all items in scopeA that are not in scopeB, or an empty string if there are none.\n *\n * @param {string} scopeA\n * @param {string} scopeB\n * @returns {string}\n */\nexport function diffScopes(scopeA, scopeB) {\n const a = scopeA?.split(' ') ?? [];\n const b = scopeB?.split(' ') ?? [];\n\n return difference(a, b).sort().join(' ');\n}\n"],"mappings":";;;;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AAJA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACO,SAASC,SAASA,CAACC,KAAK,EAAE;EAC/B,IAAI,CAACA,KAAK,EAAE;IACV,OAAO,EAAE;EACX;EAEA,OAAOA,KAAK,CAACC,KAAK,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,WAAWA,CAACC,QAAQ,EAAEL,KAAK,EAAE;EAC3C,IAAI,CAACA,KAAK,EAAE;IACV,OAAO,EAAE;EACX;EACA,IAAMM,WAAW,GAAG,IAAAC,QAAA,CAAAC,OAAA,EAAcH,QAAQ,CAAC,GAAGA,QAAQ,GAAG,CAACA,QAAQ,CAAC;EAEnE,OAAOL,KAAK,CACTC,KAAK,CAAC,GAAG,CAAC,CACVQ,MAAM,CAAC,UAACC,IAAI;IAAA,OAAK,CAACJ,WAAW,CAACK,QAAQ,CAACD,IAAI,CAAC;EAAA,EAAC,CAC7CR,IAAI,CAAC,CAAC,CACNC,IAAI,CAAC,GAAG,CAAC;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASS,UAAUA,CAACC,MAAM,EAAEC,MAAM,EAAE;EAAA,IAAAC,aAAA,EAAAC,aAAA;EACzC,IAAMC,CAAC,IAAAF,aAAA,GAAGF,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEZ,KAAK,CAAC,GAAG,CAAC,cAAAc,aAAA,cAAAA,aAAA,GAAI,EAAE;EAClC,IAAMG,CAAC,IAAAF,aAAA,GAAGF,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEb,KAAK,CAAC,GAAG,CAAC,cAAAe,aAAA,cAAAA,aAAA,GAAI,EAAE;EAElC,OAAO,IAAAG,kBAAU,EAACF,CAAC,EAAEC,CAAC,CAAC,CAAChB,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;AAC1C"}
@@ -17,6 +17,5 @@ var TokenCollection = _ampersandCollection.default.extend({
17
17
  model: _token.default,
18
18
  namespace: 'Credentials'
19
19
  });
20
- var _default = TokenCollection;
21
- exports.default = _default;
20
+ var _default = exports.default = TokenCollection;
22
21
  //# sourceMappingURL=token-collection.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_ampersandCollection","_interopRequireDefault","require","_token","TokenCollection","AmpCollection","extend","mainIndex","model","Token","namespace","_default","exports","default"],"sources":["token-collection.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport AmpCollection from 'ampersand-collection';\n\nimport Token from './token';\n\nconst TokenCollection = AmpCollection.extend({\n mainIndex: 'scope',\n\n model: Token,\n\n namespace: 'Credentials',\n});\n\nexport default TokenCollection;\n"],"mappings":";;;;;;;;AAIA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AANA;AACA;AACA;;AAMA,IAAME,eAAe,GAAGC,4BAAa,CAACC,MAAM,CAAC;EAC3CC,SAAS,EAAE,OAAO;EAElBC,KAAK,EAAEC,cAAK;EAEZC,SAAS,EAAE;AACb,CAAC,CAAC;AAAC,IAAAC,QAAA,GAEYP,eAAe;AAAAQ,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
1
+ {"version":3,"names":["_ampersandCollection","_interopRequireDefault","require","_token","TokenCollection","AmpCollection","extend","mainIndex","model","Token","namespace","_default","exports","default"],"sources":["token-collection.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport AmpCollection from 'ampersand-collection';\n\nimport Token from './token';\n\nconst TokenCollection = AmpCollection.extend({\n mainIndex: 'scope',\n\n model: Token,\n\n namespace: 'Credentials',\n});\n\nexport default TokenCollection;\n"],"mappings":";;;;;;;;AAIA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AANA;AACA;AACA;;AAMA,IAAME,eAAe,GAAGC,4BAAa,CAACC,MAAM,CAAC;EAC3CC,SAAS,EAAE,OAAO;EAElBC,KAAK,EAAEC,cAAK;EAEZC,SAAS,EAAE;AACb,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEYT,eAAe"}
@@ -29,12 +29,14 @@ var _webexPlugin = _interopRequireDefault(require("../webex-plugin"));
29
29
  var _scope = require("./scope");
30
30
  var _grantErrors = _interopRequireWildcard(require("./grant-errors"));
31
31
  var _dec, _obj;
32
- function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor2; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor2(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
34
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor2(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
35
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor2(source, key)); }); } return target; }
32
+ /*!
33
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
34
+ */
35
+ function _getRequireWildcardCache(e) { if ("function" != typeof _WeakMap) return null; var r = new _WeakMap(), t = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
36
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = _Object$defineProperty && _Object$getOwnPropertyDescriptor2; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? _Object$getOwnPropertyDescriptor2(e, u) : null; i && (i.get || i.set) ? _Object$defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
37
+ function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor2(e, r).enumerable; })), t.push.apply(t, o); } return t; }
38
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor2(t, r)); }); } return e; }
36
39
  /* eslint-disable camelcase */
37
-
38
40
  /**
39
41
  * Parse response from CI and converts to structured error when appropriate
40
42
  * @param {WebexHttpError} res
@@ -527,8 +529,7 @@ var Token = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
527
529
  return res.body;
528
530
  });
529
531
  },
530
- version: "2.59.8-next.1"
532
+ version: "2.60.0-next.1"
531
533
  }, ((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)));
532
- var _default = Token;
533
- exports.default = _default;
534
+ var _default = exports.default = Token;
534
535
  //# sourceMappingURL=token.js.map