@webex/webex-core 3.0.0-beta.2 → 3.0.0-beta.21

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 (184) hide show
  1. package/dist/config.js +1 -11
  2. package/dist/config.js.map +1 -1
  3. package/dist/credentials-config.js +44 -64
  4. package/dist/credentials-config.js.map +1 -1
  5. package/dist/index.js +0 -76
  6. package/dist/index.js.map +1 -1
  7. package/dist/interceptors/auth.js +22 -55
  8. package/dist/interceptors/auth.js.map +1 -1
  9. package/dist/interceptors/default-options.js +0 -20
  10. package/dist/interceptors/default-options.js.map +1 -1
  11. package/dist/interceptors/embargo.js +0 -21
  12. package/dist/interceptors/embargo.js.map +1 -1
  13. package/dist/interceptors/network-timing.js +2 -21
  14. package/dist/interceptors/network-timing.js.map +1 -1
  15. package/dist/interceptors/payload-transformer.js +2 -22
  16. package/dist/interceptors/payload-transformer.js.map +1 -1
  17. package/dist/interceptors/rate-limit.js +25 -57
  18. package/dist/interceptors/rate-limit.js.map +1 -1
  19. package/dist/interceptors/redirect.js +4 -33
  20. package/dist/interceptors/redirect.js.map +1 -1
  21. package/dist/interceptors/request-event.js +3 -30
  22. package/dist/interceptors/request-event.js.map +1 -1
  23. package/dist/interceptors/request-logger.js +1 -30
  24. package/dist/interceptors/request-logger.js.map +1 -1
  25. package/dist/interceptors/request-timing.js +3 -22
  26. package/dist/interceptors/request-timing.js.map +1 -1
  27. package/dist/interceptors/response-logger.js +2 -31
  28. package/dist/interceptors/response-logger.js.map +1 -1
  29. package/dist/interceptors/user-agent.js +2 -29
  30. package/dist/interceptors/user-agent.js.map +1 -1
  31. package/dist/interceptors/webex-tracking-id.js +5 -28
  32. package/dist/interceptors/webex-tracking-id.js.map +1 -1
  33. package/dist/interceptors/webex-user-agent.js +5 -38
  34. package/dist/interceptors/webex-user-agent.js.map +1 -1
  35. package/dist/lib/batcher.js +3 -51
  36. package/dist/lib/batcher.js.map +1 -1
  37. package/dist/lib/credentials/credentials.js +39 -119
  38. package/dist/lib/credentials/credentials.js.map +1 -1
  39. package/dist/lib/credentials/grant-errors.js +0 -49
  40. package/dist/lib/credentials/grant-errors.js.map +1 -1
  41. package/dist/lib/credentials/index.js +1 -13
  42. package/dist/lib/credentials/index.js.map +1 -1
  43. package/dist/lib/credentials/scope.js +1 -7
  44. package/dist/lib/credentials/scope.js.map +1 -1
  45. package/dist/lib/credentials/token-collection.js +1 -7
  46. package/dist/lib/credentials/token-collection.js.map +1 -1
  47. package/dist/lib/credentials/token.js +39 -118
  48. package/dist/lib/credentials/token.js.map +1 -1
  49. package/dist/lib/page.js +13 -26
  50. package/dist/lib/page.js.map +1 -1
  51. package/dist/lib/services/constants.js +0 -2
  52. package/dist/lib/services/constants.js.map +1 -1
  53. package/dist/lib/services/index.js +1 -28
  54. package/dist/lib/services/index.js.map +1 -1
  55. package/dist/lib/services/interceptors/server-error.js +2 -23
  56. package/dist/lib/services/interceptors/server-error.js.map +1 -1
  57. package/dist/lib/services/interceptors/service.js +12 -34
  58. package/dist/lib/services/interceptors/service.js.map +1 -1
  59. package/dist/lib/services/metrics.js +0 -2
  60. package/dist/lib/services/metrics.js.map +1 -1
  61. package/dist/lib/services/service-catalog.js +10 -90
  62. package/dist/lib/services/service-catalog.js.map +1 -1
  63. package/dist/lib/services/service-fed-ramp.js +0 -2
  64. package/dist/lib/services/service-fed-ramp.js.map +1 -1
  65. package/dist/lib/services/service-host.js +47 -62
  66. package/dist/lib/services/service-host.js.map +1 -1
  67. package/dist/lib/services/service-registry.js +78 -90
  68. package/dist/lib/services/service-registry.js.map +1 -1
  69. package/dist/lib/services/service-state.js +3 -15
  70. package/dist/lib/services/service-state.js.map +1 -1
  71. package/dist/lib/services/service-url.js +4 -25
  72. package/dist/lib/services/service-url.js.map +1 -1
  73. package/dist/lib/services/services.js +122 -238
  74. package/dist/lib/services/services.js.map +1 -1
  75. package/dist/lib/stateless-webex-plugin.js +5 -28
  76. package/dist/lib/stateless-webex-plugin.js.map +1 -1
  77. package/dist/lib/storage/decorators.js +19 -62
  78. package/dist/lib/storage/decorators.js.map +1 -1
  79. package/dist/lib/storage/errors.js +0 -23
  80. package/dist/lib/storage/errors.js.map +1 -1
  81. package/dist/lib/storage/index.js +2 -16
  82. package/dist/lib/storage/index.js.map +1 -1
  83. package/dist/lib/storage/make-webex-plugin-store.js +11 -41
  84. package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
  85. package/dist/lib/storage/make-webex-store.js +8 -30
  86. package/dist/lib/storage/make-webex-store.js.map +1 -1
  87. package/dist/lib/storage/memory-store-adapter.js +1 -19
  88. package/dist/lib/storage/memory-store-adapter.js.map +1 -1
  89. package/dist/lib/webex-core-plugin-mixin.js +9 -29
  90. package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
  91. package/dist/lib/webex-http-error.js +1 -31
  92. package/dist/lib/webex-http-error.js.map +1 -1
  93. package/dist/lib/webex-internal-core-plugin-mixin.js +9 -29
  94. package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
  95. package/dist/lib/webex-plugin.js +6 -40
  96. package/dist/lib/webex-plugin.js.map +1 -1
  97. package/dist/plugins/logger.js +3 -17
  98. package/dist/plugins/logger.js.map +1 -1
  99. package/dist/webex-core.js +79 -203
  100. package/dist/webex-core.js.map +1 -1
  101. package/dist/webex-internal-core.js +0 -10
  102. package/dist/webex-internal-core.js.map +1 -1
  103. package/package.json +14 -14
  104. package/src/config.js +9 -11
  105. package/src/credentials-config.js +110 -72
  106. package/src/index.js +4 -14
  107. package/src/interceptors/auth.js +36 -37
  108. package/src/interceptors/default-options.js +0 -1
  109. package/src/interceptors/embargo.js +1 -1
  110. package/src/interceptors/payload-transformer.js +1 -2
  111. package/src/interceptors/rate-limit.js +8 -5
  112. package/src/interceptors/redirect.js +14 -8
  113. package/src/interceptors/request-event.js +4 -8
  114. package/src/interceptors/request-logger.js +8 -5
  115. package/src/interceptors/response-logger.js +11 -8
  116. package/src/interceptors/user-agent.js +1 -2
  117. package/src/interceptors/webex-user-agent.js +3 -9
  118. package/src/lib/batcher.js +70 -69
  119. package/src/lib/credentials/credentials.js +112 -122
  120. package/src/lib/credentials/grant-errors.js +6 -7
  121. package/src/lib/credentials/index.js +1 -4
  122. package/src/lib/credentials/scope.js +1 -4
  123. package/src/lib/credentials/token-collection.js +1 -1
  124. package/src/lib/credentials/token.js +86 -80
  125. package/src/lib/page.js +10 -11
  126. package/src/lib/services/constants.js +3 -13
  127. package/src/lib/services/index.js +2 -2
  128. package/src/lib/services/interceptors/server-error.js +12 -7
  129. package/src/lib/services/interceptors/service.js +6 -5
  130. package/src/lib/services/metrics.js +1 -1
  131. package/src/lib/services/service-catalog.js +110 -100
  132. package/src/lib/services/service-fed-ramp.js +1 -2
  133. package/src/lib/services/service-host.js +10 -17
  134. package/src/lib/services/service-registry.js +69 -96
  135. package/src/lib/services/service-state.js +4 -6
  136. package/src/lib/services/service-url.js +24 -23
  137. package/src/lib/services/services.js +260 -251
  138. package/src/lib/stateless-webex-plugin.js +4 -2
  139. package/src/lib/storage/decorators.js +68 -66
  140. package/src/lib/storage/index.js +4 -6
  141. package/src/lib/storage/make-webex-plugin-store.js +34 -21
  142. package/src/lib/storage/make-webex-store.js +6 -7
  143. package/src/lib/storage/memory-store-adapter.js +3 -3
  144. package/src/lib/webex-core-plugin-mixin.js +10 -7
  145. package/src/lib/webex-http-error.js +7 -8
  146. package/src/lib/webex-internal-core-plugin-mixin.js +9 -6
  147. package/src/lib/webex-plugin.js +41 -34
  148. package/src/plugins/logger.js +8 -3
  149. package/src/webex-core.js +185 -116
  150. package/src/webex-internal-core.js +15 -9
  151. package/test/integration/spec/credentials/credentials.js +26 -30
  152. package/test/integration/spec/credentials/token.js +36 -33
  153. package/test/integration/spec/services/service-catalog.js +177 -156
  154. package/test/integration/spec/services/services.js +313 -304
  155. package/test/integration/spec/webex-core.js +98 -86
  156. package/test/unit/spec/_setup.js +26 -18
  157. package/test/unit/spec/credentials/credentials.js +189 -154
  158. package/test/unit/spec/credentials/token.js +94 -76
  159. package/test/unit/spec/interceptors/auth.js +291 -243
  160. package/test/unit/spec/interceptors/default-options.js +36 -24
  161. package/test/unit/spec/interceptors/embargo.js +32 -27
  162. package/test/unit/spec/interceptors/network-timing.js +2 -2
  163. package/test/unit/spec/interceptors/payload-transformer.js +61 -52
  164. package/test/unit/spec/interceptors/rate-limit.js +104 -75
  165. package/test/unit/spec/interceptors/redirect.js +22 -20
  166. package/test/unit/spec/interceptors/request-timing.js +18 -22
  167. package/test/unit/spec/interceptors/user-agent.js +28 -16
  168. package/test/unit/spec/interceptors/webex-tracking-id.js +14 -8
  169. package/test/unit/spec/interceptors/webex-user-agent.js +83 -37
  170. package/test/unit/spec/lib/batcher.js +36 -32
  171. package/test/unit/spec/lib/page.js +36 -32
  172. package/test/unit/spec/lib/webex-plugin.js +1 -1
  173. package/test/unit/spec/services/interceptors/server-error.js +67 -90
  174. package/test/unit/spec/services/interceptors/service.js +17 -28
  175. package/test/unit/spec/services/service-catalog.js +19 -27
  176. package/test/unit/spec/services/service-host.js +29 -26
  177. package/test/unit/spec/services/service-registry.js +128 -170
  178. package/test/unit/spec/services/service-state.js +13 -22
  179. package/test/unit/spec/services/service-url.js +24 -43
  180. package/test/unit/spec/services/services.js +85 -41
  181. package/test/unit/spec/storage/persist.js +6 -9
  182. package/test/unit/spec/storage/wait-for-value.js +22 -21
  183. package/test/unit/spec/webex-core.js +78 -57
  184. package/test/unit/spec/webex-internal-core.js +56 -31
