@webex/webex-core 3.0.0-beta.2 → 3.0.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.js +1 -11
- package/dist/config.js.map +1 -1
- package/dist/credentials-config.js +44 -64
- package/dist/credentials-config.js.map +1 -1
- package/dist/index.js +0 -76
- package/dist/index.js.map +1 -1
- package/dist/interceptors/auth.js +22 -55
- package/dist/interceptors/auth.js.map +1 -1
- package/dist/interceptors/default-options.js +0 -20
- package/dist/interceptors/default-options.js.map +1 -1
- package/dist/interceptors/embargo.js +0 -21
- package/dist/interceptors/embargo.js.map +1 -1
- package/dist/interceptors/network-timing.js +2 -21
- package/dist/interceptors/network-timing.js.map +1 -1
- package/dist/interceptors/payload-transformer.js +2 -22
- package/dist/interceptors/payload-transformer.js.map +1 -1
- package/dist/interceptors/rate-limit.js +25 -57
- package/dist/interceptors/rate-limit.js.map +1 -1
- package/dist/interceptors/redirect.js +4 -33
- package/dist/interceptors/redirect.js.map +1 -1
- package/dist/interceptors/request-event.js +3 -30
- package/dist/interceptors/request-event.js.map +1 -1
- package/dist/interceptors/request-logger.js +1 -30
- package/dist/interceptors/request-logger.js.map +1 -1
- package/dist/interceptors/request-timing.js +3 -22
- package/dist/interceptors/request-timing.js.map +1 -1
- package/dist/interceptors/response-logger.js +2 -31
- package/dist/interceptors/response-logger.js.map +1 -1
- package/dist/interceptors/user-agent.js +2 -29
- package/dist/interceptors/user-agent.js.map +1 -1
- package/dist/interceptors/webex-tracking-id.js +5 -28
- package/dist/interceptors/webex-tracking-id.js.map +1 -1
- package/dist/interceptors/webex-user-agent.js +5 -38
- package/dist/interceptors/webex-user-agent.js.map +1 -1
- package/dist/lib/batcher.js +3 -51
- package/dist/lib/batcher.js.map +1 -1
- package/dist/lib/credentials/credentials.js +39 -119
- package/dist/lib/credentials/credentials.js.map +1 -1
- package/dist/lib/credentials/grant-errors.js +0 -49
- package/dist/lib/credentials/grant-errors.js.map +1 -1
- package/dist/lib/credentials/index.js +1 -13
- package/dist/lib/credentials/index.js.map +1 -1
- package/dist/lib/credentials/scope.js +1 -7
- package/dist/lib/credentials/scope.js.map +1 -1
- package/dist/lib/credentials/token-collection.js +1 -7
- package/dist/lib/credentials/token-collection.js.map +1 -1
- package/dist/lib/credentials/token.js +39 -118
- package/dist/lib/credentials/token.js.map +1 -1
- package/dist/lib/page.js +13 -26
- package/dist/lib/page.js.map +1 -1
- package/dist/lib/services/constants.js +0 -2
- package/dist/lib/services/constants.js.map +1 -1
- package/dist/lib/services/index.js +1 -28
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/interceptors/server-error.js +2 -23
- package/dist/lib/services/interceptors/server-error.js.map +1 -1
- package/dist/lib/services/interceptors/service.js +12 -34
- package/dist/lib/services/interceptors/service.js.map +1 -1
- package/dist/lib/services/metrics.js +0 -2
- package/dist/lib/services/metrics.js.map +1 -1
- package/dist/lib/services/service-catalog.js +10 -90
- package/dist/lib/services/service-catalog.js.map +1 -1
- package/dist/lib/services/service-fed-ramp.js +0 -2
- package/dist/lib/services/service-fed-ramp.js.map +1 -1
- package/dist/lib/services/service-host.js +47 -62
- package/dist/lib/services/service-host.js.map +1 -1
- package/dist/lib/services/service-registry.js +78 -90
- package/dist/lib/services/service-registry.js.map +1 -1
- package/dist/lib/services/service-state.js +3 -15
- package/dist/lib/services/service-state.js.map +1 -1
- package/dist/lib/services/service-url.js +4 -25
- package/dist/lib/services/service-url.js.map +1 -1
- package/dist/lib/services/services.js +122 -238
- package/dist/lib/services/services.js.map +1 -1
- package/dist/lib/stateless-webex-plugin.js +5 -28
- package/dist/lib/stateless-webex-plugin.js.map +1 -1
- package/dist/lib/storage/decorators.js +19 -62
- package/dist/lib/storage/decorators.js.map +1 -1
- package/dist/lib/storage/errors.js +0 -23
- package/dist/lib/storage/errors.js.map +1 -1
- package/dist/lib/storage/index.js +2 -16
- package/dist/lib/storage/index.js.map +1 -1
- package/dist/lib/storage/make-webex-plugin-store.js +11 -41
- package/dist/lib/storage/make-webex-plugin-store.js.map +1 -1
- package/dist/lib/storage/make-webex-store.js +8 -30
- package/dist/lib/storage/make-webex-store.js.map +1 -1
- package/dist/lib/storage/memory-store-adapter.js +1 -19
- package/dist/lib/storage/memory-store-adapter.js.map +1 -1
- package/dist/lib/webex-core-plugin-mixin.js +9 -29
- package/dist/lib/webex-core-plugin-mixin.js.map +1 -1
- package/dist/lib/webex-http-error.js +1 -31
- package/dist/lib/webex-http-error.js.map +1 -1
- package/dist/lib/webex-internal-core-plugin-mixin.js +9 -29
- package/dist/lib/webex-internal-core-plugin-mixin.js.map +1 -1
- package/dist/lib/webex-plugin.js +6 -40
- package/dist/lib/webex-plugin.js.map +1 -1
- package/dist/plugins/logger.js +3 -17
- package/dist/plugins/logger.js.map +1 -1
- package/dist/webex-core.js +79 -203
- package/dist/webex-core.js.map +1 -1
- package/dist/webex-internal-core.js +0 -10
- package/dist/webex-internal-core.js.map +1 -1
- package/package.json +14 -14
- package/src/config.js +9 -11
- package/src/credentials-config.js +110 -72
- package/src/index.js +4 -14
- package/src/interceptors/auth.js +36 -37
- package/src/interceptors/default-options.js +0 -1
- package/src/interceptors/embargo.js +1 -1
- package/src/interceptors/payload-transformer.js +1 -2
- package/src/interceptors/rate-limit.js +8 -5
- package/src/interceptors/redirect.js +14 -8
- package/src/interceptors/request-event.js +4 -8
- package/src/interceptors/request-logger.js +8 -5
- package/src/interceptors/response-logger.js +11 -8
- package/src/interceptors/user-agent.js +1 -2
- package/src/interceptors/webex-user-agent.js +3 -9
- package/src/lib/batcher.js +70 -69
- package/src/lib/credentials/credentials.js +112 -122
- package/src/lib/credentials/grant-errors.js +6 -7
- package/src/lib/credentials/index.js +1 -4
- package/src/lib/credentials/scope.js +1 -4
- package/src/lib/credentials/token-collection.js +1 -1
- package/src/lib/credentials/token.js +86 -80
- package/src/lib/page.js +10 -11
- package/src/lib/services/constants.js +3 -13
- package/src/lib/services/index.js +2 -2
- package/src/lib/services/interceptors/server-error.js +12 -7
- package/src/lib/services/interceptors/service.js +6 -5
- package/src/lib/services/metrics.js +1 -1
- package/src/lib/services/service-catalog.js +110 -100
- package/src/lib/services/service-fed-ramp.js +1 -2
- package/src/lib/services/service-host.js +10 -17
- package/src/lib/services/service-registry.js +69 -96
- package/src/lib/services/service-state.js +4 -6
- package/src/lib/services/service-url.js +24 -23
- package/src/lib/services/services.js +260 -251
- package/src/lib/stateless-webex-plugin.js +4 -2
- package/src/lib/storage/decorators.js +68 -66
- package/src/lib/storage/index.js +4 -6
- package/src/lib/storage/make-webex-plugin-store.js +34 -21
- package/src/lib/storage/make-webex-store.js +6 -7
- package/src/lib/storage/memory-store-adapter.js +3 -3
- package/src/lib/webex-core-plugin-mixin.js +10 -7
- package/src/lib/webex-http-error.js +7 -8
- package/src/lib/webex-internal-core-plugin-mixin.js +9 -6
- package/src/lib/webex-plugin.js +41 -34
- package/src/plugins/logger.js +8 -3
- package/src/webex-core.js +185 -116
- package/src/webex-internal-core.js +15 -9
- package/test/integration/spec/credentials/credentials.js +26 -30
- package/test/integration/spec/credentials/token.js +36 -33
- package/test/integration/spec/services/service-catalog.js +177 -156
- package/test/integration/spec/services/services.js +313 -304
- package/test/integration/spec/webex-core.js +98 -86
- package/test/unit/spec/_setup.js +26 -18
- package/test/unit/spec/credentials/credentials.js +189 -154
- package/test/unit/spec/credentials/token.js +94 -76
- package/test/unit/spec/interceptors/auth.js +291 -243
- package/test/unit/spec/interceptors/default-options.js +36 -24
- package/test/unit/spec/interceptors/embargo.js +32 -27
- package/test/unit/spec/interceptors/network-timing.js +2 -2
- package/test/unit/spec/interceptors/payload-transformer.js +61 -52
- package/test/unit/spec/interceptors/rate-limit.js +104 -75
- package/test/unit/spec/interceptors/redirect.js +22 -20
- package/test/unit/spec/interceptors/request-timing.js +18 -22
- package/test/unit/spec/interceptors/user-agent.js +28 -16
- package/test/unit/spec/interceptors/webex-tracking-id.js +14 -8
- package/test/unit/spec/interceptors/webex-user-agent.js +83 -37
- package/test/unit/spec/lib/batcher.js +36 -32
- package/test/unit/spec/lib/page.js +36 -32
- package/test/unit/spec/lib/webex-plugin.js +1 -1
- package/test/unit/spec/services/interceptors/server-error.js +67 -90
- package/test/unit/spec/services/interceptors/service.js +17 -28
- package/test/unit/spec/services/service-catalog.js +19 -27
- package/test/unit/spec/services/service-host.js +29 -26
- package/test/unit/spec/services/service-registry.js +128 -170
- package/test/unit/spec/services/service-state.js +13 -22
- package/test/unit/spec/services/service-url.js +24 -43
- package/test/unit/spec/services/services.js +85 -41
- package/test/unit/spec/storage/persist.js +6 -9
- package/test/unit/spec/storage/wait-for-value.js +22 -21
- package/test/unit/spec/webex-core.js +78 -57
- package/test/unit/spec/webex-internal-core.js +56 -31
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
exports.default = void 0;
|
|
12
|
-
|
|
13
9
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
14
|
-
|
|
15
10
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
16
|
-
|
|
17
11
|
var _url = _interopRequireDefault(require("url"));
|
|
18
|
-
|
|
19
12
|
var _constants = require("./constants");
|
|
20
|
-
|
|
21
13
|
/**
|
|
22
14
|
* The parameter transfer object for {@link ServiceHost#constructor}.
|
|
23
15
|
*
|
|
@@ -29,7 +21,6 @@ var _constants = require("./constants");
|
|
|
29
21
|
* @property {number} ServiceHostConstructorPTO.priority - The host's priority.
|
|
30
22
|
* @property {string} ServiceHostConstructorPTO.uri - The host's uri.
|
|
31
23
|
*/
|
|
32
|
-
|
|
33
24
|
/**
|
|
34
25
|
* The parameter transfer object for {@link ServiceHost#polyGenerate}.
|
|
35
26
|
*
|
|
@@ -38,7 +29,6 @@ var _constants = require("./constants");
|
|
|
38
29
|
* @property {string} ServiceHostPolyGeneratePTO.name - The service name.
|
|
39
30
|
* @property {string} ServiceHostPolyGeneratePTO.url - The service url.
|
|
40
31
|
*/
|
|
41
|
-
|
|
42
32
|
/**
|
|
43
33
|
* @class
|
|
44
34
|
* @classdesc - Manages a single service host and its associated data.
|
|
@@ -55,8 +45,9 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
55
45
|
function ServiceHost(pto) {
|
|
56
46
|
(0, _classCallCheck2.default)(this, ServiceHost);
|
|
57
47
|
// Validate the parameter transfer object.
|
|
58
|
-
ServiceHost.validate(pto);
|
|
48
|
+
ServiceHost.validate(pto);
|
|
59
49
|
|
|
50
|
+
// Map the parameter transfer object to the class object.
|
|
60
51
|
/**
|
|
61
52
|
* The catalog name that the {@link ServiceHost} is associated with.
|
|
62
53
|
*
|
|
@@ -65,8 +56,8 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
65
56
|
* @public
|
|
66
57
|
* @memberof ServiceHost
|
|
67
58
|
*/
|
|
68
|
-
|
|
69
59
|
this.catalog = pto.catalog;
|
|
60
|
+
|
|
70
61
|
/**
|
|
71
62
|
* The default URI for the {@link ServiceHost}.
|
|
72
63
|
*
|
|
@@ -75,8 +66,8 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
75
66
|
* @public
|
|
76
67
|
* @memberof ServiceHost
|
|
77
68
|
*/
|
|
78
|
-
|
|
79
69
|
this.default = pto.defaultUri;
|
|
70
|
+
|
|
80
71
|
/**
|
|
81
72
|
* The host group that the {@link ServiceHost} is associated with.
|
|
82
73
|
*
|
|
@@ -85,8 +76,8 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
85
76
|
* @public
|
|
86
77
|
* @memberof ServiceHost
|
|
87
78
|
*/
|
|
88
|
-
|
|
89
79
|
this.hostGroup = pto.hostGroup;
|
|
80
|
+
|
|
90
81
|
/**
|
|
91
82
|
* The cluster ID of the {@link ServiceHost}.
|
|
92
83
|
*
|
|
@@ -95,8 +86,8 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
95
86
|
* @public
|
|
96
87
|
* @memberof ServiceHost
|
|
97
88
|
*/
|
|
98
|
-
|
|
99
89
|
this.id = pto.id;
|
|
90
|
+
|
|
100
91
|
/**
|
|
101
92
|
* The priority value of the {@link ServiceHost}. The lower the number, the
|
|
102
93
|
* higher the priority.
|
|
@@ -106,8 +97,8 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
106
97
|
* @public
|
|
107
98
|
* @memberof ServiceHost
|
|
108
99
|
*/
|
|
109
|
-
|
|
110
100
|
this.priority = pto.priority;
|
|
101
|
+
|
|
111
102
|
/**
|
|
112
103
|
* The host uri of the {@link ServiceHost}.
|
|
113
104
|
*
|
|
@@ -116,9 +107,9 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
116
107
|
* @public
|
|
117
108
|
* @memberof ServiceHost
|
|
118
109
|
*/
|
|
110
|
+
this.uri = pto.uri;
|
|
119
111
|
|
|
120
|
-
|
|
121
|
-
|
|
112
|
+
// Generate flags.
|
|
122
113
|
/**
|
|
123
114
|
* If the {@link ServiceHost} is marked as failed.
|
|
124
115
|
*
|
|
@@ -127,8 +118,8 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
127
118
|
* @protected
|
|
128
119
|
* @memberof ServiceHost
|
|
129
120
|
*/
|
|
130
|
-
|
|
131
121
|
this.failed = false;
|
|
122
|
+
|
|
132
123
|
/**
|
|
133
124
|
* If the {@link ServiceHost} is marked as replaced.
|
|
134
125
|
*
|
|
@@ -137,9 +128,9 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
137
128
|
* @protected
|
|
138
129
|
* @memberof ServiceHost
|
|
139
130
|
*/
|
|
140
|
-
|
|
141
131
|
this.replaced = false;
|
|
142
132
|
}
|
|
133
|
+
|
|
143
134
|
/**
|
|
144
135
|
* If the {@link ServiceHost} is in an active state.
|
|
145
136
|
*
|
|
@@ -147,14 +138,13 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
147
138
|
* @memberof ServiceHost
|
|
148
139
|
* @type {boolean} - `true` if the service is active and usable.
|
|
149
140
|
*/
|
|
150
|
-
|
|
151
|
-
|
|
152
141
|
(0, _createClass2.default)(ServiceHost, [{
|
|
153
142
|
key: "active",
|
|
154
143
|
get: function get() {
|
|
155
144
|
// Validate that the `ServiceHost` was not marked as failed or replaced.
|
|
156
145
|
return !this.failed && !this.replaced;
|
|
157
146
|
}
|
|
147
|
+
|
|
158
148
|
/**
|
|
159
149
|
* If the host is local to the user's cluster.
|
|
160
150
|
*
|
|
@@ -162,12 +152,12 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
162
152
|
* @memberof ServiceHost
|
|
163
153
|
* @type {boolean} - If the host is local.
|
|
164
154
|
*/
|
|
165
|
-
|
|
166
155
|
}, {
|
|
167
156
|
key: "local",
|
|
168
157
|
get: function get() {
|
|
169
158
|
return this.default.includes(this.hostGroup);
|
|
170
159
|
}
|
|
160
|
+
|
|
171
161
|
/**
|
|
172
162
|
* The service value.
|
|
173
163
|
*
|
|
@@ -175,12 +165,12 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
175
165
|
* @memberof ServiceHost
|
|
176
166
|
* @type {string} - The service value.
|
|
177
167
|
*/
|
|
178
|
-
|
|
179
168
|
}, {
|
|
180
169
|
key: "service",
|
|
181
170
|
get: function get() {
|
|
182
171
|
return this.id.split(':')[3];
|
|
183
172
|
}
|
|
173
|
+
|
|
184
174
|
/**
|
|
185
175
|
* The formatted url for the host.
|
|
186
176
|
*
|
|
@@ -188,18 +178,19 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
188
178
|
* @memberof ServiceHost
|
|
189
179
|
* @type {string} - The service url.
|
|
190
180
|
*/
|
|
191
|
-
|
|
192
181
|
}, {
|
|
193
182
|
key: "url",
|
|
194
183
|
get: function get() {
|
|
195
184
|
// Generate a url object from the default url.
|
|
196
|
-
var urlObj = _url.default.parse(this.default);
|
|
197
|
-
|
|
185
|
+
var urlObj = _url.default.parse(this.default);
|
|
198
186
|
|
|
199
|
-
|
|
187
|
+
// Format the host of the generated url object.
|
|
188
|
+
urlObj.host = "".concat(this.uri).concat(urlObj.port ? ":".concat(urlObj.port) : '');
|
|
200
189
|
|
|
190
|
+
// Assign the formatted url to this.
|
|
201
191
|
return _url.default.format(urlObj);
|
|
202
192
|
}
|
|
193
|
+
|
|
203
194
|
/**
|
|
204
195
|
* Set one or more of the status properties of the class object.
|
|
205
196
|
*
|
|
@@ -210,23 +201,20 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
210
201
|
* @property {boolean} [pto.replaced] - the replaced status to set.
|
|
211
202
|
* @returns {this}
|
|
212
203
|
*/
|
|
213
|
-
|
|
214
204
|
}, {
|
|
215
205
|
key: "setStatus",
|
|
216
206
|
value: function setStatus(_ref) {
|
|
217
207
|
var failed = _ref.failed,
|
|
218
|
-
|
|
219
|
-
|
|
208
|
+
replaced = _ref.replaced;
|
|
220
209
|
if (failed !== undefined) {
|
|
221
210
|
this.failed = failed;
|
|
222
211
|
}
|
|
223
|
-
|
|
224
212
|
if (replaced !== undefined) {
|
|
225
213
|
this.replaced = replaced;
|
|
226
214
|
}
|
|
227
|
-
|
|
228
215
|
return this;
|
|
229
216
|
}
|
|
217
|
+
|
|
230
218
|
/**
|
|
231
219
|
* Generate a service host using only a catalog, name, and URL.
|
|
232
220
|
*
|
|
@@ -236,13 +224,12 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
236
224
|
* @param {ServiceHostPolyGeneratePTO} pto
|
|
237
225
|
* @returns {ServiceHost} - The generated service host.
|
|
238
226
|
*/
|
|
239
|
-
|
|
240
227
|
}], [{
|
|
241
228
|
key: "polyGenerate",
|
|
242
229
|
value: function polyGenerate(_ref2) {
|
|
243
230
|
var catalog = _ref2.catalog,
|
|
244
|
-
|
|
245
|
-
|
|
231
|
+
name = _ref2.name,
|
|
232
|
+
url = _ref2.url;
|
|
246
233
|
return new ServiceHost({
|
|
247
234
|
catalog: catalog,
|
|
248
235
|
defaultUri: url,
|
|
@@ -252,6 +239,7 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
252
239
|
uri: _url.default.parse(url).host
|
|
253
240
|
});
|
|
254
241
|
}
|
|
242
|
+
|
|
255
243
|
/**
|
|
256
244
|
* Validate that a constructor parameter transfer object is valid.
|
|
257
245
|
*
|
|
@@ -262,55 +250,52 @@ var ServiceHost = /*#__PURE__*/function () {
|
|
|
262
250
|
* @throws - If the parameter transfer object is not valid.
|
|
263
251
|
* @returns {undefined}
|
|
264
252
|
*/
|
|
265
|
-
|
|
266
253
|
}, {
|
|
267
254
|
key: "validate",
|
|
268
255
|
value: function validate(_ref3) {
|
|
269
256
|
var catalog = _ref3.catalog,
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
257
|
+
defaultUri = _ref3.defaultUri,
|
|
258
|
+
hostGroup = _ref3.hostGroup,
|
|
259
|
+
id = _ref3.id,
|
|
260
|
+
priority = _ref3.priority,
|
|
261
|
+
uri = _ref3.uri;
|
|
276
262
|
// Generate error-throwing method.
|
|
277
263
|
var throwError = function throwError(msg) {
|
|
278
264
|
throw new Error("service-host: invalid constructor parameters, ".concat(msg));
|
|
279
|
-
};
|
|
280
|
-
|
|
265
|
+
};
|
|
281
266
|
|
|
267
|
+
// Validate the catalog property.
|
|
282
268
|
if (!_constants.SERVICE_CATALOGS.includes(catalog)) {
|
|
283
|
-
throwError('
|
|
284
|
-
}
|
|
285
|
-
|
|
269
|
+
throwError("'catalog' must be a string");
|
|
270
|
+
}
|
|
286
271
|
|
|
272
|
+
// Validate the `defaultUri` property.
|
|
287
273
|
if (typeof defaultUri !== 'string') {
|
|
288
|
-
throwError('
|
|
289
|
-
}
|
|
290
|
-
|
|
274
|
+
throwError("'defaultUri' must be a string");
|
|
275
|
+
}
|
|
291
276
|
|
|
277
|
+
// Validate the `hostGroup` property.
|
|
292
278
|
if (typeof hostGroup !== 'string') {
|
|
293
|
-
throwError('
|
|
294
|
-
}
|
|
295
|
-
|
|
279
|
+
throwError("'hostGroup' must be a string");
|
|
280
|
+
}
|
|
296
281
|
|
|
282
|
+
// Validate the `id` property.
|
|
297
283
|
if (typeof id !== 'string' || id.split(':').length !== 4) {
|
|
298
|
-
throwError('
|
|
299
|
-
}
|
|
300
|
-
|
|
284
|
+
throwError("'id' must be a string that contains 3 ':' characters");
|
|
285
|
+
}
|
|
301
286
|
|
|
287
|
+
// Validate the `priority` property.
|
|
302
288
|
if (typeof priority !== 'number') {
|
|
303
|
-
throwError('
|
|
304
|
-
}
|
|
305
|
-
|
|
289
|
+
throwError("'priority' must be a number");
|
|
290
|
+
}
|
|
306
291
|
|
|
292
|
+
// Validate the `uri` property.
|
|
307
293
|
if (typeof uri !== 'string') {
|
|
308
|
-
throwError('
|
|
294
|
+
throwError("'uri' must be a string");
|
|
309
295
|
}
|
|
310
296
|
}
|
|
311
297
|
}]);
|
|
312
298
|
return ServiceHost;
|
|
313
299
|
}();
|
|
314
|
-
|
|
315
300
|
exports.default = ServiceHost;
|
|
316
301
|
//# sourceMappingURL=service-host.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ServiceHost","pto","validate","catalog","default","defaultUri","hostGroup","id","priority","uri","failed","replaced","includes","split","urlObj","Url","parse","host","port","format","undefined","name","url","throwError","msg","Error","SERVICE_CATALOGS","length"],"sources":["service-host.js"],"sourcesContent":["import Url from 'url';\n\nimport {SERVICE_CATALOGS} from './constants';\n\n/**\n * The parameter transfer object for {@link ServiceHost#constructor}.\n *\n * @typedef {Object} ServiceHostConstructorPTO\n * @property {string} ServiceHostConstructorPTO.catalog - The host's catalog.\n * @property {string} ServiceHostConstructorPTO.defaultUri - The host's default.\n * @property {string} ServiceHostConstructorPTO.hostGroup - The host's group.\n * @property {string} ServiceHostConstructorPTO.id - The host's clusterId.\n * @property {number} ServiceHostConstructorPTO.priority - The host's priority.\n * @property {string} ServiceHostConstructorPTO.uri - The host's uri.\n */\n\n/**\n * The parameter transfer object for {@link ServiceHost#polyGenerate}.\n *\n * @typedef {Object} ServiceHostPolyGeneratePTO\n * @property {string} ServiceHostPolyGeneratePTO.catalog - The target catalog.\n * @property {string} ServiceHostPolyGeneratePTO.name - The service name.\n * @property {string} ServiceHostPolyGeneratePTO.url - The service url.\n */\n\n/**\n * @class\n * @classdesc - Manages a single service host and its associated data.\n */\nexport default class ServiceHost {\n /**\n * Generate a new {@link ServiceHost}.\n *\n * @public\n * @constructor\n * @memberof ServiceHost\n * @param {ServiceHostConstructorPTO} pto\n */\n constructor(pto) {\n // Validate the parameter transfer object.\n ServiceHost.validate(pto);\n\n // Map the parameter transfer object to the class object.\n /**\n * The catalog name that the {@link ServiceHost} is associated with.\n *\n * @instance\n * @type {string}\n * @public\n * @memberof ServiceHost\n */\n this.catalog = pto.catalog;\n\n /**\n * The default URI for the {@link ServiceHost}.\n *\n * @instance\n * @type {string}\n * @public\n * @memberof ServiceHost\n */\n this.default = pto.defaultUri;\n\n /**\n * The host group that the {@link ServiceHost} is associated with.\n *\n * @instance\n * @type {string}\n * @public\n * @memberof ServiceHost\n */\n this.hostGroup = pto.hostGroup;\n\n /**\n * The cluster ID of the {@link ServiceHost}.\n *\n * @instance\n * @type {string}\n * @public\n * @memberof ServiceHost\n */\n this.id = pto.id;\n\n /**\n * The priority value of the {@link ServiceHost}. The lower the number, the\n * higher the priority.\n *\n * @instance\n * @type {number}\n * @public\n * @memberof ServiceHost\n */\n this.priority = pto.priority;\n\n /**\n * The host uri of the {@link ServiceHost}.\n *\n * @instance\n * @type {string}\n * @public\n * @memberof ServiceHost\n */\n this.uri = pto.uri;\n\n // Generate flags.\n /**\n * If the {@link ServiceHost} is marked as failed.\n *\n * @instance\n * @type {boolean}\n * @protected\n * @memberof ServiceHost\n */\n this.failed = false;\n\n /**\n * If the {@link ServiceHost} is marked as replaced.\n *\n * @instance\n * @type {boolean}\n * @protected\n * @memberof ServiceHost\n */\n this.replaced = false;\n }\n\n /**\n * If the {@link ServiceHost} is in an active state.\n *\n * @public\n * @memberof ServiceHost\n * @type {boolean} - `true` if the service is active and usable.\n */\n get active() {\n // Validate that the `ServiceHost` was not marked as failed or replaced.\n return (!this.failed && !this.replaced);\n }\n\n /**\n * If the host is local to the user's cluster.\n *\n * @public\n * @memberof ServiceHost\n * @type {boolean} - If the host is local.\n */\n get local() {\n return this.default.includes(this.hostGroup);\n }\n\n /**\n * The service value.\n *\n * @public\n * @memberof ServiceHost\n * @type {string} - The service value.\n */\n get service() {\n return this.id.split(':')[3];\n }\n\n /**\n * The formatted url for the host.\n *\n * @public\n * @memberof ServiceHost\n * @type {string} - The service url.\n */\n get url() {\n // Generate a url object from the default url.\n const urlObj = Url.parse(this.default);\n\n // Format the host of the generated url object.\n urlObj.host = `${this.uri}${urlObj.port ? `:${urlObj.port}` : ''}`;\n\n // Assign the formatted url to this.\n return Url.format(urlObj);\n }\n\n /**\n * Set one or more of the status properties of the class object.\n *\n * @public\n * @memberof ServiceHost\n * @param {Object} pto - The parameter transfer object.\n * @property {boolean} [pto.failed] - The failed status to set.\n * @property {boolean} [pto.replaced] - the replaced status to set.\n * @returns {this}\n */\n setStatus({failed, replaced}) {\n if (failed !== undefined) {\n this.failed = failed;\n }\n\n if (replaced !== undefined) {\n this.replaced = replaced;\n }\n\n return this;\n }\n\n /**\n * Generate a service host using only a catalog, name, and URL.\n *\n * @public\n * @static\n * @memberof ServiceHost\n * @param {ServiceHostPolyGeneratePTO} pto\n * @returns {ServiceHost} - The generated service host.\n */\n static polyGenerate({catalog, name, url}) {\n return new ServiceHost({\n catalog,\n defaultUri: url,\n hostGroup: Url.parse(url).host,\n id: (name) ? `poly-head:poly-group:poly-cluster:${name}` : undefined,\n priority: 1,\n uri: Url.parse(url).host\n });\n }\n\n /**\n * Validate that a constructor parameter transfer object is valid.\n *\n * @public\n * @static\n * @memberof ServiceHost\n * @param {ServiceHostConstructorPTO} pto\n * @throws - If the parameter transfer object is not valid.\n * @returns {undefined}\n */\n static validate({\n catalog,\n defaultUri,\n hostGroup,\n id,\n priority,\n uri\n }) {\n // Generate error-throwing method.\n const throwError = (msg) => {\n throw new Error(`service-host: invalid constructor parameters, ${msg}`);\n };\n\n // Validate the catalog property.\n if (!SERVICE_CATALOGS.includes(catalog)) {\n throwError('\\'catalog\\' must be a string');\n }\n\n // Validate the `defaultUri` property.\n if (typeof defaultUri !== 'string') {\n throwError('\\'defaultUri\\' must be a string');\n }\n\n // Validate the `hostGroup` property.\n if (typeof hostGroup !== 'string') {\n throwError('\\'hostGroup\\' must be a string');\n }\n\n // Validate the `id` property.\n if (typeof id !== 'string' || id.split(':').length !== 4) {\n throwError('\\'id\\' must be a string that contains 3 \\':\\' characters');\n }\n\n // Validate the `priority` property.\n if (typeof priority !== 'number') {\n throwError('\\'priority\\' must be a number');\n }\n\n // Validate the `uri` property.\n if (typeof uri !== 'string') {\n throwError('\\'uri\\' must be a string');\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;IACqBA,W;EACnB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,qBAAYC,GAAZ,EAAiB;IAAA;IACf;IACAD,WAAW,CAACE,QAAZ,CAAqBD,GAArB,EAFe,CAIf;;IACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,KAAKE,OAAL,GAAeF,GAAG,CAACE,OAAnB;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,KAAKC,OAAL,GAAeH,GAAG,CAACI,UAAnB;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,KAAKC,SAAL,GAAiBL,GAAG,CAACK,SAArB;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,KAAKC,EAAL,GAAUN,GAAG,CAACM,EAAd;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,KAAKC,QAAL,GAAgBP,GAAG,CAACO,QAApB;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,KAAKC,GAAL,GAAWR,GAAG,CAACQ,GAAf,CAhEe,CAkEf;;IACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,KAAKC,MAAL,GAAc,KAAd;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,KAAKC,QAAL,GAAgB,KAAhB;EACD;EAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;;SACE,eAAa;MACX;MACA,OAAQ,CAAC,KAAKD,MAAN,IAAgB,CAAC,KAAKC,QAA9B;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;SACE,eAAY;MACV,OAAO,KAAKP,OAAL,CAAaQ,QAAb,CAAsB,KAAKN,SAA3B,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;SACE,eAAc;MACZ,OAAO,KAAKC,EAAL,CAAQM,KAAR,CAAc,GAAd,EAAmB,CAAnB,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;SACE,eAAU;MACR;MACA,IAAMC,MAAM,GAAGC,YAAA,CAAIC,KAAJ,CAAU,KAAKZ,OAAf,CAAf,CAFQ,CAIR;;;MACAU,MAAM,CAACG,IAAP,aAAiB,KAAKR,GAAtB,SAA4BK,MAAM,CAACI,IAAP,cAAkBJ,MAAM,CAACI,IAAzB,IAAkC,EAA9D,EALQ,CAOR;;MACA,OAAOH,YAAA,CAAII,MAAJ,CAAWL,MAAX,CAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,yBAA8B;MAAA,IAAnBJ,MAAmB,QAAnBA,MAAmB;MAAA,IAAXC,QAAW,QAAXA,QAAW;;MAC5B,IAAID,MAAM,KAAKU,SAAf,EAA0B;QACxB,KAAKV,MAAL,GAAcA,MAAd;MACD;;MAED,IAAIC,QAAQ,KAAKS,SAAjB,EAA4B;QAC1B,KAAKT,QAAL,GAAgBA,QAAhB;MACD;;MAED,OAAO,IAAP;IACD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,6BAA0C;MAAA,IAArBR,OAAqB,SAArBA,OAAqB;MAAA,IAAZkB,IAAY,SAAZA,IAAY;MAAA,IAANC,GAAM,SAANA,GAAM;MACxC,OAAO,IAAItB,WAAJ,CAAgB;QACrBG,OAAO,EAAPA,OADqB;QAErBE,UAAU,EAAEiB,GAFS;QAGrBhB,SAAS,EAAES,YAAA,CAAIC,KAAJ,CAAUM,GAAV,EAAeL,IAHL;QAIrBV,EAAE,EAAGc,IAAD,+CAA8CA,IAA9C,IAAuDD,SAJtC;QAKrBZ,QAAQ,EAAE,CALW;QAMrBC,GAAG,EAAEM,YAAA,CAAIC,KAAJ,CAAUM,GAAV,EAAeL;MANC,CAAhB,CAAP;IAQD;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,yBAOG;MAAA,IANDd,OAMC,SANDA,OAMC;MAAA,IALDE,UAKC,SALDA,UAKC;MAAA,IAJDC,SAIC,SAJDA,SAIC;MAAA,IAHDC,EAGC,SAHDA,EAGC;MAAA,IAFDC,QAEC,SAFDA,QAEC;MAAA,IADDC,GACC,SADDA,GACC;;MACD;MACA,IAAMc,UAAU,GAAG,SAAbA,UAAa,CAACC,GAAD,EAAS;QAC1B,MAAM,IAAIC,KAAJ,yDAA2DD,GAA3D,EAAN;MACD,CAFD,CAFC,CAMD;;;MACA,IAAI,CAACE,2BAAA,CAAiBd,QAAjB,CAA0BT,OAA1B,CAAL,EAAyC;QACvCoB,UAAU,CAAC,8BAAD,CAAV;MACD,CATA,CAWD;;;MACA,IAAI,OAAOlB,UAAP,KAAsB,QAA1B,EAAoC;QAClCkB,UAAU,CAAC,iCAAD,CAAV;MACD,CAdA,CAgBD;;;MACA,IAAI,OAAOjB,SAAP,KAAqB,QAAzB,EAAmC;QACjCiB,UAAU,CAAC,gCAAD,CAAV;MACD,CAnBA,CAqBD;;;MACA,IAAI,OAAOhB,EAAP,KAAc,QAAd,IAA0BA,EAAE,CAACM,KAAH,CAAS,GAAT,EAAcc,MAAd,KAAyB,CAAvD,EAA0D;QACxDJ,UAAU,CAAC,0DAAD,CAAV;MACD,CAxBA,CA0BD;;;MACA,IAAI,OAAOf,QAAP,KAAoB,QAAxB,EAAkC;QAChCe,UAAU,CAAC,+BAAD,CAAV;MACD,CA7BA,CA+BD;;;MACA,IAAI,OAAOd,GAAP,KAAe,QAAnB,EAA6B;QAC3Bc,UAAU,CAAC,0BAAD,CAAV;MACD;IACF"}
|
|
1
|
+
{"version":3,"names":["ServiceHost","pto","validate","catalog","default","defaultUri","hostGroup","id","priority","uri","failed","replaced","includes","split","urlObj","Url","parse","host","port","format","undefined","name","url","throwError","msg","Error","SERVICE_CATALOGS","length"],"sources":["service-host.js"],"sourcesContent":["import Url from 'url';\n\nimport {SERVICE_CATALOGS} from './constants';\n\n/**\n * The parameter transfer object for {@link ServiceHost#constructor}.\n *\n * @typedef {Object} ServiceHostConstructorPTO\n * @property {string} ServiceHostConstructorPTO.catalog - The host's catalog.\n * @property {string} ServiceHostConstructorPTO.defaultUri - The host's default.\n * @property {string} ServiceHostConstructorPTO.hostGroup - The host's group.\n * @property {string} ServiceHostConstructorPTO.id - The host's clusterId.\n * @property {number} ServiceHostConstructorPTO.priority - The host's priority.\n * @property {string} ServiceHostConstructorPTO.uri - The host's uri.\n */\n\n/**\n * The parameter transfer object for {@link ServiceHost#polyGenerate}.\n *\n * @typedef {Object} ServiceHostPolyGeneratePTO\n * @property {string} ServiceHostPolyGeneratePTO.catalog - The target catalog.\n * @property {string} ServiceHostPolyGeneratePTO.name - The service name.\n * @property {string} ServiceHostPolyGeneratePTO.url - The service url.\n */\n\n/**\n * @class\n * @classdesc - Manages a single service host and its associated data.\n */\nexport default class ServiceHost {\n /**\n * Generate a new {@link ServiceHost}.\n *\n * @public\n * @constructor\n * @memberof ServiceHost\n * @param {ServiceHostConstructorPTO} pto\n */\n constructor(pto) {\n // Validate the parameter transfer object.\n ServiceHost.validate(pto);\n\n // Map the parameter transfer object to the class object.\n /**\n * The catalog name that the {@link ServiceHost} is associated with.\n *\n * @instance\n * @type {string}\n * @public\n * @memberof ServiceHost\n */\n this.catalog = pto.catalog;\n\n /**\n * The default URI for the {@link ServiceHost}.\n *\n * @instance\n * @type {string}\n * @public\n * @memberof ServiceHost\n */\n this.default = pto.defaultUri;\n\n /**\n * The host group that the {@link ServiceHost} is associated with.\n *\n * @instance\n * @type {string}\n * @public\n * @memberof ServiceHost\n */\n this.hostGroup = pto.hostGroup;\n\n /**\n * The cluster ID of the {@link ServiceHost}.\n *\n * @instance\n * @type {string}\n * @public\n * @memberof ServiceHost\n */\n this.id = pto.id;\n\n /**\n * The priority value of the {@link ServiceHost}. The lower the number, the\n * higher the priority.\n *\n * @instance\n * @type {number}\n * @public\n * @memberof ServiceHost\n */\n this.priority = pto.priority;\n\n /**\n * The host uri of the {@link ServiceHost}.\n *\n * @instance\n * @type {string}\n * @public\n * @memberof ServiceHost\n */\n this.uri = pto.uri;\n\n // Generate flags.\n /**\n * If the {@link ServiceHost} is marked as failed.\n *\n * @instance\n * @type {boolean}\n * @protected\n * @memberof ServiceHost\n */\n this.failed = false;\n\n /**\n * If the {@link ServiceHost} is marked as replaced.\n *\n * @instance\n * @type {boolean}\n * @protected\n * @memberof ServiceHost\n */\n this.replaced = false;\n }\n\n /**\n * If the {@link ServiceHost} is in an active state.\n *\n * @public\n * @memberof ServiceHost\n * @type {boolean} - `true` if the service is active and usable.\n */\n get active() {\n // Validate that the `ServiceHost` was not marked as failed or replaced.\n return !this.failed && !this.replaced;\n }\n\n /**\n * If the host is local to the user's cluster.\n *\n * @public\n * @memberof ServiceHost\n * @type {boolean} - If the host is local.\n */\n get local() {\n return this.default.includes(this.hostGroup);\n }\n\n /**\n * The service value.\n *\n * @public\n * @memberof ServiceHost\n * @type {string} - The service value.\n */\n get service() {\n return this.id.split(':')[3];\n }\n\n /**\n * The formatted url for the host.\n *\n * @public\n * @memberof ServiceHost\n * @type {string} - The service url.\n */\n get url() {\n // Generate a url object from the default url.\n const urlObj = Url.parse(this.default);\n\n // Format the host of the generated url object.\n urlObj.host = `${this.uri}${urlObj.port ? `:${urlObj.port}` : ''}`;\n\n // Assign the formatted url to this.\n return Url.format(urlObj);\n }\n\n /**\n * Set one or more of the status properties of the class object.\n *\n * @public\n * @memberof ServiceHost\n * @param {Object} pto - The parameter transfer object.\n * @property {boolean} [pto.failed] - The failed status to set.\n * @property {boolean} [pto.replaced] - the replaced status to set.\n * @returns {this}\n */\n setStatus({failed, replaced}) {\n if (failed !== undefined) {\n this.failed = failed;\n }\n\n if (replaced !== undefined) {\n this.replaced = replaced;\n }\n\n return this;\n }\n\n /**\n * Generate a service host using only a catalog, name, and URL.\n *\n * @public\n * @static\n * @memberof ServiceHost\n * @param {ServiceHostPolyGeneratePTO} pto\n * @returns {ServiceHost} - The generated service host.\n */\n static polyGenerate({catalog, name, url}) {\n return new ServiceHost({\n catalog,\n defaultUri: url,\n hostGroup: Url.parse(url).host,\n id: name ? `poly-head:poly-group:poly-cluster:${name}` : undefined,\n priority: 1,\n uri: Url.parse(url).host,\n });\n }\n\n /**\n * Validate that a constructor parameter transfer object is valid.\n *\n * @public\n * @static\n * @memberof ServiceHost\n * @param {ServiceHostConstructorPTO} pto\n * @throws - If the parameter transfer object is not valid.\n * @returns {undefined}\n */\n static validate({catalog, defaultUri, hostGroup, id, priority, uri}) {\n // Generate error-throwing method.\n const throwError = (msg) => {\n throw new Error(`service-host: invalid constructor parameters, ${msg}`);\n };\n\n // Validate the catalog property.\n if (!SERVICE_CATALOGS.includes(catalog)) {\n throwError(\"'catalog' must be a string\");\n }\n\n // Validate the `defaultUri` property.\n if (typeof defaultUri !== 'string') {\n throwError(\"'defaultUri' must be a string\");\n }\n\n // Validate the `hostGroup` property.\n if (typeof hostGroup !== 'string') {\n throwError(\"'hostGroup' must be a string\");\n }\n\n // Validate the `id` property.\n if (typeof id !== 'string' || id.split(':').length !== 4) {\n throwError(\"'id' must be a string that contains 3 ':' characters\");\n }\n\n // Validate the `priority` property.\n if (typeof priority !== 'number') {\n throwError(\"'priority' must be a number\");\n }\n\n // Validate the `uri` property.\n if (typeof uri !== 'string') {\n throwError(\"'uri' must be a string\");\n }\n }\n}\n"],"mappings":";;;;;;;;;;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAHA,IAIqBA,WAAW;EAC9B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,qBAAYC,GAAG,EAAE;IAAA;IACf;IACAD,WAAW,CAACE,QAAQ,CAACD,GAAG,CAAC;;IAEzB;IACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACE,OAAO,GAAGF,GAAG,CAACE,OAAO;;IAE1B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,OAAO,GAAGH,GAAG,CAACI,UAAU;;IAE7B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,SAAS,GAAGL,GAAG,CAACK,SAAS;;IAE9B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,EAAE,GAAGN,GAAG,CAACM,EAAE;;IAEhB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,QAAQ,GAAGP,GAAG,CAACO,QAAQ;;IAE5B;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,GAAG,GAAGR,GAAG,CAACQ,GAAG;;IAElB;IACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,KAAK;;IAEnB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,QAAQ,GAAG,KAAK;EACvB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,KAOA,eAAa;MACX;MACA,OAAO,CAAC,IAAI,CAACD,MAAM,IAAI,CAAC,IAAI,CAACC,QAAQ;IACvC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,KAOA,eAAY;MACV,OAAO,IAAI,CAACP,OAAO,CAACQ,QAAQ,CAAC,IAAI,CAACN,SAAS,CAAC;IAC9C;;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"}
|