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