@jbrowse/core 1.6.9 → 1.7.0

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.
Files changed (48) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.d.ts +2 -2
  2. package/PluginLoader.d.ts +11 -3
  3. package/PluginLoader.js +37 -89
  4. package/PluginManager.js +4 -6
  5. package/package.json +5 -8
  6. package/pluggableElementTypes/WidgetType.d.ts +1 -2
  7. package/pluggableElementTypes/models/BaseViewModel.js +1 -1
  8. package/pluggableElementTypes/models/InternetAccountModel.js +51 -69
  9. package/rpc/WebWorkerRpcDriver.d.ts +2 -6
  10. package/rpc/WebWorkerRpcDriver.js +6 -5
  11. package/ui/App.js +13 -17
  12. package/ui/AssemblySelector.d.ts +4 -1
  13. package/ui/AssemblySelector.js +69 -8
  14. package/ui/PrerenderedCanvas.js +1 -26
  15. package/ui/ViewContainer.d.ts +5 -5
  16. package/ui/ViewContainer.js +12 -7
  17. package/util/index.d.ts +7 -1
  18. package/util/index.js +20 -0
  19. package/util/io/index.js +3 -1
  20. package/util/layouts/BaseLayout.d.ts +1 -0
  21. package/util/layouts/GranularRectLayout.js +2 -0
  22. package/util/layouts/PrecomputedLayout.js +2 -1
  23. package/util/offscreenCanvas/Canvas2DContextShim/Canvas2DContextShim.test.d.ts +1 -0
  24. package/util/offscreenCanvas/Canvas2DContextShim/Canvas2DContextShim.test.js +15 -0
  25. package/util/offscreenCanvas/Canvas2DContextShim/context.d.ts +56 -0
  26. package/util/offscreenCanvas/Canvas2DContextShim/context.js +356 -0
  27. package/util/offscreenCanvas/Canvas2DContextShim/index.d.ts +2 -0
  28. package/util/offscreenCanvas/Canvas2DContextShim/index.js +13 -0
  29. package/util/offscreenCanvas/Canvas2DContextShim/svg.d.ts +3 -0
  30. package/util/offscreenCanvas/Canvas2DContextShim/svg.js +210 -0
  31. package/util/offscreenCanvas/Canvas2DContextShim/types.d.ts +50 -0
  32. package/util/offscreenCanvas/Canvas2DContextShim/types.js +59 -0
  33. package/util/offscreenCanvas/Canvas2DContextShim/util.d.ts +12 -0
  34. package/util/offscreenCanvas/Canvas2DContextShim/util.js +91 -0
  35. package/util/offscreenCanvas/CanvasShim.d.ts +11 -0
  36. package/util/offscreenCanvas/CanvasShim.js +54 -0
  37. package/util/offscreenCanvas/index.d.ts +14 -0
  38. package/util/offscreenCanvas/index.js +170 -0
  39. package/util/offscreenCanvas/ponyfill.d.ts +6 -0
  40. package/util/offscreenCanvas/ponyfill.js +145 -0
  41. package/util/offscreenCanvas/types.d.ts +16 -0
  42. package/util/offscreenCanvas/types.js +14 -0
  43. package/util/offscreenCanvasPonyfill.d.ts +1 -58
  44. package/util/offscreenCanvasPonyfill.js +10 -815
  45. package/util/offscreenCanvasUtils.d.ts +1 -13
  46. package/util/offscreenCanvasUtils.js +12 -124
  47. package/ui/NewSessionCards.d.ts +0 -14
  48. package/ui/NewSessionCards.js +0 -136
@@ -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 | undefined;
43
- id?: string | undefined;
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
- constructor(pluginDefinitions?: PluginDefinition[]);
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(pluginDefinition: CJSPluginDefinition): Promise<LoadedPlugin>;
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<PluginRecord[]>;
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(pluginDefinition) {
119
- var parsedUrl, fs, path, os, http, fsPromises, systemTmp, tmpDir, plugin, pluginLocation, pluginLocationRelative, pluginDownload;
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
- _context.prev = 0;
125
- parsedUrl = new URL(pluginDefinition.cjsUrl, getGlobalObject().location.href);
126
- _context.next = 8;
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 4:
130
- _context.prev = 4;
131
- _context.t0 = _context["catch"](0);
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(pluginDefinition.cjsUrl));
130
+ throw new Error("Error parsing URL: ".concat(cjsUrl));
134
131
 
