@jbrowse/core 2.0.0 → 2.1.2

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 (184) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.d.ts +9 -3
  2. package/BaseFeatureWidget/BaseFeatureDetail.js +313 -581
  3. package/BaseFeatureWidget/SequenceFeatureDetails.js +213 -478
  4. package/BaseFeatureWidget/index.js +88 -126
  5. package/BaseFeatureWidget/types.d.ts +1 -0
  6. package/BaseFeatureWidget/types.js +1 -4
  7. package/BaseFeatureWidget/util.js +40 -75
  8. package/CorePlugin.js +55 -94
  9. package/Plugin.js +9 -34
  10. package/PluginLoader.js +153 -422
  11. package/PluginManager.d.ts +28 -33
  12. package/PluginManager.js +377 -666
  13. package/ReExports/Attributes.js +3 -10
  14. package/ReExports/BaseCard.js +3 -10
  15. package/ReExports/DataGrid.js +5 -12
  16. package/ReExports/FeatureDetails.js +3 -10
  17. package/ReExports/index.js +6 -12
  18. package/ReExports/list.d.ts +5 -0
  19. package/ReExports/list.js +271 -7
  20. package/ReExports/material-ui-colors.js +15 -16
  21. package/ReExports/modules.d.ts +11 -20
  22. package/ReExports/modules.js +453 -798
  23. package/TextSearch/BaseResults.js +51 -123
  24. package/TextSearch/TextSearchManager.js +66 -144
  25. package/assemblyManager/assembly.js +280 -555
  26. package/assemblyManager/assemblyConfigSchema.js +47 -64
  27. package/assemblyManager/assemblyManager.js +126 -272
  28. package/assemblyManager/index.js +9 -22
  29. package/configuration/configurationSchema.js +167 -203
  30. package/configuration/configurationSlot.js +248 -326
  31. package/configuration/index.js +19 -35
  32. package/configuration/util.js +131 -173
  33. package/data_adapters/BaseAdapter.d.ts +2 -2
  34. package/data_adapters/BaseAdapter.js +132 -521
  35. package/data_adapters/CytobandAdapter.js +40 -126
  36. package/data_adapters/dataAdapterCache.js +77 -158
  37. package/package.json +4 -5
  38. package/pluggableElementTypes/AdapterType.js +24 -79
  39. package/pluggableElementTypes/AddTrackWorkflowType.d.ts +17 -0
  40. package/pluggableElementTypes/AddTrackWorkflowType.js +20 -0
  41. package/pluggableElementTypes/ConnectionType.js +22 -65
  42. package/pluggableElementTypes/DisplayType.js +35 -82
  43. package/pluggableElementTypes/InternetAccountType.js +23 -64
  44. package/pluggableElementTypes/PluggableElementBase.js +8 -20
  45. package/pluggableElementTypes/RpcMethodType.js +85 -427
  46. package/pluggableElementTypes/TextSearchAdapterType.js +16 -55
  47. package/pluggableElementTypes/TrackType.js +26 -70
  48. package/pluggableElementTypes/ViewType.js +21 -63
  49. package/pluggableElementTypes/WidgetType.js +21 -64
  50. package/pluggableElementTypes/index.d.ts +4 -3
  51. package/pluggableElementTypes/index.js +42 -125
  52. package/pluggableElementTypes/models/BaseConnectionModelFactory.js +28 -43
  53. package/pluggableElementTypes/models/BaseDisplayModel.js +58 -95
  54. package/pluggableElementTypes/models/BaseTrackModel.js +139 -199
  55. package/pluggableElementTypes/models/BaseViewModel.js +24 -40
  56. package/pluggableElementTypes/models/InternetAccountModel.js +116 -263
  57. package/pluggableElementTypes/models/baseConnectionConfig.js +14 -25
  58. package/pluggableElementTypes/models/baseInternetAccountConfig.js +29 -38
  59. package/pluggableElementTypes/models/baseTrackConfig.js +106 -133
  60. package/pluggableElementTypes/models/index.js +21 -70
  61. package/pluggableElementTypes/renderers/BoxRendererType.js +132 -291
  62. package/pluggableElementTypes/renderers/CircularChordRendererType.js +8 -38
  63. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +60 -192
  64. package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +0 -2
  65. package/pluggableElementTypes/renderers/FeatureRendererType.js +89 -255
  66. package/pluggableElementTypes/renderers/RendererType.js +31 -105
  67. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +61 -72
  68. package/pluggableElementTypes/renderers/ServerSideRendererType.js +112 -265
  69. package/pluggableElementTypes/renderers/index.js +19 -62
  70. package/pluggableElementTypes/renderers/util/serializableFilterChain.js +27 -65
  71. package/rpc/BaseRpcDriver.js +169 -405
  72. package/rpc/MainThreadRpcDriver.js +27 -150
  73. package/rpc/RpcManager.js +58 -159
  74. package/rpc/WebWorkerRpcDriver.js +54 -171
  75. package/rpc/configSchema.js +25 -49
  76. package/rpc/coreRpcMethods.d.ts +1 -3
  77. package/rpc/coreRpcMethods.js +221 -959
  78. package/rpc/remoteAbortSignals.js +46 -70
  79. package/tsconfig.build.tsbuildinfo +1 -1
  80. package/ui/AboutDialog.js +106 -162
  81. package/ui/App.js +157 -242
  82. package/ui/AssemblySelector.js +59 -120
  83. package/ui/CascadingMenu.js +101 -196
  84. package/ui/ColorPicker.d.ts +16 -0
  85. package/ui/ColorPicker.js +97 -0
  86. package/ui/Drawer.js +28 -61
  87. package/ui/DrawerWidget.js +108 -202
  88. package/ui/DropDownMenu.js +60 -91
  89. package/ui/EditableTypography.js +87 -149
  90. package/ui/ErrorMessage.js +41 -56
  91. package/ui/FactoryResetDialog.js +24 -57
  92. package/ui/FatalErrorDialog.js +59 -91
  93. package/ui/FileSelector/FileSelector.js +123 -189
  94. package/ui/FileSelector/LocalFileChooser.js +44 -75
  95. package/ui/FileSelector/UrlChooser.js +17 -38
  96. package/ui/FileSelector/index.js +6 -12
  97. package/ui/Icons.js +45 -69
  98. package/ui/Logo.js +57 -110
  99. package/ui/Menu.js +232 -354
  100. package/ui/PrerenderedCanvas.js +63 -87
  101. package/ui/ResizeHandle.js +87 -116
  102. package/ui/ReturnToImportFormDialog.js +32 -63
  103. package/ui/SanitizedHTML.js +64 -47
  104. package/ui/Snackbar.js +74 -101
  105. package/ui/SnackbarModel.js +37 -51
  106. package/ui/Tooltip.js +49 -76
  107. package/ui/ViewContainer.js +113 -196
  108. package/ui/colors.d.ts +10 -0
  109. package/ui/colors.js +78 -0
  110. package/ui/index.js +51 -181
  111. package/ui/react-colorful.d.ts +17 -0
  112. package/ui/react-colorful.js +455 -0
  113. package/ui/theme.d.ts +23 -1
  114. package/ui/theme.js +199 -247
  115. package/util/Base1DUtils.d.ts +32 -0
  116. package/util/Base1DUtils.js +174 -0
  117. package/util/Base1DViewModel.d.ts +16 -30
  118. package/util/Base1DViewModel.js +116 -293
  119. package/util/QuickLRU.js +84 -332
  120. package/util/TimeTraveller.d.ts +19 -0
  121. package/util/TimeTraveller.js +86 -0
  122. package/util/aborting.js +49 -127
  123. package/util/analytics.js +91 -154
  124. package/util/blockTypes.js +106 -240
  125. package/util/calculateDynamicBlocks.js +98 -128
  126. package/util/calculateStaticBlocks.js +105 -125
  127. package/util/color/cssColorsLevel4.js +156 -160
  128. package/util/color/index.js +33 -55
  129. package/util/compositeMap.js +49 -333
  130. package/util/formatFastaStrings.js +9 -14
  131. package/util/idMaker.js +18 -31
  132. package/util/index.d.ts +18 -32
  133. package/util/index.js +747 -1226
  134. package/util/io/RemoteFileWithRangeCache.js +88 -257
  135. package/util/io/index.js +95 -169
  136. package/util/jexl.js +60 -115
  137. package/util/jexlStrings.js +24 -29
  138. package/util/layouts/BaseLayout.js +1 -4
  139. package/util/layouts/GranularRectLayout.js +388 -555
  140. package/util/layouts/MultiLayout.js +41 -109
  141. package/util/layouts/PrecomputedLayout.js +56 -112
  142. package/util/layouts/PrecomputedMultiLayout.js +22 -59
  143. package/util/layouts/SceneGraph.js +127 -197
  144. package/util/layouts/index.js +29 -66
  145. package/util/mst-reflection.js +55 -71
  146. package/util/offscreenCanvasPonyfill.js +66 -134
  147. package/util/offscreenCanvasUtils.d.ts +2 -7
  148. package/util/offscreenCanvasUtils.js +49 -146
  149. package/util/range.js +29 -40
  150. package/util/rxjs.js +20 -27
  151. package/util/simpleFeature.js +88 -152
  152. package/util/stats.js +91 -151
  153. package/util/tracks.js +130 -173
  154. package/util/types/index.js +110 -179
  155. package/util/types/mst.js +91 -146
  156. package/util/types/util.js +1 -4
  157. package/util/when.js +54 -101
  158. package/BaseFeatureWidget/SequenceFeatureDetails.test.js +0 -122
  159. package/BaseFeatureWidget/index.test.js +0 -69
  160. package/TextSearch/BaseResults.test.js +0 -42
  161. package/configuration/configurationSchema.test.js +0 -266
  162. package/configuration/configurationSlot.test.js +0 -69
  163. package/configuration/util.test.js +0 -39
  164. package/data_adapters/BaseAdapter.test.js +0 -200
  165. package/declare.d.js +0 -1
  166. package/pluggableElementTypes/RpcMethodType.test.js +0 -118
  167. package/pluggableElementTypes/renderers/declare.d.js +0 -1
  168. package/pluggableElementTypes/renderers/util/serializableFilterChain.test.js +0 -20
  169. package/rpc/BaseRpcDriver.test.js +0 -540
  170. package/rpc/declaration.d.js +0 -1
  171. package/ui/FatalErrorDialog.test.js +0 -82
  172. package/ui/SanitizedHTML.test.js +0 -36
  173. package/ui/theme.test.js +0 -92
  174. package/util/Base1DViewModel.test.js +0 -130
  175. package/util/calculateDynamicBlocks.test.js +0 -74
  176. package/util/calculateStaticBlocks.test.js +0 -297
  177. package/util/declare.d.js +0 -1
  178. package/util/formatFastaStrings.test.js +0 -40
  179. package/util/index.test.js +0 -213
  180. package/util/jexlStrings.test.js +0 -48
  181. package/util/layouts/GranularRectLayout.test.js +0 -99
  182. package/util/range.test.js +0 -64
  183. package/util/simpleFeature.test.js +0 -34
  184. 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;