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

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 +55 -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 +84 -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 +131 -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 +198 -117
  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 +217 -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 +90 -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
 
@@ -58,6 +54,18 @@ describe('Webex', () => {
58
54
  });
59
55
  });
60
56
 
57
+ describe('#request', () => {
58
+ it('exists', () => {
59
+ assert.property(webex, 'request');
60
+ });
61
+ });
62
+
63
+ describe('#prepareFetchOptions', () => {
64
+ it('exists', () => {
65
+ assert.property(webex, 'prepareFetchOptions');
66
+ });
67
+ });
68
+
61
69
  describe('#initialize()', () => {
62
70
  it('initializes without arguments', () => {
63
71
  let webex;
@@ -88,16 +96,26 @@ describe('Webex', () => {
88
96
  'data.credentials.authorization',
89
97
  'data.credentials.authorization.access_token',
90
98
  '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
- })), [])
99
+ 'data.credentials.authorization.supertoken.access_token',
100
+ ]
101
+ .reduce(
102
+ (acc, path) =>
103
+ acc.concat(
104
+ ['ST', 'Bearer ST'].map((str) => {
105
+ const obj = {
106
+ msg: `accepts token string "${str}" at path "${path
107
+ .split('.')
108
+ .slice(1)
109
+ .join('.')}"`,
110
+ };
111
+
112
+ set(obj, path, str);
113
+
114
+ return obj;
115
+ })
116
+ ),
117
+ []
118
+ )
101
119
  .forEach(({msg, data}) => {
102
120
  it(msg, () => {
103
121
  const webex = new WebexCore(data);
@@ -110,21 +128,35 @@ describe('Webex', () => {
110
128
  });
111
129
  });
112
130
 
113
-
114
131
  describe('initializes with Bearer Token', () => {
115
132
  [
116
133
  ['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 ']
134
+ [
135
+ 'initializes and removes extra space from a token that has an extra space after Bearer',
136
+ 'Bearer 1234',
137
+ ],
138
+ [
139
+ 'initializes and adds a space after Bearer from a token that has no spaces after Bearer',
140
+ 'Bearer1234',
141
+ ],
142
+ [
143
+ 'initializes and trims whitespace from a token that has spaces before Bearer and after token',
144
+ ' Bearer 1234 ',
145
+ ],
146
+ [
147
+ 'initializes and removes extra space and trims whitespace from a token that has spaces before and after Bearer and after token',
148
+ ' Bearer 1234 ',
149
+ ],
150
+ [
151
+ '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',
152
+ ' Bearer1234 ',
153
+ ],
122
154
  ].forEach(([msg, token]) => {
123
155
  it(msg, () => {
124
156
  const webex = new WebexCore({
125
157
  credentials: {
126
- access_token: token
127
- }
158
+ access_token: token,
159
+ },
128
160
  });
129
161
 
130
162
  assert.isTrue(webex.credentials.canAuthorize);
@@ -161,13 +193,13 @@ describe('Webex', () => {
161
193
  '@': {
162
194
  supertoken: {
163
195
  // eslint-disable-next-line camelcase
164
- access_token: 'AT'
165
- }
166
- }
167
- }
168
- })
169
- }
170
- }
196
+ access_token: 'AT',
197
+ },
198
+ },
199
+ },
200
+ }),
201
+ },
202
+ },
171
203
  });
172
204
 
173
205
  assert.isFalse(webex.loaded);
@@ -175,12 +207,11 @@ describe('Webex', () => {
175
207
 
176
208
  return new Promise((resolve) => {
177
209
  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
- });
210
+ }).then(() => {
211
+ assert.isTrue(webex.loaded);
212
+ assert.equal(webex.credentials.supertoken.access_token, 'AT');
213
+ assert.isTrue(webex.canAuthorize);
214
+ });
184
215
  });
185
216
 
186
217
  it('emits the ready event when the storage layer has loaded and all plugins signal ready', () => {
@@ -190,20 +221,23 @@ describe('Webex', () => {
190
221
 
191
222
  return new Promise((resolve) => {
192
223
  webex.once('ready', resolve);
193
- })
194
- .then(() => assert.isTrue(webex.ready));
224
+ }).then(() => assert.isTrue(webex.ready));
195
225
  });
196
226
 
197
227
  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});
228
+ registerPlugin(
229
+ 'test',
230
+ WebexPlugin.extend({
231
+ namespace: 'test',
232
+ session: {
233
+ ready: {
234
+ default: false,
235
+ type: 'boolean',
236
+ },
237
+ },
238
+ }),
239
+ {replace: true}
240
+ );
207
241
 
208
242
  const webex = new WebexCore();
209
243
 
@@ -220,15 +254,14 @@ describe('Webex', () => {
220
254
  assert.isFalse(webex.test.ready);
221
255
  assert.isFalse(webex.ready);
222
256
 
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
- });
257
+ return new Promise((resolve) => webex.once('loaded', resolve)).then(() => {
258
+ assert.isFalse(webex.ready);
259
+ assert.isFalse(webex.test.ready);
260
+ webex.test.ready = true;
261
+ assert.isTrue(webex.test.ready);
262
+ assert.isTrue(webex.ready);
263
+ assert.called(changeSpy);
264
+ assert.called(readySpy);
265
+ });
233
266
  });
234
267
  });
@@ -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
  });