@webex/webex-core 2.59.3-next.1 → 2.59.4

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 (189) hide show
  1. package/.eslintrc.js +6 -6
  2. package/README.md +79 -79
  3. package/babel.config.js +3 -3
  4. package/dist/config.js +24 -24
  5. package/dist/config.js.map +1 -1
  6. package/dist/credentials-config.js +56 -56
  7. package/dist/credentials-config.js.map +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/interceptors/auth.js +28 -28
  10. package/dist/interceptors/auth.js.map +1 -1
  11. package/dist/interceptors/default-options.js +24 -24
  12. package/dist/interceptors/default-options.js.map +1 -1
  13. package/dist/interceptors/embargo.js +9 -9
  14. package/dist/interceptors/embargo.js.map +1 -1
  15. package/dist/interceptors/network-timing.js +19 -19
  16. package/dist/interceptors/network-timing.js.map +1 -1
  17. package/dist/interceptors/payload-transformer.js +19 -19
  18. package/dist/interceptors/payload-transformer.js.map +1 -1
  19. package/dist/interceptors/rate-limit.js +40 -40
  20. package/dist/interceptors/rate-limit.js.map +1 -1
  21. package/dist/interceptors/redirect.js +13 -13
  22. package/dist/interceptors/redirect.js.map +1 -1
  23. package/dist/interceptors/request-event.js +23 -23
  24. package/dist/interceptors/request-event.js.map +1 -1
  25. package/dist/interceptors/request-logger.js +13 -13
  26. package/dist/interceptors/request-logger.js.map +1 -1
  27. package/dist/interceptors/request-timing.js +23 -23
  28. package/dist/interceptors/request-timing.js.map +1 -1
  29. package/dist/interceptors/response-logger.js +19 -19
  30. package/dist/interceptors/response-logger.js.map +1 -1
  31. package/dist/interceptors/user-agent.js +29 -29
  32. package/dist/interceptors/user-agent.js.map +1 -1
  33. package/dist/interceptors/webex-tracking-id.js +15 -15
  34. package/dist/interceptors/webex-tracking-id.js.map +1 -1
  35. package/dist/interceptors/webex-user-agent.js +13 -13
  36. package/dist/interceptors/webex-user-agent.js.map +1 -1
  37. package/dist/lib/batcher.js +83 -83
  38. package/dist/lib/batcher.js.map +1 -1
  39. package/dist/lib/credentials/credentials.js +103 -103
  40. package/dist/lib/credentials/credentials.js.map +1 -1
  41. package/dist/lib/credentials/grant-errors.js +17 -17
  42. package/dist/lib/credentials/grant-errors.js.map +1 -1
  43. package/dist/lib/credentials/index.js +2 -2
  44. package/dist/lib/credentials/index.js.map +1 -1
  45. package/dist/lib/credentials/scope.js +11 -11
  46. package/dist/lib/credentials/scope.js.map +1 -1
  47. package/dist/lib/credentials/token-collection.js +2 -2
  48. package/dist/lib/credentials/token-collection.js.map +1 -1
  49. package/dist/lib/credentials/token.js +145 -145
  50. package/dist/lib/credentials/token.js.map +1 -1
  51. package/dist/lib/page.js +49 -49
  52. package/dist/lib/page.js.map +1 -1
  53. package/dist/lib/services/constants.js.map +1 -1
  54. package/dist/lib/services/index.js +2 -2
  55. package/dist/lib/services/index.js.map +1 -1
  56. package/dist/lib/services/interceptors/server-error.js +9 -9
  57. package/dist/lib/services/interceptors/server-error.js.map +1 -1
  58. package/dist/lib/services/interceptors/service.js +24 -24
  59. package/dist/lib/services/interceptors/service.js.map +1 -1
  60. package/dist/lib/services/metrics.js.map +1 -1
  61. package/dist/lib/services/service-catalog.js +104 -104
  62. package/dist/lib/services/service-catalog.js.map +1 -1
  63. package/dist/lib/services/service-fed-ramp.js.map +1 -1
  64. package/dist/lib/services/service-host.js +134 -134
  65. package/dist/lib/services/service-host.js.map +1 -1
  66. package/dist/lib/services/service-registry.js +175 -175
  67. package/dist/lib/services/service-registry.js.map +1 -1
  68. package/dist/lib/services/service-state.js +38 -38
  69. package/dist/lib/services/service-state.js.map +1 -1
  70. package/dist/lib/services/service-url.js +31 -31
  71. package/dist/lib/services/service-url.js.map +1 -1
  72. package/dist/lib/services/services.js +245 -245
  73. package/dist/lib/services/services.js.map +1 -1
  74. package/dist/lib/stateless-webex-plugin.js +28 -28
  75. package/dist/lib/stateless-webex-plugin.js.map +1 -1
  76. package/dist/lib/storage/decorators.js +27 -27
  77. package/dist/lib/storage/decorators.js.map +1 -1
  78. package/dist/lib/storage/errors.js +4 -4
  79. package/dist/lib/storage/errors.js.map +1 -1
  80. package/dist/lib/storage/index.js.map +1 -1
  81. package/dist/lib/storage/make-webex-plugin-store.js +44 -44
  82. package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
  83. package/dist/lib/storage/make-webex-store.js +40 -40
  84. package/dist/lib/storage/make-webex-store.js.map +1 -1
  85. package/dist/lib/storage/memory-store-adapter.js +9 -9
  86. package/dist/lib/storage/memory-store-adapter.js.map +1 -1
  87. package/dist/lib/webex-core-plugin-mixin.js +13 -13
  88. package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
  89. package/dist/lib/webex-http-error.js +9 -9
  90. package/dist/lib/webex-http-error.js.map +1 -1
  91. package/dist/lib/webex-internal-core-plugin-mixin.js +13 -13
  92. package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
  93. package/dist/lib/webex-plugin.js +36 -36
  94. package/dist/lib/webex-plugin.js.map +1 -1
  95. package/dist/plugins/logger.js +9 -9
  96. package/dist/plugins/logger.js.map +1 -1
  97. package/dist/webex-core.js +104 -104
  98. package/dist/webex-core.js.map +1 -1
  99. package/dist/webex-internal-core.js +12 -12
  100. package/dist/webex-internal-core.js.map +1 -1
  101. package/jest.config.js +3 -3
  102. package/package.json +19 -20
  103. package/process +1 -1
  104. package/src/config.js +90 -90
  105. package/src/credentials-config.js +212 -212
  106. package/src/index.js +62 -62
  107. package/src/interceptors/auth.js +186 -186
  108. package/src/interceptors/default-options.js +55 -55
  109. package/src/interceptors/embargo.js +43 -43
  110. package/src/interceptors/network-timing.js +54 -54
  111. package/src/interceptors/payload-transformer.js +55 -55
  112. package/src/interceptors/rate-limit.js +169 -169
  113. package/src/interceptors/redirect.js +106 -106
  114. package/src/interceptors/request-event.js +93 -93
  115. package/src/interceptors/request-logger.js +78 -78
  116. package/src/interceptors/request-timing.js +65 -65
  117. package/src/interceptors/response-logger.js +98 -98
  118. package/src/interceptors/user-agent.js +77 -77
  119. package/src/interceptors/webex-tracking-id.js +73 -73
  120. package/src/interceptors/webex-user-agent.js +79 -79
  121. package/src/lib/batcher.js +307 -307
  122. package/src/lib/credentials/credentials.js +552 -552
  123. package/src/lib/credentials/grant-errors.js +92 -92
  124. package/src/lib/credentials/index.js +16 -16
  125. package/src/lib/credentials/scope.js +34 -34
  126. package/src/lib/credentials/token-collection.js +17 -17
  127. package/src/lib/credentials/token.js +559 -559
  128. package/src/lib/page.js +159 -159
  129. package/src/lib/services/constants.js +9 -9
  130. package/src/lib/services/index.js +26 -26
  131. package/src/lib/services/interceptors/server-error.js +48 -48
  132. package/src/lib/services/interceptors/service.js +101 -101
  133. package/src/lib/services/metrics.js +4 -4
  134. package/src/lib/services/service-catalog.js +435 -435
  135. package/src/lib/services/service-fed-ramp.js +4 -4
  136. package/src/lib/services/service-host.js +267 -267
  137. package/src/lib/services/service-registry.js +465 -465
  138. package/src/lib/services/service-state.js +78 -78
  139. package/src/lib/services/service-url.js +124 -124
  140. package/src/lib/services/services.js +1018 -1018
  141. package/src/lib/stateless-webex-plugin.js +98 -98
  142. package/src/lib/storage/decorators.js +220 -220
  143. package/src/lib/storage/errors.js +15 -15
  144. package/src/lib/storage/index.js +10 -10
  145. package/src/lib/storage/make-webex-plugin-store.js +211 -211
  146. package/src/lib/storage/make-webex-store.js +140 -140
  147. package/src/lib/storage/memory-store-adapter.js +79 -79
  148. package/src/lib/webex-core-plugin-mixin.js +114 -114
  149. package/src/lib/webex-http-error.js +61 -61
  150. package/src/lib/webex-internal-core-plugin-mixin.js +107 -107
  151. package/src/lib/webex-plugin.js +222 -222
  152. package/src/plugins/logger.js +60 -60
  153. package/src/webex-core.js +745 -745
  154. package/src/webex-internal-core.js +46 -46
  155. package/test/integration/spec/credentials/credentials.js +139 -139
  156. package/test/integration/spec/credentials/token.js +102 -102
  157. package/test/integration/spec/services/service-catalog.js +838 -838
  158. package/test/integration/spec/services/services.js +1221 -1221
  159. package/test/integration/spec/webex-core.js +178 -178
  160. package/test/unit/spec/_setup.js +44 -44
  161. package/test/unit/spec/credentials/credentials.js +1017 -1017
  162. package/test/unit/spec/credentials/token.js +441 -441
  163. package/test/unit/spec/interceptors/auth.js +521 -521
  164. package/test/unit/spec/interceptors/default-options.js +84 -84
  165. package/test/unit/spec/interceptors/embargo.js +144 -144
  166. package/test/unit/spec/interceptors/network-timing.js +49 -49
  167. package/test/unit/spec/interceptors/payload-transformer.js +155 -155
  168. package/test/unit/spec/interceptors/rate-limit.js +302 -302
  169. package/test/unit/spec/interceptors/redirect.js +102 -102
  170. package/test/unit/spec/interceptors/request-timing.js +92 -92
  171. package/test/unit/spec/interceptors/user-agent.js +76 -76
  172. package/test/unit/spec/interceptors/webex-tracking-id.js +76 -76
  173. package/test/unit/spec/interceptors/webex-user-agent.js +159 -159
  174. package/test/unit/spec/lib/batcher.js +330 -330
  175. package/test/unit/spec/lib/page.js +148 -148
  176. package/test/unit/spec/lib/webex-plugin.js +48 -48
  177. package/test/unit/spec/services/interceptors/server-error.js +204 -204
  178. package/test/unit/spec/services/interceptors/service.js +188 -188
  179. package/test/unit/spec/services/service-catalog.js +194 -194
  180. package/test/unit/spec/services/service-host.js +260 -260
  181. package/test/unit/spec/services/service-registry.js +747 -747
  182. package/test/unit/spec/services/service-state.js +60 -60
  183. package/test/unit/spec/services/service-url.js +258 -258
  184. package/test/unit/spec/services/services.js +348 -348
  185. package/test/unit/spec/storage/persist.js +50 -50
  186. package/test/unit/spec/storage/storage-adapter.js +12 -12
  187. package/test/unit/spec/storage/wait-for-value.js +81 -81
  188. package/test/unit/spec/webex-core.js +253 -253
  189. package/test/unit/spec/webex-internal-core.js +91 -91
