@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
@@ -4,11 +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
- registerPlugin,
10
- WebexPlugin
11
- } from '@webex/webex-core';
7
+ import WebexCore, {MemoryStoreAdapter, registerPlugin, WebexPlugin} from '@webex/webex-core';
12
8
  import {set} from 'lodash';
13
9
  import {version} from '@webex/webex-core/package';
14
10
 
@@ -88,16 +84,26 @@ describe('Webex', () => {
88
84
  'data.credentials.authorization',
89
85
  'data.credentials.authorization.access_token',
90
86
  'data.credentials.authorization.supertoken',
91
- 'data.credentials.authorization.supertoken.access_token'
92
- ].reduce((acc, path) => acc.concat(['ST', 'Bearer ST'].map((str) => {
93
- const obj = {
94
- msg: `accepts token string "${str}" at path "${path.split('.').slice(1).join('.')}"`
95
- };
96
-
97
- set(obj, path, str);
98
-
99
- return obj;
100
- })), [])
87
+ 'data.credentials.authorization.supertoken.access_token',
88
+ ]
89
+ .reduce(
90
+ (acc, path) =>
91
+ acc.concat(
92
+ ['ST', 'Bearer ST'].map((str) => {
93
+ const obj = {
94
+ msg: `accepts token string "${str}" at path "${path
95
+ .split('.')
96
+ .slice(1)
97
+ .join('.')}"`,
98
+ };
99
+
100
+ set(obj, path, str);
101
+
102
+ return obj;
103
+ })
104
+ ),
105
+ []
106
+ )
101
107
  .forEach(({msg, data}) => {
102
108
  it(msg, () => {
103
109
  const webex = new WebexCore(data);
@@ -110,21 +116,35 @@ describe('Webex', () => {
110
116
  });
111
117
  });
112
118
 
113
-
114
119
  describe('initializes with Bearer Token', () => {
115
120
  [
116
121
  ['initializes with a correctly formatted token', 'Bearer 1234'],
117
- ['initializes and removes extra space from a token that has an extra space after Bearer', 'Bearer 1234'],
118
- ['initializes and adds a space after Bearer from a token that has no spaces after Bearer', 'Bearer1234'],
119
- ['initializes and trims whitespace from a token that has spaces before Bearer and after token', ' Bearer 1234 '],
120
- ['initializes and removes extra space and trims whitespace from a token that has spaces before and after Bearer and after token', ' Bearer 1234 '],
121
- ['initializes and trims whitspace and adds a space after Bearer from a token that has spaces before Bearer and after token and no spaces after Bearer', ' Bearer1234 ']
122
+ [
123
+ 'initializes and removes extra space from a token that has an extra space after Bearer',
124
+ 'Bearer 1234',
125
+ ],
126
+ [
127
+ 'initializes and adds a space after Bearer from a token that has no spaces after Bearer',
128
+ 'Bearer1234',
129
+ ],
130
+ [
131
+ 'initializes and trims whitespace from a token that has spaces before Bearer and after token',
132
+ ' Bearer 1234 ',
133
+ ],
134
+ [
135
+ 'initializes and removes extra space and trims whitespace from a token that has spaces before and after Bearer and after token',
136
+ ' Bearer 1234 ',
137
+ ],
138
+ [
139
+ 'initializes and trims whitspace and adds a space after Bearer from a token that has spaces before Bearer and after token and no spaces after Bearer',
140
+ ' Bearer1234 ',
141
+ ],
122
142
  ].forEach(([msg, token]) => {
123
143
  it(msg, () => {
124
144
  const webex = new WebexCore({
125
145
  credentials: {
126
- access_token: token
127
- }
146
+ access_token: token,
147
+ },
128
148
  });
129
149
 
130
150
  assert.isTrue(webex.credentials.canAuthorize);
@@ -161,13 +181,13 @@ describe('Webex', () => {
161
181
  '@': {
162
182
  supertoken: {
163
183
  // eslint-disable-next-line camelcase
164
- access_token: 'AT'
165
- }
166
- }
167
- }
168
- })
169
- }
170
- }
184
+ access_token: 'AT',
185
+ },
186
+ },
187
+ },
188
+ }),
189
+ },
190
+ },
171
191
  });
172
192
 
173
193
  assert.isFalse(webex.loaded);
@@ -175,12 +195,11 @@ describe('Webex', () => {
175
195
 
176
196
  return new Promise((resolve) => {
177
197
  webex.once('loaded', resolve);
178
- })
179
- .then(() => {
180
- assert.isTrue(webex.loaded);
181
- assert.equal(webex.credentials.supertoken.access_token, 'AT');
182
- assert.isTrue(webex.canAuthorize);
183
- });
198
+ }).then(() => {
199
+ assert.isTrue(webex.loaded);
200
+ assert.equal(webex.credentials.supertoken.access_token, 'AT');
201
+ assert.isTrue(webex.canAuthorize);
202
+ });
184
203
  });
185
204
 
186
205
  it('emits the ready event when the storage layer has loaded and all plugins signal ready', () => {
@@ -190,20 +209,23 @@ describe('Webex', () => {
190
209
 
191
210
  return new Promise((resolve) => {
192
211
  webex.once('ready', resolve);
193
- })
194
- .then(() => assert.isTrue(webex.ready));
212
+ }).then(() => assert.isTrue(webex.ready));
195
213
  });
196
214
 
