@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
@@ -9,7 +9,7 @@ const precedence = {
9
9
  warn: ['error', 'log'],
10
10
  info: ['log'],
11
11
  debug: ['info', 'log'],
12
- trace: ['debug', 'info', 'log']
12
+ trace: ['debug', 'info', 'log'],
13
13
  };
14
14
 
15
15
  /**
@@ -33,7 +33,12 @@ function wrapConsoleMethod(level) {
33
33
  return function wrappedConsoleMethod(...args) {
34
34
  /* eslint no-invalid-this: [0] */
35
35
  /* istanbul ignore if */
36
- if (process.env.NODE_ENV === 'test' && this.webex && this.webex.internal.device && this.webex.internal.device.url) {
36
+ if (
37
+ process.env.NODE_ENV === 'test' &&
38
+ this.webex &&
39
+ this.webex.internal.device &&
40
+ this.webex.internal.device.url
41
+ ) {
37
42
  args.unshift(this.webex.internal.device.url.slice(-3));
38
43
  }
39
44
  console[level](...args);
@@ -47,7 +52,7 @@ const Logger = WebexPlugin.extend({
47
52
  log: wrapConsoleMethod('log'),
48
53
  info: wrapConsoleMethod('info'),
49
54
  debug: wrapConsoleMethod('debug'),
50
- trace: wrapConsoleMethod('trace')
55
+ trace: wrapConsoleMethod('trace'),
51
56
  });
52
57
 
53
58
  registerPlugin('logger', Logger);
package/src/webex-core.js CHANGED
@@ -40,8 +40,14 @@ const interceptors = {
40
40
  RequestEventInterceptor: RequestEventInterceptor.create,
41
41
  RateLimitInterceptor: RateLimitInterceptor.create,
42
42
  /* eslint-disable no-extra-parens */
43
- RequestLoggerInterceptor: (process.env.ENABLE_NETWORK_LOGGING || process.env.ENABLE_VERBOSE_NETWORK_LOGGING) ? RequestLoggerInterceptor.create : undefined,
44
- ResponseLoggerInterceptor: (process.env.ENABLE_NETWORK_LOGGING || process.env.ENABLE_VERBOSE_NETWORK_LOGGING) ? ResponseLoggerInterceptor.create : undefined,
43
+ RequestLoggerInterceptor:
44
+ process.env.ENABLE_NETWORK_LOGGING || process.env.ENABLE_VERBOSE_NETWORK_LOGGING
45
+ ? RequestLoggerInterceptor.create
46
+ : undefined,
47
+ ResponseLoggerInterceptor:
48
+ process.env.ENABLE_NETWORK_LOGGING || process.env.ENABLE_VERBOSE_NETWORK_LOGGING
49
+ ? ResponseLoggerInterceptor.create
50
+ : undefined,
45
51
  /* eslint-enable no-extra-parens */
46
52
  RequestTimingInterceptor: RequestTimingInterceptor.create,
47
53
  ServiceInterceptor: undefined,
@@ -54,12 +60,12 @@ const interceptors = {
54
60
  RedirectInterceptor: RedirectInterceptor.create,
55
61
  HttpStatusInterceptor() {
56
62
  return HttpStatusInterceptor.create({
57
- error: WebexHttpError
63
+ error: WebexHttpError,
58
64
  });
59
65
  },
60
66
  NetworkTimingInterceptor: NetworkTimingInterceptor.create,
61
67
  EmbargoInterceptor: EmbargoInterceptor.create,
62
- DefaultOptionsInterceptor: DefaultOptionsInterceptor.create
68
+ DefaultOptionsInterceptor: DefaultOptionsInterceptor.create,
63
69
  };
64
70
 
65
71
  const preInterceptors = [
@@ -67,7 +73,7 @@ const preInterceptors = [
67
73
  'RequestTimingInterceptor',
68
74
  'RequestEventInterceptor',
69
75
  'WebexTrackingIdInterceptor',
70
- 'RateLimitInterceptor'
76
+ 'RateLimitInterceptor',
71
77
  ];
72
78
 
73
79
  const postInterceptors = [
@@ -75,7 +81,7 @@ const postInterceptors = [
75
81
  'NetworkTimingInterceptor',
76
82
  'EmbargoInterceptor',
77
83
  'RequestLoggerInterceptor',
78
- 'RateLimitInterceptor'
84
+ 'RateLimitInterceptor',
79
85
  ];
80
86
 
81
87
  const MAX_FILE_SIZE_IN_MB = 2048;
@@ -87,7 +93,7 @@ const WebexCore = AmpState.extend({
87
93
  version: PACKAGE_VERSION,
88
94
 
89
95
  children: {
90
- internal: WebexInternalCore
96
+ internal: WebexInternalCore,
91
97
  },
92
98
 
93
99
  constructor(attrs = {}, options) {
@@ -96,12 +102,11 @@ const WebexCore = AmpState.extend({
96
102
  credentials: {
97
103
  supertoken: {
98
104
  // eslint-disable-next-line camelcase
99
- access_token: attrs
100
- }
101
- }
105
+ access_token: attrs,
106
+ },
107
+ },
102
108
  };
103
- }
104
- else {
109
+ } else {
105
110
  // Reminder: order is important here
106
111
  [
107
112
  'credentials.authorization',
@@ -109,7 +114,7 @@ const WebexCore = AmpState.extend({
109
114
  'credentials.supertoken.supertoken',
110
115
  'supertoken',
111
116
  'access_token',
112
- 'credentials.authorization.supertoken'
117
+ 'credentials.authorization.supertoken',
113
118
  ].forEach((path) => {
114
119
  const val = get(attrs, path);
115
120
 
@@ -119,22 +124,22 @@ const WebexCore = AmpState.extend({
119
124
  }
120
125
  });
121
126
 
122
- [
123
- 'credentials',
124
- 'credentials.authorization'
125
- ]
126
- .forEach((path) => {
127
- const val = get(attrs, path);
128
-
129
- if (typeof val === 'string') {
130
- unset(attrs, path);
131
- set(attrs, 'credentials.supertoken', val);
132
- }
133
- });
127
+ ['credentials', 'credentials.authorization'].forEach((path) => {
128
+ const val = get(attrs, path);
129
+
130
+ if (typeof val === 'string') {
131
+ unset(attrs, path);
132
+ set(attrs, 'credentials.supertoken', val);
133
+ }
134
+ });
134
135
 
135
136
  if (typeof get(attrs, 'credentials.access_token') === 'string') {
136
137
  // Send access_token to get validated and corrected and then set it
137
- set(attrs, 'credentials.access_token', this.bearerValidator(get(attrs, 'credentials.access_token').trim()));
138
+ set(
139
+ attrs,
140
+ 'credentials.access_token',
141
+ this.bearerValidator(get(attrs, 'credentials.access_token').trim())
142
+ );
138
143
 
139
144
  set(attrs, 'credentials.supertoken', attrs.credentials);
140
145
  }
@@ -148,25 +153,31 @@ const WebexCore = AmpState.extend({
148
153
  deps: [],
149
154
  fn() {
150
155
  return makeWebexStore('bounded', this);
151
- }
156
+ },
152
157
  },
153
158
  unboundedStorage: {
154
159
  deps: [],
155
160
  fn() {
156
161
  return makeWebexStore('unbounded', this);
157
- }
162
+ },
158
163
  },
159
164
  ready: {
160
165
  deps: ['loaded', 'internal.ready'],
161
166
  fn() {
162
- return this.loaded && Object.keys(this._children).reduce((ready, name) => ready && this[name] && this[name].ready !== false, true);
163
- }
164
- }
167
+ return (
168
+ this.loaded &&
169
+ Object.keys(this._children).reduce(
170
+ (ready, name) => ready && this[name] && this[name].ready !== false,
171
+ true
172
+ )
173
+ );
174
+ },
175
+ },
165
176
  },
166
177
 
167
178
  session: {
168
179
  config: {
169
- type: 'object'
180
+ type: 'object',
170
181
  },
171
182
  /**
172
183
  * When true, indicates that the initial load from the storage layer is
@@ -177,18 +188,18 @@ const WebexCore = AmpState.extend({
177
188
  */
178
189
  loaded: {
179
190
  default: false,
180
- type: 'boolean'
191
+ type: 'boolean',
181
192
  },
182
193
  request: {
183
194
  setOnce: true,
184
195
  // It's supposed to be a function, but that's not a type defined in
185
196
  // Ampersand
186
- type: 'any'
197
+ type: 'any',
187
198
  },
188
199
  sessionId: {
189
200
  setOnce: true,
190
- type: 'string'
191
- }
201
+ type: 'string',
202
+ },
192
203
  },
193
204
 
194
205
  /**
@@ -212,32 +223,44 @@ const WebexCore = AmpState.extend({
212
223
  (p) => !p.direction || p.direction === direction
213
224
  );
214
225
  const ctx = {
215
- webex: this
226
+ webex: this,
216
227
  };
217
228
 
218
- return Promise.all(predicates.map((p) => p.test(ctx, object)
219
- .then((shouldTransform) => {
220
- if (!shouldTransform) {
221
- return undefined;
222
- }
223
-
224
- return p.extract(object)
225
- // eslint-disable-next-line max-nested-callbacks
226
- .then((target) => ({
227
- name: p.name,
228
- target
229
- }));
230
- })))
231
- .then((data) => data
232
- .filter((d) => Boolean(d))
233
- // eslint-disable-next-line max-nested-callbacks
234
- .reduce((promise, {name, target, alias}) => promise.then(() => {
235
- if (alias) {
236
- return this.applyNamedTransform(direction, alias, target);
229
+ return Promise.all(
230
+ predicates.map((p) =>
231
+ p.test(ctx, object).then((shouldTransform) => {
232
+ if (!shouldTransform) {
233
+ return undefined;
237
234
  }
238
235
 
239
- return this.applyNamedTransform(direction, name, target);
240
- }), Promise.resolve()))
236
+ return (
237
+ p
238
+ .extract(object)
239
+ // eslint-disable-next-line max-nested-callbacks
240
+ .then((target) => ({
241
+ name: p.name,
242
+ target,
243
+ }))
244
+ );
245
+ })
246
+ )
247
+ )
248
+ .then((data) =>
249
+ data
250
+ .filter((d) => Boolean(d))
251
+ // eslint-disable-next-line max-nested-callbacks
252
+ .reduce(
253
+ (promise, {name, target, alias}) =>
254
+ promise.then(() => {
255
+ if (alias) {
256
+ return this.applyNamedTransform(direction, alias, target);
257
+ }
258
+
259
+ return this.applyNamedTransform(direction, name, target);
260
+ }),
261
+ Promise.resolve()
262
+ )
263
+ )
241
264
  .then(() => object);
242
265
  },
243
266
 
@@ -254,7 +277,7 @@ const WebexCore = AmpState.extend({
254
277
  name = ctx;
255
278
  ctx = {
256
279
  webex: this,
257
- transform: (...args) => this.applyNamedTransform(direction, ctx, ...args)
280
+ transform: (...args) => this.applyNamedTransform(direction, ctx, ...args),
258
281
  };
259
282
  }
260
283
 
@@ -264,13 +287,18 @@ const WebexCore = AmpState.extend({
264
287
 
265
288
  // too many implicit returns on the same line is difficult to interpret
266
289
  // eslint-disable-next-line arrow-body-style
267
- return transforms.reduce((promise, tx) => promise.then(() => {
268
- if (tx.alias) {
269
- return ctx.transform(tx.alias, ...rest);
270
- }
271
-
272
- return Promise.resolve(tx.fn(ctx, ...rest));
273
- }), Promise.resolve())
290
+ return transforms
291
+ .reduce(
292
+ (promise, tx) =>
293
+ promise.then(() => {
294
+ if (tx.alias) {
295
+ return ctx.transform(tx.alias, ...rest);
296
+ }
297
+
298
+ return Promise.resolve(tx.fn(ctx, ...rest));
299
+ }),
300
+ Promise.resolve()
301
+ )
274
302
  .then(() => last(rest));
275
303
  },
276
304
 
@@ -296,7 +324,6 @@ const WebexCore = AmpState.extend({
296
324
  initialize(attrs = {}) {
297
325
  this.config = merge({}, config, attrs.config);
298
326
 
299
-
300
327
  // There's some unfortunateness with the way {@link AmpersandState#children}
301
328
  // get initialized. We'll fire the change:config event so that
302
329
  // {@link WebexPlugin#initialize()} can use
@@ -372,10 +399,14 @@ const WebexCore = AmpState.extend({
372
399
 
373
400
  this.request = requestDefaults({
374
401
  json: true,
375
- interceptors: ints
402
+ interceptors: ints,
376
403
  });
377
404
 
378
- let sessionId = `${get(this, 'config.trackingIdPrefix', 'webex-js-sdk')}_${get(this, 'config.trackingIdBase', uuid.v4())}`;
405
+ let sessionId = `${get(this, 'config.trackingIdPrefix', 'webex-js-sdk')}_${get(
406
+ this,
407
+ 'config.trackingIdBase',
408
+ uuid.v4()
409
+ )}`;
379
410
 
380
411
  if (get(this, 'config.trackingIdSuffix')) {
381
412
  sessionId += `_${get(this, 'config.trackingIdSuffix')}`;
@@ -408,9 +439,13 @@ const WebexCore = AmpState.extend({
408
439
  bearerValidator(token) {
409
440
  if (token.includes('Bearer') && token.split(' ').length - 1 === 0) {
410
441
  console.warn(
411
- `Your access token does not have a space between 'Bearer' and the token, please add a space to it or replace it with this already fixed version:\n\n${token.replace('Bearer', 'Bearer ').replace(/\s+/g, ' ')}`
442
+ `Your access token does not have a space between 'Bearer' and the token, please add a space to it or replace it with this already fixed version:\n\n${token
443
+ .replace('Bearer', 'Bearer ')
444
+ .replace(/\s+/g, ' ')}`
445
+ );
446
+ console.info(
447
+ "Tip: You don't need to add 'Bearer' to the access_token field. The token by itself is fine"
412
448
  );
413
- console.info("Tip: You don't need to add 'Bearer' to the access_token field. The token by itself is fine");
414
449
 
415
450
  return token.replace('Bearer', 'Bearer ').replace(/\s+/g, ' ');
416
451
  }
@@ -418,9 +453,13 @@ const WebexCore = AmpState.extend({
418
453
  // eslint-disable-next-line no-else-return
419
454
  else if (token.split(' ').length - 1 > 1) {
420
455
  console.warn(
421
- `Your access token has ${token.split(' ').length - 2} too many spaces, please use this format:\n\n${token.replace(/\s+/g, ' ')}`
456
+ `Your access token has ${
457
+ token.split(' ').length - 2
458
+ } too many spaces, please use this format:\n\n${token.replace(/\s+/g, ' ')}`
459
+ );
460
+ console.info(
461
+ "Tip: You don't need to add 'Bearer' to the access_token field, the token by itself is fine"
422
462
  );
423
- console.info("Tip: You don't need to add 'Bearer' to the access_token field, the token by itself is fine");
424
463
 
425
464
  return token.replace(/\s+/g, ' ');
426
465
  }
@@ -436,11 +475,20 @@ const WebexCore = AmpState.extend({
436
475
  * @returns {Object}
437
476
  */
438
477
  inspect(depth) {
439
- return util.inspect(omit(this.serialize({
440
- props: true,
441
- session: true,
442
- derived: true
443
- }), 'boundedStorage', 'unboundedStorage', 'request', 'config'), {depth});
478
+ return util.inspect(
479
+ omit(
480
+ this.serialize({
481
+ props: true,
482
+ session: true,
483
+ derived: true,
484
+ }),
485
+ 'boundedStorage',
486
+ 'unboundedStorage',
487
+ 'request',
488
+ 'config'
489
+ ),
490
+ {depth}
491
+ );
444
492
  },
445
493
 
446
494
  /**
@@ -459,7 +507,9 @@ const WebexCore = AmpState.extend({
459
507
  logout(options, ...rest) {
460
508
  // prefer the refresh token, but for clients that don't have one, fallback
461
509
  // to the access token
462
- const token = this.credentials.supertoken && (this.credentials.supertoken.refresh_token || this.credentials.supertoken.access_token);
510
+ const token =
511
+ this.credentials.supertoken &&
512
+ (this.credentials.supertoken.refresh_token || this.credentials.supertoken.access_token);
463
513
 
464
514
  options = Object.assign({token}, options);
465
515
 
@@ -467,19 +517,31 @@ const WebexCore = AmpState.extend({
467
517
  // were registered. In that way, wdm unregister() will be above mercury
468
518
  // disconnect(), but disconnect() will execute first.
469
519
  // eslint-disable-next-line arrow-body-style
470
- return this.config.onBeforeLogout.reverse().reduce((promise, {plugin, fn}) => promise.then(() => {
471
- return Promise.resolve(Reflect.apply(fn, this[plugin] || this.internal[plugin], [options, ...rest]))
472
- // eslint-disable-next-line max-nested-callbacks
473
- .catch((err) => {
474
- this.logger.warn(`onBeforeLogout from plugin ${plugin}: failed`, err);
475
- });
476
- }), Promise.resolve())
477
- .then(() => Promise.all([
478
- this.boundedStorage.clear(),
479
- this.unboundedStorage.clear()
480
- ]))
520
+ return this.config.onBeforeLogout
521
+ .reverse()
522
+ .reduce(
523
+ (promise, {plugin, fn}) =>
524
+ promise.then(() => {
525
+ return (
526
+ Promise.resolve(
527
+ Reflect.apply(fn, this[plugin] || this.internal[plugin], [options, ...rest])
528
+ )
529
+ // eslint-disable-next-line max-nested-callbacks
530
+ .catch((err) => {
531
+ this.logger.warn(`onBeforeLogout from plugin ${plugin}: failed`, err);
532
+ })
533
+ );
534
+ }),
535
+ Promise.resolve()
536
+ )
537
+ .then(() => Promise.all([this.boundedStorage.clear(), this.unboundedStorage.clear()]))
481
538
  .then(() => this.credentials.invalidate(...rest))
482
- .then(() => this.authorization && this.authorization.logout && this.authorization.logout(options, ...rest))
539
+ .then(
540
+ () =>
541
+ this.authorization &&
542
+ this.authorization.logout &&
543
+ this.authorization.logout(options, ...rest)
544
+ )
483
545
  .then(() => this.trigger('client:logout'));
484
546
  },
485
547
 
@@ -508,12 +570,16 @@ const WebexCore = AmpState.extend({
508
570
  options.phases.upload = options.phases.upload || {};
509
571
  options.phases.finalize = options.phases.finalize || {};
510
572
 
511
- defaultsDeep(options.phases.initialize, {
512
- method: 'POST',
513
- body: {
514
- uploadProtocol: 'content-length'
515
- }
516
- }, omit(options, 'file', 'phases'));
573
+ defaultsDeep(
574
+ options.phases.initialize,
575
+ {
576
+ method: 'POST',
577
+ body: {
578
+ uploadProtocol: 'content-length',
579
+ },
580
+ },
581
+ omit(options, 'file', 'phases')
582
+ );
517
583
 
518
584
  defaultsDeep(options.phases.upload, {
519
585
  method: 'PUT',
@@ -522,13 +588,17 @@ const WebexCore = AmpState.extend({
522
588
  body: options.file,
523
589
  headers: {
524
590
  'x-trans-id': uuid.v4(),
525
- authorization: undefined
526
- }
591
+ authorization: undefined,
592
+ },
527
593
  });
528
594
 
529
- defaultsDeep(options.phases.finalize, {
530
- method: 'POST'
531
- }, omit(options, 'file', 'phases'));
595
+ defaultsDeep(
596
+ options.phases.finalize,
597
+ {
598
+ method: 'POST',
599
+ },
600
+ omit(options, 'file', 'phases')
601
+ );
532
602
 
533
603
  const shunt = new EventEmitter();
534
604
 
@@ -553,7 +623,8 @@ const WebexCore = AmpState.extend({
553
623
 
554
624
  return this.request(options.phases.initialize)
555
625
  .then((...args) => {
556
- const fileUploadSizeLimitInBytes = (args[0].body.fileUploadSizeLimit || MAX_FILE_SIZE_IN_MB) * 1024 * 1024;
626
+ const fileUploadSizeLimitInBytes =
627
+ (args[0].body.fileUploadSizeLimit || MAX_FILE_SIZE_IN_MB) * 1024 * 1024;
557
628
  const currentFileSizeInBytes = options.file.byteLength;
558
629
 
559
630
  if (fileUploadSizeLimitInBytes && fileUploadSizeLimitInBytes < currentFileSizeInBytes) {
@@ -575,14 +646,14 @@ const WebexCore = AmpState.extend({
575
646
  return this.request({
576
647
  method: 'DELETE',
577
648
  url: response.body.url,
578
- headers: response.options.headers
649
+ headers: response.options.headers,
579
650
  }).then(() => {
580
651
  this.logger.debug('client: deleting uploaded file complete');
581
652
 
582
653
  const abortErrorDetails = {
583
654
  currentFileSizeInBytes,
584
655
  fileUploadSizeLimitInMB: response.body.fileUploadSizeLimit || MAX_FILE_SIZE_IN_MB,
585
- message: 'file-upload-size-limit-enabled'
656
+ message: 'file-upload-size-limit-enabled',
586
657
  };
587
658
 
588
659
  return Promise.reject(new Error(`${JSON.stringify(abortErrorDetails)}`));
@@ -610,12 +681,11 @@ const WebexCore = AmpState.extend({
610
681
  _uploadPhaseUpload(options) {
611
682
  this.logger.debug('client: uploading file');
612
683
 
613
- const promise = this.request(options.phases.upload)
614
- .then((res) => {
615
- this.logger.debug('client: uploaded file');
684
+ const promise = this.request(options.phases.upload).then((res) => {
685
+ this.logger.debug('client: uploaded file');
616
686
 
617
- return res;
618
- });
687
+ return res;
688
+ });
619
689
 
620
690
  proxyEvents(options.phases.upload.upload, promise);
621
691
 
@@ -632,13 +702,12 @@ const WebexCore = AmpState.extend({
632
702
  _uploadPhaseFinalize: function _uploadPhaseFinalize(options) {
633
703
  this.logger.debug('client: finalizing upload session');
634
704
 
635
- return this.request(options.phases.finalize)
636
- .then((res) => {
637
- this.logger.debug('client: finalized upload session');
705
+ return this.request(options.phases.finalize).then((res) => {
706
+ this.logger.debug('client: finalized upload session');
638
707
 
639
- return res;
640
- });
641
- }
708
+ return res;
709
+ });
710
+ },
642
711
  });
643
712
 
644
713
  WebexCore.version = PACKAGE_VERSION;
@@ -16,9 +16,12 @@ const WebexInternalCore = AmpState.extend({
16
16
  ready: {
17
17
  deps: [],
18
18
  fn() {
19
- return Object.keys(this._children).reduce((ready, name) => ready && this[name] && this[name].ready !== false, true);
20
- }
21
- }
19
+ return Object.keys(this._children).reduce(
20
+ (ready, name) => ready && this[name] && this[name].ready !== false,
21
+ true
22
+ );
23
+ },
24
+ },
22
25
  },
23
26
 
24
27
  /**
@@ -29,12 +32,15 @@ const WebexInternalCore = AmpState.extend({
29
32
  * @returns {Object}
30
33
  */
31
34
  inspect(depth) {
32
- return util.inspect(this.serialize({
33
- props: true,
34
- session: true,
35
- derived: true
36
- }), {depth});
37
- }
35
+ return util.inspect(
36
+ this.serialize({
37
+ props: true,
38
+ session: true,
39
+ derived: true,
40
+ }),
41
+ {depth}
42
+ );
43
+ },
38
44
  });
39
45
 
40
46
  export default WebexInternalCore;