@webex/webex-core 3.0.0-beta.13 → 3.0.0-beta.15

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 (142) hide show
  1. package/dist/config.js.map +1 -1
  2. package/dist/credentials-config.js +44 -44
  3. package/dist/credentials-config.js.map +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/interceptors/auth.js.map +1 -1
  6. package/dist/interceptors/default-options.js.map +1 -1
  7. package/dist/interceptors/embargo.js.map +1 -1
  8. package/dist/interceptors/payload-transformer.js.map +1 -1
  9. package/dist/interceptors/rate-limit.js +4 -4
  10. package/dist/interceptors/rate-limit.js.map +1 -1
  11. package/dist/interceptors/redirect.js.map +1 -1
  12. package/dist/interceptors/request-event.js.map +1 -1
  13. package/dist/interceptors/request-logger.js.map +1 -1
  14. package/dist/interceptors/response-logger.js.map +1 -1
  15. package/dist/interceptors/user-agent.js.map +1 -1
  16. package/dist/interceptors/webex-user-agent.js.map +1 -1
  17. package/dist/lib/batcher.js +1 -1
  18. package/dist/lib/batcher.js.map +1 -1
  19. package/dist/lib/credentials/credentials.js +21 -6
  20. package/dist/lib/credentials/credentials.js.map +1 -1
  21. package/dist/lib/credentials/grant-errors.js.map +1 -1
  22. package/dist/lib/credentials/index.js.map +1 -1
  23. package/dist/lib/credentials/scope.js.map +1 -1
  24. package/dist/lib/credentials/token-collection.js.map +1 -1
  25. package/dist/lib/credentials/token.js +19 -5
  26. package/dist/lib/credentials/token.js.map +1 -1
  27. package/dist/lib/page.js +2 -0
  28. package/dist/lib/page.js.map +1 -1
  29. package/dist/lib/services/constants.js.map +1 -1
  30. package/dist/lib/services/index.js.map +1 -1
  31. package/dist/lib/services/interceptors/server-error.js +2 -2
  32. package/dist/lib/services/interceptors/server-error.js.map +1 -1
  33. package/dist/lib/services/interceptors/service.js +1 -1
  34. package/dist/lib/services/interceptors/service.js.map +1 -1
  35. package/dist/lib/services/metrics.js.map +1 -1
  36. package/dist/lib/services/service-catalog.js.map +1 -1
  37. package/dist/lib/services/service-fed-ramp.js.map +1 -1
  38. package/dist/lib/services/service-host.js +6 -6
  39. package/dist/lib/services/service-host.js.map +1 -1
  40. package/dist/lib/services/service-registry.js.map +1 -1
  41. package/dist/lib/services/service-state.js.map +1 -1
  42. package/dist/lib/services/service-url.js.map +1 -1
  43. package/dist/lib/services/services.js +9 -7
  44. package/dist/lib/services/services.js.map +1 -1
  45. package/dist/lib/stateless-webex-plugin.js.map +1 -1
  46. package/dist/lib/storage/decorators.js.map +1 -1
  47. package/dist/lib/storage/index.js +2 -2
  48. package/dist/lib/storage/index.js.map +1 -1
  49. package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
  50. package/dist/lib/storage/make-webex-store.js.map +1 -1
  51. package/dist/lib/storage/memory-store-adapter.js.map +1 -1
  52. package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
  53. package/dist/lib/webex-http-error.js.map +1 -1
  54. package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
  55. package/dist/lib/webex-plugin.js.map +1 -1
  56. package/dist/plugins/logger.js +1 -1
  57. package/dist/plugins/logger.js.map +1 -1
  58. package/dist/webex-core.js +2 -2
  59. package/dist/webex-core.js.map +1 -1
  60. package/dist/webex-internal-core.js.map +1 -1
  61. package/package.json +14 -14
  62. package/src/config.js +9 -11
  63. package/src/credentials-config.js +110 -72
  64. package/src/index.js +4 -14
  65. package/src/interceptors/auth.js +36 -37
  66. package/src/interceptors/default-options.js +0 -1
  67. package/src/interceptors/embargo.js +1 -1
  68. package/src/interceptors/payload-transformer.js +1 -2
  69. package/src/interceptors/rate-limit.js +8 -5
  70. package/src/interceptors/redirect.js +14 -8
  71. package/src/interceptors/request-event.js +4 -8
  72. package/src/interceptors/request-logger.js +8 -5
  73. package/src/interceptors/response-logger.js +11 -8
  74. package/src/interceptors/user-agent.js +1 -2
  75. package/src/interceptors/webex-user-agent.js +3 -9
  76. package/src/lib/batcher.js +70 -69
  77. package/src/lib/credentials/credentials.js +112 -122
  78. package/src/lib/credentials/grant-errors.js +6 -7
  79. package/src/lib/credentials/index.js +1 -4
  80. package/src/lib/credentials/scope.js +1 -4
  81. package/src/lib/credentials/token-collection.js +1 -1
  82. package/src/lib/credentials/token.js +86 -80
  83. package/src/lib/page.js +10 -11
  84. package/src/lib/services/constants.js +3 -13
  85. package/src/lib/services/index.js +2 -2
  86. package/src/lib/services/interceptors/server-error.js +12 -7
  87. package/src/lib/services/interceptors/service.js +6 -5
  88. package/src/lib/services/metrics.js +1 -1
  89. package/src/lib/services/service-catalog.js +110 -100
  90. package/src/lib/services/service-fed-ramp.js +1 -2
  91. package/src/lib/services/service-host.js +10 -17
  92. package/src/lib/services/service-registry.js +69 -96
  93. package/src/lib/services/service-state.js +4 -6
  94. package/src/lib/services/service-url.js +24 -23
  95. package/src/lib/services/services.js +260 -251
  96. package/src/lib/stateless-webex-plugin.js +4 -2
  97. package/src/lib/storage/decorators.js +68 -66
  98. package/src/lib/storage/index.js +4 -6
  99. package/src/lib/storage/make-webex-plugin-store.js +34 -21
  100. package/src/lib/storage/make-webex-store.js +6 -7
  101. package/src/lib/storage/memory-store-adapter.js +3 -3
  102. package/src/lib/webex-core-plugin-mixin.js +10 -7
  103. package/src/lib/webex-http-error.js +7 -8
  104. package/src/lib/webex-internal-core-plugin-mixin.js +9 -6
  105. package/src/lib/webex-plugin.js +41 -34
  106. package/src/plugins/logger.js +8 -3
  107. package/src/webex-core.js +185 -116
  108. package/src/webex-internal-core.js +15 -9
  109. package/test/integration/spec/credentials/credentials.js +26 -30
  110. package/test/integration/spec/credentials/token.js +36 -33
  111. package/test/integration/spec/services/service-catalog.js +177 -156
  112. package/test/integration/spec/services/services.js +313 -304
  113. package/test/integration/spec/webex-core.js +98 -86
  114. package/test/unit/spec/_setup.js +26 -18
  115. package/test/unit/spec/credentials/credentials.js +189 -154
  116. package/test/unit/spec/credentials/token.js +94 -76
  117. package/test/unit/spec/interceptors/auth.js +291 -243
  118. package/test/unit/spec/interceptors/default-options.js +36 -24
  119. package/test/unit/spec/interceptors/embargo.js +32 -27
  120. package/test/unit/spec/interceptors/network-timing.js +2 -2
  121. package/test/unit/spec/interceptors/payload-transformer.js +61 -52
  122. package/test/unit/spec/interceptors/rate-limit.js +104 -75
  123. package/test/unit/spec/interceptors/redirect.js +22 -20
  124. package/test/unit/spec/interceptors/request-timing.js +18 -22
  125. package/test/unit/spec/interceptors/user-agent.js +28 -16
  126. package/test/unit/spec/interceptors/webex-tracking-id.js +14 -8
  127. package/test/unit/spec/interceptors/webex-user-agent.js +83 -37
  128. package/test/unit/spec/lib/batcher.js +36 -32
  129. package/test/unit/spec/lib/page.js +36 -32
  130. package/test/unit/spec/lib/webex-plugin.js +1 -1
  131. package/test/unit/spec/services/interceptors/server-error.js +67 -90
  132. package/test/unit/spec/services/interceptors/service.js +17 -28
  133. package/test/unit/spec/services/service-catalog.js +19 -27
  134. package/test/unit/spec/services/service-host.js +29 -26
  135. package/test/unit/spec/services/service-registry.js +128 -170
  136. package/test/unit/spec/services/service-state.js +13 -22
  137. package/test/unit/spec/services/service-url.js +24 -43
  138. package/test/unit/spec/services/services.js +85 -41
  139. package/test/unit/spec/storage/persist.js +6 -9
  140. package/test/unit/spec/storage/wait-for-value.js +22 -21
  141. package/test/unit/spec/webex-core.js +78 -57
  142. package/test/unit/spec/webex-internal-core.js +56 -31
