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