@jbrowse/core 2.0.1 → 2.1.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 (179) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.d.ts +6 -0
  2. package/BaseFeatureWidget/BaseFeatureDetail.js +313 -592
  3. package/BaseFeatureWidget/SequenceFeatureDetails.js +213 -479
  4. package/BaseFeatureWidget/index.js +88 -126
  5. package/BaseFeatureWidget/types.js +1 -4
  6. package/BaseFeatureWidget/util.js +40 -75
  7. package/CorePlugin.js +55 -94
  8. package/Plugin.js +9 -34
  9. package/PluginLoader.js +153 -422
  10. package/PluginManager.d.ts +17 -14
  11. package/PluginManager.js +377 -666
  12. package/ReExports/Attributes.js +3 -10
  13. package/ReExports/BaseCard.js +3 -10
  14. package/ReExports/DataGrid.js +5 -12
  15. package/ReExports/FeatureDetails.js +3 -10
  16. package/ReExports/index.js +6 -12
  17. package/ReExports/list.d.ts +5 -0
  18. package/ReExports/list.js +271 -7
  19. package/ReExports/material-ui-colors.js +15 -16
  20. package/ReExports/modules.d.ts +0 -1
  21. package/ReExports/modules.js +453 -798
  22. package/TextSearch/BaseResults.js +51 -123
  23. package/TextSearch/TextSearchManager.js +66 -144
  24. package/assemblyManager/assembly.js +280 -555
  25. package/assemblyManager/assemblyConfigSchema.js +47 -64
  26. package/assemblyManager/assemblyManager.js +126 -272
  27. package/assemblyManager/index.js +9 -22
  28. package/configuration/configurationSchema.js +167 -203
  29. package/configuration/configurationSlot.js +248 -326
  30. package/configuration/index.js +19 -35
  31. package/configuration/util.js +131 -173
  32. package/data_adapters/BaseAdapter.d.ts +2 -2
  33. package/data_adapters/BaseAdapter.js +132 -521
  34. package/data_adapters/CytobandAdapter.js +40 -126
  35. package/data_adapters/dataAdapterCache.js +77 -158
  36. package/package.json +4 -5
  37. package/pluggableElementTypes/AdapterType.js +24 -79
  38. package/pluggableElementTypes/AddTrackWorkflowType.d.ts +17 -0
  39. package/pluggableElementTypes/AddTrackWorkflowType.js +20 -0
  40. package/pluggableElementTypes/ConnectionType.js +22 -65
  41. package/pluggableElementTypes/DisplayType.js +35 -82
  42. package/pluggableElementTypes/InternetAccountType.js +23 -64
  43. package/pluggableElementTypes/PluggableElementBase.js +8 -20
  44. package/pluggableElementTypes/RpcMethodType.js +85 -427
  45. package/pluggableElementTypes/TextSearchAdapterType.js +16 -55
  46. package/pluggableElementTypes/TrackType.js +26 -70
  47. package/pluggableElementTypes/ViewType.js +21 -63
  48. package/pluggableElementTypes/WidgetType.js +21 -64
  49. package/pluggableElementTypes/index.d.ts +4 -3
  50. package/pluggableElementTypes/index.js +42 -125
  51. package/pluggableElementTypes/models/BaseConnectionModelFactory.js +28 -43
  52. package/pluggableElementTypes/models/BaseDisplayModel.js +58 -95
  53. package/pluggableElementTypes/models/BaseTrackModel.js +139 -199
  54. package/pluggableElementTypes/models/BaseViewModel.js +24 -40
  55. package/pluggableElementTypes/models/InternetAccountModel.js +116 -263
  56. package/pluggableElementTypes/models/baseConnectionConfig.js +14 -25
  57. package/pluggableElementTypes/models/baseInternetAccountConfig.js +29 -38
  58. package/pluggableElementTypes/models/baseTrackConfig.js +106 -133
  59. package/pluggableElementTypes/models/index.js +21 -70
  60. package/pluggableElementTypes/renderers/BoxRendererType.js +132 -291
  61. package/pluggableElementTypes/renderers/CircularChordRendererType.js +8 -38
  62. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +60 -192
  63. package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -2
  64. package/pluggableElementTypes/renderers/FeatureRendererType.js +89 -264
  65. package/pluggableElementTypes/renderers/RendererType.js +31 -105
  66. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +61 -72
  67. package/pluggableElementTypes/renderers/ServerSideRendererType.js +112 -265
  68. package/pluggableElementTypes/renderers/index.js +19 -62
  69. package/pluggableElementTypes/renderers/util/serializableFilterChain.js +27 -65
  70. package/rpc/BaseRpcDriver.js +169 -405
  71. package/rpc/MainThreadRpcDriver.js +27 -150
  72. package/rpc/RpcManager.js +58 -159
  73. package/rpc/WebWorkerRpcDriver.js +54 -171
  74. package/rpc/configSchema.js +25 -49
  75. package/rpc/coreRpcMethods.js +221 -959
  76. package/rpc/remoteAbortSignals.js +46 -70
  77. package/tsconfig.build.tsbuildinfo +1 -1
  78. package/ui/AboutDialog.js +106 -162
  79. package/ui/App.js +157 -242
  80. package/ui/AssemblySelector.js +59 -120
  81. package/ui/CascadingMenu.js +101 -196
  82. package/ui/ColorPicker.d.ts +16 -0
  83. package/ui/ColorPicker.js +97 -0
  84. package/ui/Drawer.js +28 -61
  85. package/ui/DrawerWidget.js +108 -202
  86. package/ui/DropDownMenu.js +60 -91
  87. package/ui/EditableTypography.js +87 -149
  88. package/ui/ErrorMessage.js +41 -56
  89. package/ui/FactoryResetDialog.js +24 -57
  90. package/ui/FatalErrorDialog.js +59 -91
  91. package/ui/FileSelector/FileSelector.js +123 -189
  92. package/ui/FileSelector/LocalFileChooser.js +44 -75
  93. package/ui/FileSelector/UrlChooser.js +17 -38
  94. package/ui/FileSelector/index.js +6 -12
  95. package/ui/Icons.js +45 -69
  96. package/ui/Logo.js +57 -110
  97. package/ui/Menu.js +232 -354
  98. package/ui/PrerenderedCanvas.js +63 -87
  99. package/ui/ResizeHandle.js +87 -116
  100. package/ui/ReturnToImportFormDialog.js +32 -63
  101. package/ui/SanitizedHTML.js +64 -47
  102. package/ui/Snackbar.js +74 -101
  103. package/ui/SnackbarModel.js +37 -51
  104. package/ui/Tooltip.js +49 -76
  105. package/ui/ViewContainer.js +113 -196
  106. package/ui/colors.d.ts +10 -0
  107. package/ui/colors.js +78 -0
  108. package/ui/index.js +51 -181
  109. package/ui/react-colorful.d.ts +17 -0
  110. package/ui/react-colorful.js +455 -0
  111. package/ui/theme.js +199 -247
  112. package/util/Base1DUtils.js +163 -202
  113. package/util/Base1DViewModel.js +121 -168
  114. package/util/QuickLRU.js +84 -332
  115. package/util/TimeTraveller.d.ts +19 -0
  116. package/util/TimeTraveller.js +86 -0
  117. package/util/aborting.js +49 -127
  118. package/util/analytics.js +91 -154
  119. package/util/blockTypes.js +106 -240
  120. package/util/calculateDynamicBlocks.js +98 -128
  121. package/util/calculateStaticBlocks.js +105 -125
  122. package/util/color/cssColorsLevel4.js +156 -160
  123. package/util/color/index.js +33 -55
  124. package/util/compositeMap.js +49 -333
  125. package/util/formatFastaStrings.js +9 -14
  126. package/util/idMaker.js +18 -31
  127. package/util/index.d.ts +7 -20
  128. package/util/index.js +742 -1188
  129. package/util/io/RemoteFileWithRangeCache.js +88 -257
  130. package/util/io/index.js +95 -169
  131. package/util/jexl.js +60 -115
  132. package/util/jexlStrings.js +24 -29
  133. package/util/layouts/BaseLayout.js +1 -4
  134. package/util/layouts/GranularRectLayout.js +388 -555
  135. package/util/layouts/MultiLayout.js +41 -109
  136. package/util/layouts/PrecomputedLayout.js +56 -112
  137. package/util/layouts/PrecomputedMultiLayout.js +22 -59
  138. package/util/layouts/SceneGraph.js +127 -197
  139. package/util/layouts/index.js +29 -66
  140. package/util/mst-reflection.js +55 -71
  141. package/util/offscreenCanvasPonyfill.js +66 -134
  142. package/util/offscreenCanvasUtils.d.ts +2 -7
  143. package/util/offscreenCanvasUtils.js +49 -146
  144. package/util/range.js +29 -40
  145. package/util/rxjs.js +20 -27
  146. package/util/simpleFeature.js +88 -152
  147. package/util/stats.js +91 -151
  148. package/util/tracks.js +130 -173
  149. package/util/types/index.js +110 -179
  150. package/util/types/mst.js +91 -146
  151. package/util/types/util.js +1 -4
  152. package/util/when.js +54 -101
  153. package/BaseFeatureWidget/SequenceFeatureDetails.test.js +0 -122
  154. package/BaseFeatureWidget/index.test.js +0 -69
  155. package/TextSearch/BaseResults.test.js +0 -42
  156. package/configuration/configurationSchema.test.js +0 -266
  157. package/configuration/configurationSlot.test.js +0 -69
  158. package/configuration/util.test.js +0 -39
  159. package/data_adapters/BaseAdapter.test.js +0 -200
  160. package/declare.d.js +0 -1
  161. package/pluggableElementTypes/RpcMethodType.test.js +0 -118
  162. package/pluggableElementTypes/renderers/declare.d.js +0 -1
  163. package/pluggableElementTypes/renderers/util/serializableFilterChain.test.js +0 -20
  164. package/rpc/BaseRpcDriver.test.js +0 -540
  165. package/rpc/declaration.d.js +0 -1
  166. package/ui/FatalErrorDialog.test.js +0 -82
  167. package/ui/SanitizedHTML.test.js +0 -36
  168. package/ui/theme.test.js +0 -92
  169. package/util/Base1DViewModel.test.js +0 -130
  170. package/util/calculateDynamicBlocks.test.js +0 -74
  171. package/util/calculateStaticBlocks.test.js +0 -297
  172. package/util/declare.d.js +0 -1
  173. package/util/formatFastaStrings.test.js +0 -40
  174. package/util/index.test.js +0 -213
  175. package/util/jexlStrings.test.js +0 -48
  176. package/util/layouts/GranularRectLayout.test.js +0 -99
  177. package/util/range.test.js +0 -64
  178. package/util/simpleFeature.test.js +0 -34
  179. package/util/stats.test.js +0 -172