@@ -12,9 +12,9 @@ var _has2 = _interopRequireDefault(require("lodash/has"));
12
12
  var _common = require("@webex/common");
13
13
  var _webexPlugin = _interopRequireDefault(require("./webex-plugin"));
14
14
  var _webexHttpError = _interopRequireDefault(require("./webex-http-error"));
15
- /**
16
- * Base class for coalescing requests to batched APIs
17
- * @class Batcher
15
+ /**
16
+ * Base class for coalescing requests to batched APIs
17
+ * @class Batcher
18
18
  */
19
19
  var Batcher = _webexPlugin.default.extend({
20
20
  session: {
@@ -44,10 +44,10 @@ var Batcher = _webexPlugin.default.extend({
44
44
  }
45
45
  }
46
46
  },
47
- /**
48
- * Requests an item from a batched API
49
- * @param {Object} item
50
- * @returns {Promise<mixed>}
47
+ /**
48
+ * Requests an item from a batched API
49
+ * @param {Object} item
50
+ * @returns {Promise<mixed>}
51
51
  */
52
52
  request: function request(item) {
53
53
  var _this2 = this;
@@ -80,29 +80,29 @@ var Batcher = _webexPlugin.default.extend({
80
80
  });
81
81
  return defer.promise;
82
82
  },
83
- /**
84
- * Adds an item to the queue.
85
- * Intended to be overridden
86
- * @param {mixed} req
87
- * @returns {Promise<undefined>}
83
+ /**
84
+ * Adds an item to the queue.
85
+ * Intended to be overridden
86
+ * @param {mixed} req
87
+ * @returns {Promise<undefined>}
88
88
  */
89
89
  enqueue: function enqueue(req) {
90
90
  this.queue.push(req);
91
91
  return _promise.default.resolve();
92
92
  },
93
- /**
94
- * Transform the item before adding it to the queue
95
- * Intended to be overridden
96
- * @param {mixed} item
97
- * @returns {Promise<mixed>}
93
+ /**
94
+ * Transform the item before adding it to the queue
95
+ * Intended to be overridden
96
+ * @param {mixed} item
97
+ * @returns {Promise<mixed>}
98
98
  */
99
99
  prepareItem: function prepareItem(item) {
100
100
  return _promise.default.resolve(item);
101
101
  },
102
- /**
103
- * Detaches the current queue, does any appropriate transforms, and submits it
104
- * to the API.
105
- * @returns {Promise<undefined>}
102
+ /**
103
+ * Detaches the current queue, does any appropriate transforms, and submits it
104
+ * to the API.
105
+ * @returns {Promise<undefined>}
106
106
  */
107
107
  executeQueue: function executeQueue() {
108
108
  var _this3 = this;
@@ -127,30 +127,30 @@ var Batcher = _webexPlugin.default.extend({
127
127
  return _promise.default.reject(reason);
128
128
  });
129
129
  },
130
- /**
131
- * Performs any final transforms on the queue before submitting it to the API
132
- * Intended to be overridden
133
- * @param {Object|Array} queue
134
- * @returns {Promise<Object>}
130
+ /**
131
+ * Performs any final transforms on the queue before submitting it to the API
132
+ * Intended to be overridden
133
+ * @param {Object|Array} queue
134
+ * @returns {Promise<Object>}
135
135
  */
136
136
  prepareRequest: function prepareRequest(queue) {
137
137
  return _promise.default.resolve(queue);
138
138
  },
139
- /**
140
- * Submits the prepared request body to the API.
141
- * This method *must* be overridden
142
- * @param {Object} payload
143
- * @returns {Promise<HttpResponseObject>}
139
+ /**
140
+ * Submits the prepared request body to the API.
141
+ * This method *must* be overridden
142
+ * @param {Object} payload
143
+ * @returns {Promise<HttpResponseObject>}
144
144
  */
145
145
  // eslint-disable-next-line no-unused-vars
146
146
  submitHttpRequest: function submitHttpRequest(payload) {
147
147
  throw new Error('request() must be implemented');
148
148
  },
149
- /**
150
- * Actions taken when the http request returns a success
151
- * Intended to be overridden
152
- * @param {Promise<HttpResponseObject>} res
153
- * @returns {Promise<undefined>}
149
+ /**
150
+ * Actions taken when the http request returns a success
151
+ * Intended to be overridden
152
+ * @param {Promise<HttpResponseObject>} res
153
+ * @returns {Promise<undefined>}
154
154
  */
155
155
  handleHttpSuccess: function handleHttpSuccess(res) {
156
156
  var _this4 = this;
@@ -158,13 +158,13 @@ var Batcher = _webexPlugin.default.extend({
158
158
  return _this4.acceptItem(item);
159
159
  }));
160
160
  },
161
- /**
162
- * Actions taken when the http request returns a failure. Typically, this
163
- * means failing the entire queue, but could be overridden in some
164
- * implementations to e.g. reenqueue.
165
- * Intended to be overridden
166
- * @param {WebexHttpError} reason
167
- * @returns {Promise<undefined>}
161
+ /**
162
+ * Actions taken when the http request returns a failure. Typically, this
163
+ * means failing the entire queue, but could be overridden in some
164
+ * implementations to e.g. reenqueue.
165
+ * Intended to be overridden
166
+ * @param {WebexHttpError} reason
167
+ * @returns {Promise<undefined>}
168
168
  */
169
169
  handleHttpError: function handleHttpError(reason) {
170
170
  var _this5 = this;
@@ -180,10 +180,10 @@ var Batcher = _webexPlugin.default.extend({
180
180
  this.logger.error('http error handler called without a WebexHttpError object', reason);
181
181
  return _promise.default.reject(reason);
182
182
  },
183
- /**
184
- * Determines if the item succeeded or failed and delegates accordingly
185
- * @param {Object} item
186
- * @returns {Promise<undefined>}
183
+ /**
184
+ * Determines if the item succeeded or failed and delegates accordingly
185
+ * @param {Object} item
186
+ * @returns {Promise<undefined>}
187
187
  */
188
188
  acceptItem: function acceptItem(item) {
189
189
  var _this6 = this;
@@ -194,42 +194,42 @@ var Batcher = _webexPlugin.default.extend({
194
194
  return _this6.handleItemSuccess(item);
195
195
  });
196
196
  },
197
- /**
198
- * Indicates if the specified response item implies a success or a failure
199
- * Intended to be overridden
200
- * @param {Object} item
201
- * @returns {Promise<Boolean>}
197
+ /**
198
+ * Indicates if the specified response item implies a success or a failure
199
+ * Intended to be overridden
200
+ * @param {Object} item
201
+ * @returns {Promise<Boolean>}
202
202
  */
203
203
  // eslint-disable-next-line no-unused-vars
204
204
  didItemFail: function didItemFail(item) {
205
205
  return _promise.default.resolve(false);
206
206
  },
207
- /**
208
- * Finds the Defer for the specified item and rejects its promise
209
- * Intended to be overridden
210
- * @param {Object} item
211
- * @returns {Promise<undefined>}
207
+ /**
208
+ * Finds the Defer for the specified item and rejects its promise
209
+ * Intended to be overridden
210
+ * @param {Object} item
211
+ * @returns {Promise<undefined>}
212
212
  */
213
213
  handleItemFailure: function handleItemFailure(item) {
214
214
  return this.getDeferredForResponse(item).then(function (defer) {
215
215
  defer.reject(item);
216
216
  });
217
217
  },
218
- /**
219
- * Finds the Defer for the specified item and resolves its promise
220
- * Intended to be overridden
221
- * @param {Object} item
222
- * @returns {Promise<undefined>}
218
+ /**
219
+ * Finds the Defer for the specified item and resolves its promise
220
+ * Intended to be overridden
221
+ * @param {Object} item
222
+ * @returns {Promise<undefined>}
223
223
  */
224
224
  handleItemSuccess: function handleItemSuccess(item) {
225
225
  return this.getDeferredForResponse(item).then(function (defer) {
226
226
  defer.resolve(item);
227
227
  });
228
228
  },
229
- /**
230
- * Returns the Deferred for the specified request item
231
- * @param {Object} item
232
- * @returns {Promise<Defer>}
229
+ /**
230
+ * Returns the Deferred for the specified request item
231
+ * @param {Object} item
232
+ * @returns {Promise<Defer>}
233
233
  */
234
234
  getDeferredForRequest: function getDeferredForRequest(item) {
235
235
  var _this7 = this;
@@ -243,10 +243,10 @@ var Batcher = _webexPlugin.default.extend({
243
243
  return defer;
244
244
  });
245
245
  },
246
- /**
247
- * Returns the Deferred for the specified response item
248
- * @param {Object} item
249
- * @returns {Promise<Defer>}
246
+ /**
247
+ * Returns the Deferred for the specified response item
248
+ * @param {Object} item
249
+ * @returns {Promise<Defer>}
250
250
  */
251
251
  getDeferredForResponse: function getDeferredForResponse(item) {
252
252
  var _this8 = this;
@@ -260,29 +260,29 @@ var Batcher = _webexPlugin.default.extend({
260
260
  return defer;
261
261
  });
262
262
  },
263
- /**
264
- * Generates a unique identifier for the item in a request payload
265
- * Intended to be overridden
266
- * Note that overrides must return a primitive.
267
- * @param {Object} item
268
- * @returns {Promise<primitive>}
263
+ /**
264
+ * Generates a unique identifier for the item in a request payload
265
+ * Intended to be overridden
266
+ * Note that overrides must return a primitive.
267
+ * @param {Object} item
268
+ * @returns {Promise<primitive>}
269
269
  */
270
270
  // eslint-disable-next-line no-unused-vars
271
271
  fingerprintRequest: function fingerprintRequest(item) {
272
272
  throw new Error('fingerprintRequest() must be implemented');
273
273
  },
274
- /**
275
- * Generates a unique identifier for the item in a response payload
276
- * Intended to be overridden
277
- * Note that overrides must return a primitive.
278
- * @param {Object} item
279
- * @returns {Promise<primitive>}
274
+ /**
275
+ * Generates a unique identifier for the item in a response payload
276
+ * Intended to be overridden
277
+ * Note that overrides must return a primitive.
278
+ * @param {Object} item
279
+ * @returns {Promise<primitive>}
280
280
  */
281
281
  // eslint-disable-next-line no-unused-vars
282
282
  fingerprintResponse: function fingerprintResponse(item) {
283
283
  throw new Error('fingerprintResponse() must be implemented');
284
284
  },
285
- version: "2.59.0"
285
+ version: "2.59.4"
286
286
  });
287
287
  var _default2 = Batcher;
288
288
  exports.default = _default2;
@@ -1 +1 @@
1
- {"version":3,"names":["_common","require","_webexPlugin","_interopRequireDefault","_webexHttpError","Batcher","WebexPlugin","extend","session","deferreds","type","default","_default","_map","queue","derived","bounce","fn","_this","cappedDebounce","executeQueue","apply","arguments","config","batcherWait","maxCalls","batcherMaxCalls","maxWait","batcherMaxWait","request","item","_this2","defer","Defer","fingerprintRequest","then","idx","has","resolve","get","promise","set","prepareItem","req","tap","delete","catch","reason","_promise","reject","enqueue","push","_this3","splice","prepareRequest","payload","submitHttpRequest","res","handleHttpSuccess","WebexHttpError","handleHttpError","all","map","getDeferredForRequest","logger","error","process","env","NODE_ENV","stack","Error","_this4","body","items","acceptItem","_this5","_has2","options","_this6","didItemFail","didFail","handleItemFailure","handleItemSuccess","getDeferredForResponse","_this7","_this8","fingerprintResponse","version","_default2","exports"],"sources":["batcher.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\nimport {has} from 'lodash';\r\nimport {cappedDebounce, Defer, tap} from '@webex/common';\r\n\r\nimport WebexPlugin from './webex-plugin';\r\nimport WebexHttpError from './webex-http-error';\r\n\r\n/**\r\n * Base class for coalescing requests to batched APIs\r\n * @class Batcher\r\n */\r\nconst Batcher = WebexPlugin.extend({\r\n session: {\r\n deferreds: {\r\n type: 'object',\r\n default() {\r\n return new Map();\r\n },\r\n },\r\n queue: {\r\n type: 'array',\r\n default() {\r\n return [];\r\n },\r\n },\r\n },\r\n\r\n derived: {\r\n bounce: {\r\n fn() {\r\n return cappedDebounce((...args) => this.executeQueue(...args), this.config.batcherWait, {\r\n maxCalls: this.config.batcherMaxCalls,\r\n maxWait: this.config.batcherMaxWait,\r\n });\r\n },\r\n },\r\n },\r\n\r\n /**\r\n * Requests an item from a batched API\r\n * @param {Object} item\r\n * @returns {Promise<mixed>}\r\n */\r\n request(item) {\r\n // So far, I can't find a way to avoid three layers of nesting here.\r\n /* eslint max-nested-callbacks: [0] */\r\n const defer = new Defer();\r\n\r\n this.fingerprintRequest(item)\r\n .then((idx) => {\r\n if (this.deferreds.has(idx)) {\r\n defer.resolve(this.deferreds.get(idx).promise);\r\n\r\n return;\r\n }\r\n this.deferreds.set(idx, defer);\r\n this.prepareItem(item)\r\n .then((req) => {\r\n defer.promise = defer.promise\r\n .then(tap(() => this.deferreds.delete(idx)))\r\n .catch((reason) => {\r\n this.deferreds.delete(idx);\r\n\r\n return Promise.reject(reason);\r\n });\r\n\r\n this.enqueue(req)\r\n .then(() => this.bounce())\r\n .catch((reason) => defer.reject(reason));\r\n })\r\n .catch((reason) => defer.reject(reason));\r\n })\r\n .catch((reason) => defer.reject(reason));\r\n\r\n return defer.promise;\r\n },\r\n\r\n /**\r\n * Adds an item to the queue.\r\n * Intended to be overridden\r\n * @param {mixed} req\r\n * @returns {Promise<undefined>}\r\n */\r\n enqueue(req) {\r\n this.queue.push(req);\r\n\r\n return Promise.resolve();\r\n },\r\n\r\n /**\r\n * Transform the item before adding it to the queue\r\n * Intended to be overridden\r\n * @param {mixed} item\r\n * @returns {Promise<mixed>}\r\n */\r\n prepareItem(item) {\r\n return Promise.resolve(item);\r\n },\r\n\r\n /**\r\n * Detaches the current queue, does any appropriate transforms, and submits it\r\n * to the API.\r\n * @returns {Promise<undefined>}\r\n */\r\n executeQueue() {\r\n const queue = this.queue.splice(0, this.config.batcherMaxCalls);\r\n\r\n return new Promise((resolve) => {\r\n resolve(\r\n this.prepareRequest(queue)\r\n .then((payload) =>\r\n this.submitHttpRequest(payload).then((res) => this.handleHttpSuccess(res))\r\n )\r\n .catch((reason) => {\r\n if (reason instanceof WebexHttpError) {\r\n return this.handleHttpError(reason);\r\n }\r\n\r\n return Promise.all(\r\n queue.map((item) =>\r\n this.getDeferredForRequest(item).then((defer) => {\r\n defer.reject(reason);\r\n })\r\n )\r\n );\r\n })\r\n );\r\n }).catch((reason) => {\r\n this.logger.error(process.env.NODE_ENV === 'production' ? reason : reason.stack);\r\n\r\n return Promise.reject(reason);\r\n });\r\n },\r\n\r\n /**\r\n * Performs any final transforms on the queue before submitting it to the API\r\n * Intended to be overridden\r\n * @param {Object|Array} queue\r\n * @returns {Promise<Object>}\r\n */\r\n prepareRequest(queue) {\r\n return Promise.resolve(queue);\r\n },\r\n\r\n /**\r\n * Submits the prepared request body to the API.\r\n * This method *must* be overridden\r\n * @param {Object} payload\r\n * @returns {Promise<HttpResponseObject>}\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n submitHttpRequest(payload) {\r\n throw new Error('request() must be implemented');\r\n },\r\n\r\n /**\r\n * Actions taken when the http request returns a success\r\n * Intended to be overridden\r\n * @param {Promise<HttpResponseObject>} res\r\n * @returns {Promise<undefined>}\r\n */\r\n handleHttpSuccess(res) {\r\n return Promise.all(\r\n ((res.body && res.body.items) || res.body).map((item) => this.acceptItem(item))\r\n );\r\n },\r\n\r\n /**\r\n * Actions taken when the http request returns a failure. Typically, this\r\n * means failing the entire queue, but could be overridden in some\r\n * implementations to e.g. reenqueue.\r\n * Intended to be overridden\r\n * @param {WebexHttpError} reason\r\n * @returns {Promise<undefined>}\r\n */\r\n handleHttpError(reason) {\r\n if (reason instanceof WebexHttpError) {\r\n if (has(reason, 'options.body.map')) {\r\n return Promise.all(\r\n reason.options.body.map((item) =>\r\n this.getDeferredForRequest(item).then((defer) => {\r\n defer.reject(reason);\r\n })\r\n )\r\n );\r\n }\r\n }\r\n this.logger.error('http error handler called without a WebexHttpError object', reason);\r\n\r\n return Promise.reject(reason);\r\n },\r\n\r\n /**\r\n * Determines if the item succeeded or failed and delegates accordingly\r\n * @param {Object} item\r\n * @returns {Promise<undefined>}\r\n */\r\n acceptItem(item) {\r\n return this.didItemFail(item).then((didFail) => {\r\n if (didFail) {\r\n return this.handleItemFailure(item);\r\n }\r\n\r\n return this.handleItemSuccess(item);\r\n });\r\n },\r\n\r\n /**\r\n * Indicates if the specified response item implies a success or a failure\r\n * Intended to be overridden\r\n * @param {Object} item\r\n * @returns {Promise<Boolean>}\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n didItemFail(item) {\r\n return Promise.resolve(false);\r\n },\r\n\r\n /**\r\n * Finds the Defer for the specified item and rejects its promise\r\n * Intended to be overridden\r\n * @param {Object} item\r\n * @returns {Promise<undefined>}\r\n */\r\n handleItemFailure(item) {\r\n return this.getDeferredForResponse(item).then((defer) => {\r\n defer.reject(item);\r\n });\r\n },\r\n\r\n /**\r\n * Finds the Defer for the specified item and resolves its promise\r\n * Intended to be overridden\r\n * @param {Object} item\r\n * @returns {Promise<undefined>}\r\n */\r\n handleItemSuccess(item) {\r\n return this.getDeferredForResponse(item).then((defer) => {\r\n defer.resolve(item);\r\n });\r\n },\r\n\r\n /**\r\n * Returns the Deferred for the specified request item\r\n * @param {Object} item\r\n * @returns {Promise<Defer>}\r\n */\r\n getDeferredForRequest(item) {\r\n return this.fingerprintRequest(item).then((idx) => {\r\n const defer = this.deferreds.get(idx);\r\n\r\n /* istanbul ignore if */\r\n if (!defer) {\r\n throw new Error('Could not find pending request for received response');\r\n }\r\n\r\n return defer;\r\n });\r\n },\r\n\r\n /**\r\n * Returns the Deferred for the specified response item\r\n * @param {Object} item\r\n * @returns {Promise<Defer>}\r\n */\r\n getDeferredForResponse(item) {\r\n return this.fingerprintResponse(item).then((idx) => {\r\n const defer = this.deferreds.get(idx);\r\n\r\n /* istanbul ignore if */\r\n if (!defer) {\r\n throw new Error('Could not find pending request for received response');\r\n }\r\n\r\n return defer;\r\n });\r\n },\r\n\r\n /**\r\n * Generates a unique identifier for the item in a request payload\r\n * Intended to be overridden\r\n * Note that overrides must return a primitive.\r\n * @param {Object} item\r\n * @returns {Promise<primitive>}\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n fingerprintRequest(item) {\r\n throw new Error('fingerprintRequest() must be implemented');\r\n },\r\n\r\n /**\r\n * Generates a unique identifier for the item in a response payload\r\n * Intended to be overridden\r\n * Note that overrides must return a primitive.\r\n * @param {Object} item\r\n * @returns {Promise<primitive>}\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n fingerprintResponse(item) {\r\n throw new Error('fingerprintResponse() must be implemented');\r\n },\r\n});\r\n\r\nexport default Batcher;\r\n"],"mappings":"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"}
1
+ {"version":3,"names":["_common","require","_webexPlugin","_interopRequireDefault","_webexHttpError","Batcher","WebexPlugin","extend","session","deferreds","type","default","_default","_map","queue","derived","bounce","fn","_this","cappedDebounce","executeQueue","apply","arguments","config","batcherWait","maxCalls","batcherMaxCalls","maxWait","batcherMaxWait","request","item","_this2","defer","Defer","fingerprintRequest","then","idx","has","resolve","get","promise","set","prepareItem","req","tap","delete","catch","reason","_promise","reject","enqueue","push","_this3","splice","prepareRequest","payload","submitHttpRequest","res","handleHttpSuccess","WebexHttpError","handleHttpError","all","map","getDeferredForRequest","logger","error","process","env","NODE_ENV","stack","Error","_this4","body","items","acceptItem","_this5","_has2","options","_this6","didItemFail","didFail","handleItemFailure","handleItemSuccess","getDeferredForResponse","_this7","_this8","fingerprintResponse","version","_default2","exports"],"sources":["batcher.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {has} from 'lodash';\nimport {cappedDebounce, Defer, tap} from '@webex/common';\n\nimport WebexPlugin from './webex-plugin';\nimport WebexHttpError from './webex-http-error';\n\n/**\n * Base class for coalescing requests to batched APIs\n * @class Batcher\n */\nconst Batcher = WebexPlugin.extend({\n session: {\n deferreds: {\n type: 'object',\n default() {\n return new Map();\n },\n },\n queue: {\n type: 'array',\n default() {\n return [];\n },\n },\n },\n\n derived: {\n bounce: {\n fn() {\n return cappedDebounce((...args) => this.executeQueue(...args), this.config.batcherWait, {\n maxCalls: this.config.batcherMaxCalls,\n maxWait: this.config.batcherMaxWait,\n });\n },\n },\n },\n\n /**\n * Requests an item from a batched API\n * @param {Object} item\n * @returns {Promise<mixed>}\n */\n request(item) {\n // So far, I can't find a way to avoid three layers of nesting here.\n /* eslint max-nested-callbacks: [0] */\n const defer = new Defer();\n\n this.fingerprintRequest(item)\n .then((idx) => {\n if (this.deferreds.has(idx)) {\n defer.resolve(this.deferreds.get(idx).promise);\n\n return;\n }\n this.deferreds.set(idx, defer);\n this.prepareItem(item)\n .then((req) => {\n defer.promise = defer.promise\n .then(tap(() => this.deferreds.delete(idx)))\n .catch((reason) => {\n this.deferreds.delete(idx);\n\n return Promise.reject(reason);\n });\n\n this.enqueue(req)\n .then(() => this.bounce())\n .catch((reason) => defer.reject(reason));\n })\n .catch((reason) => defer.reject(reason));\n })\n .catch((reason) => defer.reject(reason));\n\n return defer.promise;\n },\n\n /**\n * Adds an item to the queue.\n * Intended to be overridden\n * @param {mixed} req\n * @returns {Promise<undefined>}\n */\n enqueue(req) {\n this.queue.push(req);\n\n return Promise.resolve();\n },\n\n /**\n * Transform the item before adding it to the queue\n * Intended to be overridden\n * @param {mixed} item\n * @returns {Promise<mixed>}\n */\n prepareItem(item) {\n return Promise.resolve(item);\n },\n\n /**\n * Detaches the current queue, does any appropriate transforms, and submits it\n * to the API.\n * @returns {Promise<undefined>}\n */\n executeQueue() {\n const queue = this.queue.splice(0, this.config.batcherMaxCalls);\n\n return new Promise((resolve) => {\n resolve(\n this.prepareRequest(queue)\n .then((payload) =>\n this.submitHttpRequest(payload).then((res) => this.handleHttpSuccess(res))\n )\n .catch((reason) => {\n if (reason instanceof WebexHttpError) {\n return this.handleHttpError(reason);\n }\n\n return Promise.all(\n queue.map((item) =>\n this.getDeferredForRequest(item).then((defer) => {\n defer.reject(reason);\n })\n )\n );\n })\n );\n }).catch((reason) => {\n this.logger.error(process.env.NODE_ENV === 'production' ? reason : reason.stack);\n\n return Promise.reject(reason);\n });\n },\n\n /**\n * Performs any final transforms on the queue before submitting it to the API\n * Intended to be overridden\n * @param {Object|Array} queue\n * @returns {Promise<Object>}\n */\n prepareRequest(queue) {\n return Promise.resolve(queue);\n },\n\n /**\n * Submits the prepared request body to the API.\n * This method *must* be overridden\n * @param {Object} payload\n * @returns {Promise<HttpResponseObject>}\n */\n // eslint-disable-next-line no-unused-vars\n submitHttpRequest(payload) {\n throw new Error('request() must be implemented');\n },\n\n /**\n * Actions taken when the http request returns a success\n * Intended to be overridden\n * @param {Promise<HttpResponseObject>} res\n * @returns {Promise<undefined>}\n */\n handleHttpSuccess(res) {\n return Promise.all(\n ((res.body && res.body.items) || res.body).map((item) => this.acceptItem(item))\n );\n },\n\n /**\n * Actions taken when the http request returns a failure. Typically, this\n * means failing the entire queue, but could be overridden in some\n * implementations to e.g. reenqueue.\n * Intended to be overridden\n * @param {WebexHttpError} reason\n * @returns {Promise<undefined>}\n */\n handleHttpError(reason) {\n if (reason instanceof WebexHttpError) {\n if (has(reason, 'options.body.map')) {\n return Promise.all(\n reason.options.body.map((item) =>\n this.getDeferredForRequest(item).then((defer) => {\n defer.reject(reason);\n })\n )\n );\n }\n }\n this.logger.error('http error handler called without a WebexHttpError object', reason);\n\n return Promise.reject(reason);\n },\n\n /**\n * Determines if the item succeeded or failed and delegates accordingly\n * @param {Object} item\n * @returns {Promise<undefined>}\n */\n acceptItem(item) {\n return this.didItemFail(item).then((didFail) => {\n if (didFail) {\n return this.handleItemFailure(item);\n }\n\n return this.handleItemSuccess(item);\n });\n },\n\n /**\n * Indicates if the specified response item implies a success or a failure\n * Intended to be overridden\n * @param {Object} item\n * @returns {Promise<Boolean>}\n */\n // eslint-disable-next-line no-unused-vars\n didItemFail(item) {\n return Promise.resolve(false);\n },\n\n /**\n * Finds the Defer for the specified item and rejects its promise\n * Intended to be overridden\n * @param {Object} item\n * @returns {Promise<undefined>}\n */\n handleItemFailure(item) {\n return this.getDeferredForResponse(item).then((defer) => {\n defer.reject(item);\n });\n },\n\n /**\n * Finds the Defer for the specified item and resolves its promise\n * Intended to be overridden\n * @param {Object} item\n * @returns {Promise<undefined>}\n */\n handleItemSuccess(item) {\n return this.getDeferredForResponse(item).then((defer) => {\n defer.resolve(item);\n });\n },\n\n /**\n * Returns the Deferred for the specified request item\n * @param {Object} item\n * @returns {Promise<Defer>}\n */\n getDeferredForRequest(item) {\n return this.fingerprintRequest(item).then((idx) => {\n const defer = this.deferreds.get(idx);\n\n /* istanbul ignore if */\n if (!defer) {\n throw new Error('Could not find pending request for received response');\n }\n\n return defer;\n });\n },\n\n /**\n * Returns the Deferred for the specified response item\n * @param {Object} item\n * @returns {Promise<Defer>}\n */\n getDeferredForResponse(item) {\n return this.fingerprintResponse(item).then((idx) => {\n const defer = this.deferreds.get(idx);\n\n /* istanbul ignore if */\n if (!defer) {\n throw new Error('Could not find pending request for received response');\n }\n\n return defer;\n });\n },\n\n /**\n * Generates a unique identifier for the item in a request payload\n * Intended to be overridden\n * Note that overrides must return a primitive.\n * @param {Object} item\n * @returns {Promise<primitive>}\n */\n // eslint-disable-next-line no-unused-vars\n fingerprintRequest(item) {\n throw new Error('fingerprintRequest() must be implemented');\n },\n\n /**\n * Generates a unique identifier for the item in a response payload\n * Intended to be overridden\n * Note that overrides must return a primitive.\n * @param {Object} item\n * @returns {Promise<primitive>}\n */\n // eslint-disable-next-line no-unused-vars\n fingerprintResponse(item) {\n throw new Error('fingerprintResponse() must be implemented');\n },\n});\n\nexport default Batcher;\n"],"mappings":"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"}
@@ -38,8 +38,8 @@ var _tokenCollection = _interopRequireDefault(require("./token-collection"));
38
38
  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _obj;
39
39
  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; }
