@jbrowse/core 1.6.3 → 1.6.6
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/BaseFeatureWidget/BaseFeatureDetail.js +1 -3
- package/BaseFeatureWidget/index.d.ts +1 -1
- package/PluginLoader.d.ts +1 -1
- package/PluginManager.d.ts +2 -0
- package/ReExports/modules.d.ts +2 -0
- package/TextSearch/TextSearchManager.d.ts +2 -2
- package/assemblyManager/assemblyConfigSchema.d.ts +1 -1
- package/assemblyManager/assemblyManager.d.ts +1 -1
- package/configuration/index.d.ts +1 -1
- package/data_adapters/BaseAdapter.d.ts +2 -1
- package/data_adapters/BaseAdapter.js +29 -3
- package/data_adapters/CytobandAdapter.d.ts +1 -1
- package/package.json +4 -4
- package/pluggableElementTypes/RpcMethodType.js +1 -1
- package/pluggableElementTypes/models/InternetAccountModel.d.ts +103 -7
- package/pluggableElementTypes/models/InternetAccountModel.js +296 -10
- package/pluggableElementTypes/models/baseConnectionConfig.d.ts +1 -1
- package/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +1 -1
- package/pluggableElementTypes/models/baseInternetAccountConfig.js +16 -1
- package/pluggableElementTypes/models/baseTrackConfig.d.ts +1 -1
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.d.ts +1 -0
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +46 -22
- package/rpc/BaseRpcDriver.d.ts +4 -4
- package/rpc/BaseRpcDriver.js +152 -79
- package/rpc/BaseRpcDriver.test.js +64 -43
- package/rpc/MainThreadRpcDriver.d.ts +1 -1
- package/rpc/MainThreadRpcDriver.js +25 -16
- package/rpc/RpcManager.d.ts +1 -1
- package/rpc/WebWorkerRpcDriver.d.ts +1 -1
- package/rpc/WebWorkerRpcDriver.js +43 -11
- package/rpc/configSchema.d.ts +1 -1
- package/ui/ErrorMessage.js +23 -8
- package/ui/FileSelector/FileSelector.js +1 -1
- package/ui/ReturnToImportFormDialog.d.ts +9 -0
- package/ui/ReturnToImportFormDialog.js +63 -0
- package/ui/Tooltip.d.ts +1 -1
- package/ui/Tooltip.js +2 -2
- package/ui/index.d.ts +2 -0
- package/ui/index.js +18 -0
- package/ui/theme.d.ts +8 -0
- package/ui/theme.js +9 -0
- package/ui/theme.test.js +2 -2
- package/util/Base1DViewModel.d.ts +2 -0
- package/util/Base1DViewModel.js +9 -0
- package/util/index.d.ts +12 -1
- package/util/index.js +52 -17
- package/util/index.test.js +35 -14
- package/util/io/index.d.ts +2 -1
- package/util/io/index.js +95 -96
- package/util/offscreenCanvasPonyfill.d.ts +1 -0
- package/util/offscreenCanvasPonyfill.js +70 -58
- package/util/simpleFeature.d.ts +3 -0
- package/util/types/index.d.ts +2 -2
- package/util/types/index.js +3 -3
- package/babel.config.d.ts +0 -15
- package/babel.config.js +0 -19
|
@@ -9,6 +9,8 @@ exports.InternetAccount = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
11
|
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
|
|
12
14
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
15
|
|
|
14
16
|
var _mobxStateTree = require("mobx-state-tree");
|
|
@@ -19,6 +21,12 @@ var _io = require("../../util/io");
|
|
|
19
21
|
|
|
20
22
|
var _mst = require("../../util/types/mst");
|
|
21
23
|
|
|
24
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
25
|
+
|
|
26
|
+
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.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
27
|
+
|
|
28
|
+
var inWebWorker = typeof sessionStorage === 'undefined';
|
|
29
|
+
|
|
22
30
|
var InternetAccount = _mobxStateTree.types.model('InternetAccount', {
|
|
23
31
|
id: _mst.ElementId,
|
|
24
32
|
type: _mobxStateTree.types.string
|
|
@@ -28,48 +36,111 @@ var InternetAccount = _mobxStateTree.types.model('InternetAccount', {
|
|
|
28
36
|
return (0, _configuration.getConf)(self, 'name');
|
|
29
37
|
},
|
|
30
38
|
|
|
39
|
+
get description() {
|
|
40
|
+
return (0, _configuration.getConf)(self, 'description');
|
|
41
|
+
},
|
|
42
|
+
|
|
31
43
|
get internetAccountId() {
|
|
32
44
|
return (0, _configuration.getConf)(self, 'internetAccountId');
|
|
33
45
|
},
|
|
34
46
|
|
|
47
|
+
get authHeader() {
|
|
48
|
+
return (0, _configuration.getConf)(self, 'authHeader');
|
|
49
|
+
},
|
|
50
|
+
|
|
35
51
|
get tokenType() {
|
|
36
52
|
return (0, _configuration.getConf)(self, 'tokenType');
|
|
37
53
|
},
|
|
38
54
|
|
|
39
|
-
get
|
|
40
|
-
return (0, _configuration.getConf)(self);
|
|
55
|
+
get domains() {
|
|
56
|
+
return (0, _configuration.getConf)(self, 'domains');
|
|
41
57
|
},
|
|
42
58
|
|
|
59
|
+
/**
|
|
60
|
+
* Can use this to customize what is displayed in fileSelector's toggle box
|
|
61
|
+
*/
|
|
43
62
|
get toggleContents() {
|
|
44
63
|
return null;
|
|
45
64
|
},
|
|
46
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Can use this to customize what the fileSelector. It takes a prop called
|
|
68
|
+
* `setLocation` that should be used to set a UriLocation
|
|
69
|
+
*/
|
|
47
70
|
get SelectorComponent() {
|
|
48
71
|
return undefined;
|
|
49
72
|
},
|
|
50
73
|
|
|
74
|
+
/**
|
|
75
|
+
* Can use this to add a label to the UrlChooser. Has no effect if a custom
|
|
76
|
+
* SelectorComponent is supplied
|
|
77
|
+
*/
|
|
51
78
|
get selectorLabel() {
|
|
52
79
|
return undefined;
|
|
53
|
-
}
|
|
80
|
+
}
|
|
54
81
|
|
|
82
|
+
};
|
|
83
|
+
}).views(function (self) {
|
|
84
|
+
return {
|
|
85
|
+
/**
|
|
86
|
+
* Determine whether this internetAccount provides credentials for a URL
|
|
87
|
+
* @param location - UriLocation of resource
|
|
88
|
+
* @returns true or false
|
|
89
|
+
*/
|
|
55
90
|
handlesLocation: function handlesLocation(location) {
|
|
56
|
-
return
|
|
91
|
+
return self.domains.some(function (domain) {
|
|
92
|
+
return location === null || location === void 0 ? void 0 : location.uri.includes(domain);
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* The key used to store this internetAccount's token in sessionStorage
|
|
98
|
+
*/
|
|
99
|
+
get tokenKey() {
|
|
100
|
+
return "".concat(self.internetAccountId, "-token");
|
|
57
101
|
}
|
|
102
|
+
|
|
58
103
|
};
|
|
59
104
|
}).actions(function (self) {
|
|
60
105
|
return {
|
|
61
|
-
|
|
62
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Must be implemented by a model extending or composing this one. Pass the
|
|
108
|
+
* user's token to `resolve`.
|
|
109
|
+
* @param resolve - Pass the token to this function
|
|
110
|
+
* @param reject - If there is an error getting the token, call this function
|
|
111
|
+
*/
|
|
112
|
+
getTokenFromUser: function getTokenFromUser(resolve, reject) {
|
|
113
|
+
throw new Error('getTokenFromUser must be implemented by extending model');
|
|
63
114
|
},
|
|
64
|
-
|
|
115
|
+
storeToken: function storeToken(token) {
|
|
116
|
+
sessionStorage.setItem(self.tokenKey, token);
|
|
117
|
+
},
|
|
118
|
+
removeToken: function removeToken() {
|
|
119
|
+
sessionStorage.removeItem(self.tokenKey);
|
|
120
|
+
},
|
|
121
|
+
retrieveToken: function retrieveToken() {
|
|
122
|
+
return sessionStorage.getItem(self.tokenKey);
|
|
123
|
+
},
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* This can be used by an internetAccount to validate a token works before
|
|
127
|
+
* it is used. This is run when preAuthorizationInformation is requested, so
|
|
128
|
+
* it can be used to check that a token is valid before sending it to a
|
|
129
|
+
* worker thread. It expects the token to be returned so that this action
|
|
130
|
+
* can also be used to generate a new token (e.g. by using a refresh token)
|
|
131
|
+
* if the original one was invalid. Should throw an error if a token is
|
|
132
|
+
* invalid.
|
|
133
|
+
* @param token - Auth token
|
|
134
|
+
* @param location - UriLocation of the resource
|
|
135
|
+
* @returns - Valid auth token
|
|
136
|
+
*/
|
|
137
|
+
validateToken: function validateToken(token, location) {
|
|
65
138
|
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
66
139
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
67
140
|
while (1) {
|
|
68
141
|
switch (_context.prev = _context.next) {
|
|
69
142
|
case 0:
|
|
70
|
-
return _context.abrupt("return",
|
|
71
|
-
internetAccountType: self.type
|
|
72
|
-
});
|
|
143
|
+
return _context.abrupt("return", token);
|
|
73
144
|
|
|
74
145
|
case 1:
|
|
75
146
|
case "end":
|
|
@@ -80,6 +151,221 @@ var InternetAccount = _mobxStateTree.types.model('InternetAccount', {
|
|
|
80
151
|
}))();
|
|
81
152
|
}
|
|
82
153
|
};
|
|
154
|
+
}).actions(function (self) {
|
|
155
|
+
var tokenPromise = undefined;
|
|
156
|
+
return {
|
|
157
|
+
/**
|
|
158
|
+
* Try to get the token from the location pre-auth, from local storage,
|
|
159
|
+
* or from a previously cached promise. If token is not available, uses
|
|
160
|
+
* `getTokenFromUser`.
|
|
161
|
+
* @param location - UriLocation of the resource
|
|
162
|
+
* @returns A promise for the token
|
|
163
|
+
*/
|
|
164
|
+
getToken: function getToken(location) {
|
|
165
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
166
|
+
var _location$internetAcc, _location$internetAcc2;
|
|
167
|
+
|
|
168
|
+
var token;
|
|
169
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
170
|
+
while (1) {
|
|
171
|
+
switch (_context3.prev = _context3.next) {
|
|
172
|
+
case 0:
|
|
173
|
+
if (!tokenPromise) {
|
|
174
|
+
_context3.next = 2;
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return _context3.abrupt("return", tokenPromise);
|
|
179
|
+
|
|
180
|
+
case 2:
|
|
181
|
+
token = location === null || location === void 0 ? void 0 : (_location$internetAcc = location.internetAccountPreAuthorization) === null || _location$internetAcc === void 0 ? void 0 : (_location$internetAcc2 = _location$internetAcc.authInfo) === null || _location$internetAcc2 === void 0 ? void 0 : _location$internetAcc2.token;
|
|
182
|
+
|
|
183
|
+
if (!token) {
|
|
184
|
+
_context3.next = 6;
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
tokenPromise = Promise.resolve(token);
|
|
189
|
+
return _context3.abrupt("return", tokenPromise);
|
|
190
|
+
|
|
191
|
+
case 6:
|
|
192
|
+
if (!inWebWorker) {
|
|
193
|
+
_context3.next = 8;
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
throw new Error('Did not get internet account pre-authorization info in worker');
|
|
198
|
+
|
|
199
|
+
case 8:
|
|
200
|
+
token = self.retrieveToken();
|
|
201
|
+
|
|
202
|
+
if (!token) {
|
|
203
|
+
_context3.next = 12;
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
tokenPromise = Promise.resolve(token);
|
|
208
|
+
return _context3.abrupt("return", tokenPromise);
|
|
209
|
+
|
|
210
|
+
case 12:
|
|
211
|
+
tokenPromise = new Promise( /*#__PURE__*/function () {
|
|
212
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(r, x) {
|
|
213
|
+
var resolve, reject;
|
|
214
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
215
|
+
while (1) {
|
|
216
|
+
switch (_context2.prev = _context2.next) {
|
|
217
|
+
case 0:
|
|
218
|
+
reject = function _reject(error) {
|
|
219
|
+
self.removeToken();
|
|
220
|
+
x(error);
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
resolve = function _resolve(token) {
|
|
224
|
+
self.storeToken(token);
|
|
225
|
+
r(token);
|
|
226
|
+
};
|
|
227
|
+
|
|
228
|
+
self.getTokenFromUser(resolve, reject);
|
|
229
|
+
|
|
230
|
+
case 3:
|
|
231
|
+
case "end":
|
|
232
|
+
return _context2.stop();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}, _callee2);
|
|
236
|
+
}));
|
|
237
|
+
|
|
238
|
+
return function (_x, _x2) {
|
|
239
|
+
return _ref.apply(this, arguments);
|
|
240
|
+
};
|
|
241
|
+
}());
|
|
242
|
+
return _context3.abrupt("return", tokenPromise);
|
|
243
|
+
|
|
244
|
+
case 14:
|
|
245
|
+
case "end":
|
|
246
|
+
return _context3.stop();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}, _callee3);
|
|
250
|
+
}))();
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
}).actions(function (self) {
|
|
254
|
+
return {
|
|
255
|
+
addAuthHeaderToInit: function addAuthHeaderToInit() {
|
|
256
|
+
var init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
257
|
+
var token = arguments.length > 1 ? arguments[1] : undefined;
|
|
258
|
+
var tokenInfoString = self.tokenType ? "".concat(self.tokenType, " ").concat(token) : token;
|
|
259
|
+
var newHeaders = new Headers(init.headers || {});
|
|
260
|
+
newHeaders.append(self.authHeader, tokenInfoString);
|
|
261
|
+
return _objectSpread(_objectSpread({}, init), {}, {
|
|
262
|
+
headers: newHeaders
|
|
263
|
+
});
|
|
264
|
+
},
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Gets the token and returns it along with the information needed to
|
|
268
|
+
* create a new internetAccount.
|
|
269
|
+
* @param location - UriLocation of the resource
|
|
270
|
+
* @returns
|
|
271
|
+
*/
|
|
272
|
+
getPreAuthorizationInformation: function getPreAuthorizationInformation(location) {
|
|
273
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
274
|
+
var authToken, validatedToken;
|
|
275
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
276
|
+
while (1) {
|
|
277
|
+
switch (_context4.prev = _context4.next) {
|
|
278
|
+
case 0:
|
|
279
|
+
_context4.next = 2;
|
|
280
|
+
return self.getToken(location);
|
|
281
|
+
|
|
282
|
+
case 2:
|
|
283
|
+
authToken = _context4.sent;
|
|
284
|
+
_context4.prev = 3;
|
|
285
|
+
_context4.next = 6;
|
|
286
|
+
return self.validateToken(authToken, location);
|
|
287
|
+
|
|
288
|
+
case 6:
|
|
289
|
+
validatedToken = _context4.sent;
|
|
290
|
+
_context4.next = 13;
|
|
291
|
+
break;
|
|
292
|
+
|
|
293
|
+
case 9:
|
|
294
|
+
_context4.prev = 9;
|
|
295
|
+
_context4.t0 = _context4["catch"](3);
|
|
296
|
+
self.removeToken();
|
|
297
|
+
throw _context4.t0;
|
|
298
|
+
|
|
299
|
+
case 13:
|
|
300
|
+
return _context4.abrupt("return", {
|
|
301
|
+
internetAccountType: self.type,
|
|
302
|
+
authInfo: {
|
|
303
|
+
token: validatedToken,
|
|
304
|
+
configuration: (0, _configuration.getConf)(self)
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
case 14:
|
|
309
|
+
case "end":
|
|
310
|
+
return _context4.stop();
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}, _callee4, null, [[3, 9]]);
|
|
314
|
+
}))();
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
}).actions(function (self) {
|
|
318
|
+
return {
|
|
319
|
+
/**
|
|
320
|
+
* Get a fetch method that will add any needed authentication headers to
|
|
321
|
+
* the request before sending it. If location is provided, it will be
|
|
322
|
+
* checked to see if it includes a token in it pre-auth information.
|
|
323
|
+
* @param location - UriLocation of the resource
|
|
324
|
+
* @returns A function that can be used to fetch
|
|
325
|
+
*/
|
|
326
|
+
getFetcher: function getFetcher(location) {
|
|
327
|
+
return /*#__PURE__*/function () {
|
|
328
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(input, init) {
|
|
329
|
+
var authToken, newInit;
|
|
330
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
331
|
+
while (1) {
|
|
332
|
+
switch (_context5.prev = _context5.next) {
|
|
333
|
+
case 0:
|
|
334
|
+
_context5.next = 2;
|
|
335
|
+
return self.getToken(location);
|
|
336
|
+
|
|
337
|
+
case 2:
|
|
338
|
+
authToken = _context5.sent;
|
|
339
|
+
newInit = self.addAuthHeaderToInit(init, authToken);
|
|
340
|
+
return _context5.abrupt("return", fetch(input, newInit));
|
|
341
|
+
|
|
342
|
+
case 5:
|
|
343
|
+
case "end":
|
|
344
|
+
return _context5.stop();
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}, _callee5);
|
|
348
|
+
}));
|
|
349
|
+
|
|
350
|
+
return function (_x3, _x4) {
|
|
351
|
+
return _ref2.apply(this, arguments);
|
|
352
|
+
};
|
|
353
|
+
}();
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
}).actions(function (self) {
|
|
357
|
+
return {
|
|
358
|
+
/**
|
|
359
|
+
* Gets a filehandle that uses a fetch that adds auth headers
|
|
360
|
+
* @param location - UriLocation of the resource
|
|
361
|
+
* @returns A filehandle
|
|
362
|
+
*/
|
|
363
|
+
openLocation: function openLocation(location) {
|
|
364
|
+
return new _io.RemoteFileWithRangeCache(location.uri, {
|
|
365
|
+
fetch: self.getFetcher(location)
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
};
|
|
83
369
|
});
|
|
84
370
|
|
|
85
371
|
exports.InternetAccount = InternetAccount;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: import("../../configuration
|
|
1
|
+
declare const _default: import("../../configuration").AnyConfigurationSchemaType;
|
|
2
2
|
export default _default;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Instance } from 'mobx-state-tree';
|
|
2
|
-
export declare const BaseInternetAccountConfig: import("../../configuration
|
|
2
|
+
export declare const BaseInternetAccountConfig: import("../../configuration").AnyConfigurationSchemaType;
|
|
3
3
|
export declare type BaseInternetAccountConfigModel = typeof BaseInternetAccountConfig;
|
|
4
4
|
export declare type BaseInternetAccountConfig = Instance<BaseInternetAccountConfigModel>;
|
|
@@ -9,7 +9,7 @@ var _configuration = require("../../configuration");
|
|
|
9
9
|
|
|
10
10
|
var BaseInternetAccountConfig = (0, _configuration.ConfigurationSchema)('InternetAccount', {
|
|
11
11
|
name: {
|
|
12
|
-
description: 'descriptive name of the internet
|
|
12
|
+
description: 'descriptive name of the internet account',
|
|
13
13
|
type: 'string',
|
|
14
14
|
defaultValue: ''
|
|
15
15
|
},
|
|
@@ -17,6 +17,21 @@ var BaseInternetAccountConfig = (0, _configuration.ConfigurationSchema)('Interne
|
|
|
17
17
|
description: 'a description of the internet account',
|
|
18
18
|
type: 'string',
|
|
19
19
|
defaultValue: ''
|
|
20
|
+
},
|
|
21
|
+
authHeader: {
|
|
22
|
+
description: 'request header for credentials',
|
|
23
|
+
type: 'string',
|
|
24
|
+
defaultValue: 'Authorization'
|
|
25
|
+
},
|
|
26
|
+
tokenType: {
|
|
27
|
+
description: 'a custom name for a token to include in the header',
|
|
28
|
+
type: 'string',
|
|
29
|
+
defaultValue: ''
|
|
30
|
+
},
|
|
31
|
+
domains: {
|
|
32
|
+
description: 'array of valid domains the url can contain to use this account',
|
|
33
|
+
type: 'stringArray',
|
|
34
|
+
defaultValue: []
|
|
20
35
|
}
|
|
21
36
|
}, {
|
|
22
37
|
explicitIdentifier: 'internetAccountId',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Instance } from 'mobx-state-tree';
|
|
2
2
|
import PluginManager from '../../PluginManager';
|
|
3
|
-
export declare function createBaseTrackConfig(pluginManager: PluginManager): import("../../configuration
|
|
3
|
+
export declare function createBaseTrackConfig(pluginManager: PluginManager): import("../../configuration").AnyConfigurationSchemaType;
|
|
4
4
|
export declare type BaseTrackConfigModel = ReturnType<typeof createBaseTrackConfig>;
|
|
5
5
|
export declare type BaseTrackConfig = Instance<BaseTrackConfigModel>;
|
|
@@ -32,6 +32,7 @@ export default class ComparativeServerSideRenderer extends ServerSideRenderer {
|
|
|
32
32
|
* @param args - the arguments passed to render
|
|
33
33
|
* @returns the same object
|
|
34
34
|
*/
|
|
35
|
+
renameRegionsIfNeeded(args: RenderArgs): Promise<RenderArgs>;
|
|
35
36
|
serializeArgsInClient(args: RenderArgs): ServerSideRenderArgsSerialized;
|
|
36
37
|
deserializeResultsInClient(result: ResultsSerialized, args: RenderArgs): ResultsDeserialized;
|
|
37
38
|
/**
|
|
@@ -9,10 +9,10 @@ exports.default = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
11
|
|
|
12
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
13
|
|
|
14
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
+
|
|
16
16
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
17
17
|
|
|
18
18
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -50,7 +50,7 @@ var ComparativeServerSideRenderer = /*#__PURE__*/function (_ServerSideRenderer)
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
(0, _createClass2.default)(ComparativeServerSideRenderer, [{
|
|
53
|
-
key: "
|
|
53
|
+
key: "renameRegionsIfNeeded",
|
|
54
54
|
value:
|
|
55
55
|
/**
|
|
56
56
|
* directly modifies the render arguments to prepare
|
|
@@ -65,7 +65,31 @@ var ComparativeServerSideRenderer = /*#__PURE__*/function (_ServerSideRenderer)
|
|
|
65
65
|
* @param args - the arguments passed to render
|
|
66
66
|
* @returns the same object
|
|
67
67
|
*/
|
|
68
|
-
function
|
|
68
|
+
function () {
|
|
69
|
+
var _renameRegionsIfNeeded = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(args) {
|
|
70
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
71
|
+
while (1) {
|
|
72
|
+
switch (_context.prev = _context.next) {
|
|
73
|
+
case 0:
|
|
74
|
+
return _context.abrupt("return", args);
|
|
75
|
+
|
|
76
|
+
case 1:
|
|
77
|
+
case "end":
|
|
78
|
+
return _context.stop();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}, _callee);
|
|
82
|
+
}));
|
|
83
|
+
|
|
84
|
+
function renameRegionsIfNeeded(_x) {
|
|
85
|
+
return _renameRegionsIfNeeded.apply(this, arguments);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return renameRegionsIfNeeded;
|
|
89
|
+
}()
|
|
90
|
+
}, {
|
|
91
|
+
key: "serializeArgsInClient",
|
|
92
|
+
value: function serializeArgsInClient(args) {
|
|
69
93
|
var deserializedArgs = _objectSpread(_objectSpread({}, args), {}, {
|
|
70
94
|
displayModel: {}
|
|
71
95
|
});
|
|
@@ -89,22 +113,22 @@ var ComparativeServerSideRenderer = /*#__PURE__*/function (_ServerSideRenderer)
|
|
|
89
113
|
}, {
|
|
90
114
|
key: "renderInClient",
|
|
91
115
|
value: function () {
|
|
92
|
-
var _renderInClient = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
93
|
-
return _regenerator.default.wrap(function
|
|
116
|
+
var _renderInClient = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(rpcManager, args) {
|
|
117
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
94
118
|
while (1) {
|
|
95
|
-
switch (
|
|
119
|
+
switch (_context2.prev = _context2.next) {
|
|
96
120
|
case 0:
|
|
97
|
-
return
|
|
121
|
+
return _context2.abrupt("return", rpcManager.call(args.sessionId, 'ComparativeRender', args));
|
|
98
122
|
|
|
99
123
|
case 1:
|
|
100
124
|
case "end":
|
|
101
|
-
return
|
|
125
|
+
return _context2.stop();
|
|
102
126
|
}
|
|
103
127
|
}
|
|
104
|
-
},
|
|
128
|
+
}, _callee2);
|
|
105
129
|
}));
|
|
106
130
|
|
|
107
|
-
function renderInClient(
|
|
131
|
+
function renderInClient(_x2, _x3) {
|
|
108
132
|
return _renderInClient.apply(this, arguments);
|
|
109
133
|
}
|
|
110
134
|
|
|
@@ -128,33 +152,33 @@ var ComparativeServerSideRenderer = /*#__PURE__*/function (_ServerSideRenderer)
|
|
|
128
152
|
}, {
|
|
129
153
|
key: "getFeatures",
|
|
130
154
|
value: function () {
|
|
131
|
-
var _getFeatures = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
155
|
+
var _getFeatures = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(renderArgs) {
|
|
132
156
|
var _this = this;
|
|
133
157
|
|
|
134
158
|
var signal, sessionId, adapterConfig, _yield$getAdapter, dataAdapter, regions, requestRegions, featureObservable;
|
|
135
159
|
|
|
136
|
-
return _regenerator.default.wrap(function
|
|
160
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
137
161
|
while (1) {
|
|
138
|
-
switch (
|
|
162
|
+
switch (_context3.prev = _context3.next) {
|
|
139
163
|
case 0:
|
|
140
164
|
signal = renderArgs.signal, sessionId = renderArgs.sessionId, adapterConfig = renderArgs.adapterConfig;
|
|
141
|
-
|
|
165
|
+
_context3.next = 3;
|
|
142
166
|
return (0, _dataAdapterCache.getAdapter)(this.pluginManager, sessionId, adapterConfig);
|
|
143
167
|
|
|
144
168
|
case 3:
|
|
145
|
-
_yield$getAdapter =
|
|
169
|
+
_yield$getAdapter = _context3.sent;
|
|
146
170
|
dataAdapter = _yield$getAdapter.dataAdapter;
|
|
147
171
|
regions = []; // @ts-ignore this is instantiated by the getFeatures call
|
|
148
172
|
|
|
149
173
|
regions = renderArgs.regions;
|
|
150
174
|
|
|
151
175
|
if (!(!regions || regions.length === 0)) {
|
|
152
|
-
|
|
176
|
+
_context3.next = 10;
|
|
153
177
|
break;
|
|
154
178
|
}
|
|
155
179
|
|
|
156
180
|
console.warn('no regions supplied to comparative renderer');
|
|
157
|
-
return
|
|
181
|
+
return _context3.abrupt("return", []);
|
|
158
182
|
|
|
159
183
|
case 10:
|
|
160
184
|
requestRegions = regions.map(function (r) {
|
|
@@ -176,20 +200,20 @@ var ComparativeServerSideRenderer = /*#__PURE__*/function (_ServerSideRenderer)
|
|
|
176
200
|
featureObservable = dataAdapter.getFeaturesInMultipleRegions(requestRegions, {
|
|
177
201
|
signal: signal
|
|
178
202
|
});
|
|
179
|
-
return
|
|
203
|
+
return _context3.abrupt("return", featureObservable.pipe( // @ts-ignore
|
|
180
204
|
(0, _operators.filter)(function (feature) {
|
|
181
205
|
return _this.featurePassesFilters(renderArgs, feature);
|
|
182
206
|
}), (0, _operators.toArray)()).toPromise());
|
|
183
207
|
|
|
184
208
|
case 13:
|
|
185
209
|
case "end":
|
|
186
|
-
return
|
|
210
|
+
return _context3.stop();
|
|
187
211
|
}
|
|
188
212
|
}
|
|
189
|
-
},
|
|
213
|
+
}, _callee3, this);
|
|
190
214
|
}));
|
|
191
215
|
|
|
192
|
-
function getFeatures(
|
|
216
|
+
function getFeatures(_x4) {
|
|
193
217
|
return _getFeatures.apply(this, arguments);
|
|
194
218
|
}
|
|
195
219
|
|
package/rpc/BaseRpcDriver.d.ts
CHANGED
|
@@ -20,24 +20,24 @@ declare class LazyWorker {
|
|
|
20
20
|
driver: BaseRpcDriver;
|
|
21
21
|
worker?: WorkerHandle;
|
|
22
22
|
constructor(driver: BaseRpcDriver);
|
|
23
|
-
getWorker(pluginManager: PluginManager, rpcDriverClassName: string): WorkerHandle
|
|
23
|
+
getWorker(pluginManager: PluginManager, rpcDriverClassName: string): Promise<WorkerHandle>;
|
|
24
24
|
}
|
|
25
25
|
export default abstract class BaseRpcDriver {
|
|
26
26
|
abstract name: string;
|
|
27
27
|
private lastWorkerAssignment;
|
|
28
28
|
private workerAssignments;
|
|
29
29
|
private workerCount;
|
|
30
|
-
abstract makeWorker(pluginManager: PluginManager): WorkerHandle
|
|
30
|
+
abstract makeWorker(pluginManager: PluginManager): Promise<WorkerHandle>;
|
|
31
31
|
private workerPool?;
|
|
32
32
|
maxPingTime: number;
|
|
33
33
|
workerCheckFrequency: number;
|
|
34
34
|
config: AnyConfigurationModel;
|
|
35
35
|
constructor(args: RpcDriverConstructorArgs);
|
|
36
36
|
filterArgs<THING_TYPE>(thing: THING_TYPE, pluginManager: PluginManager, sessionId: string): THING_TYPE;
|
|
37
|
-
remoteAbort(pluginManager: PluginManager, sessionId: string, functionName: string, signalId: number): void
|
|
37
|
+
remoteAbort(pluginManager: PluginManager, sessionId: string, functionName: string, signalId: number): Promise<void>;
|
|
38
38
|
createWorkerPool(): LazyWorker[];
|
|
39
39
|
getWorkerPool(): LazyWorker[];
|
|
40
|
-
getWorker(sessionId: string, pluginManager: PluginManager): WorkerHandle
|
|
40
|
+
getWorker(sessionId: string, pluginManager: PluginManager): Promise<WorkerHandle>;
|
|
41
41
|
call(pluginManager: PluginManager, sessionId: string, functionName: string, args: {
|
|
42
42
|
statusCallback?: (message: string) => void;
|
|
43
43
|
}, options?: {}): Promise<unknown>;
|