@@ -1,96 +1,73 @@
1
1
  "use strict";
2
2
 
3
3
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
-
5
4
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
6
-
7
5
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
8
-
9
6
  _Object$defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
12
-
13
9
  exports.default = void 0;
14
-
15
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
16
-
17
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
18
-
19
12
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
20
-
21
13
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
22
-
23
14
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
24
-
25
15
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
26
-
27
16
  var _weakMap = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/weak-map"));
28
-
29
17
  var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
30
-
31
18
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
32
-
33
19
  var _httpCore = require("@webex/http-core");
34
-
35
20
  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); }; }
36
-
37
21
  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; } }
38
-
39
22
  // contains the system time in milliseconds at which the retry after associated with a 429 expires
40
23
  // mapped by the API name, e.g.: idbroker.webex.com/doStuff would be mapped as 'doStuff'
41
- var rateLimitExpiryTime = new _weakMap.default(); // extracts the common identity API being called
24
+ var rateLimitExpiryTime = new _weakMap.default();
42
25
 
26
+ // extracts the common identity API being called
43
27
  var idBrokerRegex = /.*(idbroker|identity)(bts)?.ciscospark.com\/([^/]+)/;
28
+
44
29
  /**
45
30
  * @class
46
31
  */
47
-
48
32
  var RateLimitInterceptor = /*#__PURE__*/function (_Interceptor) {
49
33
  (0, _inherits2.default)(RateLimitInterceptor, _Interceptor);
50
-
51
34
  var _super = _createSuper(RateLimitInterceptor);
52
-
53
35
  /**
54
- * constructor
55
- * @param {mixed} args
56
- * @returns {Exception}
57
- */
36
+ * constructor
37
+ * @param {mixed} args
38
+ * @returns {Exception}
39
+ */
58
40
  function RateLimitInterceptor() {
59
41
  var _this;
60
-
61
42
  (0, _classCallCheck2.default)(this, RateLimitInterceptor);
62
-
63
43
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
64
44
  args[_key] = arguments[_key];
65
45
  }
66
-
67
46
  _this = _super.call.apply(_super, [this].concat(args));
68
47
  rateLimitExpiryTime.set((0, _assertThisInitialized2.default)(_this), new _map.default());
69
48
  return _this;
70
49
  }
50
+
71
51
  /**
72
52
  * @see {@link Interceptor#onRequest}
73
53
  * @param {Object} options
74
54
  * @returns {Object}
75
55
  */