40
40
  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; }
41
- /**
42
- * @class
41
+ /**
42
+ * @class
43
43
  */
44
44
  var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
45
45
  keyFactory: function keyFactory(scope) {
@@ -79,12 +79,12 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
79
79
  default: false,
80
80
  type: 'boolean'
81
81
  },
82
- /**
83
- * Becomes `true` once the {@link loaded} event fires.
84
- * @see {@link WebexPlugin#ready}
85
- * @instance
86
- * @memberof Credentials
87
- * @type {boolean}
82
+ /**
83
+ * Becomes `true` once the {@link loaded} event fires.
84
+ * @see {@link WebexPlugin#ready}
85
+ * @instance
86
+ * @memberof Credentials
87
+ * @type {boolean}
88
88
  */
89
89
  ready: {
90
90
  default: false,
@@ -95,14 +95,14 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
95
95
  type: 'any'
96
96
  }
97
97
  },
98
- /**
99
- * Generates an OAuth Login URL. Prefers the api.ciscospark.com proxy if the
100
- * instance is initialize with an authorizatUrl, but fallsback to idbroker
101
- * as the base otherwise.
102
- * @instance
103
- * @memberof Credentials
104
- * @param {Object} [options={}]
105
- * @returns {string}
98
+ /**
99
+ * Generates an OAuth Login URL. Prefers the api.ciscospark.com proxy if the
100
+ * instance is initialize with an authorizatUrl, but fallsback to idbroker
101
+ * as the base otherwise.
102
+ * @instance
103
+ * @memberof Credentials
104
+ * @param {Object} [options={}]
105
+ * @returns {string}
106
106
  */