@@ -4,10 +4,7 @@
4
4
 
5
5
  import {assert} from '@webex/test-helper-chai';
6
6
  import sinon from 'sinon';
7
- import WebexCore, {
8
- MemoryStoreAdapter,
9
- WebexHttpError
10
- } from '@webex/webex-core';
7
+ import WebexCore, {MemoryStoreAdapter, WebexHttpError} from '@webex/webex-core';
11
8
  import makeLocalUrl from '@webex/test-helper-make-local-url';
12
9
 
13
10
  describe('webex-core', function () {
@@ -20,47 +17,58 @@ describe('webex-core', function () {
20
17
  webex = new WebexCore();
21
18
  });
22
19
 
23
- it('adds a tracking id to each request', () => webex.request({
24
- uri: makeLocalUrl('/'),
25
- headers: {
26
- authorization: false
27
- }
28
- })
29
- .then((res) => {
30
- assert.property(res.options.headers, 'trackingid');
31
- // pattern is "webex-js-sdk", "uuid", "sequence number" joined with
32
- // underscores
33
- assert.match(res.options.headers.trackingid, /webex-js-sdk_[a-f\d]{8}(?:-[a-f\d]{4}){3}-[a-f\d]{12}_\d+/);
34
- }));
35
-
36
- it('adds a spark-user-agent id to each request', () => webex.request({
37
- uri: makeLocalUrl('/'),
38
- headers: {
39
- authorization: false
40
- }
41
- })
42
- .then((res) => {
43
- assert.property(res.options.headers, 'spark-user-agent');
44
- }));
45
-
46
- it('fails with a WebexHttpError', () => assert.isRejected(webex.request({
47
- uri: makeLocalUrl('/not-a-route'),
48
- headers: {
49
- authorization: false
50
- },
51
- body: {
52
- proof: true
53
- }
54
- }))
55
- .then((err) => {
56
- assert.instanceOf(err, WebexHttpError);
57
- assert.instanceOf(err, WebexHttpError.BadRequest);
58
-
59
- assert.property(err, 'options');
60
- assert.property(err.options, 'body');
61
- assert.property(err.options.body, 'proof');
62
- assert.isTrue(err.options.body.proof);
63
- }));
20
+ it('adds a tracking id to each request', () =>
21
+ webex
22
+ .request({
23
+ uri: makeLocalUrl('/'),
24
+ headers: {
25
+ authorization: false,
26
+ },
27
+ })
28
+ .then((res) => {
29
+ assert.property(res.options.headers, 'trackingid');
30
+ // pattern is "webex-js-sdk", "uuid", "sequence number" joined with
31
+ // underscores
32
+ assert.match(
33
+ res.options.headers.trackingid,
34
+ /webex-js-sdk_[a-f\d]{8}(?:-[a-f\d]{4}){3}-[a-f\d]{12}_\d+/
35
+ );
36
+ }));
37
+
38
+ it('adds a spark-user-agent id to each request', () =>
39
+ webex
40
+ .request({
41
+ uri: makeLocalUrl('/'),
42
+ headers: {
43
+ authorization: false,
44
+ },
45
+ })
46
+ .then((res) => {
47
+ assert.property(res.options.headers, 'spark-user-agent');
48
+ }));
49
+
50
+ it('fails with a WebexHttpError', () =>
51
+ assert
52
+ .isRejected(
53
+ webex.request({
54
+ uri: makeLocalUrl('/not-a-route'),
55
+ headers: {
56
+ authorization: false,
57
+ },
58
+ body: {
59
+ proof: true,
60
+ },
61
+ })
62
+ )
63
+ .then((err) => {
64
+ assert.instanceOf(err, WebexHttpError);
65
+ assert.instanceOf(err, WebexHttpError.BadRequest);
66
+
67
+ assert.property(err, 'options');
68
+ assert.property(err.options, 'body');
69
+ assert.property(err.options.body, 'proof');
70
+ assert.isTrue(err.options.body.proof);
71
+ }));
64
72
  });