76
-
77
-
78
56
  (0, _createClass2.default)(RateLimitInterceptor, [{
79
57
  key: "onRequest",
80
58
  value: function onRequest(options) {
81
59
  if (this.isRateLimited(options.uri)) {
82
60
  return _promise.default.reject(new Error("API rate limited ".concat(options.uri)));
83
61
  }
84
-
85
62
  return _promise.default.resolve(options);
86
63
  }
64
+
87
65
  /**
88
66
  * @see {@link Interceptor#onResponseError}
89
67
  * @param {Object} options
90
68
  * @param {Error} reason
91
69
  * @returns {Object}
92
70
  */
93
-
94
71
  }, {
95
72
  key: "onResponseError",
96
73
  value: function onResponseError(options, reason) {
@@ -98,32 +75,31 @@ var RateLimitInterceptor = /*#__PURE__*/function (_Interceptor) {
98
75
  // set the retry after in the map, setting to milliseconds
99
76
  this.setRateLimitExpiry(options.uri, this.extractRetryAfterTime(options));
100
77
  }
101
-
102
78
  return _promise.default.reject(reason);
103
79
  }
80
+
104
81
  /**
105
82
  * @param {object} options associated with the request
106
83
  * @returns {number} retry after time in milliseconds
107
84
  */
108
-
109
85
  }, {
110
86
  key: "extractRetryAfterTime",
111
87
  value: function extractRetryAfterTime(options) {
112
88
  // 1S * 1K === 1MS
113
89
  var milliMultiplier = 1000;
114
- var retryAfter = options.headers['retry-after'] || null; // set 60 retry if no usable time defined
90
+ var retryAfter = options.headers['retry-after'] || null;
115
91
 
92
+ // set 60 retry if no usable time defined
116
93
  if (retryAfter === null || retryAfter <= 0) {
117
94
  return 60 * milliMultiplier;
118
- } // set max to 3600 S (1 hour) if greater than 1 hour
119
-
120
-
95
+ }
96
+ // set max to 3600 S (1 hour) if greater than 1 hour
121
97
  if (retryAfter > 3600) {
122
98
  return 3600 * milliMultiplier;
123
99
  }
124
-
125
100
  return retryAfter * milliMultiplier;
126
101
  }
102
+
127
103
  /**
128
104
  * Set the system time at which the rate limiting
129
105
  * will expire in the rateLimitExpiryTime map.
@@ -132,77 +108,71 @@ var RateLimitInterceptor = /*#__PURE__*/function (_Interceptor) {
132
108
  * @param {number} retryAfter milliseconds until rate limiting expires
133
109
  * @returns {bool} true is value was successfully set
134
110
  */
135
-
136
111
  }, {
137
112
  key: "setRateLimitExpiry",
138
113
  value: function setRateLimitExpiry(uri, retryAfter) {
139
114
  var apiName = this.getApiName(uri);
140
-
141
115
  if (!apiName) {
142
116
  return false;
143
117
  }
144
-
145
118
  var currTimeMilli = new Date().getTime();
146
119
  var expiry = currTimeMilli + retryAfter;
147
120
  var dict = rateLimitExpiryTime.get(this);
148
121
  return dict.set(apiName, expiry);
149
122
  }
123
+
150
124
  /**
151
125
  * returns true if the API is currently rate limited
152
126
  * @param {string} uri
153
127
  * @returns {Boolean} indicates whether or not the API is rate currently rate limited
154
128
  */
155
-
156
129
  }, {
157
130
  key: "getRateLimitStatus",
158
131
  value: function getRateLimitStatus(uri) {
159
132
  var apiName = this.getApiName(uri);
160
-
161
133
  if (!apiName) {
162
134
  return false;
163
135
  }
164
-
165
136
  var currTimeMilli = new Date().getTime();
166
137
  var dict = rateLimitExpiryTime.get(this);
167
- var expiryTime = dict.get(apiName); // if no rate limit expiry has been registered in the map, return false.
138
+ var expiryTime = dict.get(apiName);
168
139
 
140
+ // if no rate limit expiry has been registered in the map, return false.
169
141
  if (expiryTime === undefined) {
170
142
  return false;
171
- } // return true, indicating rate limiting, if the system time is less than the expiry time
172
-
143
+ }
173
144
 
145
+ // return true, indicating rate limiting, if the system time is less than the expiry time
174
146
  return currTimeMilli < dict.get(apiName);
175
147
  }
148
+
176
149
  /**
177
150
  * split the URI and returns the API name of idBroker
178
151
  * @param {string} uri
179
152
  * @returns {string}
180
153
  */
181
-
182
154
  }, {
183
155
  key: "getApiName",
184
156
  value: function getApiName(uri) {
185
157
  if (!uri) {
186
158
  return null;
187
159
  }
188
-
189
160
  var results = uri.match(idBrokerRegex);
190
-
191
161
  if (!results) {
192
162
  return null;
193
- } // group 0 = full match of URL, group 1 = identity or idbroker base
194
- // group 2 = api name
195
-
163
+ }
196
164
 
165
+ // group 0 = full match of URL, group 1 = identity or idbroker base
166
+ // group 2 = api name
197
167
  return results[2];
198
168
  }
169
+
199
170
  /**
200
171
  * check URI against list of currently rate limited
201
172
  * URIs, and determines if retry-after
202
173
  * @param {String} uri pattern to check
203
174
  * @returns {bool}
204
175
  */
205
-
206
176
  }, {
207
177
  key: "isRateLimited",
208
178
  value: function isRateLimited(uri) {
@@ -210,7 +180,6 @@ var RateLimitInterceptor = /*#__PURE__*/function (_Interceptor) {
210
180
  if (uri && (uri.includes('idbroker') || uri.includes('identity'))) {
211
181
  return this.getRateLimitStatus(uri);
212
182
  }
213
-
214
183
  return false;
215
184
  }
216
185
  }], [{
@@ -227,6 +196,5 @@ var RateLimitInterceptor = /*#__PURE__*/function (_Interceptor) {
227
196
  }]);
228
197
  return RateLimitInterceptor;
229
198
  }(_httpCore.Interceptor);
230
-
231
199
  exports.default = RateLimitInterceptor;
