@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
@@ -24,13 +24,19 @@ describe('webex-core', () => {
24
24
  });
25
25
 
26
26
  function makeToken(options = {}) {
27
- return new Token(Object.assign({
28
- access_token: 'AT',
29
- expires_in: 10000,
30
- token_type: 'Fake',
31
- refresh_token: 'RT',
32
- refresh_token_expires_in: 20000
33
- }, options), {parent: webex});
27
+ return new Token(
28
+ Object.assign(
29
+ {
30
+ access_token: 'AT',
31
+ expires_in: 10000,
32
+ token_type: 'Fake',
33
+ refresh_token: 'RT',
34
+ refresh_token_expires_in: 20000,
35
+ },
36
+ options
37
+ ),
38
+ {parent: webex}
39
+ );
34
40
  }
35
41
 
36
42
  describe('#canAuthorize', () => {
@@ -154,7 +160,10 @@ describe('webex-core', () => {
154
160
  it('requires an unexpired access token', () => {
155
161
  const token = makeToken({expires: Date.now() - 10000});
156
162
 
157
- return assert.isRejected(token.downscope('spark:kms'), /cannot downscope expired access token/);
163
+ return assert.isRejected(
164
+ token.downscope('spark:kms'),
165
+ /cannot downscope expired access token/
166
+ );
158
167
  });
159
168
 
160
169
  it('alphabetizes the requested scope', () => {
@@ -162,7 +171,8 @@ describe('webex-core', () => {
162
171
 
163
172
  webex.request.returns(Promise.resolve({body: {access_token: 'AT2'}}));
164
173
 
165
- return token.downscope('b a')
174
+ return token
175
+ .downscope('b a')
166
176
  .then(() => assert.equal(webex.request.args[0][0].form.scope, 'a b'));
167
177
  });
168
178
  });
@@ -189,7 +199,7 @@ describe('webex-core', () => {
189
199
 
190
200
  it('infers token_type from an access token string', () => {
191
201
  const t = new Token({
192
- access_token: 'Fake AT'
202
+ access_token: 'Fake AT',
193
203
  });
194
204
 
195
205
  assert.equal(t.access_token, 'AT');
@@ -203,17 +213,17 @@ describe('webex-core', () => {
203
213
  expires_in: 6000,
204
214
  refresh_token_expires_in: 12000,
205
215
  expires: null,
206
- refresh_token_expires: null
216
+ refresh_token_expires: null,
207
217
  });
208
218
 
209
219
  assert.approximately(t.expires, 6000000 + now, 5);
210
220
  assert.approximately(t.refresh_token_expires, 12000000 + now, 5);
211
221
  });
212
222
 
213
- it('alphabetizes the token\'s scopes', () => {
223
+ it("alphabetizes the token's scopes", () => {
214
224
  const t = new Token({
215
225
  access_token: 'AT',
216
- scope: 'b a'
226
+ scope: 'b a',
217
227
  });
218
228
 
219
229
  assert.equal(t.scope, 'a b');
@@ -222,7 +232,7 @@ describe('webex-core', () => {
222
232
  it('it sets a timer to set Token#_isExpired (and therefore Token#isExpired)', () => {
223
233
  const t = makeToken({
224
234
  // Reminder: expires_in is in seconds, ticks are in miliseconds
225
- expires_in: 1
235
+ expires_in: 1,
226
236
  });
227
237
 
228
238
  assert.isFalse(t.isExpired);
@@ -251,37 +261,39 @@ describe('webex-core', () => {
251
261
  browserOnly(it)('refreshes the access_token', () => {
252
262
  const token = makeToken();
253
263
 
254
- webex.config.credentials.refreshCallback = sinon.stub().returns(Promise.resolve({
255
- access_token: 'AT2',
256
- expires_in: 10000,
257
- token_type: 'Fake'
258
- }));
264
+ webex.config.credentials.refreshCallback = sinon.stub().returns(
265
+ Promise.resolve({
266
+ access_token: 'AT2',
267
+ expires_in: 10000,
268
+ token_type: 'Fake',
269
+ })
270
+ );
259
271
 
260
272
  // FIXME this next line should be necessary. we need a better way to
261
273
  // do config
262
274
  token.trigger('change:config');
263
275
 
264
- return token.refresh()
265
- .then((token2) => {
266
- assert.equal(token2.access_token, 'AT2');
267
- });
276
+ return token.refresh().then((token2) => {
277
+ assert.equal(token2.access_token, 'AT2');
278
+ });
268
279
  });
269
280
 
270
281
  nodeOnly(it)('refreshes the access_token', () => {
271
282
  const token = makeToken();
272
283
 
273
- webex.request.onCall(0).returns(Promise.resolve({
274
- body: {
275
- access_token: 'AT2',
276
- expires_in: 10000,
277
- token_type: 'Fake'
278
- }
279
- }));
284
+ webex.request.onCall(0).returns(
285
+ Promise.resolve({
286
+ body: {
287
+ access_token: 'AT2',
288
+ expires_in: 10000,
289
+ token_type: 'Fake',
290
+ },
291
+ })
292
+ );
280
293
 
281
- return token.refresh()
282
- .then((token2) => {
283
- assert.equal(token2.access_token, 'AT2');
284
- });
294
+ return token.refresh().then((token2) => {
295
+ assert.equal(token2.access_token, 'AT2');
296
+ });
285
297
  });
286
298
 
287
299
  browserOnly(it)('revokes the previous token when set', () => {
@@ -290,23 +302,28 @@ describe('webex-core', () => {
290
302
  sinon.spy(token, 'revoke');
291
303
  webex.config.credentials.refreshCallback = sinon.stub();
292
304
 
293
- webex.config.credentials.refreshCallback.onCall(0).returns(Promise.resolve({
294
- access_token: 'AT2',
295
- expires_in: 10000,
296
- token_type: 'Fake'
297
- }));
305
+ webex.config.credentials.refreshCallback.onCall(0).returns(
306
+ Promise.resolve({
307
+ access_token: 'AT2',
308
+ expires_in: 10000,
309
+ token_type: 'Fake',
310
+ })
311
+ );
298
312
 
299
- webex.config.credentials.refreshCallback.onCall(1).returns(Promise.resolve({
300
- access_token: 'AT3',
301
- expires_in: 10000,
302
- token_type: 'Fake'
303
- }));
313
+ webex.config.credentials.refreshCallback.onCall(1).returns(
314
+ Promise.resolve({
315
+ access_token: 'AT3',
316
+ expires_in: 10000,
317
+ token_type: 'Fake',
318
+ })
319
+ );
304
320
 
305
321
  // FIXME this next line should be necessary. we need a better way to
306
322
  // do config
307
323
  token.trigger('change:config');
308
324
 
309
- return token.refresh()
325
+ return token
326
+ .refresh()
310
327
  .then((token2) => {
311
328
  assert.isTrue(token.canRefresh);
312
329
  assert.notCalled(token.revoke);
@@ -324,23 +341,28 @@ describe('webex-core', () => {
324
341
 
325
342
  sinon.spy(token, 'revoke');
326
343
 
327
- webex.request.onCall(0).returns(Promise.resolve({
328
- body: {
329
- access_token: 'AT2',
330
- expires_in: 10000,
331
- token_type: 'Fake'
332
- }
333
- }));
334
-
335
- webex.request.onCall(1).returns(Promise.resolve({
336
- body: {
337
- access_token: 'AT3',
338
- expires_in: 10000,
339
- token_type: 'Fake'
340
- }
341
- }));
344
+ webex.request.onCall(0).returns(
345
+ Promise.resolve({
346
+ body: {
347
+ access_token: 'AT2',
348
+ expires_in: 10000,
349
+ token_type: 'Fake',
350
+ },
351
+ })
352
+ );
353
+
354
+ webex.request.onCall(1).returns(
355
+ Promise.resolve({
356
+ body: {
357
+ access_token: 'AT3',
358
+ expires_in: 10000,
359
+ token_type: 'Fake',
360
+ },
361
+ })
362
+ );
342
363
 
343
- return token.refresh()
364
+ return token
365
+ .refresh()
344
366
  .then((token2) => {
345
367
  assert.isTrue(token.canRefresh);
346
368
  assert.notCalled(token.revoke);
@@ -359,8 +381,7 @@ describe('webex-core', () => {
359
381
  it('is a noop', () => {
360
382
  const token = makeToken({expires: Date.now() - 10000});
361
383
 
362
- return token.revoke()
363
- .then(() => assert.notCalled(webex.request));
384
+ return token.revoke().then(() => assert.notCalled(webex.request));
364
385
  });
365
386
  });
366
387
 
@@ -370,8 +391,7 @@ describe('webex-core', () => {
370
391
 
371
392
  token.unset('access_token');
372
393
 
373
- return token.revoke()
374
- .then(() => assert.notCalled(webex.request));
394
+ return token.revoke().then(() => assert.notCalled(webex.request));
375
395
  });
376
396
  });
377
397
 
@@ -385,23 +405,21 @@ describe('webex-core', () => {
385
405
 
386
406
  token.unset('access_token');
387
407
 
388
- return token.revoke()
389
- .then(() => assert.notCalled(webex.request));
408
+ return token.revoke().then(() => assert.notCalled(webex.request));
390
409
  });
391
410
  });
392
411
 
393
412
  it('unsets the access_token and related values', () => {
394
413
  const token = makeToken();
395
414
 
396
- return token.revoke()
397
- .then(() => {
398
- assert.isUndefined(token.access_token);
399
- assert.isUndefined(token.expires);
400
- assert.isUndefined(token.expires_in);
401
- assert.isDefined(token.refresh_token);
402
- assert.isDefined(token.refresh_token_expires);
403
- assert.isDefined(token.refresh_token_expires_in);
404
- });
415
+ return token.revoke().then(() => {
416
+ assert.isUndefined(token.access_token);
417
+ assert.isUndefined(token.expires);
418
+ assert.isUndefined(token.expires_in);
419
+ assert.isDefined(token.refresh_token);
420
+ assert.isDefined(token.refresh_token_expires);
421
+ assert.isDefined(token.refresh_token_expires_in);
422
+ });
405
423
  });
406
424
  });
407
425