135
- case 8:
132
+ case 9:
136
133
  if (!(parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:')) {
137
- _context.next = 10;
134
+ _context.next = 11;
138
135
  break;
139
136
  }
140
137
 
141
- throw new Error("cannot load plugins using protocol \"".concat(parsedUrl.protocol, "\""));
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 17:
155
- systemTmp = _context.sent;
156
- _context.next = 20;
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("Could not load CJS plugin: ".concat(parsedUrl));
146
+ throw new Error('No fetchCJS callback provided');
197
147
 
198
- case 34:
199
- return _context.abrupt("return", plugin);
148
+ case 13:
149
+ return _context.abrupt("return", this.fetchCJS(parsedUrl.href));
200
150
 
201
- case 35:
151
+ case 14:
202
152
  case "end":
203
153
  return _context.stop();
204
154
  }
205
155
  }
206
- }, _callee, null, [[0, 4], [22,, 29, 32]]);
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 Promise.resolve("".concat(
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, null, [[0, 4]]);
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 (_ref) {
425
- var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
426
- moduleName = _ref2[0],
427
- module = _ref2[1];
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 _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(definition) {
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 _ref3.apply(this, arguments);
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 phaseCallbacks = _this.phaseCallbacks.get(phaseName);
99
+ var _this$phaseCallbacks$;
100
100
 
101
- if (phaseCallbacks) {
102
- phaseCallbacks.forEach(function (callback) {
103
- return callback();
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.6.9",
3
+ "version": "1.7.0",
4
4
  "description": "JBrowse 2 core libraries used by plugins",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -22,14 +22,12 @@
22
22
  "scripts": {
23
23
  "test": "cd ../..; jest packages/core",
24
24
  "coverage": "yarn test --coverage",
25
- "lint": "tsc --noEmit && eslint --ext .js,.ts,.jsx,.tsx .",
26
25
  "clean": "rimraf dist",
27
26
  "prebuild": "yarn clean",
28
27
  "prepack": "yarn build",
29
28
  "build": "babel . --root-mode upward --out-dir dist --extensions '.ts,.js,.tsx,.jsx' && cp package.json README.md ../../LICENSE dist/ && tsc"
30
29
  },
31
30
  "dependencies": {
32
- "@babel/runtime": "^7.16.3",
33
31
  "@material-ui/icons": "^4.0.1",
34
32
  "abortable-promise-cache": "^1.5.0",
35
33
  "base64-js": "^1.3.0",
@@ -44,18 +42,17 @@
44
42
  "fast-deep-equal": "^3.1.3",
45
43
  "file-uri-to-path": "^1.0.0",
46
44
  "generic-filehandle": "^2.2.2",
47
- "http-range-fetcher": "^1.2.2",
45
+ "http-range-fetcher": "^1.4.0",
48
46
  "is-object": "^1.0.1",
49
47
  "jexl": "^2.3.0",
50
48
  "json-stable-stringify": "^1.0.1",
51
- "librpc-web-mod": "^1.1.4",
49
+ "librpc-web-mod": "^1.1.5",
52
50
  "load-script2": "^2.0.5",
53
51
  "object.fromentries": "^2.0.0",
54
52
  "rbush": "^3.0.1",
55
53
  "react-error-boundary": "^3.0.0",
56
54
  "react-intersection-observer": "^8.32.5",
57
- "react-sizeme": "^3.0.2",
58
- "sanitize-filename": "^1.6.3",
55
+ "react-use-measure": "^2.1.1",
59
56
  "shortid": "^2.2.13",
60
57
  "svg-path-generator": "^1.1.0",
61
58
  "tenacious-fetch": "^2.1.0",
@@ -77,5 +74,5 @@
77
74
  "access": "public",
78
75
  "directory": "dist"
79
76
  },
80
- "gitHead": "f6c3d4edfadc26f7ac635a2fa7259f50f0c7e5e3"
77
+ "gitHead": "cc13844074d11881d211342a6a7eea113561b70b"
81
78
  }
@@ -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,@typescript-eslint/interface-name-prefix
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 _callee3() {
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 _callee3$(_context3) {
169
+ return _regenerator.default.wrap(function _callee2$(_context2) {
170
170
  while (1) {
171
- switch (_context3.prev = _context3.next) {
171
+ switch (_context2.prev = _context2.next) {
172
172
  case 0:
173
173
  if (!tokenPromise) {
174
- _context3.next = 2;
174
+ _context2.next = 2;
175
175
  break;
176
176
  }
177
177
 
178
- return _context3.abrupt("return", tokenPromise);
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
- _context3.next = 6;
184
+ _context2.next = 6;
185
185
  break;
186
186
  }
187
187
 
188
188
  tokenPromise = Promise.resolve(token);
189
- return _context3.abrupt("return", tokenPromise);
189
+ return _context2.abrupt("return", tokenPromise);
190
190
 
191
191
  case 6:
192
192
  if (!inWebWorker) {
193
- _context3.next = 8;
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
- _context3.next = 12;
203
+ _context2.next = 12;
204
204
  break;
205
205
  }
206
206
 
207
207
  tokenPromise = Promise.resolve(token);
208
- return _context3.abrupt("return", tokenPromise);
208
+ return _context2.abrupt("return", tokenPromise);
209
209
 
210
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);
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 _context3.stop();
228
+ return _context2.stop();
247
229
  }
248
230
  }
249
- }, _callee3);
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 _callee4() {
255
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
274
256
  var authToken, validatedToken;
275
- return _regenerator.default.wrap(function _callee4$(_context4) {
257
+ return _regenerator.default.wrap(function _callee3$(_context3) {
276
258
  while (1) {
277
- switch (_context4.prev = _context4.next) {
259
+ switch (_context3.prev = _context3.next) {
278
260
  case 0:
279
- _context4.next = 2;
261
+ _context3.next = 2;
280
262
  return self.getToken(location);
281
263
 
282
264
  case 2:
283
- authToken = _context4.sent;
284
- _context4.prev = 3;
285
- _context4.next = 6;
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 = _context4.sent;
290
- _context4.next = 13;
271
+ validatedToken = _context3.sent;
272
+ _context3.next = 13;
291
273
  break;
292
274
 
293
275
  case 9:
294
- _context4.prev = 9;
295
- _context4.t0 = _context4["catch"](3);
276
+ _context3.prev = 9;
277
+ _context3.t0 = _context3["catch"](3);
296
278
  self.removeToken();
297
- throw _context4.t0;
279
+ throw _context3.t0;
298
280
 
299
281
  case 13:
300
- return _context4.abrupt("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 _context4.stop();
292
+ return _context3.stop();
311
293
  }
312
294
  }
313
- }, _callee4, null, [[3, 9]]);
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 _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(input, init) {
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 _callee5$(_context5) {
312
+ return _regenerator.default.wrap(function _callee4$(_context4) {
331
313
  while (1) {
332
- switch (_context5.prev = _context5.next) {
314
+ switch (_context4.prev = _context4.next) {
333
315
  case 0:
334
- _context5.next = 2;
316
+ _context4.next = 2;
335
317
  return self.getToken(location);
336
318
 
337
319
  case 2:
338
- authToken = _context5.sent;
320
+ authToken = _context4.sent;
339
321
  newInit = self.addAuthHeaderToInit(init, authToken);
340
- return _context5.abrupt("return", fetch(input, newInit));
322
+ return _context4.abrupt("return", fetch(input, newInit));
341
323
 
342
324
  case 5:
343
325
  case "end":
344
- return _context5.stop();
326
+ return _context4.stop();
345
327
  }
346
328
  }
347
- }, _callee5);
329
+ }, _callee4);
348
330
  }));
349
331
 
350
- return function (_x3, _x4) {
351
- return _ref2.apply(this, arguments);
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
- WorkerClass: WebpackWorker;
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
- WorkerClass: WebpackWorker;
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), "WorkerClass", void 0);
120
- _this.WorkerClass = args.WorkerClass;
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: [new this.WorkerClass()]
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 3:
156
+ case 4:
156
157
  case "end":
157
158
  return _context2.stop();
158
159
  }