232
200
  //# sourceMappingURL=rate-limit.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["rateLimitExpiryTime","idBrokerRegex","RateLimitInterceptor","args","set","options","isRateLimited","uri","reject","Error","resolve","reason","statusCode","includes","setRateLimitExpiry","extractRetryAfterTime","milliMultiplier","retryAfter","headers","apiName","getApiName","currTimeMilli","Date","getTime","expiry","dict","get","expiryTime","undefined","results","match","getRateLimitStatus","webex","Interceptor"],"sources":["rate-limit.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\n// contains the system time in milliseconds at which the retry after associated with a 429 expires\n// mapped by the API name, e.g.: idbroker.webex.com/doStuff would be mapped as 'doStuff'\nconst rateLimitExpiryTime = new WeakMap();\n\n// extracts the common identity API being called\nconst idBrokerRegex = /.*(idbroker|identity)(bts)?.ciscospark.com\\/([^/]+)/;\n\n/**\n * @class\n */\nexport default class RateLimitInterceptor extends Interceptor {\n /**\n * @returns {RateLimitInterceptor}\n */\n static create() {\n return new RateLimitInterceptor({webex: this});\n }\n\n /**\n * constructor\n * @param {mixed} args\n * @returns {Exception}\n */\n constructor(...args) {\n super(...args);\n rateLimitExpiryTime.set(this, new Map());\n }\n\n /**\n * @see {@link Interceptor#onRequest}\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n if (this.isRateLimited(options.uri)) {\n return Promise.reject(new Error(`API rate limited ${options.uri}`));\n }\n\n return Promise.resolve(options);\n }\n\n /**\n * @see {@link Interceptor#onResponseError}\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n if (reason.statusCode === 429 && (options.uri.includes('idbroker') || options.uri.includes('identity'))) {\n // set the retry after in the map, setting to milliseconds\n this.setRateLimitExpiry(options.uri, this.extractRetryAfterTime(options));\n }\n\n return Promise.reject(reason);\n }\n\n /**\n * @param {object} options associated with the request\n * @returns {number} retry after time in milliseconds\n */\n extractRetryAfterTime(options) {\n // 1S * 1K === 1MS\n const milliMultiplier = 1000;\n const retryAfter = options.headers['retry-after'] || null;\n\n // set 60 retry if no usable time defined\n if (retryAfter === null || retryAfter <= 0) {\n return 60 * milliMultiplier;\n }\n // set max to 3600 S (1 hour) if greater than 1 hour\n if (retryAfter > 3600) {\n return 3600 * milliMultiplier;\n }\n\n return retryAfter * milliMultiplier;\n }\n\n /**\n * Set the system time at which the rate limiting\n * will expire in the rateLimitExpiryTime map.\n * Assumes retryAfter is in milliseconds\n * @param {string} uri API issuing the rate limiting\n * @param {number} retryAfter milliseconds until rate limiting expires\n * @returns {bool} true is value was successfully set\n */\n setRateLimitExpiry(uri, retryAfter) {\n const apiName = this.getApiName(uri);\n\n if (!apiName) {\n return false;\n }\n\n const currTimeMilli = new Date().getTime();\n const expiry = currTimeMilli + retryAfter;\n const dict = rateLimitExpiryTime.get(this);\n\n return dict.set(apiName, expiry);\n }\n\n /**\n * returns true if the API is currently rate limited\n * @param {string} uri\n * @returns {Boolean} indicates whether or not the API is rate currently rate limited\n */\n getRateLimitStatus(uri) {\n const apiName = this.getApiName(uri);\n\n if (!apiName) {\n return false;\n }\n\n const currTimeMilli = new Date().getTime();\n const dict = rateLimitExpiryTime.get(this);\n const expiryTime = dict.get(apiName);\n\n // if no rate limit expiry has been registered in the map, return false.\n if (expiryTime === undefined) {\n return false;\n }\n\n // return true, indicating rate limiting, if the system time is less than the expiry time\n return currTimeMilli < dict.get(apiName);\n }\n\n /**\n * split the URI and returns the API name of idBroker\n * @param {string} uri\n * @returns {string}\n */\n getApiName(uri) {\n if (!uri) {\n return null;\n }\n\n const results = uri.match(idBrokerRegex);\n\n if (!results) {\n return null;\n }\n\n // group 0 = full match of URL, group 1 = identity or idbroker base\n // group 2 = api name\n return results[2];\n }\n\n /**\n * check URI against list of currently rate limited\n * URIs, and determines if retry-after\n * @param {String} uri pattern to check\n * @returns {bool}\n */\n isRateLimited(uri) {\n // determine if the URI is associated with a common identity API\n if (uri && (uri.includes('idbroker') || uri.includes('identity'))) {\n return this.getRateLimitStatus(uri);\n }\n\n return false;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["rateLimitExpiryTime","idBrokerRegex","RateLimitInterceptor","args","set","options","isRateLimited","uri","reject","Error","resolve","reason","statusCode","includes","setRateLimitExpiry","extractRetryAfterTime","milliMultiplier","retryAfter","headers","apiName","getApiName","currTimeMilli","Date","getTime","expiry","dict","get","expiryTime","undefined","results","match","getRateLimitStatus","webex","Interceptor"],"sources":["rate-limit.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\n\n// contains the system time in milliseconds at which the retry after associated with a 429 expires\n// mapped by the API name, e.g.: idbroker.webex.com/doStuff would be mapped as 'doStuff'\nconst rateLimitExpiryTime = new WeakMap();\n\n// extracts the common identity API being called\nconst idBrokerRegex = /.*(idbroker|identity)(bts)?.ciscospark.com\\/([^/]+)/;\n\n/**\n * @class\n */\nexport default class RateLimitInterceptor extends Interceptor {\n /**\n * @returns {RateLimitInterceptor}\n */\n static create() {\n return new RateLimitInterceptor({webex: this});\n }\n\n /**\n * constructor\n * @param {mixed} args\n * @returns {Exception}\n */\n constructor(...args) {\n super(...args);\n rateLimitExpiryTime.set(this, new Map());\n }\n\n /**\n * @see {@link Interceptor#onRequest}\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n if (this.isRateLimited(options.uri)) {\n return Promise.reject(new Error(`API rate limited ${options.uri}`));\n }\n\n return Promise.resolve(options);\n }\n\n /**\n * @see {@link Interceptor#onResponseError}\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n if (\n reason.statusCode === 429 &&\n (options.uri.includes('idbroker') || options.uri.includes('identity'))\n ) {\n // set the retry after in the map, setting to milliseconds\n this.setRateLimitExpiry(options.uri, this.extractRetryAfterTime(options));\n }\n\n return Promise.reject(reason);\n }\n\n /**\n * @param {object} options associated with the request\n * @returns {number} retry after time in milliseconds\n */\n extractRetryAfterTime(options) {\n // 1S * 1K === 1MS\n const milliMultiplier = 1000;\n const retryAfter = options.headers['retry-after'] || null;\n\n // set 60 retry if no usable time defined\n if (retryAfter === null || retryAfter <= 0) {\n return 60 * milliMultiplier;\n }\n // set max to 3600 S (1 hour) if greater than 1 hour\n if (retryAfter > 3600) {\n return 3600 * milliMultiplier;\n }\n\n return retryAfter * milliMultiplier;\n }\n\n /**\n * Set the system time at which the rate limiting\n * will expire in the rateLimitExpiryTime map.\n * Assumes retryAfter is in milliseconds\n * @param {string} uri API issuing the rate limiting\n * @param {number} retryAfter milliseconds until rate limiting expires\n * @returns {bool} true is value was successfully set\n */\n setRateLimitExpiry(uri, retryAfter) {\n const apiName = this.getApiName(uri);\n\n if (!apiName) {\n return false;\n }\n\n const currTimeMilli = new Date().getTime();\n const expiry = currTimeMilli + retryAfter;\n const dict = rateLimitExpiryTime.get(this);\n\n return dict.set(apiName, expiry);\n }\n\n /**\n * returns true if the API is currently rate limited\n * @param {string} uri\n * @returns {Boolean} indicates whether or not the API is rate currently rate limited\n */\n getRateLimitStatus(uri) {\n const apiName = this.getApiName(uri);\n\n if (!apiName) {\n return false;\n }\n\n const currTimeMilli = new Date().getTime();\n const dict = rateLimitExpiryTime.get(this);\n const expiryTime = dict.get(apiName);\n\n // if no rate limit expiry has been registered in the map, return false.\n if (expiryTime === undefined) {\n return false;\n }\n\n // return true, indicating rate limiting, if the system time is less than the expiry time\n return currTimeMilli < dict.get(apiName);\n }\n\n /**\n * split the URI and returns the API name of idBroker\n * @param {string} uri\n * @returns {string}\n */\n getApiName(uri) {\n if (!uri) {\n return null;\n }\n\n const results = uri.match(idBrokerRegex);\n\n if (!results) {\n return null;\n }\n\n // group 0 = full match of URL, group 1 = identity or idbroker base\n // group 2 = api name\n return results[2];\n }\n\n /**\n * check URI against list of currently rate limited\n * URIs, and determines if retry-after\n * @param {String} uri pattern to check\n * @returns {bool}\n */\n isRateLimited(uri) {\n // determine if the URI is associated with a common identity API\n if (uri && (uri.includes('idbroker') || uri.includes('identity'))) {\n return this.getRateLimitStatus(uri);\n }\n\n return false;\n }\n}\n"],"mappings":"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"}
@@ -1,56 +1,37 @@
1
1
  "use strict";
2
2
 
3
3
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
-
5
4
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
6
-
7
5
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
8
-
9
6
  _Object$defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
12
-
13
9
  exports.default = void 0;
14
-
15
10
  var _deleteProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/delete-property"));
16
-
17
11
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
18
-
19
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
20
-
21
13
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
22
-
23
14
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
24
-
25
15
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
26
-
27
16
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
28
-
29
17
  var _clone2 = _interopRequireDefault(require("lodash/clone"));
30
-
31
18
  var _httpCore = require("@webex/http-core");
32
-
33
19
  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); }; }
34
-
35
20
  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; } }
36
-
37
21
  var requestHeaderName = 'cisco-no-http-redirect';
38
22
  var responseHeaderName = 'cisco-location';
39
23
  var LOCUS_REDIRECT_ERROR = 2000002;
24
+
40
25
  /**
41
26
  * @class
42
27
  */