107
107
  buildLoginUrl: function buildLoginUrl() {
108
108
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
@@ -130,11 +130,11 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
130
130
  return "".concat(this.config.authorizeUrl, "?").concat(_querystring.default.stringify(options));
131
131
  /* eslint-enable camelcase */
132
132
  },
133
- /**
134
- * Get the determined OrgId.
135
- *
136
- * @throws {Error} - If the OrgId could not be determined.
137
- * @returns {string} - The OrgId.
133
+ /**
134
+ * Get the determined OrgId.
135
+ *
136
+ * @throws {Error} - If the OrgId could not be determined.
137
+ * @returns {string} - The OrgId.
138
138
  */
139
139
  getOrgId: function getOrgId() {
140
140
  this.logger.info('credentials: attempting to retrieve the OrgId from token');
@@ -155,13 +155,13 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
155
155
  }
156
156
  }
157
157
  },
158
- /**
159
- * Extract the OrgId [realm] from a provided JWT.
160
- *
161
- * @private
162
- * @param {string} token - The JWT to extract the OrgId from.
163
- * @throws {Error} - If the token does not pass JWT general/realm validation.
164
- * @returns {string} - The OrgId.
158
+ /**
159
+ * Extract the OrgId [realm] from a provided JWT.
160
+ *
161
+ * @private
162
+ * @param {string} token - The JWT to extract the OrgId from.
163
+ * @throws {Error} - If the token does not pass JWT general/realm validation.
164
+ * @returns {string} - The OrgId.
165
165
  */
