@jbrowse/core 1.6.8 → 1.7.1
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.d.ts +2 -2
- package/PluginLoader.d.ts +11 -3
- package/PluginLoader.js +37 -89
- package/PluginManager.js +4 -6
- package/package.json +8 -10
- package/pluggableElementTypes/WidgetType.d.ts +1 -2
- package/pluggableElementTypes/models/BaseViewModel.js +1 -1
- package/pluggableElementTypes/models/InternetAccountModel.js +51 -69
- package/rpc/WebWorkerRpcDriver.d.ts +2 -6
- package/rpc/WebWorkerRpcDriver.js +6 -5
- package/tsconfig.build.tsbuildinfo +1 -0
- package/ui/App.js +13 -17
- package/ui/AssemblySelector.d.ts +4 -1
- package/ui/AssemblySelector.js +69 -8
- package/ui/PrerenderedCanvas.js +1 -26
- package/ui/ViewContainer.d.ts +5 -5
- package/ui/ViewContainer.js +12 -7
- package/util/index.d.ts +7 -1
- package/util/index.js +25 -5
- package/util/io/index.js +3 -1
- package/util/layouts/BaseLayout.d.ts +1 -0
- package/util/layouts/GranularRectLayout.js +2 -0
- package/util/layouts/PrecomputedLayout.js +2 -1
- package/util/offscreenCanvas/Canvas2DContextShim/Canvas2DContextShim.test.js +15 -0
- package/util/offscreenCanvas/Canvas2DContextShim/context.d.ts +56 -0
- package/util/offscreenCanvas/Canvas2DContextShim/context.js +356 -0
- package/util/offscreenCanvas/Canvas2DContextShim/index.d.ts +2 -0
- package/util/offscreenCanvas/Canvas2DContextShim/index.js +13 -0
- package/util/offscreenCanvas/Canvas2DContextShim/svg.d.ts +3 -0
- package/util/offscreenCanvas/Canvas2DContextShim/svg.js +210 -0
- package/util/offscreenCanvas/Canvas2DContextShim/types.d.ts +50 -0
- package/util/offscreenCanvas/Canvas2DContextShim/types.js +59 -0
- package/util/offscreenCanvas/Canvas2DContextShim/util.d.ts +12 -0
- package/util/offscreenCanvas/Canvas2DContextShim/util.js +91 -0
- package/util/offscreenCanvas/CanvasShim.d.ts +11 -0
- package/util/offscreenCanvas/CanvasShim.js +54 -0
- package/util/offscreenCanvas/index.d.ts +14 -0
- package/util/offscreenCanvas/index.js +170 -0
- package/util/offscreenCanvas/ponyfill.d.ts +6 -0
- package/util/offscreenCanvas/ponyfill.js +145 -0
- package/util/offscreenCanvas/types.d.ts +16 -0
- package/util/offscreenCanvas/types.js +14 -0
- package/util/offscreenCanvasPonyfill.d.ts +1 -58
- package/util/offscreenCanvasPonyfill.js +10 -815
- package/util/offscreenCanvasUtils.d.ts +1 -13
- package/util/offscreenCanvasUtils.js +12 -124
- package/BaseFeatureWidget/SequenceFeatureDetails.test.d.ts +0 -1
- package/BaseFeatureWidget/index.test.d.ts +0 -1
- package/TextSearch/BaseResults.test.d.ts +0 -1
- package/configuration/configurationSchema.test.d.ts +0 -1
- package/configuration/configurationSlot.test.d.ts +0 -1
- package/configuration/util.test.d.ts +0 -1
- package/data_adapters/BaseAdapter.test.d.ts +0 -1
- package/pluggableElementTypes/RpcMethodType.test.d.ts +0 -4
- package/pluggableElementTypes/renderers/util/serializableFilterChain.test.d.ts +0 -1
- package/rpc/BaseRpcDriver.test.d.ts +0 -9
- package/ui/FatalErrorDialog.test.d.ts +0 -1
- package/ui/NewSessionCards.d.ts +0 -14
- package/ui/NewSessionCards.js +0 -136
- package/ui/SanitizedHTML.test.d.ts +0 -1
- package/ui/theme.test.d.ts +0 -1
- package/util/Base1DViewModel.test.d.ts +0 -1
- package/util/calculateDynamicBlocks.test.d.ts +0 -1
- package/util/calculateStaticBlocks.test.d.ts +0 -1
- package/util/formatFastaStrings.test.d.ts +0 -1
- package/util/index.test.d.ts +0 -1
- package/util/jexlStrings.test.d.ts +0 -1
- package/util/layouts/GranularRectLayout.test.d.ts +0 -1
- package/util/range.test.d.ts +0 -1
- package/util/simpleFeature.test.d.ts +0 -1
- package/util/stats.test.d.ts +0 -1
|
@@ -39,8 +39,8 @@ export interface BaseInputProps extends BaseCardProps {
|
|
|
39
39
|
export declare const FeatureDetails: (props: {
|
|
40
40
|
model: IAnyStateTreeNode;
|
|
41
41
|
feature: SimpleFeatureSerialized & {
|
|
42
|
-
name?: string
|
|
43
|
-
id?: string
|
|
42
|
+
name?: string;
|
|
43
|
+
id?: string;
|
|
44
44
|
};
|
|
45
45
|
depth?: number | undefined;
|
|
46
46
|
omit?: string[] | undefined;
|
package/PluginLoader.d.ts
CHANGED
|
@@ -28,14 +28,22 @@ export interface LoadedPlugin {
|
|
|
28
28
|
}
|
|
29
29
|
export default class PluginLoader {
|
|
30
30
|
definitions: PluginDefinition[];
|
|
31
|
-
|
|
31
|
+
fetchESM?: (url: string) => Promise<unknown>;
|
|
32
|
+
fetchCJS?: (url: string) => Promise<LoadedPlugin>;
|
|
33
|
+
constructor(pluginDefinitions?: PluginDefinition[], args?: {
|
|
34
|
+
fetchESM?: (url: string) => Promise<unknown>;
|
|
35
|
+
fetchCJS?: (url: string) => Promise<LoadedPlugin>;
|
|
36
|
+
});
|
|
32
37
|
loadScript(scriptUrl: string): Promise<void>;
|
|
33
|
-
loadCJSPlugin(
|
|
38
|
+
loadCJSPlugin({ cjsUrl }: CJSPluginDefinition): Promise<LoadedPlugin>;
|
|
34
39
|
loadESMPlugin(pluginDefinition: ESMPluginDefinition): Promise<LoadedPlugin>;
|
|
35
40
|
loadUMDPlugin(pluginDefinition: UMDPluginDefinition | LegacyUMDPluginDefinition): Promise<{
|
|
36
41
|
default: PluginConstructor;
|
|
37
42
|
}>;
|
|
38
43
|
loadPlugin(definition: PluginDefinition): Promise<PluginConstructor>;
|
|
39
44
|
installGlobalReExports(target: WindowOrWorkerGlobalScope): void;
|
|
40
|
-
load(): Promise<
|
|
45
|
+
load(): Promise<{
|
|
46
|
+
plugin: PluginConstructor;
|
|
47
|
+
definition: PluginDefinition;
|
|
48
|
+
}[]>;
|
|
41
49
|
}
|
package/PluginLoader.js
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
@@ -28,18 +26,12 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
|
28
26
|
|
|
29
27
|
var _loadScript = _interopRequireDefault(require("load-script2"));
|
|
30
28
|
|
|
31
|
-
var _sanitizeFilename = _interopRequireDefault(require("sanitize-filename"));
|
|
32
|
-
|
|
33
29
|
var _configuration = require("./configuration");
|
|
34
30
|
|
|
35
31
|
var _ReExports = _interopRequireDefault(require("./ReExports"));
|
|
36
32
|
|
|
37
33
|
var _util = require("./util");
|
|
38
34
|
|
|
39
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
40
|
-
|
|
41
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
42
|
-
|
|
43
35
|
var PluginSourceConfigurationSchema = (0, _configuration.ConfigurationSchema)('PluginSource', {
|
|
44
36
|
name: {
|
|
45
37
|
type: 'string',
|
|
@@ -67,8 +59,7 @@ function isCJSPluginDefinition(pluginDefinition) {
|
|
|
67
59
|
function getGlobalObject() {
|
|
68
60
|
// Based on window-or-global
|
|
69
61
|
// https://github.com/purposeindustries/window-or-global/blob/322abc71de0010c9e5d9d0729df40959e1ef8775/lib/index.js
|
|
70
|
-
return (
|
|
71
|
-
/* eslint-disable-next-line no-restricted-globals */
|
|
62
|
+
return (// eslint-disable-next-line no-restricted-globals
|
|
72
63
|
(typeof self === "undefined" ? "undefined" : (0, _typeof2.default)(self)) === 'object' && self.self === self && self || (typeof global === "undefined" ? "undefined" : (0, _typeof2.default)(global)) === 'object' && global.global === global && global || // @ts-ignore
|
|
73
64
|
this
|
|
74
65
|
);
|
|
@@ -81,8 +72,13 @@ function isInWebWorker(globalObject) {
|
|
|
81
72
|
var PluginLoader = /*#__PURE__*/function () {
|
|
82
73
|
function PluginLoader() {
|
|
83
74
|
var pluginDefinitions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
75
|
+
var args = arguments.length > 1 ? arguments[1] : undefined;
|
|
84
76
|
(0, _classCallCheck2.default)(this, PluginLoader);
|
|
85
77
|
(0, _defineProperty2.default)(this, "definitions", []);
|
|
78
|
+
(0, _defineProperty2.default)(this, "fetchESM", void 0);
|
|
79
|
+
(0, _defineProperty2.default)(this, "fetchCJS", void 0);
|
|
80
|
+
this.fetchESM = args === null || args === void 0 ? void 0 : args.fetchESM;
|
|
81
|
+
this.fetchCJS = args === null || args === void 0 ? void 0 : args.fetchCJS;
|
|
86
82
|
this.definitions = JSON.parse(JSON.stringify(pluginDefinitions));
|
|
87
83
|
}
|
|
88
84
|
|
|
@@ -115,95 +111,49 @@ var PluginLoader = /*#__PURE__*/function () {
|
|
|
115
111
|
}, {
|
|
116
112
|
key: "loadCJSPlugin",
|
|
117
113
|
value: function () {
|
|
118
|
-
var _loadCJSPlugin = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(
|
|
119
|
-
var
|
|
114
|
+
var _loadCJSPlugin = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
|
|
115
|
+
var cjsUrl, parsedUrl;
|
|
120
116
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
121
117
|
while (1) {
|
|
122
118
|
switch (_context.prev = _context.next) {
|
|
123
119
|
case 0:
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
120
|
+
cjsUrl = _ref.cjsUrl;
|
|
121
|
+
_context.prev = 1;
|
|
122
|
+
parsedUrl = new URL(cjsUrl, getGlobalObject().location.href);
|
|
123
|
+
_context.next = 9;
|
|
127
124
|
break;
|
|
128
125
|
|
|
129
|
-
case
|
|
130
|
-
_context.prev =
|
|
131
|
-
_context.t0 = _context["catch"](
|
|
126
|
+
case 5:
|
|
127
|
+
_context.prev = 5;
|
|
128
|
+
_context.t0 = _context["catch"](1);
|
|
132
129
|
console.error(_context.t0);
|
|
133
|
-
throw new Error("Error parsing URL: ".concat(
|
|
130
|
+
throw new Error("Error parsing URL: ".concat(cjsUrl));
|
|
134
131
|
|
|
135
|
-
case
|
|
132
|
+
case 9:
|
|
136
133
|
if (!(parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:')) {
|
|
137
|
-
_context.next =
|
|
134
|
+
_context.next = 11;
|
|
138
135
|
break;
|
|
139
136
|
}
|
|
140
137
|
|
|
141
|
-
throw new Error("
|
|
142
|
-
|
|
143
|
-
case 10:
|
|
144
|
-
fs = require('fs');
|
|
145
|
-
path = require('path');
|
|
146
|
-
os = require('os');
|
|
147
|
-
http = require('http');
|
|
148
|
-
fsPromises = fs.promises; // On macOS `os.tmpdir()` returns the path to a symlink, see:
|
|
149
|
-
// https://github.com/nodejs/node/issues/11422
|
|
150
|
-
|
|
151
|
-
_context.next = 17;
|
|
152
|
-
return fsPromises.realpath(os.tmpdir());
|
|
138
|
+
throw new Error("Cannot load plugins using protocol \"".concat(parsedUrl.protocol, "\""));
|
|
153
139
|
|
|
154
|
-
case
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
return fsPromises.mkdtemp(path.join(systemTmp, 'jbrowse-plugin-'));
|
|
158
|
-
|
|
159
|
-
case 20:
|
|
160
|
-
tmpDir = _context.sent;
|
|
161
|
-
plugin = undefined;
|
|
162
|
-
_context.prev = 22;
|
|
163
|
-
pluginLocation = path.join(tmpDir, (0, _sanitizeFilename.default)(parsedUrl.href));
|
|
164
|
-
pluginLocationRelative = path.relative('.', pluginLocation);
|
|
165
|
-
pluginDownload = new Promise(function (resolve, reject) {
|
|
166
|
-
var file = fs.createWriteStream(pluginLocation);
|
|
167
|
-
http.get(parsedUrl.href, function (response) {
|
|
168
|
-
response.pipe(file);
|
|
169
|
-
file.on('finish', function () {
|
|
170
|
-
resolve();
|
|
171
|
-
});
|
|
172
|
-
}).on('error', function (err) {
|
|
173
|
-
fs.unlinkSync(pluginLocation);
|
|
174
|
-
reject(err);
|
|
175
|
-
});
|
|
176
|
-
});
|
|
177
|
-
_context.next = 28;
|
|
178
|
-
return pluginDownload;
|
|
179
|
-
|
|
180
|
-
case 28:
|
|
181
|
-
plugin = __non_webpack_require__(pluginLocationRelative);
|
|
182
|
-
|
|
183
|
-
case 29:
|
|
184
|
-
_context.prev = 29;
|
|
185
|
-
fsPromises.rmdir(tmpDir, {
|
|
186
|
-
recursive: true
|
|
187
|
-
});
|
|
188
|
-
return _context.finish(29);
|
|
189
|
-
|
|
190
|
-
case 32:
|
|
191
|
-
if (plugin) {
|
|
192
|
-
_context.next = 34;
|
|
140
|
+
case 11:
|
|
141
|
+
if (this.fetchCJS) {
|
|
142
|
+
_context.next = 13;
|
|
193
143
|
break;
|
|
194
144
|
}
|
|
195
145
|
|
|
196
|
-
throw new Error(
|
|
146
|
+
throw new Error('No fetchCJS callback provided');
|
|
197
147
|
|
|
198
|
-
case
|
|
199
|
-
return _context.abrupt("return",
|
|
148
|
+
case 13:
|
|
149
|
+
return _context.abrupt("return", this.fetchCJS(parsedUrl.href));
|
|
200
150
|
|
|
201
|
-
case
|
|
151
|
+
case 14:
|
|
202
152
|
case "end":
|
|
203
153
|
return _context.stop();
|
|
204
154
|
}
|
|
205
155
|
}
|
|
206
|
-
}, _callee,
|
|
156
|
+
}, _callee, this, [[1, 5]]);
|
|
207
157
|
}));
|
|
208
158
|
|
|
209
159
|
function loadCJSPlugin(_x) {
|
|
@@ -216,6 +166,8 @@ var PluginLoader = /*#__PURE__*/function () {
|
|
|
216
166
|
key: "loadESMPlugin",
|
|
217
167
|
value: function () {
|
|
218
168
|
var _loadESMPlugin = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(pluginDefinition) {
|
|
169
|
+
var _this$fetchESM;
|
|
170
|
+
|
|
219
171
|
var parsedUrl, plugin;
|
|
220
172
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
221
173
|
while (1) {
|
|
@@ -242,11 +194,7 @@ var PluginLoader = /*#__PURE__*/function () {
|
|
|
242
194
|
|
|
243
195
|
case 10:
|
|
244
196
|
_context2.next = 12;
|
|
245
|
-
return
|
|
246
|
-
/* webpackIgnore: true */
|
|
247
|
-
parsedUrl.href)).then(function (s) {
|
|
248
|
-
return _interopRequireWildcard(require(s));
|
|
249
|
-
});
|
|
197
|
+
return (_this$fetchESM = this.fetchESM) === null || _this$fetchESM === void 0 ? void 0 : _this$fetchESM.call(this, parsedUrl.href);
|
|
250
198
|
|
|
251
199
|
case 12:
|
|
252
200
|
plugin = _context2.sent;
|
|
@@ -266,7 +214,7 @@ var PluginLoader = /*#__PURE__*/function () {
|
|
|
266
214
|
return _context2.stop();
|
|
267
215
|
}
|
|
268
216
|
}
|
|
269
|
-
}, _callee2,
|
|
217
|
+
}, _callee2, this, [[0, 4]]);
|
|
270
218
|
}));
|
|
271
219
|
|
|
272
220
|
function loadESMPlugin(_x2) {
|
|
@@ -421,10 +369,10 @@ var PluginLoader = /*#__PURE__*/function () {
|
|
|
421
369
|
key: "installGlobalReExports",
|
|
422
370
|
value: function installGlobalReExports(target) {
|
|
423
371
|
// @ts-ignore
|
|
424
|
-
target.JBrowseExports = Object.fromEntries(Object.entries(_ReExports.default).map(function (
|
|
425
|
-
var
|
|
426
|
-
moduleName =
|
|
427
|
-
module =
|
|
372
|
+
target.JBrowseExports = Object.fromEntries(Object.entries(_ReExports.default).map(function (_ref2) {
|
|
373
|
+
var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
|
|
374
|
+
moduleName = _ref3[0],
|
|
375
|
+
module = _ref3[1];
|
|
428
376
|
|
|
429
377
|
return [moduleName, module];
|
|
430
378
|
}));
|
|
@@ -440,7 +388,7 @@ var PluginLoader = /*#__PURE__*/function () {
|
|
|
440
388
|
switch (_context6.prev = _context6.next) {
|
|
441
389
|
case 0:
|
|
442
390
|
return _context6.abrupt("return", Promise.all(this.definitions.map( /*#__PURE__*/function () {
|
|
443
|
-
var
|
|
391
|
+
var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(definition) {
|
|
444
392
|
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
445
393
|
while (1) {
|
|
446
394
|
switch (_context5.prev = _context5.next) {
|
|
@@ -465,7 +413,7 @@ var PluginLoader = /*#__PURE__*/function () {
|
|
|
465
413
|
}));
|
|
466
414
|
|
|
467
415
|
return function (_x5) {
|
|
468
|
-
return
|
|
416
|
+
return _ref4.apply(this, arguments);
|
|
469
417
|
};
|
|
470
418
|
}())));
|
|
471
419
|
|
package/PluginManager.js
CHANGED
|
@@ -96,13 +96,11 @@ var PhasedScheduler = /*#__PURE__*/function () {
|
|
|
96
96
|
var _this = this;
|
|
97
97
|
|
|
98
98
|
this.phaseOrder.forEach(function (phaseName) {
|
|
99
|
-
var
|
|
99
|
+
var _this$phaseCallbacks$;
|
|
100
100
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
});
|
|
105
|
-
}
|
|
101
|
+
(_this$phaseCallbacks$ = _this.phaseCallbacks.get(phaseName)) === null || _this$phaseCallbacks$ === void 0 ? void 0 : _this$phaseCallbacks$.forEach(function (callback) {
|
|
102
|
+
return callback();
|
|
103
|
+
});
|
|
106
104
|
});
|
|
107
105
|
}
|
|
108
106
|
}]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "JBrowse 2 core libraries used by plugins",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -22,14 +22,13 @@
|
|
|
22
22
|
"scripts": {
|
|
23
23
|
"test": "cd ../..; jest packages/core",
|
|
24
24
|
"coverage": "yarn test --coverage",
|
|
25
|
-
"
|
|
26
|
-
"clean": "rimraf dist",
|
|
25
|
+
"clean": "rimraf dist tsconfig.build.tsbuildinfo",
|
|
27
26
|
"prebuild": "yarn clean",
|
|
28
27
|
"prepack": "yarn build",
|
|
29
|
-
"build": "babel . --root-mode upward --out-dir dist --extensions '.ts,.js,.tsx,.jsx' && cp package.json README.md ../../LICENSE dist/
|
|
28
|
+
"build": "babel . --root-mode upward --out-dir dist --extensions '.ts,.js,.tsx,.jsx' && cp package.json README.md ../../LICENSE dist/",
|
|
29
|
+
"postbuild": "tsc -b tsconfig.build.json"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@babel/runtime": "^7.16.3",
|
|
33
32
|
"@material-ui/icons": "^4.0.1",
|
|
34
33
|
"abortable-promise-cache": "^1.5.0",
|
|
35
34
|
"base64-js": "^1.3.0",
|
|
@@ -44,18 +43,17 @@
|
|
|
44
43
|
"fast-deep-equal": "^3.1.3",
|
|
45
44
|
"file-uri-to-path": "^1.0.0",
|
|
46
45
|
"generic-filehandle": "^2.2.2",
|
|
47
|
-
"http-range-fetcher": "^1.
|
|
46
|
+
"http-range-fetcher": "^1.4.0",
|
|
48
47
|
"is-object": "^1.0.1",
|
|
49
48
|
"jexl": "^2.3.0",
|
|
50
49
|
"json-stable-stringify": "^1.0.1",
|
|
51
|
-
"librpc-web-mod": "^1.1.
|
|
50
|
+
"librpc-web-mod": "^1.1.5",
|
|
52
51
|
"load-script2": "^2.0.5",
|
|
53
52
|
"object.fromentries": "^2.0.0",
|
|
54
53
|
"rbush": "^3.0.1",
|
|
55
54
|
"react-error-boundary": "^3.0.0",
|
|
56
55
|
"react-intersection-observer": "^8.32.5",
|
|
57
|
-
"react-
|
|
58
|
-
"sanitize-filename": "^1.6.3",
|
|
56
|
+
"react-use-measure": "^2.1.1",
|
|
59
57
|
"shortid": "^2.2.13",
|
|
60
58
|
"svg-path-generator": "^1.1.0",
|
|
61
59
|
"tenacious-fetch": "^2.1.0",
|
|
@@ -77,5 +75,5 @@
|
|
|
77
75
|
"access": "public",
|
|
78
76
|
"directory": "dist"
|
|
79
77
|
},
|
|
80
|
-
"gitHead": "
|
|
78
|
+
"gitHead": "6da232090c90f22ac96fd464c33082c89b8da14b"
|
|
81
79
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ComponentType, LazyExoticComponent } from 'react';
|
|
1
|
+
import React, { ComponentType, LazyExoticComponent } from 'react';
|
|
3
2
|
import { IAnyModelType, IAnyStateTreeNode } from 'mobx-state-tree';
|
|
4
3
|
import PluggableElementBase from './PluggableElementBase';
|
|
5
4
|
import { AnyConfigurationSchemaType } from '../configuration/configurationSchema';
|
|
@@ -37,6 +37,6 @@ var BaseViewModel = _mobxStateTree.types.model('BaseView', {
|
|
|
37
37
|
};
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
var _default = BaseViewModel; // eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
40
|
+
var _default = BaseViewModel; // eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
41
41
|
|
|
42
42
|
exports.default = _default;
|
|
@@ -162,35 +162,35 @@ var InternetAccount = _mobxStateTree.types.model('InternetAccount', {
|
|
|
162
162
|
* @returns A promise for the token
|
|
163
163
|
*/
|
|
164
164
|
getToken: function getToken(location) {
|
|
165
|
-
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
165
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
166
166
|
var _location$internetAcc, _location$internetAcc2;
|
|
167
167
|
|
|
168
168
|
var token;
|
|
169
|
-
return _regenerator.default.wrap(function
|
|
169
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
170
170
|
while (1) {
|
|
171
|
-
switch (
|
|
171
|
+
switch (_context2.prev = _context2.next) {
|
|
172
172
|
case 0:
|
|
173
173
|
if (!tokenPromise) {
|
|
174
|
-
|
|
174
|
+
_context2.next = 2;
|
|
175
175
|
break;
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
return
|
|
178
|
+
return _context2.abrupt("return", tokenPromise);
|
|
179
179
|
|
|
180
180
|
case 2:
|
|
181
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
182
|
|
|
183
183
|
if (!token) {
|
|
184
|
-
|
|
184
|
+
_context2.next = 6;
|
|
185
185
|
break;
|
|
186
186
|
}
|
|
187
187
|
|
|
188
188
|
tokenPromise = Promise.resolve(token);
|
|
189
|
-
return
|
|
189
|
+
return _context2.abrupt("return", tokenPromise);
|
|
190
190
|
|
|
191
191
|
case 6:
|
|
192
192
|
if (!inWebWorker) {
|
|
193
|
-
|
|
193
|
+
_context2.next = 8;
|
|
194
194
|
break;
|
|
195
195
|
}
|
|
196
196
|
|
|
@@ -200,53 +200,35 @@ var InternetAccount = _mobxStateTree.types.model('InternetAccount', {
|
|
|
200
200
|
token = self.retrieveToken();
|
|
201
201
|
|
|
202
202
|
if (!token) {
|
|
203
|
-
|
|
203
|
+
_context2.next = 12;
|
|
204
204
|
break;
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
tokenPromise = Promise.resolve(token);
|
|
208
|
-
return
|
|
208
|
+
return _context2.abrupt("return", tokenPromise);
|
|
209
209
|
|
|
210
210
|
case 12:
|
|
211
|
-
tokenPromise = new Promise(
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
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);
|
|
211
|
+
tokenPromise = new Promise(function (r, x) {
|
|
212
|
+
function resolve(token) {
|
|
213
|
+
self.storeToken(token);
|
|
214
|
+
r(token);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
function reject(error) {
|
|
218
|
+
self.removeToken();
|
|
219
|
+
x(error);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
self.getTokenFromUser(resolve, reject);
|
|
223
|
+
});
|
|
224
|
+
return _context2.abrupt("return", tokenPromise);
|
|
243
225
|
|
|
244
226
|
case 14:
|
|
245
227
|
case "end":
|
|
246
|
-
return
|
|
228
|
+
return _context2.stop();
|
|
247
229
|
}
|
|
248
230
|
}
|
|
249
|
-
},
|
|
231
|
+
}, _callee2);
|
|
250
232
|
}))();
|
|
251
233
|
}
|
|
252
234
|
};
|
|
@@ -270,34 +252,34 @@ var InternetAccount = _mobxStateTree.types.model('InternetAccount', {
|
|
|
270
252
|
* @returns
|
|
271
253
|
*/
|
|
272
254
|
getPreAuthorizationInformation: function getPreAuthorizationInformation(location) {
|
|
273
|
-
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
255
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
274
256
|
var authToken, validatedToken;
|
|
275
|
-
return _regenerator.default.wrap(function
|
|
257
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
276
258
|
while (1) {
|
|
277
|
-
switch (
|
|
259
|
+
switch (_context3.prev = _context3.next) {
|
|
278
260
|
case 0:
|
|
279
|
-
|
|
261
|
+
_context3.next = 2;
|
|
280
262
|
return self.getToken(location);
|
|
281
263
|
|
|
282
264
|
case 2:
|
|
283
|
-
authToken =
|
|
284
|
-
|
|
285
|
-
|
|
265
|
+
authToken = _context3.sent;
|
|
266
|
+
_context3.prev = 3;
|
|
267
|
+
_context3.next = 6;
|
|
286
268
|
return self.validateToken(authToken, location);
|
|
287
269
|
|
|
288
270
|
case 6:
|
|
289
|
-
validatedToken =
|
|
290
|
-
|
|
271
|
+
validatedToken = _context3.sent;
|
|
272
|
+
_context3.next = 13;
|
|
291
273
|
break;
|
|
292
274
|
|
|
293
275
|
case 9:
|
|
294
|
-
|
|
295
|
-
|
|
276
|
+
_context3.prev = 9;
|
|
277
|
+
_context3.t0 = _context3["catch"](3);
|
|
296
278
|
self.removeToken();
|
|
297
|
-
throw
|
|
279
|
+
throw _context3.t0;
|
|
298
280
|
|
|
299
281
|
case 13:
|
|
300
|
-
return
|
|
282
|
+
return _context3.abrupt("return", {
|
|
301
283
|
internetAccountType: self.type,
|
|
302
284
|
authInfo: {
|
|
303
285
|
token: validatedToken,
|
|
@@ -307,10 +289,10 @@ var InternetAccount = _mobxStateTree.types.model('InternetAccount', {
|
|
|
307
289
|
|
|
308
290
|
case 14:
|
|
309
291
|
case "end":
|
|
310
|
-
return
|
|
292
|
+
return _context3.stop();
|
|
311
293
|
}
|
|
312
294
|
}
|
|
313
|
-
},
|
|
295
|
+
}, _callee3, null, [[3, 9]]);
|
|
314
296
|
}))();
|
|
315
297
|
}
|
|
316
298
|
};
|
|
@@ -325,30 +307,30 @@ var InternetAccount = _mobxStateTree.types.model('InternetAccount', {
|
|
|
325
307
|
*/
|
|
326
308
|
getFetcher: function getFetcher(location) {
|
|
327
309
|
return /*#__PURE__*/function () {
|
|
328
|
-
var
|
|
310
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(input, init) {
|
|
329
311
|
var authToken, newInit;
|
|
330
|
-
return _regenerator.default.wrap(function
|
|
312
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
331
313
|
while (1) {
|
|
332
|
-
switch (
|
|
314
|
+
switch (_context4.prev = _context4.next) {
|
|
333
315
|
case 0:
|
|
334
|
-
|
|
316
|
+
_context4.next = 2;
|
|
335
317
|
return self.getToken(location);
|
|
336
318
|
|
|
337
319
|
case 2:
|
|
338
|
-
authToken =
|
|
320
|
+
authToken = _context4.sent;
|
|
339
321
|
newInit = self.addAuthHeaderToInit(init, authToken);
|
|
340
|
-
return
|
|
322
|
+
return _context4.abrupt("return", fetch(input, newInit));
|
|
341
323
|
|
|
342
324
|
case 5:
|
|
343
325
|
case "end":
|
|
344
|
-
return
|
|
326
|
+
return _context4.stop();
|
|
345
327
|
}
|
|
346
328
|
}
|
|
347
|
-
},
|
|
329
|
+
}, _callee4);
|
|
348
330
|
}));
|
|
349
331
|
|
|
350
|
-
return function (
|
|
351
|
-
return
|
|
332
|
+
return function (_x, _x2) {
|
|
333
|
+
return _ref.apply(this, arguments);
|
|
352
334
|
};
|
|
353
335
|
}();
|
|
354
336
|
}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import Rpc from 'librpc-web-mod';
|
|
2
2
|
import BaseRpcDriver, { RpcDriverConstructorArgs } from './BaseRpcDriver';
|
|
3
3
|
import { PluginDefinition } from '../PluginLoader';
|
|
4
|
-
interface WebpackWorker {
|
|
5
|
-
new (): Worker;
|
|
6
|
-
prototype: Worker;
|
|
7
|
-
}
|
|
8
4
|
interface WebWorkerRpcDriverConstructorArgs extends RpcDriverConstructorArgs {
|
|
9
|
-
|
|
5
|
+
makeWorkerInstance: () => Worker;
|
|
10
6
|
}
|
|
11
7
|
declare class WebWorkerHandle extends Rpc.Client {
|
|
12
8
|
destroy(): void;
|
|
@@ -20,7 +16,7 @@ export default class WebWorkerRpcDriver extends BaseRpcDriver {
|
|
|
20
16
|
plugins: PluginDefinition[];
|
|
21
17
|
};
|
|
22
18
|
name: string;
|
|
23
|
-
|
|
19
|
+
makeWorkerInstance: () => Worker;
|
|
24
20
|
constructor(args: WebWorkerRpcDriverConstructorArgs, workerBootConfiguration: {
|
|
25
21
|
plugins: PluginDefinition[];
|
|
26
22
|
});
|
|
@@ -116,8 +116,8 @@ var WebWorkerRpcDriver = /*#__PURE__*/function (_BaseRpcDriver) {
|
|
|
116
116
|
_this = _super2.call(this, args);
|
|
117
117
|
_this.workerBootConfiguration = workerBootConfiguration;
|
|
118
118
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "name", 'WebWorkerRpcDriver');
|
|
119
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "
|
|
120
|
-
_this.
|
|
119
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "makeWorkerInstance", void 0);
|
|
120
|
+
_this.makeWorkerInstance = args.makeWorkerInstance;
|
|
121
121
|
return _this;
|
|
122
122
|
}
|
|
123
123
|
|
|
@@ -127,7 +127,7 @@ var WebWorkerRpcDriver = /*#__PURE__*/function (_BaseRpcDriver) {
|
|
|
127
127
|
var _makeWorker = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
128
128
|
var _this2 = this;
|
|
129
129
|
|
|
130
|
-
var worker, p;
|
|
130
|
+
var instance, worker, p;
|
|
131
131
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
132
132
|
while (1) {
|
|
133
133
|
switch (_context2.prev = _context2.next) {
|
|
@@ -135,8 +135,9 @@ var WebWorkerRpcDriver = /*#__PURE__*/function (_BaseRpcDriver) {
|
|
|
135
135
|
// note that we are making a Rpc.Client connection with a worker pool of
|
|
136
136
|
// one for each worker, because we want to do our own state-group-aware
|
|
137
137
|
// load balancing rather than using librpc's builtin round-robin
|
|
138
|
+
instance = this.makeWorkerInstance();
|
|
138
139
|
worker = new WebWorkerHandle({
|
|
139
|
-
workers: [
|
|
140
|
+
workers: [instance]
|
|
140
141
|
}); // send the worker its boot configuration using info from the pluginManager
|
|
141
142
|
|
|
142
143
|
p = new Promise(function (resolve, reject) {
|
|
@@ -152,7 +153,7 @@ var WebWorkerRpcDriver = /*#__PURE__*/function (_BaseRpcDriver) {
|
|
|
152
153
|
});
|
|
153
154
|
return _context2.abrupt("return", p);
|
|
154
155
|
|
|
155
|
-
case
|
|
156
|
+
case 4:
|
|
156
157
|
case "end":
|
|
157
158
|
return _context2.stop();
|
|
158
159
|
}
|