43
-
44
28
  var RedirectInterceptor = /*#__PURE__*/function (_Interceptor) {
45
29
  (0, _inherits2.default)(RedirectInterceptor, _Interceptor);
46
-
47
30
  var _super = _createSuper(RedirectInterceptor);
48
-
49
31
  function RedirectInterceptor() {
50
32
  (0, _classCallCheck2.default)(this, RedirectInterceptor);
51
33
  return _super.apply(this, arguments);
52
34
  }
53
-
54
35
  (0, _createClass2.default)(RedirectInterceptor, [{
55
36
  key: "onRequest",
56
37
  value:
@@ -64,30 +45,28 @@ var RedirectInterceptor = /*#__PURE__*/function (_Interceptor) {
64
45
  if (options.uri.includes('https://idbroker') || options.uri.includes(this.webex.config.credentials.samlUrl) || options.uri.includes(this.webex.config.credentials.tokenUrl) || options.uri.includes(this.webex.config.credentials.authorizeUrl)) {
65
46
  return options;
66
47
  }
67
- } // If cisco-no-http-redirect is already set, don't overwrite it
68
-
48
+ }
69
49
 
50
+ // If cisco-no-http-redirect is already set, don't overwrite it
70
51
  if (requestHeaderName in options.headers) {
71
52
  // If cisco-no-http-redirect is set to null, false, or undefined, delete
72
53
  // it to prevent a CORS preflight.
73
54
  if (!options.headers[requestHeaderName]) {
74
55
  (0, _deleteProperty.default)(options.headers, requestHeaderName);
75
56
  }
76
-
77
57
  return options;
78
58
  }
79
-
80
59
  options.headers[requestHeaderName] = true;
81
60
  options.$redirectCount = options.$redirectCount || 0;
82
61
  return options;
83
62
  }
63
+
84
64
  /**
85
65
  * @see Interceptor#onResponse
86
66
  * @param {Object} options
87
67
  * @param {HttpResponse} response
88
68
  * @returns {Object}
89
69
  */
90
-
91
70
  }, {
92
71
  key: "onResponse",
93
72
  value: function onResponse(options, response) {
@@ -96,16 +75,13 @@ var RedirectInterceptor = /*#__PURE__*/function (_Interceptor) {
96
75
  options = (0, _clone2.default)(options);
97
76
  options.uri = response.headers[responseHeaderName];
98
77
  options.$redirectCount += 1;
99
-
100
78
  if (options.$redirectCount > this.webex.config.maxAppLevelRedirects) {
101
79
  return _promise.default.reject(new Error('Maximum redirects exceeded'));
102
80
  }
103
-
104
81
  return this.webex.request(options);
105
82
  } else if (response.headers && response.body && response.body.errorCode === LOCUS_REDIRECT_ERROR && response.body.location) {
106
83
  options = (0, _clone2.default)(options);
107
84
  this.webex.logger.warn('redirect: url redirects needed from', options.uri);
108
-
109
85
  if (response.options && response.options.qs) {
110
86
  // for POST requests
111
87
  var newUrl = response.body.location.split('?');
@@ -114,19 +90,15 @@ var RedirectInterceptor = /*#__PURE__*/function (_Interceptor) {
114
90
  // for GET requests
115
91
  options.uri = response.body.location;
116
92
  }
117
-
118
93
  this.webex.logger.warn('redirect: url redirects needed to', options.uri);
119
94
  options.$redirectCount += 1;
120
-
121
95
  if (options.$redirectCount > this.webex.config.maxLocusRedirects) {
122
96
  return _promise.default.reject(new Error('Maximum redirects exceeded'));
123
97
  }
124
-
125
98
  return this.webex.request(options);
126
99
  }
127
100
  /* eslint-enable no-else-return */
128
101
 
129
-
130
102
  return response;
131
103
  }
132
104
  }], [{
@@ -143,6 +115,5 @@ var RedirectInterceptor = /*#__PURE__*/function (_Interceptor) {
143
115
  }]);
144
116
  return RedirectInterceptor;
145
117
  }(_httpCore.Interceptor);
146
-
147
118
  exports.default = RedirectInterceptor;
