@webex/webex-core 2.59.3-next.1 → 2.59.4
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.
- package/.eslintrc.js +6 -6
- package/README.md +79 -79
- package/babel.config.js +3 -3
- package/dist/config.js +24 -24
- package/dist/config.js.map +1 -1
- package/dist/credentials-config.js +56 -56
- package/dist/credentials-config.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interceptors/auth.js +28 -28
- package/dist/interceptors/auth.js.map +1 -1
- package/dist/interceptors/default-options.js +24 -24
- package/dist/interceptors/default-options.js.map +1 -1
- package/dist/interceptors/embargo.js +9 -9
- package/dist/interceptors/embargo.js.map +1 -1
- package/dist/interceptors/network-timing.js +19 -19
- package/dist/interceptors/network-timing.js.map +1 -1
- package/dist/interceptors/payload-transformer.js +19 -19
- package/dist/interceptors/payload-transformer.js.map +1 -1
- package/dist/interceptors/rate-limit.js +40 -40
- package/dist/interceptors/rate-limit.js.map +1 -1
- package/dist/interceptors/redirect.js +13 -13
- package/dist/interceptors/redirect.js.map +1 -1
- package/dist/interceptors/request-event.js +23 -23
- package/dist/interceptors/request-event.js.map +1 -1
- package/dist/interceptors/request-logger.js +13 -13
- package/dist/interceptors/request-logger.js.map +1 -1
- package/dist/interceptors/request-timing.js +23 -23
- package/dist/interceptors/request-timing.js.map +1 -1
- package/dist/interceptors/response-logger.js +19 -19
- package/dist/interceptors/response-logger.js.map +1 -1
- package/dist/interceptors/user-agent.js +29 -29
- package/dist/interceptors/user-agent.js.map +1 -1
- package/dist/interceptors/webex-tracking-id.js +15 -15
- package/dist/interceptors/webex-tracking-id.js.map +1 -1
- package/dist/interceptors/webex-user-agent.js +13 -13
- package/dist/interceptors/webex-user-agent.js.map +1 -1
- package/dist/lib/batcher.js +83 -83
- package/dist/lib/batcher.js.map +1 -1
- package/dist/lib/credentials/credentials.js +103 -103
- package/dist/lib/credentials/credentials.js.map +1 -1
- package/dist/lib/credentials/grant-errors.js +17 -17
- package/dist/lib/credentials/grant-errors.js.map +1 -1
- package/dist/lib/credentials/index.js +2 -2
- package/dist/lib/credentials/index.js.map +1 -1
- package/dist/lib/credentials/scope.js +11 -11
- package/dist/lib/credentials/scope.js.map +1 -1
- package/dist/lib/credentials/token-collection.js +2 -2
- package/dist/lib/credentials/token-collection.js.map +1 -1
- package/dist/lib/credentials/token.js +145 -145
- package/dist/lib/credentials/token.js.map +1 -1
- package/dist/lib/page.js +49 -49
- package/dist/lib/page.js.map +1 -1
- package/dist/lib/services/constants.js.map +1 -1
- package/dist/lib/services/index.js +2 -2
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/interceptors/server-error.js +9 -9
- package/dist/lib/services/interceptors/server-error.js.map +1 -1
- package/dist/lib/services/interceptors/service.js +24 -24
- package/dist/lib/services/interceptors/service.js.map +1 -1
- package/dist/lib/services/metrics.js.map +1 -1
- package/dist/lib/services/service-catalog.js +104 -104
- package/dist/lib/services/service-catalog.js.map +1 -1
- package/dist/lib/services/service-fed-ramp.js.map +1 -1
- package/dist/lib/services/service-host.js +134 -134
- package/dist/lib/services/service-host.js.map +1 -1
- package/dist/lib/services/service-registry.js +175 -175
- package/dist/lib/services/service-registry.js.map +1 -1
- package/dist/lib/services/service-state.js +38 -38
- package/dist/lib/services/service-state.js.map +1 -1
- package/dist/lib/services/service-url.js +31 -31
- package/dist/lib/services/service-url.js.map +1 -1
- package/dist/lib/services/services.js +245 -245
- package/dist/lib/services/services.js.map +1 -1
- package/dist/lib/stateless-webex-plugin.js +28 -28
- package/dist/lib/stateless-webex-plugin.js.map +1 -1
- package/dist/lib/storage/decorators.js +27 -27
- package/dist/lib/storage/decorators.js.map +1 -1
- package/dist/lib/storage/errors.js +4 -4
- package/dist/lib/storage/errors.js.map +1 -1
- package/dist/lib/storage/index.js.map +1 -1
- package/dist/lib/storage/make-webex-plugin-store.js +44 -44
- package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
- package/dist/lib/storage/make-webex-store.js +40 -40
- package/dist/lib/storage/make-webex-store.js.map +1 -1
- package/dist/lib/storage/memory-store-adapter.js +9 -9
- package/dist/lib/storage/memory-store-adapter.js.map +1 -1
- package/dist/lib/webex-core-plugin-mixin.js +13 -13
- package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
- package/dist/lib/webex-http-error.js +9 -9
- package/dist/lib/webex-http-error.js.map +1 -1
- package/dist/lib/webex-internal-core-plugin-mixin.js +13 -13
- package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
- package/dist/lib/webex-plugin.js +36 -36
- package/dist/lib/webex-plugin.js.map +1 -1
- package/dist/plugins/logger.js +9 -9
- package/dist/plugins/logger.js.map +1 -1
- package/dist/webex-core.js +104 -104
- package/dist/webex-core.js.map +1 -1
- package/dist/webex-internal-core.js +12 -12
- package/dist/webex-internal-core.js.map +1 -1
- package/jest.config.js +3 -3
- package/package.json +19 -20
- package/process +1 -1
- package/src/config.js +90 -90
- package/src/credentials-config.js +212 -212
- package/src/index.js +62 -62
- package/src/interceptors/auth.js +186 -186
- package/src/interceptors/default-options.js +55 -55
- package/src/interceptors/embargo.js +43 -43
- package/src/interceptors/network-timing.js +54 -54
- package/src/interceptors/payload-transformer.js +55 -55
- package/src/interceptors/rate-limit.js +169 -169
- package/src/interceptors/redirect.js +106 -106
- package/src/interceptors/request-event.js +93 -93
- package/src/interceptors/request-logger.js +78 -78
- package/src/interceptors/request-timing.js +65 -65
- package/src/interceptors/response-logger.js +98 -98
- package/src/interceptors/user-agent.js +77 -77
- package/src/interceptors/webex-tracking-id.js +73 -73
- package/src/interceptors/webex-user-agent.js +79 -79
- package/src/lib/batcher.js +307 -307
- package/src/lib/credentials/credentials.js +552 -552
- package/src/lib/credentials/grant-errors.js +92 -92
- package/src/lib/credentials/index.js +16 -16
- package/src/lib/credentials/scope.js +34 -34
- package/src/lib/credentials/token-collection.js +17 -17
- package/src/lib/credentials/token.js +559 -559
- package/src/lib/page.js +159 -159
- package/src/lib/services/constants.js +9 -9
- package/src/lib/services/index.js +26 -26
- package/src/lib/services/interceptors/server-error.js +48 -48
- package/src/lib/services/interceptors/service.js +101 -101
- package/src/lib/services/metrics.js +4 -4
- package/src/lib/services/service-catalog.js +435 -435
- package/src/lib/services/service-fed-ramp.js +4 -4
- package/src/lib/services/service-host.js +267 -267
- package/src/lib/services/service-registry.js +465 -465
- package/src/lib/services/service-state.js +78 -78
- package/src/lib/services/service-url.js +124 -124
- package/src/lib/services/services.js +1018 -1018
- package/src/lib/stateless-webex-plugin.js +98 -98
- package/src/lib/storage/decorators.js +220 -220
- package/src/lib/storage/errors.js +15 -15
- package/src/lib/storage/index.js +10 -10
- package/src/lib/storage/make-webex-plugin-store.js +211 -211
- package/src/lib/storage/make-webex-store.js +140 -140
- package/src/lib/storage/memory-store-adapter.js +79 -79
- package/src/lib/webex-core-plugin-mixin.js +114 -114
- package/src/lib/webex-http-error.js +61 -61
- package/src/lib/webex-internal-core-plugin-mixin.js +107 -107
- package/src/lib/webex-plugin.js +222 -222
- package/src/plugins/logger.js +60 -60
- package/src/webex-core.js +745 -745
- package/src/webex-internal-core.js +46 -46
- package/test/integration/spec/credentials/credentials.js +139 -139
- package/test/integration/spec/credentials/token.js +102 -102
- package/test/integration/spec/services/service-catalog.js +838 -838
- package/test/integration/spec/services/services.js +1221 -1221
- package/test/integration/spec/webex-core.js +178 -178
- package/test/unit/spec/_setup.js +44 -44
- package/test/unit/spec/credentials/credentials.js +1017 -1017
- package/test/unit/spec/credentials/token.js +441 -441
- package/test/unit/spec/interceptors/auth.js +521 -521
- package/test/unit/spec/interceptors/default-options.js +84 -84
- package/test/unit/spec/interceptors/embargo.js +144 -144
- package/test/unit/spec/interceptors/network-timing.js +49 -49
- package/test/unit/spec/interceptors/payload-transformer.js +155 -155
- package/test/unit/spec/interceptors/rate-limit.js +302 -302
- package/test/unit/spec/interceptors/redirect.js +102 -102
- package/test/unit/spec/interceptors/request-timing.js +92 -92
- package/test/unit/spec/interceptors/user-agent.js +76 -76
- package/test/unit/spec/interceptors/webex-tracking-id.js +76 -76
- package/test/unit/spec/interceptors/webex-user-agent.js +159 -159
- package/test/unit/spec/lib/batcher.js +330 -330
- package/test/unit/spec/lib/page.js +148 -148
- package/test/unit/spec/lib/webex-plugin.js +48 -48
- package/test/unit/spec/services/interceptors/server-error.js +204 -204
- package/test/unit/spec/services/interceptors/service.js +188 -188
- package/test/unit/spec/services/service-catalog.js +194 -194
- package/test/unit/spec/services/service-host.js +260 -260
- package/test/unit/spec/services/service-registry.js +747 -747
- package/test/unit/spec/services/service-state.js +60 -60
- package/test/unit/spec/services/service-url.js +258 -258
- package/test/unit/spec/services/services.js +348 -348
- package/test/unit/spec/storage/persist.js +50 -50
- package/test/unit/spec/storage/storage-adapter.js +12 -12
- package/test/unit/spec/storage/wait-for-value.js +81 -81
- package/test/unit/spec/webex-core.js +253 -253
- package/test/unit/spec/webex-internal-core.js +91 -91
package/dist/lib/batcher.js
CHANGED
|
@@ -12,9 +12,9 @@ var _has2 = _interopRequireDefault(require("lodash/has"));
|
|
|
12
12
|
var _common = require("@webex/common");
|
|
13
13
|
var _webexPlugin = _interopRequireDefault(require("./webex-plugin"));
|
|
14
14
|
var _webexHttpError = _interopRequireDefault(require("./webex-http-error"));
|
|
15
|
-
/**
|
|
16
|
-
* Base class for coalescing requests to batched APIs
|
|
17
|
-
* @class Batcher
|
|
15
|
+
/**
|
|
16
|
+
* Base class for coalescing requests to batched APIs
|
|
17
|
+
* @class Batcher
|
|
18
18
|
*/
|
|
19
19
|
var Batcher = _webexPlugin.default.extend({
|
|
20
20
|
session: {
|
|
@@ -44,10 +44,10 @@ var Batcher = _webexPlugin.default.extend({
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
},
|
|
47
|
-
/**
|
|
48
|
-
* Requests an item from a batched API
|
|
49
|
-
* @param {Object} item
|
|
50
|
-
* @returns {Promise<mixed>}
|
|
47
|
+
/**
|
|
48
|
+
* Requests an item from a batched API
|
|
49
|
+
* @param {Object} item
|
|
50
|
+
* @returns {Promise<mixed>}
|
|
51
51
|
*/
|
|
52
52
|
request: function request(item) {
|
|
53
53
|
var _this2 = this;
|
|
@@ -80,29 +80,29 @@ var Batcher = _webexPlugin.default.extend({
|
|
|
80
80
|
});
|
|
81
81
|
return defer.promise;
|
|
82
82
|
},
|
|
83
|
-
/**
|
|
84
|
-
* Adds an item to the queue.
|
|
85
|
-
* Intended to be overridden
|
|
86
|
-
* @param {mixed} req
|
|
87
|
-
* @returns {Promise<undefined>}
|
|
83
|
+
/**
|
|
84
|
+
* Adds an item to the queue.
|
|
85
|
+
* Intended to be overridden
|
|
86
|
+
* @param {mixed} req
|
|
87
|
+
* @returns {Promise<undefined>}
|
|
88
88
|
*/
|
|
89
89
|
enqueue: function enqueue(req) {
|
|
90
90
|
this.queue.push(req);
|
|
91
91
|
return _promise.default.resolve();
|
|
92
92
|
},
|
|
93
|
-
/**
|
|
94
|
-
* Transform the item before adding it to the queue
|
|
95
|
-
* Intended to be overridden
|
|
96
|
-
* @param {mixed} item
|
|
97
|
-
* @returns {Promise<mixed>}
|
|
93
|
+
/**
|
|
94
|
+
* Transform the item before adding it to the queue
|
|
95
|
+
* Intended to be overridden
|
|
96
|
+
* @param {mixed} item
|
|
97
|
+
* @returns {Promise<mixed>}
|
|
98
98
|
*/
|
|
99
99
|
prepareItem: function prepareItem(item) {
|
|
100
100
|
return _promise.default.resolve(item);
|
|
101
101
|
},
|
|
102
|
-
/**
|
|
103
|
-
* Detaches the current queue, does any appropriate transforms, and submits it
|
|
104
|
-
* to the API.
|
|
105
|
-
* @returns {Promise<undefined>}
|
|
102
|
+
/**
|
|
103
|
+
* Detaches the current queue, does any appropriate transforms, and submits it
|
|
104
|
+
* to the API.
|
|
105
|
+
* @returns {Promise<undefined>}
|
|
106
106
|
*/
|
|
107
107
|
executeQueue: function executeQueue() {
|
|
108
108
|
var _this3 = this;
|
|
@@ -127,30 +127,30 @@ var Batcher = _webexPlugin.default.extend({
|
|
|
127
127
|
return _promise.default.reject(reason);
|
|
128
128
|
});
|
|
129
129
|
},
|
|
130
|
-
/**
|
|
131
|
-
* Performs any final transforms on the queue before submitting it to the API
|
|
132
|
-
* Intended to be overridden
|
|
133
|
-
* @param {Object|Array} queue
|
|
134
|
-
* @returns {Promise<Object>}
|
|
130
|
+
/**
|
|
131
|
+
* Performs any final transforms on the queue before submitting it to the API
|
|
132
|
+
* Intended to be overridden
|
|
133
|
+
* @param {Object|Array} queue
|
|
134
|
+
* @returns {Promise<Object>}
|
|
135
135
|
*/
|
|
136
136
|
prepareRequest: function prepareRequest(queue) {
|
|
137
137
|
return _promise.default.resolve(queue);
|
|
138
138
|
},
|
|
139
|
-
/**
|
|
140
|
-
* Submits the prepared request body to the API.
|
|
141
|
-
* This method *must* be overridden
|
|
142
|
-
* @param {Object} payload
|
|
143
|
-
* @returns {Promise<HttpResponseObject>}
|
|
139
|
+
/**
|
|
140
|
+
* Submits the prepared request body to the API.
|
|
141
|
+
* This method *must* be overridden
|
|
142
|
+
* @param {Object} payload
|
|
143
|
+
* @returns {Promise<HttpResponseObject>}
|
|
144
144
|
*/
|
|
145
145
|
// eslint-disable-next-line no-unused-vars
|
|
146
146
|
submitHttpRequest: function submitHttpRequest(payload) {
|
|
147
147
|
throw new Error('request() must be implemented');
|
|
148
148
|
},
|
|
149
|
-
/**
|
|
150
|
-
* Actions taken when the http request returns a success
|
|
151
|
-
* Intended to be overridden
|
|
152
|
-
* @param {Promise<HttpResponseObject>} res
|
|
153
|
-
* @returns {Promise<undefined>}
|
|
149
|
+
/**
|
|
150
|
+
* Actions taken when the http request returns a success
|
|
151
|
+
* Intended to be overridden
|
|
152
|
+
* @param {Promise<HttpResponseObject>} res
|
|
153
|
+
* @returns {Promise<undefined>}
|
|
154
154
|
*/
|
|
155
155
|
handleHttpSuccess: function handleHttpSuccess(res) {
|
|
156
156
|
var _this4 = this;
|
|
@@ -158,13 +158,13 @@ var Batcher = _webexPlugin.default.extend({
|
|
|
158
158
|
return _this4.acceptItem(item);
|
|
159
159
|
}));
|
|
160
160
|
},
|
|
161
|
-
/**
|
|
162
|
-
* Actions taken when the http request returns a failure. Typically, this
|
|
163
|
-
* means failing the entire queue, but could be overridden in some
|
|
164
|
-
* implementations to e.g. reenqueue.
|
|
165
|
-
* Intended to be overridden
|
|
166
|
-
* @param {WebexHttpError} reason
|
|
167
|
-
* @returns {Promise<undefined>}
|
|
161
|
+
/**
|
|
162
|
+
* Actions taken when the http request returns a failure. Typically, this
|
|
163
|
+
* means failing the entire queue, but could be overridden in some
|
|
164
|
+
* implementations to e.g. reenqueue.
|
|
165
|
+
* Intended to be overridden
|
|
166
|
+
* @param {WebexHttpError} reason
|
|
167
|
+
* @returns {Promise<undefined>}
|
|
168
168
|
*/
|
|
169
169
|
handleHttpError: function handleHttpError(reason) {
|
|
170
170
|
var _this5 = this;
|
|
@@ -180,10 +180,10 @@ var Batcher = _webexPlugin.default.extend({
|
|
|
180
180
|
this.logger.error('http error handler called without a WebexHttpError object', reason);
|
|
181
181
|
return _promise.default.reject(reason);
|
|
182
182
|
},
|
|
183
|
-
/**
|
|
184
|
-
* Determines if the item succeeded or failed and delegates accordingly
|
|
185
|
-
* @param {Object} item
|
|
186
|
-
* @returns {Promise<undefined>}
|
|
183
|
+
/**
|
|
184
|
+
* Determines if the item succeeded or failed and delegates accordingly
|
|
185
|
+
* @param {Object} item
|
|
186
|
+
* @returns {Promise<undefined>}
|
|
187
187
|
*/
|
|
188
188
|
acceptItem: function acceptItem(item) {
|
|
189
189
|
var _this6 = this;
|
|
@@ -194,42 +194,42 @@ var Batcher = _webexPlugin.default.extend({
|
|
|
194
194
|
return _this6.handleItemSuccess(item);
|
|
195
195
|
});
|
|
196
196
|
},
|
|
197
|
-
/**
|
|
198
|
-
* Indicates if the specified response item implies a success or a failure
|
|
199
|
-
* Intended to be overridden
|
|
200
|
-
* @param {Object} item
|
|
201
|
-
* @returns {Promise<Boolean>}
|
|
197
|
+
/**
|
|
198
|
+
* Indicates if the specified response item implies a success or a failure
|
|
199
|
+
* Intended to be overridden
|
|
200
|
+
* @param {Object} item
|
|
201
|
+
* @returns {Promise<Boolean>}
|
|
202
202
|
*/
|
|
203
203
|
// eslint-disable-next-line no-unused-vars
|
|
204
204
|
didItemFail: function didItemFail(item) {
|
|
205
205
|
return _promise.default.resolve(false);
|
|
206
206
|
},
|
|
207
|
-
/**
|
|
208
|
-
* Finds the Defer for the specified item and rejects its promise
|
|
209
|
-
* Intended to be overridden
|
|
210
|
-
* @param {Object} item
|
|
211
|
-
* @returns {Promise<undefined>}
|
|
207
|
+
/**
|
|
208
|
+
* Finds the Defer for the specified item and rejects its promise
|
|
209
|
+
* Intended to be overridden
|
|
210
|
+
* @param {Object} item
|
|
211
|
+
* @returns {Promise<undefined>}
|
|
212
212
|
*/
|
|
213
213
|
handleItemFailure: function handleItemFailure(item) {
|
|
214
214
|
return this.getDeferredForResponse(item).then(function (defer) {
|
|
215
215
|
defer.reject(item);
|
|
216
216
|
});
|
|
217
217
|
},
|
|
218
|
-
/**
|
|
219
|
-
* Finds the Defer for the specified item and resolves its promise
|
|
220
|
-
* Intended to be overridden
|
|
221
|
-
* @param {Object} item
|
|
222
|
-
* @returns {Promise<undefined>}
|
|
218
|
+
/**
|
|
219
|
+
* Finds the Defer for the specified item and resolves its promise
|
|
220
|
+
* Intended to be overridden
|
|
221
|
+
* @param {Object} item
|
|
222
|
+
* @returns {Promise<undefined>}
|
|
223
223
|
*/
|
|
224
224
|
handleItemSuccess: function handleItemSuccess(item) {
|
|
225
225
|
return this.getDeferredForResponse(item).then(function (defer) {
|
|
226
226
|
defer.resolve(item);
|
|
227
227
|
});
|
|
228
228
|
},
|
|
229
|
-
/**
|
|
230
|
-
* Returns the Deferred for the specified request item
|
|
231
|
-
* @param {Object} item
|
|
232
|
-
* @returns {Promise<Defer>}
|
|
229
|
+
/**
|
|
230
|
+
* Returns the Deferred for the specified request item
|
|
231
|
+
* @param {Object} item
|
|
232
|
+
* @returns {Promise<Defer>}
|
|
233
233
|
*/
|
|
234
234
|
getDeferredForRequest: function getDeferredForRequest(item) {
|
|
235
235
|
var _this7 = this;
|
|
@@ -243,10 +243,10 @@ var Batcher = _webexPlugin.default.extend({
|
|
|
243
243
|
return defer;
|
|
244
244
|
});
|
|
245
245
|
},
|
|
246
|
-
/**
|
|
247
|
-
* Returns the Deferred for the specified response item
|
|
248
|
-
* @param {Object} item
|
|
249
|
-
* @returns {Promise<Defer>}
|
|
246
|
+
/**
|
|
247
|
+
* Returns the Deferred for the specified response item
|
|
248
|
+
* @param {Object} item
|
|
249
|
+
* @returns {Promise<Defer>}
|
|
250
250
|
*/
|
|
251
251
|
getDeferredForResponse: function getDeferredForResponse(item) {
|
|
252
252
|
var _this8 = this;
|
|
@@ -260,29 +260,29 @@ var Batcher = _webexPlugin.default.extend({
|
|
|
260
260
|
return defer;
|
|
261
261
|
});
|
|
262
262
|
},
|
|
263
|
-
/**
|
|
264
|
-
* Generates a unique identifier for the item in a request payload
|
|
265
|
-
* Intended to be overridden
|
|
266
|
-
* Note that overrides must return a primitive.
|
|
267
|
-
* @param {Object} item
|
|
268
|
-
* @returns {Promise<primitive>}
|
|
263
|
+
/**
|
|
264
|
+
* Generates a unique identifier for the item in a request payload
|
|
265
|
+
* Intended to be overridden
|
|
266
|
+
* Note that overrides must return a primitive.
|
|
267
|
+
* @param {Object} item
|
|
268
|
+
* @returns {Promise<primitive>}
|
|
269
269
|
*/
|
|
270
270
|
// eslint-disable-next-line no-unused-vars
|
|
271
271
|
fingerprintRequest: function fingerprintRequest(item) {
|
|
272
272
|
throw new Error('fingerprintRequest() must be implemented');
|
|
273
273
|
},
|
|
274
|
-
/**
|
|
275
|
-
* Generates a unique identifier for the item in a response payload
|
|
276
|
-
* Intended to be overridden
|
|
277
|
-
* Note that overrides must return a primitive.
|
|
278
|
-
* @param {Object} item
|
|
279
|
-
* @returns {Promise<primitive>}
|
|
274
|
+
/**
|
|
275
|
+
* Generates a unique identifier for the item in a response payload
|
|
276
|
+
* Intended to be overridden
|
|
277
|
+
* Note that overrides must return a primitive.
|
|
278
|
+
* @param {Object} item
|
|
279
|
+
* @returns {Promise<primitive>}
|
|
280
280
|
*/
|
|
281
281
|
// eslint-disable-next-line no-unused-vars
|
|
282
282
|
fingerprintResponse: function fingerprintResponse(item) {
|
|
283
283
|
throw new Error('fingerprintResponse() must be implemented');
|
|
284
284
|
},
|
|
285
|
-
version: "2.59.
|
|
285
|
+
version: "2.59.4"
|
|
286
286
|
});
|
|
287
287
|
var _default2 = Batcher;
|
|
288
288
|
exports.default = _default2;
|
package/dist/lib/batcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_common","require","_webexPlugin","_interopRequireDefault","_webexHttpError","Batcher","WebexPlugin","extend","session","deferreds","type","default","_default","_map","queue","derived","bounce","fn","_this","cappedDebounce","executeQueue","apply","arguments","config","batcherWait","maxCalls","batcherMaxCalls","maxWait","batcherMaxWait","request","item","_this2","defer","Defer","fingerprintRequest","then","idx","has","resolve","get","promise","set","prepareItem","req","tap","delete","catch","reason","_promise","reject","enqueue","push","_this3","splice","prepareRequest","payload","submitHttpRequest","res","handleHttpSuccess","WebexHttpError","handleHttpError","all","map","getDeferredForRequest","logger","error","process","env","NODE_ENV","stack","Error","_this4","body","items","acceptItem","_this5","_has2","options","_this6","didItemFail","didFail","handleItemFailure","handleItemSuccess","getDeferredForResponse","_this7","_this8","fingerprintResponse","version","_default2","exports"],"sources":["batcher.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\nimport {has} from 'lodash';\r\nimport {cappedDebounce, Defer, tap} from '@webex/common';\r\n\r\nimport WebexPlugin from './webex-plugin';\r\nimport WebexHttpError from './webex-http-error';\r\n\r\n/**\r\n * Base class for coalescing requests to batched APIs\r\n * @class Batcher\r\n */\r\nconst Batcher = WebexPlugin.extend({\r\n session: {\r\n deferreds: {\r\n type: 'object',\r\n default() {\r\n return new Map();\r\n },\r\n },\r\n queue: {\r\n type: 'array',\r\n default() {\r\n return [];\r\n },\r\n },\r\n },\r\n\r\n derived: {\r\n bounce: {\r\n fn() {\r\n return cappedDebounce((...args) => this.executeQueue(...args), this.config.batcherWait, {\r\n maxCalls: this.config.batcherMaxCalls,\r\n maxWait: this.config.batcherMaxWait,\r\n });\r\n },\r\n },\r\n },\r\n\r\n /**\r\n * Requests an item from a batched API\r\n * @param {Object} item\r\n * @returns {Promise<mixed>}\r\n */\r\n request(item) {\r\n // So far, I can't find a way to avoid three layers of nesting here.\r\n /* eslint max-nested-callbacks: [0] */\r\n const defer = new Defer();\r\n\r\n this.fingerprintRequest(item)\r\n .then((idx) => {\r\n if (this.deferreds.has(idx)) {\r\n defer.resolve(this.deferreds.get(idx).promise);\r\n\r\n return;\r\n }\r\n this.deferreds.set(idx, defer);\r\n this.prepareItem(item)\r\n .then((req) => {\r\n defer.promise = defer.promise\r\n .then(tap(() => this.deferreds.delete(idx)))\r\n .catch((reason) => {\r\n this.deferreds.delete(idx);\r\n\r\n return Promise.reject(reason);\r\n });\r\n\r\n this.enqueue(req)\r\n .then(() => this.bounce())\r\n .catch((reason) => defer.reject(reason));\r\n })\r\n .catch((reason) => defer.reject(reason));\r\n })\r\n .catch((reason) => defer.reject(reason));\r\n\r\n return defer.promise;\r\n },\r\n\r\n /**\r\n * Adds an item to the queue.\r\n * Intended to be overridden\r\n * @param {mixed} req\r\n * @returns {Promise<undefined>}\r\n */\r\n enqueue(req) {\r\n this.queue.push(req);\r\n\r\n return Promise.resolve();\r\n },\r\n\r\n /**\r\n * Transform the item before adding it to the queue\r\n * Intended to be overridden\r\n * @param {mixed} item\r\n * @returns {Promise<mixed>}\r\n */\r\n prepareItem(item) {\r\n return Promise.resolve(item);\r\n },\r\n\r\n /**\r\n * Detaches the current queue, does any appropriate transforms, and submits it\r\n * to the API.\r\n * @returns {Promise<undefined>}\r\n */\r\n executeQueue() {\r\n const queue = this.queue.splice(0, this.config.batcherMaxCalls);\r\n\r\n return new Promise((resolve) => {\r\n resolve(\r\n this.prepareRequest(queue)\r\n .then((payload) =>\r\n this.submitHttpRequest(payload).then((res) => this.handleHttpSuccess(res))\r\n )\r\n .catch((reason) => {\r\n if (reason instanceof WebexHttpError) {\r\n return this.handleHttpError(reason);\r\n }\r\n\r\n return Promise.all(\r\n queue.map((item) =>\r\n this.getDeferredForRequest(item).then((defer) => {\r\n defer.reject(reason);\r\n })\r\n )\r\n );\r\n })\r\n );\r\n }).catch((reason) => {\r\n this.logger.error(process.env.NODE_ENV === 'production' ? reason : reason.stack);\r\n\r\n return Promise.reject(reason);\r\n });\r\n },\r\n\r\n /**\r\n * Performs any final transforms on the queue before submitting it to the API\r\n * Intended to be overridden\r\n * @param {Object|Array} queue\r\n * @returns {Promise<Object>}\r\n */\r\n prepareRequest(queue) {\r\n return Promise.resolve(queue);\r\n },\r\n\r\n /**\r\n * Submits the prepared request body to the API.\r\n * This method *must* be overridden\r\n * @param {Object} payload\r\n * @returns {Promise<HttpResponseObject>}\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n submitHttpRequest(payload) {\r\n throw new Error('request() must be implemented');\r\n },\r\n\r\n /**\r\n * Actions taken when the http request returns a success\r\n * Intended to be overridden\r\n * @param {Promise<HttpResponseObject>} res\r\n * @returns {Promise<undefined>}\r\n */\r\n handleHttpSuccess(res) {\r\n return Promise.all(\r\n ((res.body && res.body.items) || res.body).map((item) => this.acceptItem(item))\r\n );\r\n },\r\n\r\n /**\r\n * Actions taken when the http request returns a failure. Typically, this\r\n * means failing the entire queue, but could be overridden in some\r\n * implementations to e.g. reenqueue.\r\n * Intended to be overridden\r\n * @param {WebexHttpError} reason\r\n * @returns {Promise<undefined>}\r\n */\r\n handleHttpError(reason) {\r\n if (reason instanceof WebexHttpError) {\r\n if (has(reason, 'options.body.map')) {\r\n return Promise.all(\r\n reason.options.body.map((item) =>\r\n this.getDeferredForRequest(item).then((defer) => {\r\n defer.reject(reason);\r\n })\r\n )\r\n );\r\n }\r\n }\r\n this.logger.error('http error handler called without a WebexHttpError object', reason);\r\n\r\n return Promise.reject(reason);\r\n },\r\n\r\n /**\r\n * Determines if the item succeeded or failed and delegates accordingly\r\n * @param {Object} item\r\n * @returns {Promise<undefined>}\r\n */\r\n acceptItem(item) {\r\n return this.didItemFail(item).then((didFail) => {\r\n if (didFail) {\r\n return this.handleItemFailure(item);\r\n }\r\n\r\n return this.handleItemSuccess(item);\r\n });\r\n },\r\n\r\n /**\r\n * Indicates if the specified response item implies a success or a failure\r\n * Intended to be overridden\r\n * @param {Object} item\r\n * @returns {Promise<Boolean>}\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n didItemFail(item) {\r\n return Promise.resolve(false);\r\n },\r\n\r\n /**\r\n * Finds the Defer for the specified item and rejects its promise\r\n * Intended to be overridden\r\n * @param {Object} item\r\n * @returns {Promise<undefined>}\r\n */\r\n handleItemFailure(item) {\r\n return this.getDeferredForResponse(item).then((defer) => {\r\n defer.reject(item);\r\n });\r\n },\r\n\r\n /**\r\n * Finds the Defer for the specified item and resolves its promise\r\n * Intended to be overridden\r\n * @param {Object} item\r\n * @returns {Promise<undefined>}\r\n */\r\n handleItemSuccess(item) {\r\n return this.getDeferredForResponse(item).then((defer) => {\r\n defer.resolve(item);\r\n });\r\n },\r\n\r\n /**\r\n * Returns the Deferred for the specified request item\r\n * @param {Object} item\r\n * @returns {Promise<Defer>}\r\n */\r\n getDeferredForRequest(item) {\r\n return this.fingerprintRequest(item).then((idx) => {\r\n const defer = this.deferreds.get(idx);\r\n\r\n /* istanbul ignore if */\r\n if (!defer) {\r\n throw new Error('Could not find pending request for received response');\r\n }\r\n\r\n return defer;\r\n });\r\n },\r\n\r\n /**\r\n * Returns the Deferred for the specified response item\r\n * @param {Object} item\r\n * @returns {Promise<Defer>}\r\n */\r\n getDeferredForResponse(item) {\r\n return this.fingerprintResponse(item).then((idx) => {\r\n const defer = this.deferreds.get(idx);\r\n\r\n /* istanbul ignore if */\r\n if (!defer) {\r\n throw new Error('Could not find pending request for received response');\r\n }\r\n\r\n return defer;\r\n });\r\n },\r\n\r\n /**\r\n * Generates a unique identifier for the item in a request payload\r\n * Intended to be overridden\r\n * Note that overrides must return a primitive.\r\n * @param {Object} item\r\n * @returns {Promise<primitive>}\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n fingerprintRequest(item) {\r\n throw new Error('fingerprintRequest() must be implemented');\r\n },\r\n\r\n /**\r\n * Generates a unique identifier for the item in a response payload\r\n * Intended to be overridden\r\n * Note that overrides must return a primitive.\r\n * @param {Object} item\r\n * @returns {Promise<primitive>}\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n fingerprintResponse(item) {\r\n throw new Error('fingerprintResponse() must be implemented');\r\n },\r\n});\r\n\r\nexport default Batcher;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_common","require","_webexPlugin","_interopRequireDefault","_webexHttpError","Batcher","WebexPlugin","extend","session","deferreds","type","default","_default","_map","queue","derived","bounce","fn","_this","cappedDebounce","executeQueue","apply","arguments","config","batcherWait","maxCalls","batcherMaxCalls","maxWait","batcherMaxWait","request","item","_this2","defer","Defer","fingerprintRequest","then","idx","has","resolve","get","promise","set","prepareItem","req","tap","delete","catch","reason","_promise","reject","enqueue","push","_this3","splice","prepareRequest","payload","submitHttpRequest","res","handleHttpSuccess","WebexHttpError","handleHttpError","all","map","getDeferredForRequest","logger","error","process","env","NODE_ENV","stack","Error","_this4","body","items","acceptItem","_this5","_has2","options","_this6","didItemFail","didFail","handleItemFailure","handleItemSuccess","getDeferredForResponse","_this7","_this8","fingerprintResponse","version","_default2","exports"],"sources":["batcher.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {has} from 'lodash';\nimport {cappedDebounce, Defer, tap} from '@webex/common';\n\nimport WebexPlugin from './webex-plugin';\nimport WebexHttpError from './webex-http-error';\n\n/**\n * Base class for coalescing requests to batched APIs\n * @class Batcher\n */\nconst Batcher = WebexPlugin.extend({\n session: {\n deferreds: {\n type: 'object',\n default() {\n return new Map();\n },\n },\n queue: {\n type: 'array',\n default() {\n return [];\n },\n },\n },\n\n derived: {\n bounce: {\n fn() {\n return cappedDebounce((...args) => this.executeQueue(...args), this.config.batcherWait, {\n maxCalls: this.config.batcherMaxCalls,\n maxWait: this.config.batcherMaxWait,\n });\n },\n },\n },\n\n /**\n * Requests an item from a batched API\n * @param {Object} item\n * @returns {Promise<mixed>}\n */\n request(item) {\n // So far, I can't find a way to avoid three layers of nesting here.\n /* eslint max-nested-callbacks: [0] */\n const defer = new Defer();\n\n this.fingerprintRequest(item)\n .then((idx) => {\n if (this.deferreds.has(idx)) {\n defer.resolve(this.deferreds.get(idx).promise);\n\n return;\n }\n this.deferreds.set(idx, defer);\n this.prepareItem(item)\n .then((req) => {\n defer.promise = defer.promise\n .then(tap(() => this.deferreds.delete(idx)))\n .catch((reason) => {\n this.deferreds.delete(idx);\n\n return Promise.reject(reason);\n });\n\n this.enqueue(req)\n .then(() => this.bounce())\n .catch((reason) => defer.reject(reason));\n })\n .catch((reason) => defer.reject(reason));\n })\n .catch((reason) => defer.reject(reason));\n\n return defer.promise;\n },\n\n /**\n * Adds an item to the queue.\n * Intended to be overridden\n * @param {mixed} req\n * @returns {Promise<undefined>}\n */\n enqueue(req) {\n this.queue.push(req);\n\n return Promise.resolve();\n },\n\n /**\n * Transform the item before adding it to the queue\n * Intended to be overridden\n * @param {mixed} item\n * @returns {Promise<mixed>}\n */\n prepareItem(item) {\n return Promise.resolve(item);\n },\n\n /**\n * Detaches the current queue, does any appropriate transforms, and submits it\n * to the API.\n * @returns {Promise<undefined>}\n */\n executeQueue() {\n const queue = this.queue.splice(0, this.config.batcherMaxCalls);\n\n return new Promise((resolve) => {\n resolve(\n this.prepareRequest(queue)\n .then((payload) =>\n this.submitHttpRequest(payload).then((res) => this.handleHttpSuccess(res))\n )\n .catch((reason) => {\n if (reason instanceof WebexHttpError) {\n return this.handleHttpError(reason);\n }\n\n return Promise.all(\n queue.map((item) =>\n this.getDeferredForRequest(item).then((defer) => {\n defer.reject(reason);\n })\n )\n );\n })\n );\n }).catch((reason) => {\n this.logger.error(process.env.NODE_ENV === 'production' ? reason : reason.stack);\n\n return Promise.reject(reason);\n });\n },\n\n /**\n * Performs any final transforms on the queue before submitting it to the API\n * Intended to be overridden\n * @param {Object|Array} queue\n * @returns {Promise<Object>}\n */\n prepareRequest(queue) {\n return Promise.resolve(queue);\n },\n\n /**\n * Submits the prepared request body to the API.\n * This method *must* be overridden\n * @param {Object} payload\n * @returns {Promise<HttpResponseObject>}\n */\n // eslint-disable-next-line no-unused-vars\n submitHttpRequest(payload) {\n throw new Error('request() must be implemented');\n },\n\n /**\n * Actions taken when the http request returns a success\n * Intended to be overridden\n * @param {Promise<HttpResponseObject>} res\n * @returns {Promise<undefined>}\n */\n handleHttpSuccess(res) {\n return Promise.all(\n ((res.body && res.body.items) || res.body).map((item) => this.acceptItem(item))\n );\n },\n\n /**\n * Actions taken when the http request returns a failure. Typically, this\n * means failing the entire queue, but could be overridden in some\n * implementations to e.g. reenqueue.\n * Intended to be overridden\n * @param {WebexHttpError} reason\n * @returns {Promise<undefined>}\n */\n handleHttpError(reason) {\n if (reason instanceof WebexHttpError) {\n if (has(reason, 'options.body.map')) {\n return Promise.all(\n reason.options.body.map((item) =>\n this.getDeferredForRequest(item).then((defer) => {\n defer.reject(reason);\n })\n )\n );\n }\n }\n this.logger.error('http error handler called without a WebexHttpError object', reason);\n\n return Promise.reject(reason);\n },\n\n /**\n * Determines if the item succeeded or failed and delegates accordingly\n * @param {Object} item\n * @returns {Promise<undefined>}\n */\n acceptItem(item) {\n return this.didItemFail(item).then((didFail) => {\n if (didFail) {\n return this.handleItemFailure(item);\n }\n\n return this.handleItemSuccess(item);\n });\n },\n\n /**\n * Indicates if the specified response item implies a success or a failure\n * Intended to be overridden\n * @param {Object} item\n * @returns {Promise<Boolean>}\n */\n // eslint-disable-next-line no-unused-vars\n didItemFail(item) {\n return Promise.resolve(false);\n },\n\n /**\n * Finds the Defer for the specified item and rejects its promise\n * Intended to be overridden\n * @param {Object} item\n * @returns {Promise<undefined>}\n */\n handleItemFailure(item) {\n return this.getDeferredForResponse(item).then((defer) => {\n defer.reject(item);\n });\n },\n\n /**\n * Finds the Defer for the specified item and resolves its promise\n * Intended to be overridden\n * @param {Object} item\n * @returns {Promise<undefined>}\n */\n handleItemSuccess(item) {\n return this.getDeferredForResponse(item).then((defer) => {\n defer.resolve(item);\n });\n },\n\n /**\n * Returns the Deferred for the specified request item\n * @param {Object} item\n * @returns {Promise<Defer>}\n */\n getDeferredForRequest(item) {\n return this.fingerprintRequest(item).then((idx) => {\n const defer = this.deferreds.get(idx);\n\n /* istanbul ignore if */\n if (!defer) {\n throw new Error('Could not find pending request for received response');\n }\n\n return defer;\n });\n },\n\n /**\n * Returns the Deferred for the specified response item\n * @param {Object} item\n * @returns {Promise<Defer>}\n */\n getDeferredForResponse(item) {\n return this.fingerprintResponse(item).then((idx) => {\n const defer = this.deferreds.get(idx);\n\n /* istanbul ignore if */\n if (!defer) {\n throw new Error('Could not find pending request for received response');\n }\n\n return defer;\n });\n },\n\n /**\n * Generates a unique identifier for the item in a request payload\n * Intended to be overridden\n * Note that overrides must return a primitive.\n * @param {Object} item\n * @returns {Promise<primitive>}\n */\n // eslint-disable-next-line no-unused-vars\n fingerprintRequest(item) {\n throw new Error('fingerprintRequest() must be implemented');\n },\n\n /**\n * Generates a unique identifier for the item in a response payload\n * Intended to be overridden\n * Note that overrides must return a primitive.\n * @param {Object} item\n * @returns {Promise<primitive>}\n */\n // eslint-disable-next-line no-unused-vars\n fingerprintResponse(item) {\n throw new Error('fingerprintResponse() must be implemented');\n },\n});\n\nexport default Batcher;\n"],"mappings":"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"}
|
|
@@ -38,8 +38,8 @@ var _tokenCollection = _interopRequireDefault(require("./token-collection"));
|
|
|
38
38
|
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _obj;
|
|
39
39
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor2(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
40
40
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor2(source, key)); }); } return target; }
|
|
41
|
-
/**
|
|
42
|
-
* @class
|
|
41
|
+
/**
|
|
42
|
+
* @class
|
|
43
43
|
*/
|
|
44
44
|
var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
45
45
|
keyFactory: function keyFactory(scope) {
|
|
@@ -79,12 +79,12 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
79
79
|
default: false,
|
|
80
80
|
type: 'boolean'
|
|
81
81
|
},
|
|
82
|
-
/**
|
|
83
|
-
* Becomes `true` once the {@link loaded} event fires.
|
|
84
|
-
* @see {@link WebexPlugin#ready}
|
|
85
|
-
* @instance
|
|
86
|
-
* @memberof Credentials
|
|
87
|
-
* @type {boolean}
|
|
82
|
+
/**
|
|
83
|
+
* Becomes `true` once the {@link loaded} event fires.
|
|
84
|
+
* @see {@link WebexPlugin#ready}
|
|
85
|
+
* @instance
|
|
86
|
+
* @memberof Credentials
|
|
87
|
+
* @type {boolean}
|
|
88
88
|
*/
|
|
89
89
|
ready: {
|
|
90
90
|
default: false,
|
|
@@ -95,14 +95,14 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
95
95
|
type: 'any'
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
|
-
/**
|
|
99
|
-
* Generates an OAuth Login URL. Prefers the api.ciscospark.com proxy if the
|
|
100
|
-
* instance is initialize with an authorizatUrl, but fallsback to idbroker
|
|
101
|
-
* as the base otherwise.
|
|
102
|
-
* @instance
|
|
103
|
-
* @memberof Credentials
|
|
104
|
-
* @param {Object} [options={}]
|
|
105
|
-
* @returns {string}
|
|
98
|
+
/**
|
|
99
|
+
* Generates an OAuth Login URL. Prefers the api.ciscospark.com proxy if the
|
|
100
|
+
* instance is initialize with an authorizatUrl, but fallsback to idbroker
|
|
101
|
+
* as the base otherwise.
|
|
102
|
+
* @instance
|
|
103
|
+
* @memberof Credentials
|
|
104
|
+
* @param {Object} [options={}]
|
|
105
|
+
* @returns {string}
|
|
106
106
|
*/
|
|
107
107
|
buildLoginUrl: function buildLoginUrl() {
|
|
108
108
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
@@ -130,11 +130,11 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
130
130
|
return "".concat(this.config.authorizeUrl, "?").concat(_querystring.default.stringify(options));
|
|
131
131
|
/* eslint-enable camelcase */
|
|
132
132
|
},
|
|
133
|
-
/**
|
|
134
|
-
* Get the determined OrgId.
|
|
135
|
-
*
|
|
136
|
-
* @throws {Error} - If the OrgId could not be determined.
|
|
137
|
-
* @returns {string} - The OrgId.
|
|
133
|
+
/**
|
|
134
|
+
* Get the determined OrgId.
|
|
135
|
+
*
|
|
136
|
+
* @throws {Error} - If the OrgId could not be determined.
|
|
137
|
+
* @returns {string} - The OrgId.
|
|
138
138
|
*/
|
|
139
139
|
getOrgId: function getOrgId() {
|
|
140
140
|
this.logger.info('credentials: attempting to retrieve the OrgId from token');
|
|
@@ -155,13 +155,13 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
},
|
|
158
|
-
/**
|
|
159
|
-
* Extract the OrgId [realm] from a provided JWT.
|
|
160
|
-
*
|
|
161
|
-
* @private
|
|
162
|
-
* @param {string} token - The JWT to extract the OrgId from.
|
|
163
|
-
* @throws {Error} - If the token does not pass JWT general/realm validation.
|
|
164
|
-
* @returns {string} - The OrgId.
|
|
158
|
+
/**
|
|
159
|
+
* Extract the OrgId [realm] from a provided JWT.
|
|
160
|
+
*
|
|
161
|
+
* @private
|
|
162
|
+
* @param {string} token - The JWT to extract the OrgId from.
|
|
163
|
+
* @throws {Error} - If the token does not pass JWT general/realm validation.
|
|
164
|
+
* @returns {string} - The OrgId.
|
|
165
165
|
*/
|
|
166
166
|
extractOrgIdFromJWT: function extractOrgIdFromJWT() {
|
|
167
167
|
var token = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
@@ -179,13 +179,13 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
179
179
|
// Return the OrgId [realm].
|
|
180
180
|
return decodedJWT.realm;
|
|
181
181
|
},
|
|
182
|
-
/**
|
|
183
|
-
* Extract the OrgId [realm] from a provided user token.
|
|
184
|
-
*
|
|
185
|
-
* @private
|
|
186
|
-
* @param {string} token - The user token to extract the OrgId from.
|
|
187
|
-
* @throws {Error} - Will throw an error if the provided token is invalid.
|
|
188
|
-
* @returns {string} - The OrgId.
|
|
182
|
+
/**
|
|
183
|
+
* Extract the OrgId [realm] from a provided user token.
|
|
184
|
+
*
|
|
185
|
+
* @private
|
|
186
|
+
* @param {string} token - The user token to extract the OrgId from.
|
|
187
|
+
* @throws {Error} - Will throw an error if the provided token is invalid.
|
|
188
|
+
* @returns {string} - The OrgId.
|
|
189
189
|
*/
|
|
190
190
|
extractOrgIdFromUserToken: function extractOrgIdFromUserToken() {
|
|
191
191
|
var token = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
@@ -200,12 +200,12 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
200
200
|
// Return the token section that contains the OrgId.
|
|
201
201
|
return fields[2];
|
|
202
202
|
},
|
|
203
|
-
/**
|
|
204
|
-
* Generates a Logout URL
|
|
205
|
-
* @instance
|
|
206
|
-
* @memberof Credentials
|
|
207
|
-
* @param {Object} [options={}]
|
|
208
|
-
* @returns {[type]}
|
|
203
|
+
/**
|
|
204
|
+
* Generates a Logout URL
|
|
205
|
+
* @instance
|
|
206
|
+
* @memberof Credentials
|
|
207
|
+
* @param {Object} [options={}]
|
|
208
|
+
* @returns {[type]}
|
|
209
209
|
*/
|
|
210
210
|
buildLogoutUrl: function buildLogoutUrl() {
|
|
211
211
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
@@ -214,13 +214,13 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
214
214
|
goto: this.config.redirect_uri
|
|
215
215
|
}, options)));
|
|
216
216
|
},
|
|
217
|
-
/**
|
|
218
|
-
* Generates a number between 60% - 90% of expired value
|
|
219
|
-
* @instance
|
|
220
|
-
* @memberof Credentials
|
|
221
|
-
* @param {number} expiration
|
|
222
|
-
* @private
|
|
223
|
-
* @returns {number}
|
|
217
|
+
/**
|
|
218
|
+
* Generates a number between 60% - 90% of expired value
|
|
219
|
+
* @instance
|
|
220
|
+
* @memberof Credentials
|
|
221
|
+
* @param {number} expiration
|
|
222
|
+
* @private
|
|
223
|
+
* @returns {number}
|
|
224
224
|
*/
|
|
225
225
|
calcRefreshTimeout: function calcRefreshTimeout(expiration) {
|
|
226
226
|
return Math.floor((Math.floor(Math.random() * 4) + 6) / 10 * expiration);
|
|
@@ -241,13 +241,13 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
241
241
|
}
|
|
242
242
|
(0, _apply.default)(_webexPlugin.default, this, args);
|
|
243
243
|
},
|
|
244
|
-
/**
|
|
245
|
-
* Downscopes a token
|
|
246
|
-
* @instance
|
|
247
|
-
* @memberof Credentials
|
|
248
|
-
* @param {string} scope
|
|
249
|
-
* @private
|
|
250
|
-
* @returns {Promise<Token>}
|
|
244
|
+
/**
|
|
245
|
+
* Downscopes a token
|
|
246
|
+
* @instance
|
|
247
|
+
* @memberof Credentials
|
|
248
|
+
* @param {string} scope
|
|
249
|
+
* @private
|
|
250
|
+
* @returns {Promise<Token>}
|
|
251
251
|
*/
|
|
252
252
|
downscope: function downscope(scope) {
|
|
253
253
|
var _this2 = this;
|
|
@@ -261,14 +261,14 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
261
261
|
});
|
|
262
262
|
});
|
|
263
263
|
},
|
|
264
|
-
/**
|
|
265
|
-
* Requests a client credentials grant and returns the token. Given the
|
|
266
|
-
* limited use for such tokens as this time, this method does not cache its
|
|
267
|
-
* token.
|
|
268
|
-
* @instance
|
|
269
|
-
* @memberof Credentials
|
|
270
|
-
* @param {Object} options
|
|
271
|
-
* @returns {Promise<Token>}
|
|
264
|
+
/**
|
|
265
|
+
* Requests a client credentials grant and returns the token. Given the
|
|
266
|
+
* limited use for such tokens as this time, this method does not cache its
|
|
267
|
+
* token.
|
|
268
|
+
* @instance
|
|
269
|
+
* @memberof Credentials
|
|
270
|
+
* @param {Object} options
|
|
271
|
+
* @returns {Promise<Token>}
|
|
272
272
|
*/
|
|
273
273
|
getClientToken: function getClientToken() {
|
|
274
274
|
var _this3 = this;
|
|
@@ -302,14 +302,14 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
302
302
|
return _promise.default.reject(new ErrorConstructor(res._res || res));
|
|
303
303
|
});
|
|
304
304
|
},
|
|
305
|
-
/**
|
|
306
|
-
* Resolves with a token with the specified scopes. If no scope is specified,
|
|
307
|
-
* defaults to omit(webex.credentials.scope, 'spark:kms'). If no such token is
|
|
308
|
-
* available, downscopes the supertoken to that scope.
|
|
309
|
-
* @instance
|
|
310
|
-
* @memberof Credentials
|
|
311
|
-
* @param {string} scope
|
|
312
|
-
* @returns {Promise<Token>}
|
|
305
|
+
/**
|
|
306
|
+
* Resolves with a token with the specified scopes. If no scope is specified,
|
|
307
|
+
* defaults to omit(webex.credentials.scope, 'spark:kms'). If no such token is
|
|
308
|
+
* available, downscopes the supertoken to that scope.
|
|
309
|
+
* @instance
|
|
310
|
+
* @memberof Credentials
|
|
311
|
+
* @param {string} scope
|
|
312
|
+
* @returns {Promise<Token>}
|
|
313
313
|
*/
|
|
314
314
|
getUserToken: function getUserToken(scope) {
|
|
315
315
|
var _this4 = this;
|
|
@@ -343,14 +343,14 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
343
343
|
return _promise.default.resolve(token);
|
|
344
344
|
});
|
|
345
345
|
},
|
|
346
|
-
/**
|
|
347
|
-
* Initializer
|
|
348
|
-
* @instance
|
|
349
|
-
* @memberof Credentials
|
|
350
|
-
* @param {Object} attrs
|
|
351
|
-
* @param {Object} options
|
|
352
|
-
* @private
|
|
353
|
-
* @returns {Credentials}
|
|
346
|
+
/**
|
|
347
|
+
* Initializer
|
|
348
|
+
* @instance
|
|
349
|
+
* @memberof Credentials
|
|
350
|
+
* @param {Object} attrs
|
|
351
|
+
* @param {Object} options
|
|
352
|
+
* @private
|
|
353
|
+
* @returns {Credentials}
|
|
354
354
|
*/
|
|
355
355
|
initialize: function initialize(attrs, options) {
|
|
356
356
|
var _this5 = this;
|
|
@@ -392,14 +392,14 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
392
392
|
_this5.ready = true;
|
|
393
393
|
});
|
|
394
394
|
},
|
|
395
|
-
/**
|
|
396
|
-
* Clears all tokens from store them from the stores.
|
|
397
|
-
*
|
|
398
|
-
* This is no longer quite the right name for this method, but all of the
|
|
399
|
-
* alternatives I'm coming up with are already taken.
|
|
400
|
-
* @instance
|
|
401
|
-
* @memberof Credentials
|
|
402
|
-
* @returns {Promise}
|
|
395
|
+
/**
|
|
396
|
+
* Clears all tokens from store them from the stores.
|
|
397
|
+
*
|
|
398
|
+
* This is no longer quite the right name for this method, but all of the
|
|
399
|
+
* alternatives I'm coming up with are already taken.
|
|
400
|
+
* @instance
|
|
401
|
+
* @memberof Credentials
|
|
402
|
+
* @returns {Promise}
|
|
403
403
|
*/
|
|
404
404
|
invalidate: function invalidate() {
|
|
405
405
|
this.logger.info('credentials: invalidating tokens');
|
|
@@ -427,14 +427,14 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
427
427
|
// localStorage
|
|
428
428
|
return _promise.default.resolve();
|
|
429
429
|
},
|
|
430
|
-
/**
|
|
431
|
-
* Removes the supertoken and child tokens, then refreshes the supertoken;
|
|
432
|
-
* subsequent calls to {@link Credentials#getUserToken()} will re-downscope
|
|
433
|
-
* child tokens. Enqueus revocation of previous previousTokens. Yes, that's
|
|
434
|
-
* the correct number of "previous"es.
|
|
435
|
-
* @instance
|
|
436
|
-
* @memberof Credentials
|
|
437
|
-
* @returns {Promise}
|
|
430
|
+
/**
|
|
431
|
+
* Removes the supertoken and child tokens, then refreshes the supertoken;
|
|
432
|
+
* subsequent calls to {@link Credentials#getUserToken()} will re-downscope
|
|
433
|
+
* child tokens. Enqueus revocation of previous previousTokens. Yes, that's
|
|
434
|
+
* the correct number of "previous"es.
|
|
435
|
+
* @instance
|
|
436
|
+
* @memberof Credentials
|
|
437
|
+
* @returns {Promise}
|
|
438
438
|
*/
|
|
439
439
|
refresh: function refresh() {
|
|
440
440
|
var _this6 = this;
|
|
@@ -499,13 +499,13 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
499
499
|
return _promise.default.reject(error);
|
|
500
500
|
});
|
|
501
501
|
},
|
|
502
|
-
/**
|
|
503
|
-
* Schedules a token refresh or refreshes the token if token has expired
|
|
504
|
-
* @instance
|
|
505
|
-
* @memberof Credentials
|
|
506
|
-
* @param {number} expires
|
|
507
|
-
* @private
|
|
508
|
-
* @returns {undefined}
|
|
502
|
+
/**
|
|
503
|
+
* Schedules a token refresh or refreshes the token if token has expired
|
|
504
|
+
* @instance
|
|
505
|
+
* @memberof Credentials
|
|
506
|
+
* @param {number} expires
|
|
507
|
+
* @private
|
|
508
|
+
* @returns {undefined}
|
|
509
509
|
*/
|
|
510
510
|
scheduleRefresh: function scheduleRefresh(expires) {
|
|
511
511
|
var _this7 = this;
|
|
@@ -519,7 +519,7 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
519
519
|
this.refresh();
|
|
520
520
|
}
|
|
521
521
|
},
|
|
522
|
-
version: "2.59.
|
|
522
|
+
version: "2.59.4"
|
|
523
523
|
}, ((0, _applyDecoratedDescriptor2.default)(_obj, "getUserToken", [_dec, _dec2], (0, _getOwnPropertyDescriptor.default)(_obj, "getUserToken"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "initialize", [_dec3], (0, _getOwnPropertyDescriptor.default)(_obj, "initialize"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "invalidate", [_common.oneFlight, _dec4], (0, _getOwnPropertyDescriptor.default)(_obj, "invalidate"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "refresh", [_common.oneFlight, _dec5, _dec6], (0, _getOwnPropertyDescriptor.default)(_obj, "refresh"), _obj)), _obj)));
|
|
524
524
|
var _default = Credentials;
|
|
525
525
|
exports.default = _default;
|