@@ -1,157 +1,34 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
13
-
14
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
-
16
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
-
18
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
-
20
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
-
22
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
23
-
24
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
25
-
26
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
27
-
28
- var _BaseRpcDriver2 = _interopRequireDefault(require("./BaseRpcDriver"));
29
-
30
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
31
-
32
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
33
-
34
- var DummyHandle = /*#__PURE__*/function () {
35
- function DummyHandle() {
36
- (0, _classCallCheck2.default)(this, DummyHandle);
37
- }
38
-
39
- (0, _createClass2.default)(DummyHandle, [{
40
- key: "destroy",
41
- value: function destroy() {}
42
- }, {
43
- key: "call",
44
- value: function () {
45
- var _call = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_functionName, _filteredArgs) {
46
- var _options,
47
- _args = arguments;
48
-
49
- return _regenerator.default.wrap(function _callee$(_context) {
50
- while (1) {
51
- switch (_context.prev = _context.next) {
52
- case 0:
53
- _options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {};
54
- return _context.abrupt("return", undefined);
55
-
56
- case 2:
57
- case "end":
58
- return _context.stop();
59
- }
60
- }
61
- }, _callee);
62
- }));
63
-
64
- function call(_x, _x2) {
65
- return _call.apply(this, arguments);
66
- }
67
-
68
- return call;
69
- }()
70
- }]);
71
- return DummyHandle;
72
- }();
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const BaseRpcDriver_1 = __importDefault(require("./BaseRpcDriver"));
7
+ class DummyHandle {
8
+ destroy() { }
9
+ async call(_functionName, _filteredArgs, _options = {}) {
10
+ return undefined;
11
+ }
12
+ }
73
13
  /**
74
14
  * Stub RPC driver class that runs RPC functions in-band in the main thread.
75
15
  *
76
16
  * @param rpcFuncs - object containing runnable rpc functions
77
17
  */