197
215
  it('allows plugins to control ready status', () => {
198
- registerPlugin('test', WebexPlugin.extend({
199
- namespace: 'test',
200
- session: {
201
- ready: {
202
- default: false,
203
- type: 'boolean'
204
- }
205
- }
206
- }), {replace: true});
216
+ registerPlugin(
217
+ 'test',
218
+ WebexPlugin.extend({
219
+ namespace: 'test',
220
+ session: {
221
+ ready: {
222
+ default: false,
223
+ type: 'boolean',
224
+ },
225
+ },
226
+ }),
227
+ {replace: true}
228
+ );
207
229
 
208
230
  const webex = new WebexCore();
209
231
 
@@ -220,15 +242,14 @@ describe('Webex', () => {
220
242
  assert.isFalse(webex.test.ready);
221
243
  assert.isFalse(webex.ready);
222
244
 
223
- return new Promise((resolve) => webex.once('loaded', resolve))
224
- .then(() => {
225
- assert.isFalse(webex.ready);
226
- assert.isFalse(webex.test.ready);
227
- webex.test.ready = true;
228
- assert.isTrue(webex.test.ready);
229
- assert.isTrue(webex.ready);
230
- assert.called(changeSpy);
231
- assert.called(readySpy);
232
- });
245
+ return new Promise((resolve) => webex.once('loaded', resolve)).then(() => {
246
+ assert.isFalse(webex.ready);
247
+ assert.isFalse(webex.test.ready);
248
+ webex.test.ready = true;
249
+ assert.isTrue(webex.test.ready);
250
+ assert.isTrue(webex.ready);
251
+ assert.called(changeSpy);
252
+ assert.called(readySpy);
253
+ });
233
254
  });
234
255
  });
@@ -9,16 +9,20 @@ import WebexCore, {WebexPlugin, registerInternalPlugin} from '@webex/webex-core'
9
9
  describe('Webex', () => {
10
10
  describe('#internal', () => {
11
11
  it('grants plugins access to their namepace config', () => {
12
- registerInternalPlugin('test', WebexPlugin.extend({
13
- namespace: 'test'
14
- }), {replace: true});
12
+ registerInternalPlugin(
13
+ 'test',
14
+ WebexPlugin.extend({
15
+ namespace: 'test',
16
+ }),
17
+ {replace: true}
18
+ );
15
19
 
16
20
  const webex = new WebexCore({
17
21
  config: {
18
22
  test: {
19
- reachable: true
20
- }
21
- }
23
+ reachable: true,
24
+ },
25
+ },
22
26
  });
23
27
 
24
28
  assert.isTrue(webex.internal.test.config.reachable);
@@ -27,26 +31,48 @@ describe('Webex', () => {
27
31
  });
28
32
 
29
33
  it('controls ready status', () => {
30
- registerInternalPlugin('test', WebexPlugin.extend({
31
- namespace: 'test',
32
- session: {
33
- ready: {
34
- default: false,
35
- type: 'boolean'
36
- }
37
- }
38
- }), {replace: true});
34
+ registerInternalPlugin(
35
+ 'test',
36
+ WebexPlugin.extend({
37
+ namespace: 'test',
38
+ session: {
39
+ ready: {
40
+ default: false,
41
+ type: 'boolean',
42
+ },
43
+ },
44
+ }),
45
+ {replace: true}
46
+ );
39
47
 
40
48
  const webex = new WebexCore({
41
49
  config: {
42
50
  test: {
43
- reachable: true
44
- }
45
- }
51
+ reachable: true,
52
+ },
53
+ },
46
54
  });
47
55
 
48
- webex.internal.on('all', (ev) => console.info('YYY', ev, webex.credentials.ready, webex.internal.test.ready, webex.internal.ready, webex.ready));
49
- webex.on('all', (ev) => console.info('XXX', ev, webex.credentials.ready, webex.internal.test.ready, webex.internal.ready, webex.ready));
56
+ webex.internal.on('all', (ev) =>
57
+ console.info(
58
+ 'YYY',
59
+ ev,
60
+ webex.credentials.ready,
61
+ webex.internal.test.ready,
62
+ webex.internal.ready,
63
+ webex.ready
64
+ )
65
+ );
66
+ webex.on('all', (ev) =>
67
+ console.info(
68
+ 'XXX',
69
+ ev,
70
+ webex.credentials.ready,
71
+ webex.internal.test.ready,
72
+ webex.internal.ready,
73
+ webex.ready
74
+ )
75
+ );
50
76
 
51
77
  const changeSpy = sinon.spy();
52
78
 
@@ -60,17 +86,16 @@ describe('Webex', () => {
60
86
  assert.isFalse(webex.internal.ready);
61
87
  assert.isFalse(webex.ready);
62
88
 
63
- return new Promise((resolve) => webex.once('loaded', resolve))
64
- .then(() => {
65
- assert.isFalse(webex.internal.test.ready);
66
- assert.isFalse(webex.internal.ready);
67
- assert.isFalse(webex.ready);
68
- webex.internal.test.ready = true;
69
- assert.isTrue(webex.internal.ready);
70
- assert.isTrue(webex.ready);
71
- assert.called(changeSpy);
72
- assert.called(readySpy);
73
- });
89
+ return new Promise((resolve) => webex.once('loaded', resolve)).then(() => {
90
+ assert.isFalse(webex.internal.test.ready);
91
+ assert.isFalse(webex.internal.ready);
92
+ assert.isFalse(webex.ready);
93
+ webex.internal.test.ready = true;
94
+ assert.isTrue(webex.internal.ready);
95
+ assert.isTrue(webex.ready);
96
+ assert.called(changeSpy);
97
+ assert.called(readySpy);
98
+ });
74
99
  });
75
100
  });
76
101
  });