166
166
  extractOrgIdFromJWT: function extractOrgIdFromJWT() {
167
167
  var token = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
@@ -179,13 +179,13 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
179
179
  // Return the OrgId [realm].
180
180
  return decodedJWT.realm;
181
181
  },
182
- /**
183
- * Extract the OrgId [realm] from a provided user token.
184
- *
185
- * @private
186
- * @param {string} token - The user token to extract the OrgId from.
187
- * @throws {Error} - Will throw an error if the provided token is invalid.
188
- * @returns {string} - The OrgId.
182
+ /**
183
+ * Extract the OrgId [realm] from a provided user token.
184
+ *
185
+ * @private
186
+ * @param {string} token - The user token to extract the OrgId from.
187
+ * @throws {Error} - Will throw an error if the provided token is invalid.
188
+ * @returns {string} - The OrgId.
189
189
  */
190
190
  extractOrgIdFromUserToken: function extractOrgIdFromUserToken() {
191
191
  var token = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
@@ -200,12 +200,12 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
200
200
  // Return the token section that contains the OrgId.
201
201
  return fields[2];
202
202
  },
203
- /**
204
- * Generates a Logout URL
205
- * @instance
206
- * @memberof Credentials
207
- * @param {Object} [options={}]
208
- * @returns {[type]}
203
+ /**
204
+ * Generates a Logout URL
205
+ * @instance
206
+ * @memberof Credentials
207
+ * @param {Object} [options={}]
208
+ * @returns {[type]}
209
209
  */
