@jbrowse/plugin-legacy-jbrowse 1.6.9 → 1.7.3
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/dist/JBrowse1Connection/configSchema.d.ts +2 -2
- package/dist/JBrowse1Connection/configSchema.js +30 -0
- package/dist/JBrowse1Connection/index.d.ts +2 -2
- package/dist/JBrowse1Connection/index.js +23 -0
- package/dist/JBrowse1Connection/jb1ConfigLoad.d.ts +36 -36
- package/dist/JBrowse1Connection/jb1ConfigLoad.js +555 -0
- package/dist/JBrowse1Connection/jb1ConfigParse.d.ts +11 -11
- package/dist/JBrowse1Connection/jb1ConfigParse.js +476 -0
- package/dist/JBrowse1Connection/jb1ToJb2.d.ts +47 -47
- package/dist/JBrowse1Connection/jb1ToJb2.js +556 -0
- package/dist/JBrowse1Connection/model.d.ts +15 -4
- package/dist/JBrowse1Connection/model.js +58 -0
- package/dist/JBrowse1Connection/types.d.ts +91 -91
- package/dist/JBrowse1Connection/types.js +5 -0
- package/dist/JBrowse1Connection/util.d.ts +26 -26
- package/dist/JBrowse1Connection/util.js +177 -0
- package/dist/JBrowse1TextSeachAdapter/HttpMap.d.ts +39 -39
- package/dist/JBrowse1TextSeachAdapter/HttpMap.js +350 -0
- package/dist/JBrowse1TextSeachAdapter/HttpMap.test.js +118 -0
- package/dist/JBrowse1TextSeachAdapter/JBrowse1TextSearchAdapter.d.ts +33 -33
- package/dist/JBrowse1TextSeachAdapter/JBrowse1TextSearchAdapter.js +191 -0
- package/dist/JBrowse1TextSeachAdapter/JBrowse1TextSearchAdapter.test.js +98 -0
- package/dist/JBrowse1TextSeachAdapter/configSchema.d.ts +2 -2
- package/dist/JBrowse1TextSeachAdapter/configSchema.js +35 -0
- package/dist/JBrowse1TextSeachAdapter/index.d.ts +2 -2
- package/dist/JBrowse1TextSeachAdapter/index.js +23 -0
- package/dist/NCListAdapter/NCListAdapter.d.ts +31 -31
- package/dist/NCListAdapter/NCListAdapter.js +237 -0
- package/dist/NCListAdapter/NCListAdapter.test.js +108 -0
- package/dist/NCListAdapter/NCListFeature.d.ts +31 -31
- package/dist/NCListAdapter/NCListFeature.js +142 -0
- package/dist/NCListAdapter/configSchema.d.ts +2 -2
- package/dist/NCListAdapter/configSchema.js +27 -0
- package/dist/NCListAdapter/index.d.ts +1 -1
- package/dist/NCListAdapter/index.js +15 -0
- package/dist/declare.d.js +1 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.js +122 -6
- package/dist/index.test.js +44 -0
- package/package.json +5 -7
- package/src/JBrowse1Connection/jb1ConfigLoad.ts +1 -1
- package/dist/index.test.d.ts +0 -1
- package/dist/plugin-legacy-jbrowse.cjs.development.js +0 -3567
- package/dist/plugin-legacy-jbrowse.cjs.development.js.map +0 -1
- package/dist/plugin-legacy-jbrowse.cjs.production.min.js +0 -2
- package/dist/plugin-legacy-jbrowse.cjs.production.min.js.map +0 -1
- package/dist/plugin-legacy-jbrowse.esm.js +0 -3561
- package/dist/plugin-legacy-jbrowse.esm.js.map +0 -1
|
@@ -0,0 +1,191 @@
|
|
|
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 _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
|
+
|
|
14
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
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 _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
31
|
+
|
|
32
|
+
var _BaseAdapter2 = require("@jbrowse/core/data_adapters/BaseAdapter");
|
|
33
|
+
|
|
34
|
+
var _BaseResults = _interopRequireDefault(require("@jbrowse/core/TextSearch/BaseResults"));
|
|
35
|
+
|
|
36
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
37
|
+
|
|
38
|
+
var _HttpMap = _interopRequireDefault(require("./HttpMap"));
|
|
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
|
+
// Jbrowse1 text search adapter
|
|
45
|
+
// Uses index built by generate-names.pl
|
|
46
|
+
var JBrowse1TextSearchAdapter = /*#__PURE__*/function (_BaseAdapter) {
|
|
47
|
+
(0, _inherits2["default"])(JBrowse1TextSearchAdapter, _BaseAdapter);
|
|
48
|
+
|
|
49
|
+
var _super = _createSuper(JBrowse1TextSearchAdapter);
|
|
50
|
+
|
|
51
|
+
function JBrowse1TextSearchAdapter(config, getSubAdapter, pluginManager) {
|
|
52
|
+
var _this;
|
|
53
|
+
|
|
54
|
+
(0, _classCallCheck2["default"])(this, JBrowse1TextSearchAdapter);
|
|
55
|
+
_this = _super.call(this, config, getSubAdapter, pluginManager);
|
|
56
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "httpMap", void 0);
|
|
57
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "tracksNames", void 0);
|
|
58
|
+
var namesIndexLocation = (0, _configuration.readConfObject)(config, 'namesIndexLocation');
|
|
59
|
+
|
|
60
|
+
if (!namesIndexLocation) {
|
|
61
|
+
throw new Error('must provide namesIndexLocation');
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
_this.httpMap = new _HttpMap["default"]({
|
|
65
|
+
url: namesIndexLocation.baseUri ? new URL(namesIndexLocation.uri, namesIndexLocation.baseUri).href : namesIndexLocation.uri
|
|
66
|
+
});
|
|
67
|
+
return _this;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Returns the contents of the file containing the query if it exists
|
|
71
|
+
* else it returns empty
|
|
72
|
+
* @param query - string query
|
|
73
|
+
*/
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
(0, _createClass2["default"])(JBrowse1TextSearchAdapter, [{
|
|
77
|
+
key: "loadIndexFile",
|
|
78
|
+
value: function () {
|
|
79
|
+
var _loadIndexFile = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(query) {
|
|
80
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
81
|
+
while (1) {
|
|
82
|
+
switch (_context.prev = _context.next) {
|
|
83
|
+
case 0:
|
|
84
|
+
return _context.abrupt("return", this.httpMap.getBucket(query));
|
|
85
|
+
|
|
86
|
+
case 1:
|
|
87
|
+
case "end":
|
|
88
|
+
return _context.stop();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}, _callee, this);
|
|
92
|
+
}));
|
|
93
|
+
|
|
94
|
+
function loadIndexFile(_x) {
|
|
95
|
+
return _loadIndexFile.apply(this, arguments);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return loadIndexFile;
|
|
99
|
+
}()
|
|
100
|
+
}, {
|
|
101
|
+
key: "searchIndex",
|
|
102
|
+
value: function () {
|
|
103
|
+
var _searchIndex = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(args) {
|
|
104
|
+
var searchType, queryString, tracks, entries;
|
|
105
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
106
|
+
while (1) {
|
|
107
|
+
switch (_context2.prev = _context2.next) {
|
|
108
|
+
case 0:
|
|
109
|
+
searchType = args.searchType, queryString = args.queryString;
|
|
110
|
+
_context2.t0 = this.tracksNames;
|
|
111
|
+
|
|
112
|
+
if (_context2.t0) {
|
|
113
|
+
_context2.next = 6;
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
_context2.next = 5;
|
|
118
|
+
return this.httpMap.getTrackNames();
|
|
119
|
+
|
|
120
|
+
case 5:
|
|
121
|
+
_context2.t0 = _context2.sent;
|
|
122
|
+
|
|
123
|
+
case 6:
|
|
124
|
+
tracks = _context2.t0;
|
|
125
|
+
_context2.next = 9;
|
|
126
|
+
return this.loadIndexFile(queryString.toLowerCase());
|
|
127
|
+
|
|
128
|
+
case 9:
|
|
129
|
+
entries = _context2.sent;
|
|
130
|
+
|
|
131
|
+
if (!entries[queryString]) {
|
|
132
|
+
_context2.next = 12;
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return _context2.abrupt("return", this.formatResults(entries[queryString], tracks, searchType));
|
|
137
|
+
|
|
138
|
+
case 12:
|
|
139
|
+
return _context2.abrupt("return", []);
|
|
140
|
+
|
|
141
|
+
case 13:
|
|
142
|
+
case "end":
|
|
143
|
+
return _context2.stop();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}, _callee2, this);
|
|
147
|
+
}));
|
|
148
|
+
|
|
149
|
+
function searchIndex(_x2) {
|
|
150
|
+
return _searchIndex.apply(this, arguments);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return searchIndex;
|
|
154
|
+
}()
|
|
155
|
+
}, {
|
|
156
|
+
key: "formatResults",
|
|
157
|
+
value: function formatResults(results, tracks, searchType) {
|
|
158
|
+
return [].concat((0, _toConsumableArray2["default"])(searchType === 'exact' ? [] : results.prefix.map(function (result) {
|
|
159
|
+
return new _BaseResults["default"]({
|
|
160
|
+
label: (0, _typeof2["default"])(result) === 'object' ? result.name : result,
|
|
161
|
+
matchedAttribute: 'name',
|
|
162
|
+
matchedObject: {
|
|
163
|
+
result: result
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
})), (0, _toConsumableArray2["default"])(results.exact.map(function (result) {
|
|
167
|
+
var name = result[0];
|
|
168
|
+
var trackIndex = result[1];
|
|
169
|
+
var refName = result[3];
|
|
170
|
+
var start = result[4];
|
|
171
|
+
var end = result[5];
|
|
172
|
+
var locstring = "".concat(refName || name, ":").concat(start, "-").concat(end);
|
|
173
|
+
return new _BaseResults["default"]({
|
|
174
|
+
locString: locstring,
|
|
175
|
+
label: name,
|
|
176
|
+
matchedAttribute: 'name',
|
|
177
|
+
matchedObject: result,
|
|
178
|
+
trackId: tracks[trackIndex]
|
|
179
|
+
});
|
|
180
|
+
}))).filter(function (result) {
|
|
181
|
+
return result.getLabel() !== 'too many matches';
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}, {
|
|
185
|
+
key: "freeResources",
|
|
186
|
+
value: function freeResources() {}
|
|
187
|
+
}]);
|
|
188
|
+
return JBrowse1TextSearchAdapter;
|
|
189
|
+
}(_BaseAdapter2.BaseAdapter);
|
|
190
|
+
|
|
191
|
+
exports["default"] = JBrowse1TextSearchAdapter;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
6
|
+
|
|
7
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
|
+
|
|
9
|
+
var _BaseResults = _interopRequireDefault(require("@jbrowse/core/TextSearch/BaseResults"));
|
|
10
|
+
|
|
11
|
+
var _path = _interopRequireDefault(require("path"));
|
|
12
|
+
|
|
13
|
+
var _meta = _interopRequireDefault(require("../../test_data/names/meta.json"));
|
|
14
|
+
|
|
15
|
+
var _ = _interopRequireDefault(require("../../test_data/names/0.json"));
|
|
16
|
+
|
|
17
|
+
var _f = _interopRequireDefault(require("../../test_data/names/f.json"));
|
|
18
|
+
|
|
19
|
+
var _JBrowse1TextSearchAdapter = _interopRequireDefault(require("./JBrowse1TextSearchAdapter"));
|
|
20
|
+
|
|
21
|
+
var _configSchema = _interopRequireDefault(require("./configSchema"));
|
|
22
|
+
|
|
23
|
+
test('adapter can fetch files from names index', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
24
|
+
var mockFetch, rootTemplate, spy, urlPath, args, adapter, results, results2, test2;
|
|
25
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
26
|
+
while (1) {
|
|
27
|
+
switch (_context.prev = _context.next) {
|
|
28
|
+
case 0:
|
|
29
|
+
mockFetch = function _mockFetch(url) {
|
|
30
|
+
var response = {};
|
|
31
|
+
|
|
32
|
+
if (url.includes('names/meta.json')) {
|
|
33
|
+
response = _meta["default"];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (url.includes('names/0.json')) {
|
|
37
|
+
response = _["default"];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (url.includes('names/f.json')) {
|
|
41
|
+
response = _f["default"];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return Promise.resolve(new Response(JSON.stringify(response)));
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
rootTemplate = _path["default"].join(__dirname, '..', '..', '..', '..', 'test_data', 'names').replace(/\\/g, '\\\\');
|
|
48
|
+
spy = jest.spyOn(global, 'fetch'); // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
49
|
+
|
|
50
|
+
spy.mockImplementation(mockFetch);
|
|
51
|
+
urlPath = decodeURI(new URL("file://".concat(rootTemplate)).href);
|
|
52
|
+
args = {
|
|
53
|
+
type: 'JBrowse1TextSearchAdapter',
|
|
54
|
+
textSearchAdapterId: 'JBrowse1GenerateNamesAdapterTest',
|
|
55
|
+
namesIndexLocation: {
|
|
56
|
+
uri: urlPath,
|
|
57
|
+
locationType: 'UriLocation'
|
|
58
|
+
}
|
|
59
|
+
}; // create adapter
|
|
60
|
+
|
|
61
|
+
adapter = new _JBrowse1TextSearchAdapter["default"](_configSchema["default"].create(args)); // prefix search
|
|
62
|
+
|
|
63
|
+
_context.next = 9;
|
|
64
|
+
return adapter.searchIndex({
|
|
65
|
+
searchType: 'prefix',
|
|
66
|
+
queryString: 'apple'
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
case 9:
|
|
70
|
+
results = _context.sent;
|
|
71
|
+
// check results are of type BaseResult for prefix search
|
|
72
|
+
expect(results[0] instanceof _BaseResults["default"]).toBeTruthy();
|
|
73
|
+
expect(results[0].getLabel()).toEqual('Apple1');
|
|
74
|
+
expect(results[1].getLabel()).toEqual('Apple2');
|
|
75
|
+
expect(results[2].getLabel()).toEqual('Apple3'); // exact search
|
|
76
|
+
|
|
77
|
+
_context.next = 16;
|
|
78
|
+
return adapter.searchIndex({
|
|
79
|
+
searchType: 'exact',
|
|
80
|
+
queryString: 'apple3'
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
case 16:
|
|
84
|
+
results2 = _context.sent;
|
|
85
|
+
// check results are of type location for exact search
|
|
86
|
+
expect(results2.length).toEqual(5);
|
|
87
|
+
test2 = results2[0];
|
|
88
|
+
expect(test2 instanceof _BaseResults["default"]).toBeTruthy();
|
|
89
|
+
expect(test2.getLabel()).toEqual('Apple3');
|
|
90
|
+
expect(test2.getLocation()).toEqual('ctgA:17399-23000');
|
|
91
|
+
|
|
92
|
+
case 22:
|
|
93
|
+
case "end":
|
|
94
|
+
return _context.stop();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}, _callee);
|
|
98
|
+
})));
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
2
|
-
export default _default;
|
|
1
|
+
declare const _default: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
9
|
+
|
|
10
|
+
var _default = (0, _configuration.ConfigurationSchema)('JBrowse1TextSearchAdapter', {
|
|
11
|
+
// metadata about tracks and assemblies covered by text search adapter
|
|
12
|
+
namesIndexLocation: {
|
|
13
|
+
type: 'fileLocation',
|
|
14
|
+
defaultValue: {
|
|
15
|
+
uri: '/volvox/names',
|
|
16
|
+
locationType: 'UriLocation'
|
|
17
|
+
},
|
|
18
|
+
description: 'the location of the JBrowse1 names index data directory'
|
|
19
|
+
},
|
|
20
|
+
tracks: {
|
|
21
|
+
type: 'stringArray',
|
|
22
|
+
defaultValue: [],
|
|
23
|
+
description: 'List of tracks covered by text search adapter'
|
|
24
|
+
},
|
|
25
|
+
assemblyNames: {
|
|
26
|
+
type: 'stringArray',
|
|
27
|
+
defaultValue: [],
|
|
28
|
+
description: 'List of assemblies covered by text search adapter'
|
|
29
|
+
}
|
|
30
|
+
}, {
|
|
31
|
+
explicitlyTyped: true,
|
|
32
|
+
explicitIdentifier: 'textSearchAdapterId'
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
exports["default"] = _default;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { default as AdapterClass } from './JBrowse1TextSearchAdapter';
|
|
2
|
-
export { default as configSchema } from './configSchema';
|
|
1
|
+
export { default as AdapterClass } from './JBrowse1TextSearchAdapter';
|
|
2
|
+
export { default as configSchema } from './configSchema';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
Object.defineProperty(exports, "AdapterClass", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function get() {
|
|
11
|
+
return _JBrowse1TextSearchAdapter["default"];
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
Object.defineProperty(exports, "configSchema", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function get() {
|
|
17
|
+
return _configSchema["default"];
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
var _JBrowse1TextSearchAdapter = _interopRequireDefault(require("./JBrowse1TextSearchAdapter"));
|
|
22
|
+
|
|
23
|
+
var _configSchema = _interopRequireDefault(require("./configSchema"));
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { Region } from '@jbrowse/core/util/types';
|
|
2
|
-
import { BaseFeatureDataAdapter, BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
3
|
-
import { Feature } from '@jbrowse/core/util/simpleFeature';
|
|
4
|
-
import { Instance } from 'mobx-state-tree';
|
|
5
|
-
import NCListFeature from './NCListFeature';
|
|
6
|
-
import MyConfigSchema from './configSchema';
|
|
7
|
-
import PluginManager from '@jbrowse/core/PluginManager';
|
|
8
|
-
import { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache';
|
|
9
|
-
export default class NCListAdapter extends BaseFeatureDataAdapter {
|
|
10
|
-
private nclist;
|
|
11
|
-
private configRefNames?;
|
|
12
|
-
constructor(config: Instance<typeof MyConfigSchema>, getSubAdapter?: getSubAdapterType, pluginManager?: PluginManager);
|
|
13
|
-
/**
|
|
14
|
-
* Fetch features for a certain region. Use getFeaturesInRegion() if you also
|
|
15
|
-
* want to verify that the store has features for the given reference sequence
|
|
16
|
-
* before fetching.
|
|
17
|
-
* @param region -
|
|
18
|
-
* @param opts - [signal] optional signalling object for aborting the fetch
|
|
19
|
-
* @returns Observable of Feature objects in the region
|
|
20
|
-
*/
|
|
21
|
-
getFeatures(region: Region, opts?: BaseOptions): import("rxjs").Observable<Feature>;
|
|
22
|
-
wrapFeature(ncFeature: any): NCListFeature;
|
|
23
|
-
hasDataForRefName(refName: string): Promise<boolean>;
|
|
24
|
-
getRefNames(): Promise<string[]>;
|
|
25
|
-
/**
|
|
26
|
-
* called to provide a hint that data tied to a certain region
|
|
27
|
-
* will not be needed for the forseeable future and can be purged
|
|
28
|
-
* from caches, etc
|
|
29
|
-
*/
|
|
30
|
-
freeResources(): void;
|
|
31
|
-
}
|
|
1
|
+
import { Region } from '@jbrowse/core/util/types';
|
|
2
|
+
import { BaseFeatureDataAdapter, BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
|
|
3
|
+
import { Feature } from '@jbrowse/core/util/simpleFeature';
|
|
4
|
+
import { Instance } from 'mobx-state-tree';
|
|
5
|
+
import NCListFeature from './NCListFeature';
|
|
6
|
+
import MyConfigSchema from './configSchema';
|
|
7
|
+
import PluginManager from '@jbrowse/core/PluginManager';
|
|
8
|
+
import { getSubAdapterType } from '@jbrowse/core/data_adapters/dataAdapterCache';
|
|
9
|
+
export default class NCListAdapter extends BaseFeatureDataAdapter {
|
|
10
|
+
private nclist;
|
|
11
|
+
private configRefNames?;
|
|
12
|
+
constructor(config: Instance<typeof MyConfigSchema>, getSubAdapter?: getSubAdapterType, pluginManager?: PluginManager);
|
|
13
|
+
/**
|
|
14
|
+
* Fetch features for a certain region. Use getFeaturesInRegion() if you also
|
|
15
|
+
* want to verify that the store has features for the given reference sequence
|
|
16
|
+
* before fetching.
|
|
17
|
+
* @param region -
|
|
18
|
+
* @param opts - [signal] optional signalling object for aborting the fetch
|
|
19
|
+
* @returns Observable of Feature objects in the region
|
|
20
|
+
*/
|
|
21
|
+
getFeatures(region: Region, opts?: BaseOptions): import("rxjs").Observable<Feature>;
|
|
22
|
+
wrapFeature(ncFeature: any): NCListFeature;
|
|
23
|
+
hasDataForRefName(refName: string): Promise<boolean>;
|
|
24
|
+
getRefNames(): Promise<string[]>;
|
|
25
|
+
/**
|
|
26
|
+
* called to provide a hint that data tied to a certain region
|
|
27
|
+
* will not be needed for the forseeable future and can be purged
|
|
28
|
+
* from caches, etc
|
|
29
|
+
*/
|
|
30
|
+
freeResources(): void;
|
|
31
|
+
}
|
|
@@ -0,0 +1,237 @@
|
|
|
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 _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
|
+
|
|
28
|
+
var _nclist = _interopRequireDefault(require("@gmod/nclist"));
|
|
29
|
+
|
|
30
|
+
var _BaseAdapter = require("@jbrowse/core/data_adapters/BaseAdapter");
|
|
31
|
+
|
|
32
|
+
var _rxjs = require("@jbrowse/core/util/rxjs");
|
|
33
|
+
|
|
34
|
+
var _util = require("@jbrowse/core/util");
|
|
35
|
+
|
|
36
|
+
var _genericFilehandle = require("generic-filehandle");
|
|
37
|
+
|
|
38
|
+
var _configuration = require("@jbrowse/core/configuration");
|
|
39
|
+
|
|
40
|
+
var _NCListFeature = _interopRequireDefault(require("./NCListFeature"));
|
|
41
|
+
|
|
42
|
+
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); }; }
|
|
43
|
+
|
|
44
|
+
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; } }
|
|
45
|
+
|
|
46
|
+
function _asyncIterator(iterable) { var method, async, sync, retry = 2; for ("undefined" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) { if (async && null != (method = iterable[async])) return method.call(iterable); if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable)); async = "@@asyncIterator", sync = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
|
|
47
|
+
|
|
48
|
+
function AsyncFromSyncIterator(s) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var done = r.done; return Promise.resolve(r.value).then(function (value) { return { value: value, done: done }; }); } return AsyncFromSyncIterator = function AsyncFromSyncIterator(s) { this.s = s, this.n = s.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function next() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, "return": function _return(value) { var ret = this.s["return"]; return void 0 === ret ? Promise.resolve({ value: value, done: !0 }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments)); }, "throw": function _throw(value) { var thr = this.s["return"]; return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(s); }
|
|
49
|
+
|
|
50
|
+
var NCListAdapter = /*#__PURE__*/function (_BaseFeatureDataAdapt) {
|
|
51
|
+
(0, _inherits2["default"])(NCListAdapter, _BaseFeatureDataAdapt);
|
|
52
|
+
|
|
53
|
+
var _super = _createSuper(NCListAdapter);
|
|
54
|
+
|
|
55
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
56
|
+
function NCListAdapter(config, getSubAdapter, pluginManager) {
|
|
57
|
+
var _this;
|
|
58
|
+
|
|
59
|
+
(0, _classCallCheck2["default"])(this, NCListAdapter);
|
|
60
|
+
_this = _super.call(this, config, getSubAdapter, pluginManager);
|
|
61
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "nclist", void 0);
|
|
62
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "configRefNames", void 0);
|
|
63
|
+
var refNames = (0, _configuration.readConfObject)(config, 'refNames');
|
|
64
|
+
var rootUrlTemplate = (0, _configuration.readConfObject)(config, 'rootUrlTemplate');
|
|
65
|
+
_this.configRefNames = refNames;
|
|
66
|
+
_this.nclist = new _nclist["default"]({
|
|
67
|
+
baseUrl: '',
|
|
68
|
+
urlTemplate: rootUrlTemplate.uri,
|
|
69
|
+
readFile: function readFile(url) {
|
|
70
|
+
return new _genericFilehandle.RemoteFile(String(rootUrlTemplate.baseUri ? new URL(url, rootUrlTemplate.baseUri).toString() : url)).readFile();
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
return _this;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Fetch features for a certain region. Use getFeaturesInRegion() if you also
|
|
77
|
+
* want to verify that the store has features for the given reference sequence
|
|
78
|
+
* before fetching.
|
|
79
|
+
* @param region -
|
|
80
|
+
* @param opts - [signal] optional signalling object for aborting the fetch
|
|
81
|
+
* @returns Observable of Feature objects in the region
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
(0, _createClass2["default"])(NCListAdapter, [{
|
|
86
|
+
key: "getFeatures",
|
|
87
|
+
value: function getFeatures(region) {
|
|
88
|
+
var _this2 = this;
|
|
89
|
+
|
|
90
|
+
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
91
|
+
return (0, _rxjs.ObservableCreate)( /*#__PURE__*/function () {
|
|
92
|
+
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(observer) {
|
|
93
|
+
var signal, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, feature;
|
|
94
|
+
|
|
95
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
96
|
+
while (1) {
|
|
97
|
+
switch (_context.prev = _context.next) {
|
|
98
|
+
case 0:
|
|
99
|
+
signal = opts.signal;
|
|
100
|
+
_iteratorAbruptCompletion = false;
|
|
101
|
+
_didIteratorError = false;
|
|
102
|
+
_context.prev = 3;
|
|
103
|
+
_iterator = _asyncIterator(_this2.nclist.getFeatures(region, opts));
|
|
104
|
+
|
|
105
|
+
case 5:
|
|
106
|
+
_context.next = 7;
|
|
107
|
+
return _iterator.next();
|
|
108
|
+
|
|
109
|
+
case 7:
|
|
110
|
+
if (!(_iteratorAbruptCompletion = !(_step = _context.sent).done)) {
|
|
111
|
+
_context.next = 14;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
feature = _step.value;
|
|
116
|
+
(0, _util.checkAbortSignal)(signal);
|
|
117
|
+
observer.next(_this2.wrapFeature(feature));
|
|
118
|
+
|
|
119
|
+
case 11:
|
|
120
|
+
_iteratorAbruptCompletion = false;
|
|
121
|
+
_context.next = 5;
|
|
122
|
+
break;
|
|
123
|
+
|
|
124
|
+
case 14:
|
|
125
|
+
_context.next = 20;
|
|
126
|
+
break;
|
|
127
|
+
|
|
128
|
+
case 16:
|
|
129
|
+
_context.prev = 16;
|
|
130
|
+
_context.t0 = _context["catch"](3);
|
|
131
|
+
_didIteratorError = true;
|
|
132
|
+
_iteratorError = _context.t0;
|
|
133
|
+
|
|
134
|
+
case 20:
|
|
135
|
+
_context.prev = 20;
|
|
136
|
+
_context.prev = 21;
|
|
137
|
+
|
|
138
|
+
if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) {
|
|
139
|
+
_context.next = 25;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
_context.next = 25;
|
|
144
|
+
return _iterator["return"]();
|
|
145
|
+
|
|
146
|
+
case 25:
|
|
147
|
+
_context.prev = 25;
|
|
148
|
+
|
|
149
|
+
if (!_didIteratorError) {
|
|
150
|
+
_context.next = 28;
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
throw _iteratorError;
|
|
155
|
+
|
|
156
|
+
case 28:
|
|
157
|
+
return _context.finish(25);
|
|
158
|
+
|
|
159
|
+
case 29:
|
|
160
|
+
return _context.finish(20);
|
|
161
|
+
|
|
162
|
+
case 30:
|
|
163
|
+
observer.complete();
|
|
164
|
+
|
|
165
|
+
case 31:
|
|
166
|
+
case "end":
|
|
167
|
+
return _context.stop();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}, _callee, null, [[3, 16, 20, 30], [21,, 25, 29]]);
|
|
171
|
+
}));
|
|
172
|
+
|
|
173
|
+
return function (_x) {
|
|
174
|
+
return _ref.apply(this, arguments);
|
|
175
|
+
};
|
|
176
|
+
}());
|
|
177
|
+
} // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
178
|
+
|
|
179
|
+
}, {
|
|
180
|
+
key: "wrapFeature",
|
|
181
|
+
value: function wrapFeature(ncFeature) {
|
|
182
|
+
return new _NCListFeature["default"](ncFeature, undefined, "".concat(this.id, "-").concat(ncFeature.id()));
|
|
183
|
+
}
|
|
184
|
+
}, {
|
|
185
|
+
key: "hasDataForRefName",
|
|
186
|
+
value: function () {
|
|
187
|
+
var _hasDataForRefName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(refName) {
|
|
188
|
+
var root;
|
|
189
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
190
|
+
while (1) {
|
|
191
|
+
switch (_context2.prev = _context2.next) {
|
|
192
|
+
case 0:
|
|
193
|
+
_context2.next = 2;
|
|
194
|
+
return this.nclist.getDataRoot(refName);
|
|
195
|
+
|
|
196
|
+
case 2:
|
|
197
|
+
root = _context2.sent;
|
|
198
|
+
return _context2.abrupt("return", !!(root && root.stats && root.stats.featureCount));
|
|
199
|
+
|
|
200
|
+
case 4:
|
|
201
|
+
case "end":
|
|
202
|
+
return _context2.stop();
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}, _callee2, this);
|
|
206
|
+
}));
|
|
207
|
+
|
|
208
|
+
function hasDataForRefName(_x2) {
|
|
209
|
+
return _hasDataForRefName.apply(this, arguments);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return hasDataForRefName;
|
|
213
|
+
}()
|
|
214
|
+
/*
|
|
215
|
+
* NCList is unable to get list of ref names so returns empty
|
|
216
|
+
* @return Promise<string[]> of empty list
|
|
217
|
+
*/
|
|
218
|
+
|
|
219
|
+
}, {
|
|
220
|
+
key: "getRefNames",
|
|
221
|
+
value: function getRefNames() {
|
|
222
|
+
return Promise.resolve(this.configRefNames || []);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* called to provide a hint that data tied to a certain region
|
|
226
|
+
* will not be needed for the forseeable future and can be purged
|
|
227
|
+
* from caches, etc
|
|
228
|
+
*/
|
|
229
|
+
|
|
230
|
+
}, {
|
|
231
|
+
key: "freeResources",
|
|
232
|
+
value: function freeResources() {}
|
|
233
|
+
}]);
|
|
234
|
+
return NCListAdapter;
|
|
235
|
+
}(_BaseAdapter.BaseFeatureDataAdapter);
|
|
236
|
+
|
|
237
|
+
exports["default"] = NCListAdapter;
|