@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.
- package/BaseFeatureWidget/BaseFeatureDetail.d.ts +20 -4
- package/BaseFeatureWidget/BaseFeatureDetail.js +313 -558
- package/BaseFeatureWidget/SequenceFeatureDetails.js +213 -473
- package/BaseFeatureWidget/index.d.ts +2 -2
- package/BaseFeatureWidget/index.js +88 -124
- 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 +84 -117
- package/PluginManager.js +377 -666
- package/ReExports/Attributes.d.ts +2 -0
- package/ReExports/Attributes.js +5 -0
- package/ReExports/BaseCard.d.ts +2 -0
- package/ReExports/BaseCard.js +5 -0
- package/ReExports/DataGrid.d.ts +2 -0
- package/ReExports/DataGrid.js +6 -0
- package/ReExports/FeatureDetails.d.ts +2 -0
- package/ReExports/FeatureDetails.js +5 -0
- package/ReExports/index.js +6 -12
- package/ReExports/list.d.ts +5 -0
- package/ReExports/list.js +271 -7
- package/ReExports/material-ui-colors.d.ts +1 -19
- package/ReExports/material-ui-colors.js +16 -158
- package/ReExports/modules.d.ts +68 -109
- package/ReExports/modules.js +455 -244
- package/TextSearch/BaseResults.js +51 -123
- package/TextSearch/TextSearchManager.d.ts +3 -1
- package/TextSearch/TextSearchManager.js +66 -144
- package/assemblyManager/assembly.js +280 -554
- package/assemblyManager/assemblyConfigSchema.js +47 -64
- package/assemblyManager/assemblyManager.d.ts +12 -10
- package/assemblyManager/assemblyManager.js +126 -270
- 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.d.ts +1 -1
- 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 +16 -18
- 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.d.ts +10 -10
- package/pluggableElementTypes/models/BaseDisplayModel.js +58 -95
- package/pluggableElementTypes/models/BaseTrackModel.d.ts +1 -1
- package/pluggableElementTypes/models/BaseTrackModel.js +139 -200
- 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.d.ts +2 -2
- 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 +107 -158
- package/ui/App.js +157 -261
- package/ui/AssemblySelector.d.ts +1 -1
- package/ui/AssemblySelector.js +59 -115
- package/ui/CascadingMenu.js +100 -199
- package/ui/ColorPicker.d.ts +16 -0
- package/ui/ColorPicker.js +97 -0
- package/ui/Drawer.js +28 -58
- package/ui/DrawerWidget.js +109 -209
- package/ui/DropDownMenu.d.ts +0 -8
- package/ui/DropDownMenu.js +60 -97
- package/ui/EditableTypography.d.ts +1 -1
- package/ui/EditableTypography.js +87 -155
- package/ui/ErrorMessage.js +41 -66
- 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 -71
- package/ui/FileSelector/UrlChooser.js +17 -38
- package/ui/FileSelector/index.js +6 -12
- package/ui/Icons.d.ts +1 -1
- package/ui/Icons.js +45 -69
- package/ui/Logo.js +57 -110
- package/ui/Menu.d.ts +1 -1
- package/ui/Menu.js +232 -355
- package/ui/PrerenderedCanvas.js +63 -78
- package/ui/ResizeHandle.js +87 -114
- package/ui/ReturnToImportFormDialog.js +32 -59
- package/ui/SanitizedHTML.js +63 -52
- package/ui/Snackbar.js +74 -99
- package/ui/SnackbarModel.js +37 -51
- package/ui/Tooltip.d.ts +3 -1
- package/ui/Tooltip.js +49 -74
- package/ui/ViewContainer.js +113 -183
- 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 +279 -131
- package/ui/theme.js +197 -225
- package/util/Base1DUtils.d.ts +32 -0
- package/util/Base1DUtils.js +174 -0
- package/util/Base1DViewModel.d.ts +16 -37
- package/util/Base1DViewModel.js +116 -295
- 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 -39
- package/util/index.js +743 -1236
- 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 -557
- package/util/layouts/MultiLayout.js +41 -109
- package/util/layouts/PrecomputedLayout.js +56 -114
- 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 -171
- package/util/types/index.d.ts +3 -3
- package/util/types/index.js +110 -179
- package/util/types/mst.d.ts +3 -3
- package/util/types/mst.js +91 -142
- 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 -51
- 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 -111
- 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,128 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
19
|
-
|
|
20
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
-
|
|
22
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
-
|
|
24
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
-
|
|
26
|
-
var _simpleFeature = _interopRequireDefault(require("../util/simpleFeature"));
|
|
27
|
-
|
|
28
|
-
var _configuration = require("../configuration");
|
|
29
|
-
|
|
30
|
-
var _io = require("../util/io");
|
|
31
|
-
|
|
32
|
-
var _BaseAdapter2 = require("./BaseAdapter");
|
|
33
|
-
|
|
34
|
-
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); }; }
|
|
35
|
-
|
|
36
|
-
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; } }
|
|
37
|
-
|
|
38
|
-
var configSchema = (0, _configuration.ConfigurationSchema)('CytobandAdapter', {
|
|
39
|
-
cytobandLocation: {
|
|
40
|
-
type: 'fileLocation',
|
|
41
|
-
defaultValue: {
|
|
42
|
-
uri: '/path/to/cytoband.txt.gz'
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}, {
|
|
46
|
-
explicitlyTyped: true
|
|
47
|
-
});
|
|
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
|
+
exports.DataAdapter = exports.configSchema = void 0;
|
|
7
|
+
const simpleFeature_1 = __importDefault(require("../util/simpleFeature"));
|
|
8
|
+
const configuration_1 = require("../configuration");
|
|
9
|
+
const io_1 = require("../util/io");
|
|
10
|
+
const BaseAdapter_1 = require("./BaseAdapter");
|
|
11
|
+
const configSchema = (0, configuration_1.ConfigurationSchema)('CytobandAdapter', {
|
|
12
|
+
cytobandLocation: {
|
|
13
|
+
type: 'fileLocation',
|
|
14
|
+
defaultValue: { uri: '/path/to/cytoband.txt.gz' },
|
|
15
|
+
},
|
|
16
|
+
}, { explicitlyTyped: true });
|
|
48
17
|
exports.configSchema = configSchema;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return _context.abrupt("return", []);
|
|
77
|
-
|
|
78
|
-
case 3:
|
|
79
|
-
_context.next = 5;
|
|
80
|
-
return (0, _io.openLocation)(loc).readFile('utf8');
|
|
81
|
-
|
|
82
|
-
case 5:
|
|
83
|
-
data = _context.sent;
|
|
84
|
-
return _context.abrupt("return", data.split('\n').filter(function (f) {
|
|
85
|
-
return !!f.trim();
|
|
86
|
-
}).map(function (line) {
|
|
87
|
-
var _line$split = line.split('\t'),
|
|
88
|
-
_line$split2 = (0, _slicedToArray2.default)(_line$split, 5),
|
|
89
|
-
refName = _line$split2[0],
|
|
90
|
-
start = _line$split2[1],
|
|
91
|
-
end = _line$split2[2],
|
|
92
|
-
name = _line$split2[3],
|
|
93
|
-
type = _line$split2[4];
|
|
94
|
-
|
|
95
|
-
return new _simpleFeature.default({
|
|
96
|
-
uniqueId: line,
|
|
97
|
-
refName: refName,
|
|
98
|
-
start: +start,
|
|
99
|
-
end: +end,
|
|
100
|
-
name: name,
|
|
101
|
-
type: type
|
|
102
|
-
});
|
|
103
|
-
}));
|
|
104
|
-
|
|
105
|
-
case 7:
|
|
106
|
-
case "end":
|
|
107
|
-
return _context.stop();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}, _callee, this);
|
|
111
|
-
}));
|
|
112
|
-
|
|
113
|
-
function getData() {
|
|
114
|
-
return _getData.apply(this, arguments);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
return getData;
|
|
118
|
-
}()
|
|
119
|
-
}, {
|
|
120
|
-
key: "freeResources",
|
|
121
|
-
value: function
|
|
122
|
-
/* { region } */
|
|
123
|
-
freeResources() {}
|
|
124
|
-
}]);
|
|
125
|
-
return CytobandAdapter;
|
|
126
|
-
}(_BaseAdapter2.BaseAdapter);
|
|
127
|
-
|
|
128
|
-
exports.DataAdapter = CytobandAdapter;
|
|
18
|
+
class CytobandAdapter extends BaseAdapter_1.BaseAdapter {
|
|
19
|
+
async getData() {
|
|
20
|
+
const loc = (0, configuration_1.readConfObject)(this.config, 'cytobandLocation');
|
|
21
|
+
if (loc.uri === '' || loc.uri === '/path/to/cytoband.txt.gz') {
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
const data = await (0, io_1.openLocation)(loc).readFile('utf8');
|
|
25
|
+
return data
|
|
26
|
+
.split('\n')
|
|
27
|
+
.filter(f => !!f.trim())
|
|
28
|
+
.map(line => {
|
|
29
|
+
const [refName, start, end, name, type] = line.split('\t');
|
|
30
|
+
return new simpleFeature_1.default({
|
|
31
|
+
uniqueId: line,
|
|
32
|
+
refName,
|
|
33
|
+
start: +start,
|
|
34
|
+
end: +end,
|
|
35
|
+
name,
|
|
36
|
+
type,
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
freeResources( /* { region } */) { }
|
|
41
|
+
}
|
|
42
|
+
exports.DataAdapter = CytobandAdapter;
|
|
@@ -1,27 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.clearAdapterCache = clearAdapterCache;
|
|
9
|
-
exports.freeAdapterResources = freeAdapterResources;
|
|
10
|
-
exports.getAdapter = getAdapter;
|
|
11
|
-
|
|
12
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
-
|
|
14
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
-
|
|
16
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
-
|
|
18
|
-
var _idMaker = _interopRequireDefault(require("../util/idMaker"));
|
|
19
|
-
|
|
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
|
+
exports.clearAdapterCache = exports.freeAdapterResources = exports.getAdapter = void 0;
|
|
7
|
+
const idMaker_1 = __importDefault(require("../util/idMaker"));
|
|
20
8
|
function adapterConfigCacheKey(adapterConfig) {
|
|
21
|
-
|
|
9
|
+
return `${(0, idMaker_1.default)(adapterConfig)}`;
|
|
22
10
|
}
|
|
23
|
-
|
|
24
|
-
var adapterCache = {};
|
|
11
|
+
let adapterCache = {};
|
|
25
12
|
/**
|
|
26
13
|
* instantiate a data adapter, or return an already-instantiated one if we have one with the same
|
|
27
14
|
* configuration
|
|
@@ -31,149 +18,81 @@ var adapterCache = {};
|
|
|
31
18
|
* used for reference counting
|
|
32
19
|
* @param adapterConfigSnapshot - plain-JS configuration snapshot for the adapter
|
|
33
20
|
*/
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
* allows them to get any sub-adapters that they need
|
|
41
|
-
* internally, staying with the same worker session ID
|
|
42
|
-
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
function _getAdapter() {
|
|
46
|
-
_getAdapter = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(pluginManager, sessionId, adapterConfigSnapshot) {
|
|
47
|
-
var cacheKey, adapterType, dataAdapterType, adapterConfig, getSubAdapter, AdapterClass, getAdapterClass, CLASS, dataAdapter, cacheEntry;
|
|
48
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
49
|
-
while (1) {
|
|
50
|
-
switch (_context.prev = _context.next) {
|
|
51
|
-
case 0:
|
|
52
|
-
// cache the adapter object
|
|
53
|
-
cacheKey = adapterConfigCacheKey(adapterConfigSnapshot);
|
|
54
|
-
|
|
55
|
-
if (adapterCache[cacheKey]) {
|
|
56
|
-
_context.next = 21;
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
adapterType = (adapterConfigSnapshot || {}).type;
|
|
61
|
-
|
|
62
|
-
if (adapterType) {
|
|
63
|
-
_context.next = 5;
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
|
|
21
|
+
async function getAdapter(pluginManager, sessionId, adapterConfigSnapshot) {
|
|
22
|
+
// cache the adapter object
|
|
23
|
+
const cacheKey = adapterConfigCacheKey(adapterConfigSnapshot);
|
|
24
|
+
if (!adapterCache[cacheKey]) {
|
|
25
|
+
const adapterType = (adapterConfigSnapshot || {}).type;
|
|
26
|
+
if (!adapterType) {
|
|
67
27
|
throw new Error('could not determine adapter type from adapter config snapshot');
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
getSubAdapter = getAdapter.bind(null, pluginManager, sessionId); // instantiate the adapter itself with its config schema, and a bound
|
|
86
|
-
// func that it can use to get any inner adapters
|
|
87
|
-
// (such as sequence adapters or wrapped subadapters) that it needs
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
AdapterClass = dataAdapterType.AdapterClass, getAdapterClass = dataAdapterType.getAdapterClass; // @ts-ignore
|
|
91
|
-
|
|
92
|
-
_context.t0 = AdapterClass;
|
|
93
|
-
|
|
94
|
-
if (_context.t0) {
|
|
95
|
-
_context.next = 16;
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
_context.next = 15;
|
|
100
|
-
return getAdapterClass();
|
|
101
|
-
|
|
102
|
-
case 15:
|
|
103
|
-
_context.t0 = _context.sent;
|
|
104
|
-
|
|
105
|
-
case 16:
|
|
106
|
-
CLASS = _context.t0;
|
|
107
|
-
|
|
108
|
-
if (CLASS) {
|
|
109
|
-
_context.next = 19;
|
|
110
|
-
break;
|
|
111
|
-
}
|
|
112
|
-
|
|
28
|
+
}
|
|
29
|
+
const dataAdapterType = pluginManager.getAdapterType(adapterType);
|
|
30
|
+
if (!dataAdapterType) {
|
|
31
|
+
throw new Error(`unknown data adapter type ${adapterType}`);
|
|
32
|
+
}
|
|
33
|
+
// instantiate the data adapter's config schema so it gets its defaults,
|
|
34
|
+
// callbacks, etc
|
|
35
|
+
const adapterConfig = dataAdapterType.configSchema.create(adapterConfigSnapshot, { pluginManager });
|
|
36
|
+
const getSubAdapter = getAdapter.bind(null, pluginManager, sessionId);
|
|
37
|
+
// instantiate the adapter itself with its config schema, and a bound
|
|
38
|
+
// func that it can use to get any inner adapters
|
|
39
|
+
// (such as sequence adapters or wrapped subadapters) that it needs
|
|
40
|
+
//
|
|
41
|
+
const { AdapterClass, getAdapterClass } = dataAdapterType;
|
|
42
|
+
// @ts-ignore
|
|
43
|
+
const CLASS = AdapterClass || (await getAdapterClass());
|
|
44
|
+
if (!CLASS) {
|
|
113
45
|
throw new Error('Failed to get adapter');
|
|
114
|
-
|
|
115
|
-
case 19:
|
|
116
|
-
dataAdapter = new CLASS(adapterConfig, getSubAdapter, pluginManager); // store it in our cache
|
|
117
|
-
|
|
118
|
-
adapterCache[cacheKey] = {
|
|
119
|
-
dataAdapter: dataAdapter,
|
|
120
|
-
sessionIds: new Set([sessionId])
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
case 21:
|
|
124
|
-
cacheEntry = adapterCache[cacheKey];
|
|
125
|
-
cacheEntry.sessionIds.add(sessionId);
|
|
126
|
-
return _context.abrupt("return", cacheEntry);
|
|
127
|
-
|
|
128
|
-
case 24:
|
|
129
|
-
case "end":
|
|
130
|
-
return _context.stop();
|
|
131
46
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
47
|
+
const dataAdapter = new CLASS(adapterConfig, getSubAdapter, pluginManager);
|
|
48
|
+
// store it in our cache
|
|
49
|
+
adapterCache[cacheKey] = {
|
|
50
|
+
dataAdapter,
|
|
51
|
+
sessionIds: new Set([sessionId]),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const cacheEntry = adapterCache[cacheKey];
|
|
55
|
+
cacheEntry.sessionIds.add(sessionId);
|
|
56
|
+
return cacheEntry;
|
|
136
57
|
}
|
|
137
|
-
|
|
58
|
+
exports.getAdapter = getAdapter;
|
|
138
59
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
139
60
|
function freeAdapterResources(specification) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
61
|
+
let deleteCount = 0;
|
|
62
|
+
const specKeys = Object.keys(specification);
|
|
63
|
+
// if we don't specify a range, delete any adapters that are
|
|
64
|
+
// only associated with that session
|
|
65
|
+
if (specKeys.length === 1 && specKeys[0] === 'sessionId') {
|
|
66
|
+
const { sessionId } = specification;
|
|
67
|
+
Object.entries(adapterCache).forEach(([cacheKey, cacheEntry]) => {
|
|
68
|
+
cacheEntry.sessionIds.delete(sessionId);
|
|
69
|
+
if (cacheEntry.sessionIds.size === 0) {
|
|
70
|
+
deleteCount += 1;
|
|
71
|
+
delete adapterCache[cacheKey];
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// otherwise call freeResources on all the cached data adapters
|
|
77
|
+
Object.values(adapterCache).forEach(cacheEntry => {
|
|
78
|
+
if (!cacheEntry.dataAdapter.freeResources) {
|
|
79
|
+
console.warn(cacheEntry.dataAdapter, 'does not implement freeResources');
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const regions = specification.regions ||
|
|
83
|
+
(specification.region ? [specification.region] : []);
|
|
84
|
+
regions.forEach((region) => {
|
|
85
|
+
if (region.refName !== undefined) {
|
|
86
|
+
cacheEntry.dataAdapter.freeResources(region);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
169
90
|
});
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
return deleteCount;
|
|
91
|
+
}
|
|
92
|
+
return deleteCount;
|
|
175
93
|
}
|
|
176
|
-
|
|
94
|
+
exports.freeAdapterResources = freeAdapterResources;
|
|
177
95
|
function clearAdapterCache() {
|
|
178
|
-
|
|
179
|
-
}
|
|
96
|
+
adapterCache = {};
|
|
97
|
+
}
|
|
98
|
+
exports.clearAdapterCache = clearAdapterCache;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jbrowse/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "JBrowse 2 core libraries used by plugins",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jbrowse",
|
|
@@ -25,12 +25,11 @@
|
|
|
25
25
|
"clean": "rimraf dist tsconfig.build.tsbuildinfo",
|
|
26
26
|
"prebuild": "yarn clean",
|
|
27
27
|
"prepack": "yarn build",
|
|
28
|
-
"build": "
|
|
29
|
-
"postbuild": "tsc -b tsconfig.build.json"
|
|
28
|
+
"build": "tsc -b tsconfig.build.json && cp package.json README.md ../../LICENSE dist/"
|
|
30
29
|
},
|
|
31
30
|
"dependencies": {
|
|
32
31
|
"@babel/runtime": "^7.17.9",
|
|
33
|
-
"@
|
|
32
|
+
"@mui/icons-material": "^5.0.1",
|
|
34
33
|
"abortable-promise-cache": "^1.5.0",
|
|
35
34
|
"canvas-sequencer": "^3.1.0",
|
|
36
35
|
"canvas2svg": "^1.0.16",
|
|
@@ -43,37 +42,36 @@
|
|
|
43
42
|
"dompurify": "^2.3.4",
|
|
44
43
|
"escape-html": "^1.0.3",
|
|
45
44
|
"fast-deep-equal": "^3.1.3",
|
|
46
|
-
"generic-filehandle": "^
|
|
45
|
+
"generic-filehandle": "^3.0.0",
|
|
47
46
|
"http-range-fetcher": "^1.4.0",
|
|
48
47
|
"is-object": "^1.0.1",
|
|
49
48
|
"jexl": "^2.3.0",
|
|
50
49
|
"json-stable-stringify": "^1.0.1",
|
|
51
50
|
"librpc-web-mod": "^1.1.5",
|
|
52
51
|
"load-script2": "^2.0.5",
|
|
53
|
-
"material-ui-popup-state": "^
|
|
54
|
-
"object.fromentries": "^2.0.0",
|
|
52
|
+
"material-ui-popup-state": "^3.0.0",
|
|
55
53
|
"rbush": "^3.0.1",
|
|
56
54
|
"react-error-boundary": "^3.0.0",
|
|
57
|
-
"react-intersection-observer": "^
|
|
55
|
+
"react-intersection-observer": "^9.3.0",
|
|
58
56
|
"react-use-measure": "^2.1.1",
|
|
59
57
|
"shortid": "^2.2.13",
|
|
60
58
|
"svg-path-generator": "^1.1.0"
|
|
61
59
|
},
|
|
62
60
|
"peerDependencies": {
|
|
63
|
-
"@material
|
|
64
|
-
"@
|
|
65
|
-
"
|
|
66
|
-
"mobx": "^
|
|
67
|
-
"mobx-
|
|
68
|
-
"mobx-state-tree": "^3.14.1",
|
|
61
|
+
"@mui/material": "^5.0.0",
|
|
62
|
+
"@mui/x-data-grid": "^5.0.0",
|
|
63
|
+
"mobx": "^6.0.0",
|
|
64
|
+
"mobx-react": "^7.0.0",
|
|
65
|
+
"mobx-state-tree": "^5.0.0",
|
|
69
66
|
"prop-types": "^15.0.0",
|
|
70
|
-
"react": "
|
|
71
|
-
"react-dom": "
|
|
72
|
-
"rxjs": "^6.0.0"
|
|
67
|
+
"react": ">=16.8.0",
|
|
68
|
+
"react-dom": ">=16.8.0",
|
|
69
|
+
"rxjs": "^6.0.0",
|
|
70
|
+
"tss-react": "^3.0.0"
|
|
73
71
|
},
|
|
74
72
|
"publishConfig": {
|
|
75
73
|
"access": "public",
|
|
76
74
|
"directory": "dist"
|
|
77
75
|
},
|
|
78
|
-
"gitHead": "
|
|
76
|
+
"gitHead": "0db0462fa1f9f15ab4869da085bcab032b9483c3"
|
|
79
77
|
}
|
|
@@ -1,81 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
-
|
|
26
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
|
-
|
|
28
|
-
var _PluggableElementBase2 = _interopRequireDefault(require("./PluggableElementBase"));
|
|
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 AdapterType = /*#__PURE__*/function (_PluggableElementBase) {
|
|
35
|
-
(0, _inherits2.default)(AdapterType, _PluggableElementBase);
|
|
36
|
-
|
|
37
|
-
var _super = _createSuper(AdapterType);
|
|
38
|
-
|
|
39
|
-
function AdapterType(stuff) {
|
|
40
|
-
var _this;
|
|
41
|
-
|
|
42
|
-
(0, _classCallCheck2.default)(this, AdapterType);
|
|
43
|
-
_this = _super.call(this, stuff);
|
|
44
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "AdapterClass", void 0);
|
|
45
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getAdapterClass", void 0);
|
|
46
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "configSchema", void 0);
|
|
47
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "adapterCapabilities", void 0);
|
|
48
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "adapterMetadata", void 0);
|
|
49
|
-
|
|
50
|
-
if ('AdapterClass' in stuff) {
|
|
51
|
-
_this.AdapterClass = stuff.AdapterClass;
|
|
52
|
-
_this.getAdapterClass = /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
53
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
54
|
-
while (1) {
|
|
55
|
-
switch (_context.prev = _context.next) {
|
|
56
|
-
case 0:
|
|
57
|
-
return _context.abrupt("return", stuff.AdapterClass);
|
|
58
|
-
|
|
59
|
-
case 1:
|
|
60
|
-
case "end":
|
|
61
|
-
return _context.stop();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}, _callee);
|
|
65
|
-
}));
|
|
66
|
-
} else if ('getAdapterClass' in stuff) {
|
|
67
|
-
_this.getAdapterClass = stuff.getAdapterClass;
|
|
68
|
-
} else {
|
|
69
|
-
throw new Error("no AdapterClass or getAdapterClass is defined for adapter type ".concat(_this.name));
|
|
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
|
+
/* eslint curly:error */
|
|
7
|
+
const PluggableElementBase_1 = __importDefault(require("./PluggableElementBase"));
|
|
8
|
+
class AdapterType extends PluggableElementBase_1.default {
|
|
9
|
+
constructor(stuff) {
|
|
10
|
+
super(stuff);
|
|
11
|
+
if ('AdapterClass' in stuff) {
|
|
12
|
+
this.AdapterClass = stuff.AdapterClass;
|
|
13
|
+
this.getAdapterClass = async () => stuff.AdapterClass;
|
|
14
|
+
}
|
|
15
|
+
else if ('getAdapterClass' in stuff) {
|
|
16
|
+
this.getAdapterClass = stuff.getAdapterClass;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
throw new Error(`no AdapterClass or getAdapterClass is defined for adapter type ${this.name}`);
|
|
20
|
+
}
|
|
21
|
+
this.configSchema = stuff.configSchema;
|
|
22
|
+
this.adapterCapabilities = stuff.adapterCapabilities || [];
|
|
23
|
+
this.adapterMetadata = stuff.adapterMetadata;
|
|
70
24
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
_this.adapterCapabilities = stuff.adapterCapabilities || [];
|
|
74
|
-
_this.adapterMetadata = stuff.adapterMetadata;
|
|
75
|
-
return _this;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return (0, _createClass2.default)(AdapterType);
|
|
79
|
-
}(_PluggableElementBase2.default);
|
|
80
|
-
|
|
81
|
-
exports.default = AdapterType;
|
|
25
|
+
}
|
|
26
|
+
exports.default = AdapterType;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { IAnyModelType } from 'mobx-state-tree';
|
|
3
|
+
import PluggableElementBase from './PluggableElementBase';
|
|
4
|
+
declare type BasicComponent = React.ComponentType<{
|
|
5
|
+
model: any;
|
|
6
|
+
}>;
|
|
7
|
+
declare type AddTrackWorkflowComponent = React.LazyExoticComponent<BasicComponent> | BasicComponent;
|
|
8
|
+
export default class AddTrackWorkflow extends PluggableElementBase {
|
|
9
|
+
ReactComponent: AddTrackWorkflowComponent;
|
|
10
|
+
stateModel: IAnyModelType;
|
|
11
|
+
constructor(stuff: {
|
|
12
|
+
name: string;
|
|
13
|
+
ReactComponent: AddTrackWorkflowComponent;
|
|
14
|
+
stateModel: IAnyModelType;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
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 PluggableElementBase_1 = __importDefault(require("./PluggableElementBase"));
|
|
7
|
+
class AddTrackWorkflow extends PluggableElementBase_1.default {
|
|
8
|
+
constructor(stuff) {
|
|
9
|
+
super(stuff);
|
|
10
|
+
this.ReactComponent = stuff.ReactComponent;
|
|
11
|
+
this.stateModel = stuff.stateModel;
|
|
12
|
+
if (!this.ReactComponent) {
|
|
13
|
+
throw new Error(`no ReactComponent defined for view ${this.name}`);
|
|
14
|
+
}
|
|
15
|
+
if (!this.stateModel) {
|
|
16
|
+
throw new Error(`no stateModel defined for view ${this.name}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.default = AddTrackWorkflow;
|