210
210
  buildLogoutUrl: function buildLogoutUrl() {
211
211
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -214,13 +214,13 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
214
214
  goto: this.config.redirect_uri
215
215
  }, options)));
216
216
  },
217
- /**
218
- * Generates a number between 60% - 90% of expired value
219
- * @instance
220
- * @memberof Credentials
221
- * @param {number} expiration
222
- * @private
223
- * @returns {number}
217
+ /**
218
+ * Generates a number between 60% - 90% of expired value
219
+ * @instance
220
+ * @memberof Credentials
221
+ * @param {number} expiration
222
+ * @private
223
+ * @returns {number}
224
224
  */
225
225
  calcRefreshTimeout: function calcRefreshTimeout(expiration) {
226
226
  return Math.floor((Math.floor(Math.random() * 4) + 6) / 10 * expiration);
@@ -241,13 +241,13 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
241
241
  }
242
242
  (0, _apply.default)(_webexPlugin.default, this, args);
243
243
  },
244
- /**
245
- * Downscopes a token
246
- * @instance
247
- * @memberof Credentials
248
- * @param {string} scope
249
- * @private
250
- * @returns {Promise<Token>}
244
+ /**
245
+ * Downscopes a token
246
+ * @instance
247
+ * @memberof Credentials
248
+ * @param {string} scope
249
+ * @private
250
+ * @returns {Promise<Token>}
251
251
  */