78
-
79
-
80
- var MainThreadRpcDriver = /*#__PURE__*/function (_BaseRpcDriver) {
81
- (0, _inherits2.default)(MainThreadRpcDriver, _BaseRpcDriver);
82
-
83
- var _super = _createSuper(MainThreadRpcDriver);
84
-
85
- function MainThreadRpcDriver(args) {
86
- var _this;
87
-
88
- (0, _classCallCheck2.default)(this, MainThreadRpcDriver);
89
- _this = _super.call(this, args);
90
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "name", 'MainThreadRpcDriver');
91
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "makeWorker", void 0);
92
- _this.makeWorker = /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
93
- return _regenerator.default.wrap(function _callee2$(_context2) {
94
- while (1) {
95
- switch (_context2.prev = _context2.next) {
96
- case 0:
97
- return _context2.abrupt("return", new DummyHandle());
98
-
99
- case 1:
100
- case "end":
101
- return _context2.stop();
102
- }
18
+ class MainThreadRpcDriver extends BaseRpcDriver_1.default {
19
+ constructor(args) {
20
+ super(args);
21
+ this.name = 'MainThreadRpcDriver';
22
+ this.makeWorker = async () => new DummyHandle();
23
+ }
24
+ async call(pluginManager, sessionId, functionName, args) {
25
+ if (!sessionId) {
26
+ throw new TypeError('sessionId is required');
103
27
  }
104
- }, _callee2);
105
- }));
106
- return _this;
107
- }
108
-
109
- (0, _createClass2.default)(MainThreadRpcDriver, [{
110
- key: "call",
111
- value: function () {
112
- var _call2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(pluginManager, sessionId, functionName, args) {
113
- var rpcMethod, serializedArgs, result;
114
- return _regenerator.default.wrap(function _callee3$(_context3) {
115
- while (1) {
116
- switch (_context3.prev = _context3.next) {
117
- case 0:
118
- if (sessionId) {
119
- _context3.next = 2;
120
- break;
121
- }
122
-
123
- throw new TypeError('sessionId is required');
124
-
125
- case 2:
126
- rpcMethod = pluginManager.getRpcMethodType(functionName);
127
- _context3.next = 5;
128
- return rpcMethod.serializeArguments(args, this.name);
129
-
130
- case 5:
131
- serializedArgs = _context3.sent;
132
- _context3.next = 8;
133
- return rpcMethod.execute(serializedArgs, this.name);
134
-
135
- case 8:
136
- result = _context3.sent;
137
- return _context3.abrupt("return", rpcMethod.deserializeReturn(result, args, this.name));
138
-
139
- case 10:
140
- case "end":
141
- return _context3.stop();
142
- }
143
- }
144
- }, _callee3, this);
145
- }));
146
-
147
- function call(_x3, _x4, _x5, _x6) {
148
- return _call2.apply(this, arguments);
149
- }
150
-
151
- return call;
152
- }()
153
- }]);
154
- return MainThreadRpcDriver;
155
- }(_BaseRpcDriver2.default);
156
-
157
- exports.default = MainThreadRpcDriver;
28
+ const rpcMethod = pluginManager.getRpcMethodType(functionName);
29
+ const serializedArgs = await rpcMethod.serializeArguments(args, this.name);
30
+ const result = await rpcMethod.execute(serializedArgs, this.name);
31
+ return rpcMethod.deserializeReturn(result, args, this.name);
32
+ }
33
+ }
34
+ exports.default = MainThreadRpcDriver;
package/rpc/RpcManager.js CHANGED
@@ -1,166 +1,65 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
-
16
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
-
18
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
-
20
- var _configuration = require("../configuration");
21
-
22
- var _configSchema = _interopRequireDefault(require("./configSchema"));
23
-
24
- var _WebWorkerRpcDriver = _interopRequireDefault(require("./WebWorkerRpcDriver"));
25
-
26
- var _MainThreadRpcDriver = _interopRequireDefault(require("./MainThreadRpcDriver"));
27
-
28
- 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; }
29
-
30
- 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; }
31
-
32
- var DriverClasses = {
33
- WebWorkerRpcDriver: _WebWorkerRpcDriver.default,
34
- MainThreadRpcDriver: _MainThreadRpcDriver.default
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
35
4
  };
