@webex/webex-core 3.8.0-next.22 → 3.8.0-next.24
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/dist/lib/batcher.js +1 -1
- package/dist/lib/credentials/credentials.js +1 -1
- package/dist/lib/credentials/token.js +1 -1
- package/dist/lib/services/services.js +1 -1
- package/dist/lib/services-v2/service-catalog.js +98 -181
- package/dist/lib/services-v2/service-catalog.js.map +1 -1
- package/dist/lib/services-v2/services-v2.js +1 -1
- package/dist/lib/services-v2/types.js.map +1 -1
- package/dist/plugins/logger.js +1 -1
- package/dist/webex-core.js +2 -2
- package/package.json +13 -13
- package/src/lib/services-v2/service-catalog.ts +79 -168
- package/src/lib/services-v2/types.ts +1 -0
- package/test/integration/spec/services/services.js +12 -10
- package/test/unit/spec/services-v2/service-catalog.ts +288 -0
- package/test/unit/spec/services-v2/{services-v2.js → services-v2.ts} +1 -1
- /package/test/fixtures/{host-catalog-v2.js → host-catalog-v2.ts} +0 -0
package/dist/lib/batcher.js
CHANGED
|
@@ -286,7 +286,7 @@ var Batcher = _webexPlugin.default.extend({
|
|
|
286
286
|
fingerprintResponse: function fingerprintResponse(item) {
|
|
287
287
|
throw new Error('fingerprintResponse() must be implemented');
|
|
288
288
|
},
|
|
289
|
-
version: "3.8.0-next.
|
|
289
|
+
version: "3.8.0-next.24"
|
|
290
290
|
});
|
|
291
291
|
var _default2 = exports.default = Batcher;
|
|
292
292
|
//# sourceMappingURL=batcher.js.map
|
|
@@ -558,7 +558,7 @@ var Credentials = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
558
558
|
this.refresh();
|
|
559
559
|
}
|
|
560
560
|
},
|
|
561
|
-
version: "3.8.0-next.
|
|
561
|
+
version: "3.8.0-next.24"
|
|
562
562
|
}, ((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)));
|
|
563
563
|
var _default = exports.default = Credentials;
|
|
564
564
|
//# sourceMappingURL=credentials.js.map
|
|
@@ -532,7 +532,7 @@ var Token = _webexPlugin.default.extend((_dec = (0, _common.oneFlight)({
|
|
|
532
532
|
return res.body;
|
|
533
533
|
});
|
|
534
534
|
},
|
|
535
|
-
version: "3.8.0-next.
|
|
535
|
+
version: "3.8.0-next.24"
|
|
536
536
|
}, ((0, _applyDecoratedDescriptor2.default)(_obj, "downscope", [_dec], (0, _getOwnPropertyDescriptor.default)(_obj, "downscope"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "refresh", [_common.oneFlight], (0, _getOwnPropertyDescriptor.default)(_obj, "refresh"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "revoke", [_common.oneFlight], (0, _getOwnPropertyDescriptor.default)(_obj, "revoke"), _obj)), _obj)));
|
|
537
537
|
var _default = exports.default = Token;
|
|
538
538
|
//# sourceMappingURL=token.js.map
|
|
@@ -4,31 +4,20 @@ var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
|
|
|
4
4
|
var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
|
|
5
5
|
var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
|
|
6
6
|
var _Array$isArray = require("@babel/runtime-corejs2/core-js/array/is-array");
|
|
7
|
-
var _Object$keys3 = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
8
|
-
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
9
|
-
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
10
|
-
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
11
|
-
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
12
7
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
13
8
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
14
9
|
_Object$defineProperty(exports, "__esModule", {
|
|
15
10
|
value: true
|
|
16
11
|
});
|
|
17
12
|
exports.default = void 0;
|
|
18
|
-
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
19
13
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
20
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
21
14
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
|
|
22
|
-
var _url = _interopRequireDefault(require("url"));
|
|
23
15
|
var _ampersandState = _interopRequireDefault(require("ampersand-state"));
|
|
24
16
|
var _lodash = require("lodash");
|
|
25
17
|
var _serviceDetail = _interopRequireDefault(require("./service-detail"));
|
|
26
|
-
function ownKeys(e, r) { var t = _Object$keys3(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
27
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
28
18
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
29
19
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
30
20
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
31
|
-
/* eslint-disable no-underscore-dangle */
|
|
32
21
|
/**
|
|
33
22
|
* @class
|
|
34
23
|
*/
|
|
@@ -75,40 +64,41 @@ var ServiceCatalog = _ampersandState.default.extend({
|
|
|
75
64
|
},
|
|
76
65
|
/**
|
|
77
66
|
* @private
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
* @
|
|
81
|
-
* @param {string} [serviceGroup]
|
|
82
|
-
* @returns {IServiceDetail}
|
|
67
|
+
* Get all service details for a given service group or return all details if no group is specified.
|
|
68
|
+
* @param {string} serviceGroup - The name of the service group to retrieve details for.
|
|
69
|
+
* @returns {Array<IServiceDetail>} - An array of service details.
|
|
83
70
|
*/
|
|
84
|
-
|
|
85
|
-
var
|
|
86
|
-
return
|
|
87
|
-
return serviceUrl.serviceName === name;
|
|
88
|
-
});
|
|
71
|
+
_getAllServiceDetails: function _getAllServiceDetails(serviceGroup) {
|
|
72
|
+
var serviceDetails = typeof serviceGroup === 'string' ? this.serviceGroups[serviceGroup] || [] : [].concat((0, _toConsumableArray2.default)(this.serviceGroups.override), (0, _toConsumableArray2.default)(this.serviceGroups.postauth), (0, _toConsumableArray2.default)(this.serviceGroups.signin), (0, _toConsumableArray2.default)(this.serviceGroups.preauth), (0, _toConsumableArray2.default)(this.serviceGroups.discovery));
|
|
73
|
+
return serviceDetails;
|
|
89
74
|
},
|
|
90
75
|
/**
|
|
91
76
|
* @private
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* @
|
|
77
|
+
* Search the service details array to locate a `ServiceDetails`
|
|
78
|
+
* class object based on its id.
|
|
79
|
+
* @param {string} clusterId
|
|
80
|
+
* @param {string} [serviceGroup]
|
|
81
|
+
* @returns {IServiceDetail}
|
|
95
82
|
*/
|
|
96
|
-
|
|
97
|
-
|
|
83
|
+
_getServiceDetail: function _getServiceDetail(clusterId, serviceGroup) {
|
|
84
|
+
var serviceDetails = this._getAllServiceDetails(serviceGroup);
|
|
85
|
+
return serviceDetails.find(function (serviceDetail) {
|
|
86
|
+
return serviceDetail.id === clusterId;
|
|
87
|
+
});
|
|
98
88
|
},
|
|
99
89
|
/**
|
|
100
90
|
* @private
|
|
101
|
-
* Safely load one or more `ServiceDetail`s into this `
|
|
91
|
+
* Safely load one or more `ServiceDetail`s into this `ServiceCatalog` instance.
|
|
102
92
|
* @param {string} serviceGroup
|
|
103
|
-
* @param {Array<
|
|
104
|
-
* @returns {
|
|
93
|
+
* @param {Array<ServiceDetail>} serviceDetails
|
|
94
|
+
* @returns {void}
|
|
105
95
|
*/
|
|
106
|
-
|
|
96
|
+
_loadServiceDetails: function _loadServiceDetails(serviceGroup, serviceDetails) {
|
|
107
97
|
var _this = this;
|
|
108
98
|
// declare namespaces outside of loop
|
|
109
99
|
var existingService;
|
|
110
|
-
|
|
111
|
-
existingService = _this.
|
|
100
|
+
serviceDetails.forEach(function (service) {
|
|
101
|
+
existingService = _this._getServiceDetail(service.id, serviceGroup);
|
|
112
102
|
if (!existingService) {
|
|
113
103
|
_this.serviceGroups[serviceGroup].push(service);
|
|
114
104
|
}
|
|
@@ -118,15 +108,15 @@ var ServiceCatalog = _ampersandState.default.extend({
|
|
|
118
108
|
* @private
|
|
119
109
|
* Safely unload one or more `ServiceDetail`s into this `Services` instance
|
|
120
110
|
* @param {string} serviceGroup
|
|
121
|
-
* @param {Array<
|
|
122
|
-
* @returns {
|
|
111
|
+
* @param {Array<ServiceDetail>} serviceDetails
|
|
112
|
+
* @returns {void}
|
|
123
113
|
*/
|
|
124
|
-
|
|
114
|
+
_unloadServiceDetails: function _unloadServiceDetails(serviceGroup, serviceDetails) {
|
|
125
115
|
var _this2 = this;
|
|
126
116
|
// declare namespaces outside of loop
|
|
127
117
|
var existingService;
|
|
128
|
-
|
|
129
|
-
existingService = _this2.
|
|
118
|
+
serviceDetails.forEach(function (service) {
|
|
119
|
+
existingService = _this2._getServiceDetail(service.id, serviceGroup);
|
|
130
120
|
if (existingService) {
|
|
131
121
|
_this2.serviceGroups[serviceGroup].splice(_this2.serviceGroups[serviceGroup].indexOf(existingService), 1);
|
|
132
122
|
}
|
|
@@ -155,91 +145,43 @@ var ServiceCatalog = _ampersandState.default.extend({
|
|
|
155
145
|
* Search over all service groups to find a cluster id based
|
|
156
146
|
* on a given url.
|
|
157
147
|
* @param {string} url - Must be parsable by `Url`
|
|
158
|
-
* @returns {string} - ClusterId of a given url
|
|
148
|
+
* @returns {string | undefined} - ClusterId of a given url
|
|
159
149
|
*/
|
|
160
150
|
findClusterId: function findClusterId(url) {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
var
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
175
|
-
var _host = _step2.value;
|
|
176
|
-
if (incomingUrlObj.hostname === _host.host && _host.id) {
|
|
177
|
-
return _host.id;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
} catch (err) {
|
|
181
|
-
_iterator2.e(err);
|
|
182
|
-
} finally {
|
|
183
|
-
_iterator2.f();
|
|
184
|
-
}
|
|
185
|
-
if (serviceUrlObj.hostname === incomingUrlObj.hostname && service.hosts.length > 0) {
|
|
186
|
-
// no exact match, so try to grab the first home cluster
|
|
187
|
-
var _iterator3 = _createForOfIteratorHelper(service.hosts),
|
|
188
|
-
_step3;
|
|
189
|
-
try {
|
|
190
|
-
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
191
|
-
var host = _step3.value;
|
|
192
|
-
if (host.homeCluster) {
|
|
193
|
-
return host.id;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// no match found still, so return the first entry
|
|
198
|
-
} catch (err) {
|
|
199
|
-
_iterator3.e(err);
|
|
200
|
-
} finally {
|
|
201
|
-
_iterator3.f();
|
|
202
|
-
}
|
|
203
|
-
return service.hosts[0].id;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
} catch (err) {
|
|
207
|
-
_iterator.e(err);
|
|
208
|
-
} finally {
|
|
209
|
-
_iterator.f();
|
|
210
|
-
}
|
|
151
|
+
try {
|
|
152
|
+
var _allServiceDetails$fi;
|
|
153
|
+
var incomingUrlObj = new URL(url);
|
|
154
|
+
var allServiceDetails = this._getAllServiceDetails();
|
|
155
|
+
return (_allServiceDetails$fi = allServiceDetails.find(function (serviceDetail) {
|
|
156
|
+
return serviceDetail.serviceUrls.find(function (_ref) {
|
|
157
|
+
var host = _ref.host;
|
|
158
|
+
return host === incomingUrlObj.host;
|
|
159
|
+
});
|
|
160
|
+
})) === null || _allServiceDetails$fi === void 0 ? void 0 : _allServiceDetails$fi.id;
|
|
161
|
+
} catch (_unused) {
|
|
162
|
+
// If the URL is invalid or can't be found, return undefined
|
|
163
|
+
return undefined;
|
|
211
164
|
}
|
|
212
|
-
return undefined;
|
|
213
165
|
},
|
|
214
166
|
/**
|
|
215
167
|
* Search over all service groups and return a service value from a provided
|
|
216
|
-
* clusterId.
|
|
217
|
-
* service url depending on the `value` parameter. If the `value` parameter
|
|
218
|
-
* is set to `name`, it will return a service name to be utilized within the
|
|
219
|
-
* Services plugin methods.
|
|
168
|
+
* clusterId.
|
|
220
169
|
* @param {object} params
|
|
221
170
|
* @param {string} params.clusterId - clusterId of found service
|
|
222
|
-
* @param {boolean} [params.priorityHost = true] - returns priority host url if true
|
|
223
171
|
* @param {string} [params.serviceGroup] - specify service group
|
|
224
172
|
* @returns {object} service
|
|
225
173
|
* @returns {string} service.name
|
|
226
174
|
* @returns {string} service.url
|
|
227
175
|
*/
|
|
228
|
-
findServiceFromClusterId: function findServiceFromClusterId(
|
|
229
|
-
var
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
var identifiedServiceUrl = serviceUrls.find(function (serviceUrl) {
|
|
235
|
-
return serviceUrl.hosts.find(function (host) {
|
|
236
|
-
return host.id === clusterId;
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
if (identifiedServiceUrl) {
|
|
176
|
+
findServiceFromClusterId: function findServiceFromClusterId() {
|
|
177
|
+
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
178
|
+
clusterId = _ref2.clusterId,
|
|
179
|
+
serviceGroup = _ref2.serviceGroup;
|
|
180
|
+
var serviceDetails = this._getServiceDetail(clusterId, serviceGroup);
|
|
181
|
+
if (serviceDetails) {
|
|
240
182
|
return {
|
|
241
|
-
name:
|
|
242
|
-
url:
|
|
183
|
+
name: serviceDetails.serviceName,
|
|
184
|
+
url: serviceDetails.get()
|
|
243
185
|
};
|
|
244
186
|
}
|
|
245
187
|
return undefined;
|
|
@@ -249,32 +191,23 @@ var ServiceCatalog = _ampersandState.default.extend({
|
|
|
249
191
|
* @param {string} url - Must be parsable by `Url`
|
|
250
192
|
* @returns {IServiceDetail} - ServiceDetail assocated with provided url
|
|
251
193
|
*/
|
|
252
|
-
|
|
253
|
-
var
|
|
254
|
-
return
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
// If not, we check to see if the alternate URLs match
|
|
261
|
-
// These are made by swapping the host of the default URL
|
|
262
|
-
// with that of an alternate host
|
|
263
|
-
var _iterator4 = _createForOfIteratorHelper(serviceUrl.hosts),
|
|
264
|
-
_step4;
|
|
194
|
+
findServiceDetailFromUrl: function findServiceDetailFromUrl(url) {
|
|
195
|
+
var serviceDetails = this._getAllServiceDetails();
|
|
196
|
+
return serviceDetails.find(function (_ref3) {
|
|
197
|
+
var serviceUrls = _ref3.serviceUrls;
|
|
198
|
+
var _iterator = _createForOfIteratorHelper(serviceUrls),
|
|
199
|
+
_step;
|
|
265
200
|
try {
|
|
266
|
-
for (
|
|
267
|
-
var
|
|
268
|
-
|
|
269
|
-
alternateUrl.host = host.host;
|
|
270
|
-
if (url.startsWith(alternateUrl.toString())) {
|
|
201
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
202
|
+
var serviceUrl = _step.value;
|
|
203
|
+
if (url.startsWith(serviceUrl.baseUrl)) {
|
|
271
204
|
return true;
|
|
272
205
|
}
|
|
273
206
|
}
|
|
274
207
|
} catch (err) {
|
|
275
|
-
|
|
208
|
+
_iterator.e(err);
|
|
276
209
|
} finally {
|
|
277
|
-
|
|
210
|
+
_iterator.f();
|
|
278
211
|
}
|
|
279
212
|
return false;
|
|
280
213
|
});
|
|
@@ -286,24 +219,25 @@ var ServiceCatalog = _ampersandState.default.extend({
|
|
|
286
219
|
* @returns {string} - The matching allowed domain.
|
|
287
220
|
*/
|
|
288
221
|
findAllowedDomain: function findAllowedDomain(url) {
|
|
289
|
-
|
|
290
|
-
|
|
222
|
+
try {
|
|
223
|
+
var urlObj = new URL(url);
|
|
224
|
+
return this.allowedDomains.find(function (allowedDomain) {
|
|
225
|
+
return urlObj.host.includes(allowedDomain);
|
|
226
|
+
});
|
|
227
|
+
} catch (_unused2) {
|
|
228
|
+
// If the URL is invalid or can't be found, return undefined
|
|
291
229
|
return undefined;
|
|
292
230
|
}
|
|
293
|
-
return this.allowedDomains.find(function (allowedDomain) {
|
|
294
|
-
return urlObj.host.includes(allowedDomain);
|
|
295
|
-
});
|
|
296
231
|
},
|
|
297
232
|
/**
|
|
298
233
|
* Get a service url from the current services list by name.
|
|
299
|
-
* @param {string}
|
|
300
|
-
* @param {boolean} priorityHost
|
|
234
|
+
* @param {string} clusterId
|
|
301
235
|
* @param {string} serviceGroup
|
|
302
236
|
* @returns {string}
|
|
303
237
|
*/
|
|
304
|
-
get: function get(
|
|
305
|
-
var
|
|
306
|
-
return
|
|
238
|
+
get: function get(clusterId, serviceGroup) {
|
|
239
|
+
var serviceDetail = this._getServiceDetail(clusterId, serviceGroup);
|
|
240
|
+
return serviceDetail ? serviceDetail.get() : undefined;
|
|
307
241
|
},
|
|
308
242
|
/**
|
|
309
243
|
* Get the current allowed domains list.
|
|
@@ -313,23 +247,6 @@ var ServiceCatalog = _ampersandState.default.extend({
|
|
|
313
247
|
getAllowedDomains: function getAllowedDomains() {
|
|
314
248
|
return (0, _toConsumableArray2.default)(this.allowedDomains);
|
|
315
249
|
},
|
|
316
|
-
/**
|
|
317
|
-
* Creates an object where the keys are the service names
|
|
318
|
-
* and the values are the service urls.
|
|
319
|
-
* @param {boolean} priorityHost - use the highest priority if set to `true`
|
|
320
|
-
* @param {string} [serviceGroup]
|
|
321
|
-
* @returns {Record<string, string>}
|
|
322
|
-
*/
|
|
323
|
-
list: function list(priorityHost, serviceGroup) {
|
|
324
|
-
var output = {};
|
|
325
|
-
var serviceUrls = typeof serviceGroup === 'string' ? this.serviceGroups[serviceGroup] || [] : [].concat((0, _toConsumableArray2.default)(this.serviceGroups.discovery), (0, _toConsumableArray2.default)(this.serviceGroups.preauth), (0, _toConsumableArray2.default)(this.serviceGroups.signin), (0, _toConsumableArray2.default)(this.serviceGroups.postauth), (0, _toConsumableArray2.default)(this.serviceGroups.override));
|
|
326
|
-
if (serviceUrls) {
|
|
327
|
-
serviceUrls.forEach(function (serviceUrl) {
|
|
328
|
-
output[serviceUrl.name] = serviceUrl.get(priorityHost);
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
return output;
|
|
332
|
-
},
|
|
333
250
|
/**
|
|
334
251
|
* Mark a priority host service url as failed.
|
|
335
252
|
* This will mark the host associated with the
|
|
@@ -340,19 +257,19 @@ var ServiceCatalog = _ampersandState.default.extend({
|
|
|
340
257
|
* hosts are available, or if `noPriorityHosts` is set to
|
|
341
258
|
* `true`.
|
|
342
259
|
* @param {string} url
|
|
343
|
-
* @param {boolean} noPriorityHosts
|
|
344
260
|
* @returns {string}
|
|
345
261
|
*/
|
|
346
|
-
|
|
347
|
-
var
|
|
348
|
-
var
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
if
|
|
262
|
+
markFailedServiceUrl: function markFailedServiceUrl(url) {
|
|
263
|
+
var serviceDetails = this._getAllServiceDetails();
|
|
264
|
+
var serviceDetailWithFailedHost = serviceDetails.find(function (serviceDetail) {
|
|
265
|
+
return serviceDetail.failHost(url);
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
// if we couldn't find the url we wanted to fail, return undefined
|
|
269
|
+
if (!serviceDetailWithFailedHost) {
|
|
353
270
|
return undefined;
|
|
354
271
|
}
|
|
355
|
-
return
|
|
272
|
+
return serviceDetailWithFailedHost.get();
|
|
356
273
|
},
|
|
357
274
|
/**
|
|
358
275
|
* Set the allowed domains for the catalog.
|
|
@@ -377,24 +294,25 @@ var ServiceCatalog = _ampersandState.default.extend({
|
|
|
377
294
|
* @emits ServiceCatalog#preauthorized
|
|
378
295
|
* @emits ServiceCatalog#postauthorized
|
|
379
296
|
* @param {string} serviceGroup
|
|
380
|
-
* @param {
|
|
297
|
+
* @param {Array<IServiceDetail>} serviceDetails
|
|
381
298
|
* @returns {void}
|
|
382
299
|
*/
|
|
383
|
-
|
|
384
|
-
var
|
|
385
|
-
var
|
|
386
|
-
var
|
|
387
|
-
return
|
|
388
|
-
|
|
300
|
+
updateServiceGroups: function updateServiceGroups(serviceGroup, serviceDetails) {
|
|
301
|
+
var _this3 = this;
|
|
302
|
+
var currentServiceDetails = this.serviceGroups[serviceGroup];
|
|
303
|
+
var unusedServicesDetails = currentServiceDetails.filter(function (serviceDetail) {
|
|
304
|
+
return serviceDetails.every(function (_ref4) {
|
|
305
|
+
var id = _ref4.id;
|
|
306
|
+
return id !== serviceDetail.id;
|
|
389
307
|
});
|
|
390
308
|
});
|
|
391
|
-
this.
|
|
392
|
-
|
|
393
|
-
var
|
|
394
|
-
if (
|
|
395
|
-
|
|
309
|
+
this._unloadServiceDetails(serviceGroup, unusedServicesDetails);
|
|
310
|
+
serviceDetails.forEach(function (serviceObj) {
|
|
311
|
+
var serviceDetail = _this3._getServiceDetail(serviceObj.id, serviceGroup);
|
|
312
|
+
if (serviceDetail) {
|
|
313
|
+
serviceDetail.serviceUrls = serviceObj.serviceUrls || [];
|
|
396
314
|
} else {
|
|
397
|
-
|
|
315
|
+
_this3._loadServiceDetails(serviceGroup, [new _serviceDetail.default(serviceObj)]);
|
|
398
316
|
}
|
|
399
317
|
});
|
|
400
318
|
this.status[serviceGroup].ready = true;
|
|
@@ -408,22 +326,21 @@ var ServiceCatalog = _ampersandState.default.extend({
|
|
|
408
326
|
* @returns {Promise<void>}
|
|
409
327
|
*/
|
|
410
328
|
waitForCatalog: function waitForCatalog(serviceGroup, timeout) {
|
|
411
|
-
var
|
|
329
|
+
var _this4 = this;
|
|
412
330
|
return new _promise.default(function (resolve, reject) {
|
|
413
|
-
if (
|
|
331
|
+
if (_this4.status[serviceGroup].ready) {
|
|
414
332
|
resolve();
|
|
415
333
|
}
|
|
416
334
|
var validatedTimeout = typeof timeout === 'number' && timeout >= 0 ? timeout : 60;
|
|
417
335
|
var timeoutTimer = setTimeout(function () {
|
|
418
336
|
return reject(new Error("services: timeout occured while waiting for '".concat(serviceGroup, "' catalog to populate")));
|
|
419
337
|
}, validatedTimeout * 1000);
|
|
420
|
-
|
|
338
|
+
_this4.once(serviceGroup, function () {
|
|
421
339
|
clearTimeout(timeoutTimer);
|
|
422
340
|
resolve();
|
|
423
341
|
});
|
|
424
342
|
});
|
|
425
343
|
}
|
|
426
344
|
});
|
|
427
|
-
/* eslint-enable no-underscore-dangle */
|
|
428
345
|
var _default = exports.default = ServiceCatalog;
|
|
429
346
|
//# sourceMappingURL=service-catalog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_url","_interopRequireDefault","require","_ampersandState","_lodash","_serviceDetail","ownKeys","e","r","t","_Object$keys3","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createForOfIteratorHelper","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","i","F","s","n","done","value","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","ServiceCatalog","AmpState","extend","namespace","props","serviceGroups","discovery","override","preauth","postauth","signin","status","ready","collecting","isReady","allowedDomains","_getUrl","serviceGroup","serviceUrls","concat","_toConsumableArray2","find","serviceUrl","serviceName","_listServiceUrls","_loadServiceUrls","services","_this","existingService","service","_unloadServiceUrls","_this2","splice","indexOf","clean","findClusterId","url","incomingUrlObj","Url","parse","serviceUrlObj","_i","_Object$keys","_keys","key","_iterator","_step","defaultUrl","_iterator2","hosts","_step2","host","hostname","id","_iterator3","_step3","homeCluster","undefined","findServiceFromClusterId","_ref","clusterId","_ref$priorityHost","priorityHost","identifiedServiceUrl","get","findServiceUrlFromUrl","startsWith","_iterator4","_step4","alternateUrl","URL","findAllowedDomain","urlObj","allowedDomain","includes","getAllowedDomains","list","output","markFailedUrl","_this3","noPriorityHosts","failHost","setAllowedDomains","addAllowedDomains","newAllowedDomains","union","updateServiceUrls","serviceHostmap","_this4","currentServiceUrls","unusedUrls","every","item","serviceObj","ServiceDetail","trigger","waitForCatalog","timeout","_this5","_promise","resolve","reject","validatedTimeout","timeoutTimer","setTimeout","Error","once","clearTimeout","_default","exports"],"sources":["service-catalog.ts"],"sourcesContent":["import Url from 'url';\n\nimport AmpState from 'ampersand-state';\n\nimport {union} from 'lodash';\nimport ServiceDetail from './service-detail';\nimport {IServiceDetail} from './types';\n\n/* eslint-disable no-underscore-dangle */\n/**\n * @class\n */\nconst ServiceCatalog = AmpState.extend({\n namespace: 'ServiceCatalog',\n\n props: {\n serviceGroups: [\n 'object',\n true,\n () => ({\n discovery: [],\n override: [],\n preauth: [],\n postauth: [],\n signin: [],\n }),\n ],\n status: [\n 'object',\n true,\n () => ({\n discovery: {\n ready: false,\n collecting: false,\n },\n override: {\n ready: false,\n collecting: false,\n },\n preauth: {\n ready: false,\n collecting: false,\n },\n postauth: {\n ready: false,\n collecting: false,\n },\n signin: {\n ready: false,\n collecting: false,\n },\n }),\n ],\n isReady: ['boolean', false, false],\n allowedDomains: ['array', false, () => []],\n },\n\n /**\n * @private\n * Search the service url array to locate a `ServiceDetail`\n * class object based on its name.\n * @param {string} name\n * @param {string} [serviceGroup]\n * @returns {IServiceDetail}\n */\n _getUrl(name: string, serviceGroup: string): IServiceDetail | undefined {\n const serviceUrls =\n typeof serviceGroup === 'string'\n ? this.serviceGroups[serviceGroup] || []\n : [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery,\n ];\n\n return serviceUrls.find((serviceUrl: IServiceDetail) => serviceUrl.serviceName === name);\n },\n\n /**\n * @private\n * Generate an array of `ServiceDetail`s that is organized from highest auth\n * level to lowest auth level.\n * @returns {Array<IServiceDetail>} - array of `ServiceDetail`s\n */\n _listServiceUrls(): Array<IServiceDetail> {\n return [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery,\n ];\n },\n\n /**\n * @private\n * Safely load one or more `ServiceDetail`s into this `Services` instance.\n * @param {string} serviceGroup\n * @param {Array<IServiceDetail>} services\n * @returns {Services}\n */\n _loadServiceUrls(serviceGroup: string, services: Array<IServiceDetail>): void {\n // declare namespaces outside of loop\n let existingService: IServiceDetail | undefined;\n\n services.forEach((service) => {\n existingService = this._getUrl(service.serviceName, serviceGroup);\n\n if (!existingService) {\n this.serviceGroups[serviceGroup].push(service);\n }\n });\n },\n\n /**\n * @private\n * Safely unload one or more `ServiceDetail`s into this `Services` instance\n * @param {string} serviceGroup\n * @param {Array<IServiceDetail>} services\n * @returns {Services}\n */\n _unloadServiceUrls(serviceGroup: string, services: Array<IServiceDetail>): void {\n // declare namespaces outside of loop\n let existingService: IServiceDetail | undefined;\n\n services.forEach((service) => {\n existingService = this._getUrl(service.serviceName, serviceGroup);\n\n if (existingService) {\n this.serviceGroups[serviceGroup].splice(\n this.serviceGroups[serviceGroup].indexOf(existingService),\n 1\n );\n }\n });\n },\n\n /**\n * Clear all collected catalog data and reset catalog status.\n *\n * @returns {void}\n */\n clean(): void {\n this.serviceGroups.preauth.length = 0;\n this.serviceGroups.signin.length = 0;\n this.serviceGroups.postauth.length = 0;\n this.status.preauth = {ready: false};\n this.status.signin = {ready: false};\n this.status.postauth = {ready: false};\n },\n\n /**\n * Search over all service groups to find a cluster id based\n * on a given url.\n * @param {string} url - Must be parsable by `Url`\n * @returns {string} - ClusterId of a given url\n */\n findClusterId(url: string): string | undefined {\n const incomingUrlObj = Url.parse(url);\n let serviceUrlObj;\n\n for (const key of Object.keys(this.serviceGroups)) {\n for (const service of this.serviceGroups[key]) {\n serviceUrlObj = Url.parse(service.defaultUrl);\n\n for (const host of service.hosts) {\n if (incomingUrlObj.hostname === host.host && host.id) {\n return host.id;\n }\n }\n\n if (serviceUrlObj.hostname === incomingUrlObj.hostname && service.hosts.length > 0) {\n // no exact match, so try to grab the first home cluster\n for (const host of service.hosts) {\n if (host.homeCluster) {\n return host.id;\n }\n }\n\n // no match found still, so return the first entry\n return service.hosts[0].id;\n }\n }\n }\n\n return undefined;\n },\n\n /**\n * Search over all service groups and return a service value from a provided\n * clusterId. Currently, this method will return either a service name, or a\n * service url depending on the `value` parameter. If the `value` parameter\n * is set to `name`, it will return a service name to be utilized within the\n * Services plugin methods.\n * @param {object} params\n * @param {string} params.clusterId - clusterId of found service\n * @param {boolean} [params.priorityHost = true] - returns priority host url if true\n * @param {string} [params.serviceGroup] - specify service group\n * @returns {object} service\n * @returns {string} service.name\n * @returns {string} service.url\n */\n findServiceFromClusterId({clusterId, priorityHost = true, serviceGroup}) {\n const serviceUrls =\n typeof serviceGroup === 'string'\n ? this.serviceGroups[serviceGroup] || []\n : [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery,\n ];\n\n const identifiedServiceUrl = serviceUrls.find((serviceUrl) =>\n serviceUrl.hosts.find((host) => host.id === clusterId)\n );\n\n if (identifiedServiceUrl) {\n return {\n name: identifiedServiceUrl.name,\n url: identifiedServiceUrl.get(priorityHost, clusterId),\n };\n }\n\n return undefined;\n },\n\n /**\n * Find a service based on the provided url.\n * @param {string} url - Must be parsable by `Url`\n * @returns {IServiceDetail} - ServiceDetail assocated with provided url\n */\n findServiceUrlFromUrl(url: string): IServiceDetail | undefined {\n const serviceUrls = [\n ...this.serviceGroups.discovery,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.override,\n ];\n\n return serviceUrls.find((serviceUrl) => {\n // Check to see if the URL we are checking starts with the default URL\n if (url.startsWith(serviceUrl.defaultUrl)) {\n return true;\n }\n\n // If not, we check to see if the alternate URLs match\n // These are made by swapping the host of the default URL\n // with that of an alternate host\n for (const host of serviceUrl.hosts) {\n const alternateUrl = new URL(serviceUrl.defaultUrl);\n alternateUrl.host = host.host;\n\n if (url.startsWith(alternateUrl.toString())) {\n return true;\n }\n }\n\n return false;\n });\n },\n\n /**\n * Finds an allowed domain that matches a specific url.\n *\n * @param {string} url - The url to match the allowed domains against.\n * @returns {string} - The matching allowed domain.\n */\n findAllowedDomain(url: string): string {\n const urlObj = Url.parse(url);\n\n if (!urlObj.host) {\n return undefined;\n }\n\n return this.allowedDomains.find((allowedDomain) => urlObj.host.includes(allowedDomain));\n },\n\n /**\n * Get a service url from the current services list by name.\n * @param {string} name\n * @param {boolean} priorityHost\n * @param {string} serviceGroup\n * @returns {string}\n */\n get(name: string, priorityHost: boolean, serviceGroup: string): string | undefined {\n const serviceUrl = this._getUrl(name, serviceGroup);\n\n return serviceUrl ? serviceUrl.get(priorityHost) : undefined;\n },\n\n /**\n * Get the current allowed domains list.\n *\n * @returns {Array<string>} - the current allowed domains list.\n */\n getAllowedDomains(): Array<string> {\n return [...this.allowedDomains];\n },\n\n /**\n * Creates an object where the keys are the service names\n * and the values are the service urls.\n * @param {boolean} priorityHost - use the highest priority if set to `true`\n * @param {string} [serviceGroup]\n * @returns {Record<string, string>}\n */\n list(priorityHost, serviceGroup) {\n const output = {};\n\n const serviceUrls =\n typeof serviceGroup === 'string'\n ? this.serviceGroups[serviceGroup] || []\n : [\n ...this.serviceGroups.discovery,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.override,\n ];\n\n if (serviceUrls) {\n serviceUrls.forEach((serviceUrl) => {\n output[serviceUrl.name] = serviceUrl.get(priorityHost);\n });\n }\n\n return output;\n },\n\n /**\n * Mark a priority host service url as failed.\n * This will mark the host associated with the\n * `ServiceDetail` to be removed from the its\n * respective host array, and then return the next\n * viable host from the `ServiceDetail` host array,\n * or the `ServiceDetail` default url if no other priority\n * hosts are available, or if `noPriorityHosts` is set to\n * `true`.\n * @param {string} url\n * @param {boolean} noPriorityHosts\n * @returns {string}\n */\n markFailedUrl(url: string, noPriorityHosts = false): string | undefined {\n const serviceUrl = this._getUrl(\n Object.keys(this.list()).find((key) => this._getUrl(key).failHost(url))\n );\n\n if (!serviceUrl) {\n return undefined;\n }\n\n return noPriorityHosts ? serviceUrl.get(false) : serviceUrl.get(true);\n },\n\n /**\n * Set the allowed domains for the catalog.\n *\n * @param {Array<string>} allowedDomains - allowed domains to be assigned.\n * @returns {void}\n */\n setAllowedDomains(allowedDomains: Array<string>): void {\n this.allowedDomains = [...allowedDomains];\n },\n\n /**\n *\n * @param {Array<string>} newAllowedDomains - new allowed domains to add to existing set of allowed domains\n * @returns {void}\n */\n addAllowedDomains(newAllowedDomains: Array<string>): void {\n this.allowedDomains = union(this.allowedDomains, newAllowedDomains);\n },\n\n /**\n * Update the current list of `ServiceDetail`s against a provided\n * service hostmap.\n * @emits ServiceCatalog#preauthorized\n * @emits ServiceCatalog#postauthorized\n * @param {string} serviceGroup\n * @param {object} serviceHostmap\n * @returns {void}\n */\n updateServiceUrls(serviceGroup: string, serviceHostmap: Array<IServiceDetail>): void {\n const currentServiceUrls = this.serviceGroups[serviceGroup];\n\n const unusedUrls = currentServiceUrls.filter((serviceUrl) =>\n serviceHostmap.every((item) => item.serviceName !== serviceUrl.serviceName)\n );\n\n this._unloadServiceUrls(serviceGroup, unusedUrls);\n\n serviceHostmap.forEach((serviceObj) => {\n const service = this._getUrl(serviceObj.serviceName, serviceGroup);\n\n if (service) {\n service.serviceUrls = serviceObj.serviceUrls || [];\n } else {\n this._loadServiceUrls(serviceGroup, [\n new ServiceDetail({\n ...serviceObj,\n }),\n ]);\n }\n });\n\n this.status[serviceGroup].ready = true;\n this.trigger(serviceGroup);\n },\n\n /**\n * Wait until the service catalog is available,\n * or reject after a timeout of 60 seconds.\n * @param {string} serviceGroup\n * @param {number} [timeout] - in seconds\n * @returns {Promise<void>}\n */\n waitForCatalog(serviceGroup, timeout) {\n return new Promise<void>((resolve, reject) => {\n if (this.status[serviceGroup].ready) {\n resolve();\n }\n\n const validatedTimeout = typeof timeout === 'number' && timeout >= 0 ? timeout : 60;\n\n const timeoutTimer = setTimeout(\n () =>\n reject(\n new Error(\n `services: timeout occured while waiting for '${serviceGroup}' catalog to populate`\n )\n ),\n validatedTimeout * 1000\n );\n\n this.once(serviceGroup, () => {\n clearTimeout(timeoutTimer);\n resolve();\n });\n });\n },\n});\n/* eslint-enable no-underscore-dangle */\n\nexport default ServiceCatalog;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_ampersandState","_interopRequireDefault","require","_lodash","_serviceDetail","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","ServiceCatalog","AmpState","extend","namespace","props","serviceGroups","discovery","override","preauth","postauth","signin","status","ready","collecting","isReady","allowedDomains","_getAllServiceDetails","serviceGroup","serviceDetails","concat","_toConsumableArray2","default","_getServiceDetail","clusterId","find","serviceDetail","id","_loadServiceDetails","_this","existingService","forEach","service","push","_unloadServiceDetails","_this2","splice","indexOf","clean","findClusterId","url","_allServiceDetails$fi","incomingUrlObj","URL","allServiceDetails","serviceUrls","_ref","host","_unused","undefined","findServiceFromClusterId","_ref2","arguments","serviceName","get","findServiceDetailFromUrl","_ref3","_iterator","_step","serviceUrl","startsWith","baseUrl","findAllowedDomain","urlObj","allowedDomain","includes","_unused2","getAllowedDomains","markFailedServiceUrl","serviceDetailWithFailedHost","failHost","setAllowedDomains","addAllowedDomains","newAllowedDomains","union","updateServiceGroups","_this3","currentServiceDetails","unusedServicesDetails","filter","every","_ref4","serviceObj","ServiceDetail","trigger","waitForCatalog","timeout","_this4","_promise","resolve","reject","validatedTimeout","timeoutTimer","setTimeout","Error","once","clearTimeout","_default","exports"],"sources":["service-catalog.ts"],"sourcesContent":["import AmpState from 'ampersand-state';\n\nimport {union} from 'lodash';\nimport ServiceDetail from './service-detail';\nimport {IServiceDetail} from './types';\n\n/**\n * @class\n */\nconst ServiceCatalog = AmpState.extend({\n namespace: 'ServiceCatalog',\n\n props: {\n serviceGroups: [\n 'object',\n true,\n () => ({\n discovery: [],\n override: [],\n preauth: [],\n postauth: [],\n signin: [],\n }),\n ],\n status: [\n 'object',\n true,\n () => ({\n discovery: {\n ready: false,\n collecting: false,\n },\n override: {\n ready: false,\n collecting: false,\n },\n preauth: {\n ready: false,\n collecting: false,\n },\n postauth: {\n ready: false,\n collecting: false,\n },\n signin: {\n ready: false,\n collecting: false,\n },\n }),\n ],\n isReady: ['boolean', false, false],\n allowedDomains: ['array', false, () => []],\n },\n\n /**\n * @private\n * Get all service details for a given service group or return all details if no group is specified.\n * @param {string} serviceGroup - The name of the service group to retrieve details for.\n * @returns {Array<IServiceDetail>} - An array of service details.\n */\n _getAllServiceDetails(serviceGroup: string): Array<IServiceDetail> {\n const serviceDetails =\n typeof serviceGroup === 'string'\n ? this.serviceGroups[serviceGroup] || []\n : [\n ...this.serviceGroups.override,\n ...this.serviceGroups.postauth,\n ...this.serviceGroups.signin,\n ...this.serviceGroups.preauth,\n ...this.serviceGroups.discovery,\n ];\n\n return serviceDetails;\n },\n\n /**\n * @private\n * Search the service details array to locate a `ServiceDetails`\n * class object based on its id.\n * @param {string} clusterId\n * @param {string} [serviceGroup]\n * @returns {IServiceDetail}\n */\n _getServiceDetail(clusterId: string, serviceGroup: string): IServiceDetail | undefined {\n const serviceDetails = this._getAllServiceDetails(serviceGroup);\n\n return serviceDetails.find((serviceDetail: IServiceDetail) => serviceDetail.id === clusterId);\n },\n\n /**\n * @private\n * Safely load one or more `ServiceDetail`s into this `ServiceCatalog` instance.\n * @param {string} serviceGroup\n * @param {Array<ServiceDetail>} serviceDetails\n * @returns {void}\n */\n _loadServiceDetails(serviceGroup: string, serviceDetails: Array<IServiceDetail>): void {\n // declare namespaces outside of loop\n let existingService: IServiceDetail | undefined;\n\n serviceDetails.forEach((service) => {\n existingService = this._getServiceDetail(service.id, serviceGroup);\n\n if (!existingService) {\n this.serviceGroups[serviceGroup].push(service);\n }\n });\n },\n\n /**\n * @private\n * Safely unload one or more `ServiceDetail`s into this `Services` instance\n * @param {string} serviceGroup\n * @param {Array<ServiceDetail>} serviceDetails\n * @returns {void}\n */\n _unloadServiceDetails(serviceGroup: string, serviceDetails: Array<IServiceDetail>): void {\n // declare namespaces outside of loop\n let existingService: IServiceDetail | undefined;\n\n serviceDetails.forEach((service) => {\n existingService = this._getServiceDetail(service.id, serviceGroup);\n\n if (existingService) {\n this.serviceGroups[serviceGroup].splice(\n this.serviceGroups[serviceGroup].indexOf(existingService),\n 1\n );\n }\n });\n },\n\n /**\n * Clear all collected catalog data and reset catalog status.\n *\n * @returns {void}\n */\n clean(): void {\n this.serviceGroups.preauth.length = 0;\n this.serviceGroups.signin.length = 0;\n this.serviceGroups.postauth.length = 0;\n this.status.preauth = {ready: false};\n this.status.signin = {ready: false};\n this.status.postauth = {ready: false};\n },\n\n /**\n * Search over all service groups to find a cluster id based\n * on a given url.\n * @param {string} url - Must be parsable by `Url`\n * @returns {string | undefined} - ClusterId of a given url\n */\n findClusterId(url: string): string | undefined {\n try {\n const incomingUrlObj = new URL(url);\n const allServiceDetails = this._getAllServiceDetails();\n\n return allServiceDetails.find((serviceDetail: IServiceDetail) =>\n serviceDetail.serviceUrls.find(({host}) => host === incomingUrlObj.host)\n )?.id;\n } catch {\n // If the URL is invalid or can't be found, return undefined\n return undefined;\n }\n },\n\n /**\n * Search over all service groups and return a service value from a provided\n * clusterId.\n * @param {object} params\n * @param {string} params.clusterId - clusterId of found service\n * @param {string} [params.serviceGroup] - specify service group\n * @returns {object} service\n * @returns {string} service.name\n * @returns {string} service.url\n */\n findServiceFromClusterId(\n {clusterId, serviceGroup} = {} as {clusterId: string; serviceGroup: string}\n ): {name: string; url: string} | undefined {\n const serviceDetails = this._getServiceDetail(clusterId, serviceGroup);\n\n if (serviceDetails) {\n return {\n name: serviceDetails.serviceName,\n url: serviceDetails.get(),\n };\n }\n\n return undefined;\n },\n\n /**\n * Find a service based on the provided url.\n * @param {string} url - Must be parsable by `Url`\n * @returns {IServiceDetail} - ServiceDetail assocated with provided url\n */\n findServiceDetailFromUrl(url: string): IServiceDetail | undefined {\n const serviceDetails = this._getAllServiceDetails();\n\n return serviceDetails.find(({serviceUrls}) => {\n for (const serviceUrl of serviceUrls) {\n if (url.startsWith(serviceUrl.baseUrl)) {\n return true;\n }\n }\n\n return false;\n });\n },\n\n /**\n * Finds an allowed domain that matches a specific url.\n *\n * @param {string} url - The url to match the allowed domains against.\n * @returns {string} - The matching allowed domain.\n */\n findAllowedDomain(url: string): string {\n try {\n const urlObj = new URL(url);\n\n return this.allowedDomains.find((allowedDomain) => urlObj.host.includes(allowedDomain));\n } catch {\n // If the URL is invalid or can't be found, return undefined\n return undefined;\n }\n },\n\n /**\n * Get a service url from the current services list by name.\n * @param {string} clusterId\n * @param {string} serviceGroup\n * @returns {string}\n */\n get(clusterId: string, serviceGroup: string): string | undefined {\n const serviceDetail = this._getServiceDetail(clusterId, serviceGroup);\n\n return serviceDetail ? serviceDetail.get() : undefined;\n },\n\n /**\n * Get the current allowed domains list.\n *\n * @returns {Array<string>} - the current allowed domains list.\n */\n getAllowedDomains(): Array<string> {\n return [...this.allowedDomains];\n },\n\n /**\n * Mark a priority host service url as failed.\n * This will mark the host associated with the\n * `ServiceDetail` to be removed from the its\n * respective host array, and then return the next\n * viable host from the `ServiceDetail` host array,\n * or the `ServiceDetail` default url if no other priority\n * hosts are available, or if `noPriorityHosts` is set to\n * `true`.\n * @param {string} url\n * @returns {string}\n */\n markFailedServiceUrl(url: string): string | undefined {\n const serviceDetails = this._getAllServiceDetails();\n\n const serviceDetailWithFailedHost = serviceDetails.find((serviceDetail: IServiceDetail) =>\n serviceDetail.failHost(url)\n );\n\n // if we couldn't find the url we wanted to fail, return undefined\n if (!serviceDetailWithFailedHost) {\n return undefined;\n }\n\n return serviceDetailWithFailedHost.get();\n },\n\n /**\n * Set the allowed domains for the catalog.\n *\n * @param {Array<string>} allowedDomains - allowed domains to be assigned.\n * @returns {void}\n */\n setAllowedDomains(allowedDomains: Array<string>): void {\n this.allowedDomains = [...allowedDomains];\n },\n\n /**\n *\n * @param {Array<string>} newAllowedDomains - new allowed domains to add to existing set of allowed domains\n * @returns {void}\n */\n addAllowedDomains(newAllowedDomains: Array<string>): void {\n this.allowedDomains = union(this.allowedDomains, newAllowedDomains);\n },\n\n /**\n * Update the current list of `ServiceDetail`s against a provided\n * service hostmap.\n * @emits ServiceCatalog#preauthorized\n * @emits ServiceCatalog#postauthorized\n * @param {string} serviceGroup\n * @param {Array<IServiceDetail>} serviceDetails\n * @returns {void}\n */\n updateServiceGroups(serviceGroup: string, serviceDetails: Array<IServiceDetail>) {\n const currentServiceDetails = this.serviceGroups[serviceGroup];\n\n const unusedServicesDetails = currentServiceDetails.filter((serviceDetail) =>\n serviceDetails.every(({id}) => id !== serviceDetail.id)\n );\n\n this._unloadServiceDetails(serviceGroup, unusedServicesDetails);\n\n serviceDetails.forEach((serviceObj) => {\n const serviceDetail = this._getServiceDetail(serviceObj.id, serviceGroup);\n\n if (serviceDetail) {\n serviceDetail.serviceUrls = serviceObj.serviceUrls || [];\n } else {\n this._loadServiceDetails(serviceGroup, [new ServiceDetail(serviceObj)]);\n }\n });\n\n this.status[serviceGroup].ready = true;\n this.trigger(serviceGroup);\n },\n\n /**\n * Wait until the service catalog is available,\n * or reject after a timeout of 60 seconds.\n * @param {string} serviceGroup\n * @param {number} [timeout] - in seconds\n * @returns {Promise<void>}\n */\n waitForCatalog(serviceGroup: string, timeout: number): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (this.status[serviceGroup].ready) {\n resolve();\n }\n\n const validatedTimeout = typeof timeout === 'number' && timeout >= 0 ? timeout : 60;\n\n const timeoutTimer = setTimeout(\n () =>\n reject(\n new Error(\n `services: timeout occured while waiting for '${serviceGroup}' catalog to populate`\n )\n ),\n validatedTimeout * 1000\n );\n\n this.once(serviceGroup, () => {\n clearTimeout(timeoutTimer);\n resolve();\n });\n });\n },\n});\n\nexport default ServiceCatalog;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type ServiceUrl = {\n baseUrl: string;\n host: string;\n priority: number;\n failed?: boolean;\n};\n\nexport interface IServiceDetail {\n id: string;\n serviceName: string;\n serviceUrls: Array<ServiceUrl>;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type ServiceUrl = {\n baseUrl: string;\n host: string;\n priority: number;\n failed?: boolean;\n};\n\nexport interface IServiceDetail {\n id: string;\n serviceName: string;\n serviceUrls: Array<ServiceUrl>;\n failHost(url: string): boolean;\n}\n"],"mappings":""}
|
package/dist/plugins/logger.js
CHANGED
|
@@ -57,7 +57,7 @@ var Logger = _webexPlugin.default.extend({
|
|
|
57
57
|
info: wrapConsoleMethod('info'),
|
|
58
58
|
debug: wrapConsoleMethod('debug'),
|
|
59
59
|
trace: wrapConsoleMethod('trace'),
|
|
60
|
-
version: "3.8.0-next.
|
|
60
|
+
version: "3.8.0-next.24"
|
|
61
61
|
});
|
|
62
62
|
(0, _webexCore.registerPlugin)('logger', Logger);
|
|
63
63
|
var _default = exports.default = Logger;
|