252
252
  downscope: function downscope(scope) {
253
253
  var _this2 = this;
@@ -261,14 +261,14 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
261
261
  });
262
262
  });
263
263
  },
264
- /**
265
- * Requests a client credentials grant and returns the token. Given the
266
- * limited use for such tokens as this time, this method does not cache its
267
- * token.
268
- * @instance
269
- * @memberof Credentials
270
- * @param {Object} options
271
- * @returns {Promise<Token>}
264
+ /**
265
+ * Requests a client credentials grant and returns the token. Given the
266
+ * limited use for such tokens as this time, this method does not cache its
267
+ * token.
268
+ * @instance
269
+ * @memberof Credentials
270
+ * @param {Object} options
271
+ * @returns {Promise<Token>}
272
272
  */
273
273
  getClientToken: function getClientToken() {
274
274
  var _this3 = this;
@@ -302,14 +302,14 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
302
302
  return _promise.default.reject(new ErrorConstructor(res._res || res));
303
303
  });
304
304
  },
305
- /**
306
- * Resolves with a token with the specified scopes. If no scope is specified,
307
- * defaults to omit(webex.credentials.scope, 'spark:kms'). If no such token is
308
- * available, downscopes the supertoken to that scope.
309
- * @instance
310
- * @memberof Credentials
311
- * @param {string} scope
312
- * @returns {Promise<Token>}
305
+ /**
306
+ * Resolves with a token with the specified scopes. If no scope is specified,
307
+ * defaults to omit(webex.credentials.scope, 'spark:kms'). If no such token is
308
+ * available, downscopes the supertoken to that scope.
309
+ * @instance
310
+ * @memberof Credentials
311
+ * @param {string} scope
312
+ * @returns {Promise<Token>}
313
313
  */