148
119
  //# sourceMappingURL=redirect.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["requestHeaderName","responseHeaderName","LOCUS_REDIRECT_ERROR","RedirectInterceptor","options","uri","includes","webex","config","credentials","samlUrl","tokenUrl","authorizeUrl","headers","$redirectCount","response","maxAppLevelRedirects","reject","Error","request","body","errorCode","location","logger","warn","qs","newUrl","split","maxLocusRedirects","Interceptor"],"sources":["redirect.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {clone} from 'lodash';\nimport {Interceptor} from '@webex/http-core';\n\nconst requestHeaderName = 'cisco-no-http-redirect';\nconst responseHeaderName = 'cisco-location';\nconst LOCUS_REDIRECT_ERROR = 2000002;\n\n/**\n * @class\n */\nexport default class RedirectInterceptor extends Interceptor {\n /**\n * @returns {RedirectInterceptor}\n */\n static create() {\n return new RedirectInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n if (options && options.uri && typeof options.uri === 'string') {\n if (options.uri.includes('https://idbroker') ||\n options.uri.includes(this.webex.config.credentials.samlUrl) ||\n options.uri.includes(this.webex.config.credentials.tokenUrl) ||\n options.uri.includes(this.webex.config.credentials.authorizeUrl)) {\n return options;\n }\n }\n\n // If cisco-no-http-redirect is already set, don't overwrite it\n if (requestHeaderName in options.headers) {\n // If cisco-no-http-redirect is set to null, false, or undefined, delete\n // it to prevent a CORS preflight.\n if (!options.headers[requestHeaderName]) {\n Reflect.deleteProperty(options.headers, requestHeaderName);\n }\n\n return options;\n }\n options.headers[requestHeaderName] = true;\n options.$redirectCount = options.$redirectCount || 0;\n\n return options;\n }\n\n /**\n * @see Interceptor#onResponse\n * @param {Object} options\n * @param {HttpResponse} response\n * @returns {Object}\n */\n onResponse(options, response) {\n /* eslint-disable no-else-return */\n if (response.headers && response.headers[responseHeaderName]) {\n options = clone(options);\n options.uri = response.headers[responseHeaderName];\n options.$redirectCount += 1;\n if (options.$redirectCount > this.webex.config.maxAppLevelRedirects) {\n return Promise.reject(new Error('Maximum redirects exceeded'));\n }\n\n return this.webex.request(options);\n }\n else if (response.headers &&\n response.body &&\n response.body.errorCode === LOCUS_REDIRECT_ERROR &&\n response.body.location) {\n options = clone(options);\n\n this.webex.logger.warn('redirect: url redirects needed from', options.uri);\n if (response.options && response.options.qs) { // for POST requests\n const newUrl = response.body.location.split('?');\n\n options.uri = newUrl[0]; // params are already present in the qs\n }\n else { // for GET requests\n options.uri = response.body.location;\n }\n\n this.webex.logger.warn('redirect: url redirects needed to', options.uri);\n options.$redirectCount += 1;\n if (options.$redirectCount > this.webex.config.maxLocusRedirects) {\n return Promise.reject(new Error('Maximum redirects exceeded'));\n }\n\n return this.webex.request(options);\n }\n /* eslint-enable no-else-return */\n\n return response;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;;;;;;AAEA,IAAMA,iBAAiB,GAAG,wBAA1B;AACA,IAAMC,kBAAkB,GAAG,gBAA3B;AACA,IAAMC,oBAAoB,GAAG,OAA7B;AAEA;AACA;AACA;;IACqBC,mB;;;;;;;;;;;;;IAQnB;AACF;AACA;AACA;AACA;IACE,mBAAUC,OAAV,EAAmB;MACjB,IAAIA,OAAO,IAAIA,OAAO,CAACC,GAAnB,IAA0B,OAAOD,OAAO,CAACC,GAAf,KAAuB,QAArD,EAA+D;QAC7D,IAAID,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAqB,kBAArB,KACFF,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAqB,KAAKC,KAAL,CAAWC,MAAX,CAAkBC,WAAlB,CAA8BC,OAAnD,CADE,IAEFN,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAqB,KAAKC,KAAL,CAAWC,MAAX,CAAkBC,WAAlB,CAA8BE,QAAnD,CAFE,IAGFP,OAAO,CAACC,GAAR,CAAYC,QAAZ,CAAqB,KAAKC,KAAL,CAAWC,MAAX,CAAkBC,WAAlB,CAA8BG,YAAnD,CAHF,EAGoE;UAClE,OAAOR,OAAP;QACD;MACF,CARgB,CAUjB;;;MACA,IAAIJ,iBAAiB,IAAII,OAAO,CAACS,OAAjC,EAA0C;QACxC;QACA;QACA,IAAI,CAACT,OAAO,CAACS,OAAR,CAAgBb,iBAAhB,CAAL,EAAyC;UACvC,6BAAuBI,OAAO,CAACS,OAA/B,EAAwCb,iBAAxC;QACD;;QAED,OAAOI,OAAP;MACD;;MACDA,OAAO,CAACS,OAAR,CAAgBb,iBAAhB,IAAqC,IAArC;MACAI,OAAO,CAACU,cAAR,GAAyBV,OAAO,CAACU,cAAR,IAA0B,CAAnD;MAEA,OAAOV,OAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,oBAAWA,OAAX,EAAoBW,QAApB,EAA8B;MAC5B;MACA,IAAIA,QAAQ,CAACF,OAAT,IAAoBE,QAAQ,CAACF,OAAT,CAAiBZ,kBAAjB,CAAxB,EAA8D;QAC5DG,OAAO,GAAG,qBAAMA,OAAN,CAAV;QACAA,OAAO,CAACC,GAAR,GAAcU,QAAQ,CAACF,OAAT,CAAiBZ,kBAAjB,CAAd;QACAG,OAAO,CAACU,cAAR,IAA0B,CAA1B;;QACA,IAAIV,OAAO,CAACU,cAAR,GAAyB,KAAKP,KAAL,CAAWC,MAAX,CAAkBQ,oBAA/C,EAAqE;UACnE,OAAO,iBAAQC,MAAR,CAAe,IAAIC,KAAJ,CAAU,4BAAV,CAAf,CAAP;QACD;;QAED,OAAO,KAAKX,KAAL,CAAWY,OAAX,CAAmBf,OAAnB,CAAP;MACD,CATD,MAUK,IAAIW,QAAQ,CAACF,OAAT,IACPE,QAAQ,CAACK,IADF,IAEPL,QAAQ,CAACK,IAAT,CAAcC,SAAd,KAA4BnB,oBAFrB,IAGPa,QAAQ,CAACK,IAAT,CAAcE,QAHX,EAGqB;QACxBlB,OAAO,GAAG,qBAAMA,OAAN,CAAV;QAEA,KAAKG,KAAL,CAAWgB,MAAX,CAAkBC,IAAlB,CAAuB,qCAAvB,EAA8DpB,OAAO,CAACC,GAAtE;;QACA,IAAIU,QAAQ,CAACX,OAAT,IAAoBW,QAAQ,CAACX,OAAT,CAAiBqB,EAAzC,EAA6C;UAAE;UAC7C,IAAMC,MAAM,GAAGX,QAAQ,CAACK,IAAT,CAAcE,QAAd,CAAuBK,KAAvB,CAA6B,GAA7B,CAAf;UAEAvB,OAAO,CAACC,GAAR,GAAcqB,MAAM,CAAC,CAAD,CAApB,CAH2C,CAGlB;QAC1B,CAJD,MAKK;UAAE;UACLtB,OAAO,CAACC,GAAR,GAAcU,QAAQ,CAACK,IAAT,CAAcE,QAA5B;QACD;;QAED,KAAKf,KAAL,CAAWgB,MAAX,CAAkBC,IAAlB,CAAuB,mCAAvB,EAA4DpB,OAAO,CAACC,GAApE;QACAD,OAAO,CAACU,cAAR,IAA0B,CAA1B;;QACA,IAAIV,OAAO,CAACU,cAAR,GAAyB,KAAKP,KAAL,CAAWC,MAAX,CAAkBoB,iBAA/C,EAAkE;UAChE,OAAO,iBAAQX,MAAR,CAAe,IAAIC,KAAJ,CAAU,4BAAV,CAAf,CAAP;QACD;;QAED,OAAO,KAAKX,KAAL,CAAWY,OAAX,CAAmBf,OAAnB,CAAP;MACD;MACD;;;MAEA,OAAOW,QAAP;IACD;;;;IAnFD;AACF;AACA;IACE,kBAAgB;MACd,OAAO,IAAIZ,mBAAJ,CAAwB;QAACI,KAAK,EAAE;MAAR,CAAxB,CAAP;IACD;;;EAN8CsB,qB"}
1
+ {"version":3,"names":["requestHeaderName","responseHeaderName","LOCUS_REDIRECT_ERROR","RedirectInterceptor","options","uri","includes","webex","config","credentials","samlUrl","tokenUrl","authorizeUrl","headers","$redirectCount","response","maxAppLevelRedirects","reject","Error","request","body","errorCode","location","logger","warn","qs","newUrl","split","maxLocusRedirects","Interceptor"],"sources":["redirect.js"],"sourcesContent":["/* eslint-disable prefer-destructuring */\n\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {clone} from 'lodash';\nimport {Interceptor} from '@webex/http-core';\n\nconst requestHeaderName = 'cisco-no-http-redirect';\nconst responseHeaderName = 'cisco-location';\nconst LOCUS_REDIRECT_ERROR = 2000002;\n\n/**\n * @class\n */\nexport default class RedirectInterceptor extends Interceptor {\n /**\n * @returns {RedirectInterceptor}\n */\n static create() {\n return new RedirectInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n if (options && options.uri && typeof options.uri === 'string') {\n if (\n options.uri.includes('https://idbroker') ||\n options.uri.includes(this.webex.config.credentials.samlUrl) ||\n options.uri.includes(this.webex.config.credentials.tokenUrl) ||\n options.uri.includes(this.webex.config.credentials.authorizeUrl)\n ) {\n return options;\n }\n }\n\n // If cisco-no-http-redirect is already set, don't overwrite it\n if (requestHeaderName in options.headers) {\n // If cisco-no-http-redirect is set to null, false, or undefined, delete\n // it to prevent a CORS preflight.\n if (!options.headers[requestHeaderName]) {\n Reflect.deleteProperty(options.headers, requestHeaderName);\n }\n\n return options;\n }\n options.headers[requestHeaderName] = true;\n options.$redirectCount = options.$redirectCount || 0;\n\n return options;\n }\n\n /**\n * @see Interceptor#onResponse\n * @param {Object} options\n * @param {HttpResponse} response\n * @returns {Object}\n */\n onResponse(options, response) {\n /* eslint-disable no-else-return */\n if (response.headers && response.headers[responseHeaderName]) {\n options = clone(options);\n options.uri = response.headers[responseHeaderName];\n options.$redirectCount += 1;\n if (options.$redirectCount > this.webex.config.maxAppLevelRedirects) {\n return Promise.reject(new Error('Maximum redirects exceeded'));\n }\n\n return this.webex.request(options);\n } else if (\n response.headers &&\n response.body &&\n response.body.errorCode === LOCUS_REDIRECT_ERROR &&\n response.body.location\n ) {\n options = clone(options);\n\n this.webex.logger.warn('redirect: url redirects needed from', options.uri);\n if (response.options && response.options.qs) {\n // for POST requests\n const newUrl = response.body.location.split('?');\n\n options.uri = newUrl[0]; // params are already present in the qs\n } else {\n // for GET requests\n options.uri = response.body.location;\n }\n\n this.webex.logger.warn('redirect: url redirects needed to', options.uri);\n options.$redirectCount += 1;\n if (options.$redirectCount > this.webex.config.maxLocusRedirects) {\n return Promise.reject(new Error('Maximum redirects exceeded'));\n }\n\n return this.webex.request(options);\n }\n /* eslint-enable no-else-return */\n\n return response;\n }\n}\n"],"mappings":"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"}
@@ -1,50 +1,32 @@
1
1
  "use strict";