36
-
37
- var RpcManager = /*#__PURE__*/function () {
38
- function RpcManager(pluginManager, mainConfiguration, backendConfigurations) {
39
- (0, _classCallCheck2.default)(this, RpcManager);
40
- this.pluginManager = pluginManager;
41
- this.mainConfiguration = mainConfiguration;
42
- this.backendConfigurations = backendConfigurations;
43
- (0, _defineProperty2.default)(this, "driverObjects", void 0);
44
-
45
- if (!mainConfiguration) {
46
- throw new Error('RpcManager requires at least a main configuration');
47
- }
48
-
49
- this.driverObjects = new Map();
50
- }
51
-
52
- (0, _createClass2.default)(RpcManager, [{
53
- key: "getDriver",
54
- value: function getDriver(backendName) {
55
- var driver = this.driverObjects.get(backendName);
56
-
57
- if (driver) {
58
- return driver;
59
- }
60
-
61
- var newDriver;
62
- var config = this.mainConfiguration.drivers.get('WebWorkerRpcDriver');
63
-
64
- if (backendName === 'MainThreadRpcDriver') {
65
- var backendConfiguration = this.backendConfigurations.MainThreadRpcDriver;
66
-
67
- if (!backendConfiguration) {
68
- throw new Error("requested RPC driver \"".concat(backendName, "\" is missing config"));
69
- }
70
-
71
- newDriver = new _MainThreadRpcDriver.default(_objectSpread(_objectSpread({}, backendConfiguration), {}, {
72
- config: config
73
- }));
74
- } else if (backendName === 'WebWorkerRpcDriver') {
75
- var _backendConfiguration = this.backendConfigurations.WebWorkerRpcDriver;
76
-
77
- if (!_backendConfiguration) {
78
- throw new Error("requested RPC driver \"".concat(backendName, "\" is missing config"));
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const configuration_1 = require("../configuration");
7
+ const configSchema_1 = __importDefault(require("./configSchema"));
8
+ const WebWorkerRpcDriver_1 = __importDefault(require("./WebWorkerRpcDriver"));
9
+ const MainThreadRpcDriver_1 = __importDefault(require("./MainThreadRpcDriver"));
10
+ const DriverClasses = {
11
+ WebWorkerRpcDriver: WebWorkerRpcDriver_1.default,
12
+ MainThreadRpcDriver: MainThreadRpcDriver_1.default,
13
+ };
14
+ class RpcManager {
15
+ constructor(pluginManager, mainConfiguration, backendConfigurations) {
16
+ this.pluginManager = pluginManager;
17
+ this.mainConfiguration = mainConfiguration;
18
+ this.backendConfigurations = backendConfigurations;
19
+ if (!mainConfiguration) {
20
+ throw new Error('RpcManager requires at least a main configuration');
79
21
  }
80
-
81
- newDriver = new _WebWorkerRpcDriver.default(_objectSpread(_objectSpread({}, _backendConfiguration), {}, {
82
- config: config
83
- }), {
84
- plugins: this.pluginManager.runtimePluginDefinitions
85
- });
86
- } else {
87
- throw new Error("requested RPC driver \"".concat(backendName, "\" is not installed"));
88
- }
89
-
90
- this.driverObjects.set(backendName, newDriver);
91
- return newDriver;
22
+ this.driverObjects = new Map();
92
23
  }
93
- }, {
94
- key: "getDriverForCall",
95
- value: function () {
96
- var _getDriverForCall = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_sessionId, _functionName, args) {
97
- var backendName;
98
- return _regenerator.default.wrap(function _callee$(_context) {
99
- while (1) {
100
- switch (_context.prev = _context.next) {
101
- case 0:
102
- backendName = args.rpcDriverName || (0, _configuration.readConfObject)(this.mainConfiguration, 'defaultDriver');
103
- return _context.abrupt("return", this.getDriver(backendName));
104
-
105
- case 2:
106
- case "end":
107
- return _context.stop();
24
+ getDriver(backendName) {
25
+ const driver = this.driverObjects.get(backendName);
26
+ if (driver) {
27
+ return driver;
28
+ }
29
+ let newDriver;
30
+ const config = this.mainConfiguration.drivers.get('WebWorkerRpcDriver');
31
+ if (backendName === 'MainThreadRpcDriver') {
32
+ const backendConfiguration = this.backendConfigurations.MainThreadRpcDriver;
33
+ if (!backendConfiguration) {
34
+ throw new Error(`requested RPC driver "${backendName}" is missing config`);
108
35
  }
109
- }
110
- }, _callee, this);
111
- }));
112
-
113
- function getDriverForCall(_x, _x2, _x3) {
114
- return _getDriverForCall.apply(this, arguments);
115
- }
116
-
117
- return getDriverForCall;
118
- }()
119
- }, {
120
- key: "call",
121
- value: function () {
122
- var _call = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(sessionId, functionName, args) {
123
- var opts,
124
- driverForCall,
125
- _args2 = arguments;
126
- return _regenerator.default.wrap(function _callee2$(_context2) {
127
- while (1) {
128
- switch (_context2.prev = _context2.next) {
129
- case 0:
130
- opts = _args2.length > 3 && _args2[3] !== undefined ? _args2[3] : {};
131
-
132
- if (sessionId) {
133
- _context2.next = 3;
134
- break;
135
- }
136
-
137
- throw new Error('sessionId is required');
138
-
139
- case 3:
140
- _context2.next = 5;
141
- return this.getDriverForCall(sessionId, functionName, args);
142
-
143
- case 5:
144
- driverForCall = _context2.sent;
145
- return _context2.abrupt("return", driverForCall.call(this.pluginManager, sessionId, functionName, args, opts));
146
-
147
- case 7:
148
- case "end":
149
- return _context2.stop();
36
+ newDriver = new MainThreadRpcDriver_1.default({ ...backendConfiguration, config });
37
+ }
38
+ else if (backendName === 'WebWorkerRpcDriver') {
39
+ const backendConfiguration = this.backendConfigurations.WebWorkerRpcDriver;
40
+ if (!backendConfiguration) {
41
+ throw new Error(`requested RPC driver "${backendName}" is missing config`);
150
42
  }
151
- }
152
- }, _callee2, this);
153
- }));
154
-
155
- function call(_x4, _x5, _x6) {
156
- return _call.apply(this, arguments);
157
- }
158
-
159
- return call;
160
- }()
161
- }]);
162
- return RpcManager;
163
- }();
164
-
43
+ newDriver = new WebWorkerRpcDriver_1.default({ ...backendConfiguration, config }, { plugins: this.pluginManager.runtimePluginDefinitions });
44
+ }
45
+ else {
46
+ throw new Error(`requested RPC driver "${backendName}" is not installed`);
47
+ }
48
+ this.driverObjects.set(backendName, newDriver);
49
+ return newDriver;
50
+ }
51
+ async getDriverForCall(_sessionId, _functionName, args) {
52
+ const backendName = args.rpcDriverName ||
53
+ (0, configuration_1.readConfObject)(this.mainConfiguration, 'defaultDriver');
54
+ return this.getDriver(backendName);
55
+ }
56
+ async call(sessionId, functionName, args, opts = {}) {
57
+ if (!sessionId) {
58
+ throw new Error('sessionId is required');
59
+ }
60
+ const driverForCall = await this.getDriverForCall(sessionId, functionName, args);
61
+ return driverForCall.call(this.pluginManager, sessionId, functionName, args, opts);
62
+ }
63
+ }
165
64
  exports.default = RpcManager;