314
314
  getUserToken: function getUserToken(scope) {
315
315
  var _this4 = this;
@@ -343,14 +343,14 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
343
343
  return _promise.default.resolve(token);
344
344
  });
345
345
  },
346
- /**
347
- * Initializer
348
- * @instance
349
- * @memberof Credentials
350
- * @param {Object} attrs
351
- * @param {Object} options
352
- * @private
353
- * @returns {Credentials}
346
+ /**
347
+ * Initializer
348
+ * @instance
349
+ * @memberof Credentials
350
+ * @param {Object} attrs
351
+ * @param {Object} options
352
+ * @private
353
+ * @returns {Credentials}
354
354
  */
355
355
  initialize: function initialize(attrs, options) {
356
356
  var _this5 = this;
@@ -392,14 +392,14 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
392
392
  _this5.ready = true;
393
393
  });
394
394
  },
395
- /**
396
- * Clears all tokens from store them from the stores.
397
- *
398
- * This is no longer quite the right name for this method, but all of the
399
- * alternatives I'm coming up with are already taken.
400
- * @instance
401
- * @memberof Credentials
402
- * @returns {Promise}
395
+ /**
396
+ * Clears all tokens from store them from the stores.
397
+ *
398
+ * This is no longer quite the right name for this method, but all of the
399
+ * alternatives I'm coming up with are already taken.
400
+ * @instance
401
+ * @memberof Credentials
402
+ * @returns {Promise}
403
403
  */
404
404
  invalidate: function invalidate() {
405
405
  this.logger.info('credentials: invalidating tokens');
@@ -427,14 +427,14 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
427
427
  // localStorage
428
428
  return _promise.default.resolve();
429
429
  },
430
- /**
431
- * Removes the supertoken and child tokens, then refreshes the supertoken;
432
- * subsequent calls to {@link Credentials#getUserToken()} will re-downscope
433
- * child tokens. Enqueus revocation of previous previousTokens. Yes, that's
434
- * the correct number of "previous"es.
435
- * @instance
436
- * @memberof Credentials
437
- * @returns {Promise}
430
+ /**
431
+ * Removes the supertoken and child tokens, then refreshes the supertoken;
432
+ * subsequent calls to {@link Credentials#getUserToken()} will re-downscope
433
+ * child tokens. Enqueus revocation of previous previousTokens. Yes, that's
434
+ * the correct number of "previous"es.
435
+ * @instance
436
+ * @memberof Credentials
437
+ * @returns {Promise}
438
438
  */
439
439
  refresh: function refresh() {
440
440
  var _this6 = this;
@@ -499,13 +499,13 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
499
499
  return _promise.default.reject(error);
500
500
  });
501
501
  },
502
- /**
503
- * Schedules a token refresh or refreshes the token if token has expired
504
- * @instance
505
- * @memberof Credentials
506
- * @param {number} expires
507
- * @private
508
- * @returns {undefined}
502
+ /**
503
+ * Schedules a token refresh or refreshes the token if token has expired
504
+ * @instance
505
+ * @memberof Credentials
506
+ * @param {number} expires
507
+ * @private
508
+ * @returns {undefined}
509
509
  */
510
510
  scheduleRefresh: function scheduleRefresh(expires) {
511
511
  var _this7 = this;
@@ -519,7 +519,7 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
519
519
  this.refresh();
520
520
  }
521
521
  },
522
- version: "2.59.0"
522
+ version: "2.59.4"
523
523
  }, ((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)));
524
524
  var _default = Credentials;
525
525
  exports.default = _default;