65
73
 
66
74
  describe('#logout()', () => {
@@ -79,79 +87,83 @@ describe('webex-core', function () {
79
87
  '@': {
80
88
  supertoken: {
81
89
  // eslint-disable-next-line camelcase
82
- access_token: 'AT'
83
- }
84
- }
85
- }
86
- })
90
+ access_token: 'AT',
91
+ },
92
+ },
93
+ },
94
+ }),
87
95
  },
88
96
  onBeforeLogout: [
89
97
  {
90
98
  plugin: 'credentials',
91
- fn: onBeforeLogoutSpy
99
+ fn: onBeforeLogoutSpy,
92
100
  },
93
101
  {
94
102
  plugin: 'mercury',
95
- fn: onBeforeLogoutFailedSpy
96
- }
97
- ]
98
- }
103
+ fn: onBeforeLogoutFailedSpy,
104
+ },
105
+ ],
106
+ },
99
107
  });
100
108
 
101
109
  sinon.spy(webex.boundedStorage, 'clear');
102
110
  sinon.spy(webex.unboundedStorage, 'clear');
103
111
 
104
- return new Promise((resolve) => webex.once('ready', resolve))
105
- .then(() => {
106
- const {supertoken} = webex.credentials;
112
+ return new Promise((resolve) => webex.once('ready', resolve)).then(() => {
113
+ const {supertoken} = webex.credentials;
107
114
 
108
- sinon.stub(webex.credentials.supertoken, 'revoke').callsFake(() => {
109
- supertoken.unset('access_token');
115
+ sinon.stub(webex.credentials.supertoken, 'revoke').callsFake(() => {
116
+ supertoken.unset('access_token');
110
117
 
111
- return Promise.resolve();
112
- });
118
+ return Promise.resolve();
113
119
  });
120
+ });
114
121
  });