166
- (0, _defineProperty2.default)(RpcManager, "configSchema", _configSchema.default);
65
+ RpcManager.configSchema = configSchema_1.default;
@@ -1,174 +1,57 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
13
-
14
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
-
18
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
19
-
20
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
21
-
22
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
23
-
24
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
25
-
26
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
27
-
28
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
29
-
30
- var _librpcWebMod = _interopRequireDefault(require("librpc-web-mod"));
31
-
32
- var _shortid = _interopRequireDefault(require("shortid"));
33
-
34
- var _BaseRpcDriver2 = _interopRequireDefault(require("./BaseRpcDriver"));
35
-
36
- 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; }
37
-
38
- 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; }
39
-
40
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
41
-
42
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
43
-
44
- var WebWorkerHandle = /*#__PURE__*/function (_Rpc$Client) {
45
- (0, _inherits2.default)(WebWorkerHandle, _Rpc$Client);
46
-
47
- var _super = _createSuper(WebWorkerHandle);
48
-
49
- function WebWorkerHandle() {
50
- (0, _classCallCheck2.default)(this, WebWorkerHandle);
51
- return _super.apply(this, arguments);
52
- }
53
-
54
- (0, _createClass2.default)(WebWorkerHandle, [{
55
- key: "destroy",
56
- value: function destroy() {
57
- this.workers[0].terminate();
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const librpc_web_mod_1 = __importDefault(require("librpc-web-mod"));
7
+ const shortid_1 = __importDefault(require("shortid"));
8
+ const BaseRpcDriver_1 = __importDefault(require("./BaseRpcDriver"));
9
+ class WebWorkerHandle extends librpc_web_mod_1.default.Client {
10
+ destroy() {
11
+ this.workers[0].terminate();
58
12
  }
59
- }, {
60
- key: "call",
61
- value: function () {
62
- var _call = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(functionName, args, opts) {
63
- var statusCallback, rpcDriverClassName, channel, listener, result;
64
- return _regenerator.default.wrap(function _callee$(_context) {
65
- while (1) {
66
- switch (_context.prev = _context.next) {
67
- case 0:
68
- statusCallback = opts.statusCallback, rpcDriverClassName = opts.rpcDriverClassName;
69
- channel = "message-".concat(_shortid.default.generate());
70
-
71
- listener = function listener(message) {
72
- if (statusCallback) {
73
- statusCallback(message);
74
- }
75
- };
76
-
77
- this.on(channel, listener);
78
- _context.next = 6;
79
- return (0, _get2.default)((0, _getPrototypeOf2.default)(WebWorkerHandle.prototype), "call", this).call(this, functionName, _objectSpread(_objectSpread({}, args), {}, {
80
- channel: channel,
81
- rpcDriverClassName: rpcDriverClassName
82
- }), opts);
83
-
84
- case 6:
85
- result = _context.sent;
86
- this.off(channel, listener);
87
- return _context.abrupt("return", result);
88
-
89
- case 9:
90
- case "end":
91
- return _context.stop();
13
+ async call(functionName, args, opts) {
14
+ const { statusCallback, rpcDriverClassName } = opts;
15
+ const channel = `message-${shortid_1.default.generate()}`;
16
+ const listener = (message) => {
17
+ if (statusCallback) {
18
+ statusCallback(message);
92
19
  }
93
- }
94
- }, _callee, this);
95
- }));
96
-
97
- function call(_x, _x2, _x3) {
98
- return _call.apply(this, arguments);
99
- }
100
-
101
- return call;
102
- }()
103
- }]);
104
- return WebWorkerHandle;
105
- }(_librpcWebMod.default.Client);
106
-
107
- var WebWorkerRpcDriver = /*#__PURE__*/function (_BaseRpcDriver) {
108
- (0, _inherits2.default)(WebWorkerRpcDriver, _BaseRpcDriver);
109
-
110
- var _super2 = _createSuper(WebWorkerRpcDriver);
111
-
112
- function WebWorkerRpcDriver(args, workerBootConfiguration) {
113
- var _this;
114
-
115
- (0, _classCallCheck2.default)(this, WebWorkerRpcDriver);
116
- _this = _super2.call(this, args);
117
- _this.workerBootConfiguration = workerBootConfiguration;
118
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "name", 'WebWorkerRpcDriver');
119
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "makeWorkerInstance", void 0);
120
- _this.makeWorkerInstance = args.makeWorkerInstance;
121
- return _this;
122
- }
123
-
124
- (0, _createClass2.default)(WebWorkerRpcDriver, [{
125
- key: "makeWorker",
126
- value: function () {
127
- var _makeWorker = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
128
- var _this2 = this;
129
-
130
- var instance, worker, p;
131
- return _regenerator.default.wrap(function _callee2$(_context2) {
132
- while (1) {
133
- switch (_context2.prev = _context2.next) {
134
- case 0:
135
- // note that we are making a Rpc.Client connection with a worker pool of
136
- // one for each worker, because we want to do our own state-group-aware
137
- // load balancing rather than using librpc's builtin round-robin
138
- instance = this.makeWorkerInstance();
139
- worker = new WebWorkerHandle({
140
- workers: [instance]
141
- }); // send the worker its boot configuration using info from the pluginManager
142
-
143
- p = new Promise(function (resolve, reject) {
144
- worker.workers[0].onmessage = function (e) {
145
- if (e.data === 'ready') {
146
- resolve(worker);
147
- } else if (e.data === 'readyForConfig') {
148
- worker.workers[0].postMessage(_this2.workerBootConfiguration);
149
- } else {
150
- reject();
151
- }
152
- };
153
- });
154
- return _context2.abrupt("return", p);
155
-
156
- case 4:
157
- case "end":
158
- return _context2.stop();
159
- }
160
- }
161
- }, _callee2, this);
162
- }));
163
-
164
- function makeWorker() {
165
- return _makeWorker.apply(this, arguments);
166
- }
167
-
168
- return makeWorker;
169
- }()
170
- }]);
171
- return WebWorkerRpcDriver;
172
- }(_BaseRpcDriver2.default);
173
-
174
- exports.default = WebWorkerRpcDriver;
20
+ };
21
+ this.on(channel, listener);
22
+ const result = await super.call(functionName, { ...args, channel, rpcDriverClassName }, opts);
23
+ this.off(channel, listener);
24
+ return result;
25
+ }
26
+ }
27
+ class WebWorkerRpcDriver extends BaseRpcDriver_1.default {
28
+ constructor(args, workerBootConfiguration) {
29
+ super(args);
30
+ this.workerBootConfiguration = workerBootConfiguration;
31
+ this.name = 'WebWorkerRpcDriver';
32
+ this.makeWorkerInstance = args.makeWorkerInstance;
33
+ }
34
+ async makeWorker() {
35
+ // note that we are making a Rpc.Client connection with a worker pool of
36
+ // one for each worker, because we want to do our own state-group-aware
37
+ // load balancing rather than using librpc's builtin round-robin
38
+ const instance = this.makeWorkerInstance();
39
+ const worker = new WebWorkerHandle({ workers: [instance] });
40
+ // send the worker its boot configuration using info from the pluginManager
41
+ const p = new Promise((resolve, reject) => {
42
+ worker.workers[0].onmessage = e => {
43
+ if (e.data === 'ready') {
44
+ resolve(worker);
45
+ }
46
+ else if (e.data === 'readyForConfig') {
47
+ worker.workers[0].postMessage(this.workerBootConfiguration);
48
+ }
49
+ else {
50
+ reject();
51
+ }
52
+ };
53
+ });
54
+ return p;
55
+ }
56
+ }
57
+ exports.default = WebWorkerRpcDriver;