2
2
 
3
3
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
-
5
4
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
6
-
7
5
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
8
-
9
6
  _Object$defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
12
-
13
9
  exports.default = void 0;
14
-
15
10
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
16
-
17
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
18
-
19
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
20
-
21
13
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
22
-
23
14
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
24
-
25
15
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
26
-
27
16
  var _get2 = _interopRequireDefault(require("lodash/get"));
28
-
29
17
  var _httpCore = require("@webex/http-core");
30
-
31
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); }; }
32
-
33
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; } }
34
-
35
20
  /**
36
21
  * @class
37
22
  */
38
23
  var RequestEventInterceptor = /*#__PURE__*/function (_Interceptor) {
39
24
  (0, _inherits2.default)(RequestEventInterceptor, _Interceptor);
40
-
41
25
  var _super = _createSuper(RequestEventInterceptor);
42
-
43
26
  function RequestEventInterceptor() {
44
27
  (0, _classCallCheck2.default)(this, RequestEventInterceptor);
45
28
  return _super.apply(this, arguments);
46
29
  }
47
-
48
30
  (0, _createClass2.default)(RequestEventInterceptor, [{
49
31
  key: "onRequest",
50
32
  value:
@@ -55,77 +37,69 @@ var RequestEventInterceptor = /*#__PURE__*/function (_Interceptor) {
55
37
  */
56
38
  function onRequest(options) {
57
39
  var logger = (0, _get2.default)(this, 'webex.logger', console);
58
-
59
40
  try {
60
41
  this.webex.trigger('request:start', options);
61
42
  } catch (error) {
62
43
  logger.warn('event handler for request:start failed ', error);
63
44
  }
64
-
65
45
  return _promise.default.resolve(options);
66
46
  }
47
+
67
48
  /**
68
49
  * @see Interceptor#onRequest
69
50
  * @param {Object} options
70
51
  * @param {Error} reason
71
52
  * @returns {Object}
72
53
  */
73
-
74
54
  }, {
75
55
  key: "onRequestError",
76
56
  value: function onRequestError(options, reason) {
77
57
  // We need to do the normal onRequest logging, but then log how the request
78
58
  // failed since the response logger won't be called.
79
59
  var logger = (0, _get2.default)(this, 'webex.logger', console);
80
-
81
60
  try {
82
61
  this.webex.trigger('request:end', options, reason);
83
62
  this.webex.trigger('request:failure', options, reason);
84
63
  } catch (error) {
85
64
  logger.warn('event handler for request:end failed ', error);
86
65
  }
87
-
88
66
  return _promise.default.reject(reason);
89
67
  }
68
+
90
69
  /**
91
70
  * @see Interceptor#onResponse
92
71
  * @param {Object} options
93
72
  * @param {HttpResponse} response
94
73
  * @returns {Object}
95
74
  */
96
-
97
75
  }, {
98
76
  key: "onResponse",
99
77
  value: function onResponse(options, response) {
100
78
  var logger = (0, _get2.default)(this, 'webex.logger', console);
101
-
102
79
  try {
103
80
  this.webex.trigger('request:success', response.options, response);
104
81
  } catch (error) {
105
82
  logger.warn('event handler for request:success failed ', error);
106
83
  }
107
-
108
84
  return _promise.default.resolve(response);
109
85
  }
86
+
110
87
  /**
111
88
  * @see Interceptor#onResponseError
112
89
  * @param {Object} options
113
90
  * @param {Error} reason
114
91
  * @returns {Object}
115
92
  */
116
-
117
93
  }, {
118
94
  key: "onResponseError",
119
95
  value: function onResponseError(options, reason) {
120
96
  var logger = (0, _get2.default)(this, 'webex.logger', console);
121
-
122
97
  try {
123
98
  this.webex.trigger('request:end', options, reason);
124
99
  this.webex.trigger('request:failure', options, reason);
125
100
  } catch (error) {
126
101
  logger.warn('event handler for request:failure failed ', error);
127
102
  }
128
-
129
103
  return _promise.default.reject(reason);
130
104
  }
131
105
  }], [{
@@ -142,6 +116,5 @@ var RequestEventInterceptor = /*#__PURE__*/function (_Interceptor) {
142
116
  }]);
143
117
  return RequestEventInterceptor;
144
118
  }(_httpCore.Interceptor);
145
-
146
119
  exports.default = RequestEventInterceptor;
147
120
  //# sourceMappingURL=request-event.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["RequestEventInterceptor","options","logger","console","webex","trigger","error","warn","resolve","reason","reject","response","Interceptor"],"sources":["request-event.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {get} from 'lodash';\nimport {Interceptor} from '@webex/http-core';\n\n/**\n * @class\n */\nexport default class RequestEventInterceptor extends Interceptor {\n /**\n * @returns {RequestEventInterceptor}\n */\n static create() {\n return new RequestEventInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:start', options);\n }\n catch (error) {\n logger.warn('event handler for request:start failed ', error);\n }\n\n return Promise.resolve(options);\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onRequestError(options, reason) {\n // We need to do the normal onRequest logging, but then log how the request\n // failed since the response logger won't be called.\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:end', options, reason);\n this.webex.trigger('request:failure', options, reason);\n }\n catch (error) {\n logger.warn('event handler for request:end failed ', error);\n }\n\n return Promise.reject(reason);\n }\n\n /**\n * @see Interceptor#onResponse\n * @param {Object} options\n * @param {HttpResponse} response\n * @returns {Object}\n */\n onResponse(options, response) {\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:success', response.options, response);\n }\n catch (error) {\n logger.warn('event handler for request:success failed ', error);\n }\n\n return Promise.resolve(response);\n }\n\n /**\n * @see Interceptor#onResponseError\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:end', options, reason);\n this.webex.trigger('request:failure', options, reason);\n }\n catch (error) {\n logger.warn('event handler for request:failure failed ', error);\n }\n\n return Promise.reject(reason);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;;;;;;AAEA;AACA;AACA;IACqBA,uB;;;;;;;;;;;;;IAQnB;AACF;AACA;AACA;AACA;IACE,mBAAUC,OAAV,EAAmB;MACjB,IAAMC,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;;MAEA,IAAI;QACF,KAAKC,KAAL,CAAWC,OAAX,CAAmB,eAAnB,EAAoCJ,OAApC;MACD,CAFD,CAGA,OAAOK,KAAP,EAAc;QACZJ,MAAM,CAACK,IAAP,CAAY,yCAAZ,EAAuDD,KAAvD;MACD;;MAED,OAAO,iBAAQE,OAAR,CAAgBP,OAAhB,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,wBAAeA,OAAf,EAAwBQ,MAAxB,EAAgC;MAC9B;MACA;MACA,IAAMP,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;;MAEA,IAAI;QACF,KAAKC,KAAL,CAAWC,OAAX,CAAmB,aAAnB,EAAkCJ,OAAlC,EAA2CQ,MAA3C;QACA,KAAKL,KAAL,CAAWC,OAAX,CAAmB,iBAAnB,EAAsCJ,OAAtC,EAA+CQ,MAA/C;MACD,CAHD,CAIA,OAAOH,KAAP,EAAc;QACZJ,MAAM,CAACK,IAAP,CAAY,uCAAZ,EAAqDD,KAArD;MACD;;MAED,OAAO,iBAAQI,MAAR,CAAeD,MAAf,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,oBAAWR,OAAX,EAAoBU,QAApB,EAA8B;MAC5B,IAAMT,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;;MAEA,IAAI;QACF,KAAKC,KAAL,CAAWC,OAAX,CAAmB,iBAAnB,EAAsCM,QAAQ,CAACV,OAA/C,EAAwDU,QAAxD;MACD,CAFD,CAGA,OAAOL,KAAP,EAAc;QACZJ,MAAM,CAACK,IAAP,CAAY,2CAAZ,EAAyDD,KAAzD;MACD;;MAED,OAAO,iBAAQE,OAAR,CAAgBG,QAAhB,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,yBAAgBV,OAAhB,EAAyBQ,MAAzB,EAAiC;MAC/B,IAAMP,MAAM,GAAG,mBAAI,IAAJ,EAAU,cAAV,EAA0BC,OAA1B,CAAf;;MAEA,IAAI;QACF,KAAKC,KAAL,CAAWC,OAAX,CAAmB,aAAnB,EAAkCJ,OAAlC,EAA2CQ,MAA3C;QACA,KAAKL,KAAL,CAAWC,OAAX,CAAmB,iBAAnB,EAAsCJ,OAAtC,EAA+CQ,MAA/C;MACD,CAHD,CAIA,OAAOH,KAAP,EAAc;QACZJ,MAAM,CAACK,IAAP,CAAY,2CAAZ,EAAyDD,KAAzD;MACD;;MAED,OAAO,iBAAQI,MAAR,CAAeD,MAAf,CAAP;IACD;;;;IApFD;AACF;AACA;IACE,kBAAgB;MACd,OAAO,IAAIT,uBAAJ,CAA4B;QAACI,KAAK,EAAE;MAAR,CAA5B,CAAP;IACD;;;EANkDQ,qB"}
1
+ {"version":3,"names":["RequestEventInterceptor","options","logger","console","webex","trigger","error","warn","resolve","reason","reject","response","Interceptor"],"sources":["request-event.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {get} from 'lodash';\nimport {Interceptor} from '@webex/http-core';\n\n/**\n * @class\n */\nexport default class RequestEventInterceptor extends Interceptor {\n /**\n * @returns {RequestEventInterceptor}\n */\n static create() {\n return new RequestEventInterceptor({webex: this});\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @returns {Object}\n */\n onRequest(options) {\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:start', options);\n } catch (error) {\n logger.warn('event handler for request:start failed ', error);\n }\n\n return Promise.resolve(options);\n }\n\n /**\n * @see Interceptor#onRequest\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onRequestError(options, reason) {\n // We need to do the normal onRequest logging, but then log how the request\n // failed since the response logger won't be called.\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:end', options, reason);\n this.webex.trigger('request:failure', options, reason);\n } catch (error) {\n logger.warn('event handler for request:end failed ', error);\n }\n\n return Promise.reject(reason);\n }\n\n /**\n * @see Interceptor#onResponse\n * @param {Object} options\n * @param {HttpResponse} response\n * @returns {Object}\n */\n onResponse(options, response) {\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:success', response.options, response);\n } catch (error) {\n logger.warn('event handler for request:success failed ', error);\n }\n\n return Promise.resolve(response);\n }\n\n /**\n * @see Interceptor#onResponseError\n * @param {Object} options\n * @param {Error} reason\n * @returns {Object}\n */\n onResponseError(options, reason) {\n const logger = get(this, 'webex.logger', console);\n\n try {\n this.webex.trigger('request:end', options, reason);\n this.webex.trigger('request:failure', options, reason);\n } catch (error) {\n logger.warn('event handler for request:failure failed ', error);\n }\n\n return Promise.reject(reason);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAKA;AAA6C;AAAA;AAE7C;AACA;AACA;AAFA,IAGqBA,uBAAuB;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;IAQ1C;AACF;AACA;AACA;AACA;IACE,mBAAUC,OAAO,EAAE;MACjB,IAAMC,MAAM,GAAG,mBAAI,IAAI,EAAE,cAAc,EAAEC,OAAO,CAAC;MAEjD,IAAI;QACF,IAAI,CAACC,KAAK,CAACC,OAAO,CAAC,eAAe,EAAEJ,OAAO,CAAC;MAC9C,CAAC,CAAC,OAAOK,KAAK,EAAE;QACdJ,MAAM,CAACK,IAAI,CAAC,yCAAyC,EAAED,KAAK,CAAC;MAC/D;MAEA,OAAO,iBAAQE,OAAO,CAACP,OAAO,CAAC;IACjC;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,wBAAeA,OAAO,EAAEQ,MAAM,EAAE;MAC9B;MACA;MACA,IAAMP,MAAM,GAAG,mBAAI,IAAI,EAAE,cAAc,EAAEC,OAAO,CAAC;MAEjD,IAAI;QACF,IAAI,CAACC,KAAK,CAACC,OAAO,CAAC,aAAa,EAAEJ,OAAO,EAAEQ,MAAM,CAAC;QAClD,IAAI,CAACL,KAAK,CAACC,OAAO,CAAC,iBAAiB,EAAEJ,OAAO,EAAEQ,MAAM,CAAC;MACxD,CAAC,CAAC,OAAOH,KAAK,EAAE;QACdJ,MAAM,CAACK,IAAI,CAAC,uCAAuC,EAAED,KAAK,CAAC;MAC7D;MAEA,OAAO,iBAAQI,MAAM,CAACD,MAAM,CAAC;IAC/B;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,oBAAWR,OAAO,EAAEU,QAAQ,EAAE;MAC5B,IAAMT,MAAM,GAAG,mBAAI,IAAI,EAAE,cAAc,EAAEC,OAAO,CAAC;MAEjD,IAAI;QACF,IAAI,CAACC,KAAK,CAACC,OAAO,CAAC,iBAAiB,EAAEM,QAAQ,CAACV,OAAO,EAAEU,QAAQ,CAAC;MACnE,CAAC,CAAC,OAAOL,KAAK,EAAE;QACdJ,MAAM,CAACK,IAAI,CAAC,2CAA2C,EAAED,KAAK,CAAC;MACjE;MAEA,OAAO,iBAAQE,OAAO,CAACG,QAAQ,CAAC;IAClC;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,yBAAgBV,OAAO,EAAEQ,MAAM,EAAE;MAC/B,IAAMP,MAAM,GAAG,mBAAI,IAAI,EAAE,cAAc,EAAEC,OAAO,CAAC;MAEjD,IAAI;QACF,IAAI,CAACC,KAAK,CAACC,OAAO,CAAC,aAAa,EAAEJ,OAAO,EAAEQ,MAAM,CAAC;QAClD,IAAI,CAACL,KAAK,CAACC,OAAO,CAAC,iBAAiB,EAAEJ,OAAO,EAAEQ,MAAM,CAAC;MACxD,CAAC,CAAC,OAAOH,KAAK,EAAE;QACdJ,MAAM,CAACK,IAAI,CAAC,2CAA2C,EAAED,KAAK,CAAC;MACjE;MAEA,OAAO,iBAAQI,MAAM,CAACD,MAAM,CAAC;IAC/B;EAAC;IAAA;IAAA;IAhFD;AACF;AACA;IACE,kBAAgB;MACd,OAAO,IAAIT,uBAAuB,CAAC;QAACI,KAAK,EAAE;MAAI,CAAC,CAAC;IACnD;EAAC;EAAA;AAAA,EANkDQ,qBAAW;AAAA"}