115
122
 
116
- it('invokes onBeforeLogout handlers', () => webex.logout()
117
- .then(() => {
123
+ it('invokes onBeforeLogout handlers', () =>
124
+ webex.logout().then(() => {
118
125
  assert.called(onBeforeLogoutSpy);
119
126
  assert.called(onBeforeLogoutFailedSpy);
120
127
  }));
121
128
 
122
- it('invalidates all tokens', () => webex.logout()
123
- .then(() => {
129
+ it('invalidates all tokens', () =>
130
+ webex.logout().then(() => {
124
131
  assert.calledOnce(webex.boundedStorage.clear);
125
132
  assert.calledOnce(webex.unboundedStorage.clear);
126
133
  }));
127
134
 
128
- it('clears all stores', () => webex.boundedStorage.get('Credentials', '@')
129
- .then((data) => {
130
- assert.isDefined(data.supertoken);
131
- assert.equal(data.supertoken.access_token, 'AT');
135
+ it('clears all stores', () =>
136
+ webex.boundedStorage
137
+ .get('Credentials', '@')
138
+ .then((data) => {
139
+ assert.isDefined(data.supertoken);
140
+ assert.equal(data.supertoken.access_token, 'AT');
132
141
 
133
- return webex.logout();
134
- })
135
- .then(() => assert.isRejected(webex.boundedStorage.get('Credentials', '@'))));
142
+ return webex.logout();
143
+ })
144
+ .then(() => assert.isRejected(webex.boundedStorage.get('Credentials', '@'))));
136
145
 
137
- it('executes logout actions in the correct order', () => webex.boundedStorage.get('Credentials', '@')
138
- .then((data) => {
139
- assert.isDefined(data.supertoken);
140
- assert.equal(data.supertoken.access_token, 'AT');
146
+ it('executes logout actions in the correct order', () =>
147
+ webex.boundedStorage
148
+ .get('Credentials', '@')
149
+ .then((data) => {
150
+ assert.isDefined(data.supertoken);
151
+ assert.equal(data.supertoken.access_token, 'AT');
141
152
 
142
- return webex.logout();
143
- })
144
- .then(() => assert.called(onBeforeLogoutSpy))
145
- .then(() => {
146
- assert.calledOnce(webex.boundedStorage.clear);
147
- assert.calledOnce(webex.unboundedStorage.clear);
148
- })
149
- .then(() => assert.isRejected(webex.boundedStorage.get('Credentials', '@'))));
153
+ return webex.logout();
154
+ })
155
+ .then(() => assert.called(onBeforeLogoutSpy))
156
+ .then(() => {
157
+ assert.calledOnce(webex.boundedStorage.clear);
158
+ assert.calledOnce(webex.unboundedStorage.clear);
159
+ })
160
+ .then(() => assert.isRejected(webex.boundedStorage.get('Credentials', '@'))));
150
161
 
151
162
  it('logs out gracefully even if token does not exist', () => {
152
163
  webex.credentials.supertoken = undefined;
153
164
 
154
- return webex.logout()
165
+ return webex
166
+ .logout()
155
167
  .then(() => {
156
168
  assert.called(onBeforeLogoutSpy);
157
169
  assert.called(onBeforeLogoutFailedSpy);
@@ -8,23 +8,31 @@ import {registerInternalPlugin, registerPlugin, WebexPlugin} from '@webex/webex-
8
8
  // plugins are always register to do nothing
9
9
 
10
10
  beforeEach(() => {
11
- registerPlugin('test', WebexPlugin.extend({
12
- namespace: 'test',
13
- session: {
14
- ready: {
15
- default: true,
16
- type: 'boolean'
17
- }
18
- }
19
- }), {replace: true});
11
+ registerPlugin(
12
+ 'test',
13
+ WebexPlugin.extend({
14
+ namespace: 'test',
15
+ session: {
16
+ ready: {
17
+ default: true,
18
+ type: 'boolean',
19
+ },
20
+ },
21
+ }),
22
+ {replace: true}
23
+ );
20
24
 
21
- registerInternalPlugin('test', WebexPlugin.extend({
22
- namespace: 'test',
23
- session: {
24
- ready: {
25
- default: true,
26
- type: 'boolean'
27
- }
28
- }
29
- }), {replace: true});
25
+ registerInternalPlugin(
26
+ 'test',
27
+ WebexPlugin.extend({
28
+ namespace: 'test',
29
+ session: {
30
+ ready: {
31
+ default: true,
32
+ type: 'boolean',
33
+ },
34
+ },
35
+ }),
36
+ {replace: true}
37
+ );
30
38
  });