@jbrowse/plugin-bed 1.6.9 → 1.7.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.
@@ -0,0 +1,341 @@
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 _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+
12
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
+
18
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
+
20
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
21
+
22
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
+
24
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
+
26
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
+
28
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
29
+
30
+ var _bbi = require("@gmod/bbi");
31
+
32
+ var _bed = _interopRequireDefault(require("@gmod/bed"));
33
+
34
+ var _BaseAdapter = require("@jbrowse/core/data_adapters/BaseAdapter");
35
+
36
+ var _io = require("@jbrowse/core/util/io");
37
+
38
+ var _rxjs = require("@jbrowse/core/util/rxjs");
39
+
40
+ var _simpleFeature = _interopRequireDefault(require("@jbrowse/core/util/simpleFeature"));
41
+
42
+ var _operators = require("rxjs/operators");
43
+
44
+ var _configuration = require("@jbrowse/core/configuration");
45
+
46
+ var _util = require("../util");
47
+
48
+ var _excluded = ["fields"],
49
+ _excluded2 = ["chromStart", "chromEnd", "chrom"];
50
+
51
+ 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; }
52
+
53
+ 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; }
54
+
55
+ 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); }; }
56
+
57
+ 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; } }
58
+
59
+ function isUCSC(f) {
60
+ return f.get('thickStart') && f.get('blockCount') && f.get('strand') !== 0;
61
+ }
62
+
63
+ var BigBedAdapter = /*#__PURE__*/function (_BaseFeatureDataAdapt) {
64
+ (0, _inherits2["default"])(BigBedAdapter, _BaseFeatureDataAdapt);
65
+
66
+ var _super = _createSuper(BigBedAdapter);
67
+
68
+ function BigBedAdapter() {
69
+ var _this;
70
+
71
+ (0, _classCallCheck2["default"])(this, BigBedAdapter);
72
+
73
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
74
+ args[_key] = arguments[_key];
75
+ }
76
+
77
+ _this = _super.call.apply(_super, [this].concat(args));
78
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "cached", void 0);
79
+ return _this;
80
+ }
81
+
82
+ (0, _createClass2["default"])(BigBedAdapter, [{
83
+ key: "configurePre",
84
+ value: function () {
85
+ var _configurePre = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(opts) {
86
+ var bigbed, header, parser;
87
+ return _regenerator["default"].wrap(function _callee$(_context) {
88
+ while (1) {
89
+ switch (_context.prev = _context.next) {
90
+ case 0:
91
+ bigbed = new _bbi.BigBed({
92
+ filehandle: (0, _io.openLocation)((0, _configuration.readConfObject)(this.config, 'bigBedLocation'), this.pluginManager)
93
+ });
94
+ _context.next = 3;
95
+ return bigbed.getHeader(opts);
96
+
97
+ case 3:
98
+ header = _context.sent;
99
+ parser = new _bed["default"]({
100
+ autoSql: header.autoSql
101
+ });
102
+ return _context.abrupt("return", {
103
+ bigbed: bigbed,
104
+ header: header,
105
+ parser: parser
106
+ });
107
+
108
+ case 6:
109
+ case "end":
110
+ return _context.stop();
111
+ }
112
+ }
113
+ }, _callee, this);
114
+ }));
115
+
116
+ function configurePre(_x) {
117
+ return _configurePre.apply(this, arguments);
118
+ }
119
+
120
+ return configurePre;
121
+ }()
122
+ }, {
123
+ key: "configure",
124
+ value: function () {
125
+ var _configure = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(opts) {
126
+ var _this2 = this;
127
+
128
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
129
+ while (1) {
130
+ switch (_context2.prev = _context2.next) {
131
+ case 0:
132
+ if (!this.cached) {
133
+ this.cached = this.configurePre(opts)["catch"](function (e) {
134
+ _this2.cached = undefined;
135
+ throw e;
136
+ });
137
+ }
138
+
139
+ return _context2.abrupt("return", this.cached);
140
+
141
+ case 2:
142
+ case "end":
143
+ return _context2.stop();
144
+ }
145
+ }
146
+ }, _callee2, this);
147
+ }));
148
+
149
+ function configure(_x2) {
150
+ return _configure.apply(this, arguments);
151
+ }
152
+
153
+ return configure;
154
+ }()
155
+ }, {
156
+ key: "getRefNames",
157
+ value: function () {
158
+ var _getRefNames = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(opts) {
159
+ var _yield$this$configure, header;
160
+
161
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
162
+ while (1) {
163
+ switch (_context3.prev = _context3.next) {
164
+ case 0:
165
+ _context3.next = 2;
166
+ return this.configure(opts);
167
+
168
+ case 2:
169
+ _yield$this$configure = _context3.sent;
170
+ header = _yield$this$configure.header;
171
+ return _context3.abrupt("return", Object.keys(header.refsByName));
172
+
173
+ case 5:
174
+ case "end":
175
+ return _context3.stop();
176
+ }
177
+ }
178
+ }, _callee3, this);
179
+ }));
180
+
181
+ function getRefNames(_x3) {
182
+ return _getRefNames.apply(this, arguments);
183
+ }
184
+
185
+ return getRefNames;
186
+ }()
187
+ }, {
188
+ key: "getHeader",
189
+ value: function () {
190
+ var _getHeader = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(opts) {
191
+ var _yield$this$configure2, parser, header, version, fileType, _parser$autoSql, fields, rest;
192
+
193
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
194
+ while (1) {
195
+ switch (_context4.prev = _context4.next) {
196
+ case 0:
197
+ _context4.next = 2;
198
+ return this.configure(opts);
199
+
200
+ case 2:
201
+ _yield$this$configure2 = _context4.sent;
202
+ parser = _yield$this$configure2.parser;
203
+ header = _yield$this$configure2.header;
204
+ version = header.version, fileType = header.fileType;
205
+ _parser$autoSql = parser.autoSql, fields = _parser$autoSql.fields, rest = (0, _objectWithoutProperties2["default"])(_parser$autoSql, _excluded);
206
+ return _context4.abrupt("return", {
207
+ version: version,
208
+ fileType: fileType,
209
+ autoSql: _objectSpread({}, rest),
210
+ fields: Object.fromEntries(fields.map(function (_ref) {
211
+ var name = _ref.name,
212
+ comment = _ref.comment;
213
+ return [name, comment];
214
+ }))
215
+ });
216
+
217
+ case 8:
218
+ case "end":
219
+ return _context4.stop();
220
+ }
221
+ }
222
+ }, _callee4, this);
223
+ }));
224
+
225
+ function getHeader(_x4) {
226
+ return _getHeader.apply(this, arguments);
227
+ }
228
+
229
+ return getHeader;
230
+ }()
231
+ }, {
232
+ key: "getFeatures",
233
+ value: function getFeatures(region) {
234
+ var _this3 = this;
235
+
236
+ var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
237
+ var refName = region.refName,
238
+ start = region.start,
239
+ end = region.end;
240
+ var signal = opts.signal;
241
+ return (0, _rxjs.ObservableCreate)( /*#__PURE__*/function () {
242
+ var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(observer) {
243
+ var _yield$_this3$configu, parser, bigbed, ob;
244
+
245
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
246
+ while (1) {
247
+ switch (_context5.prev = _context5.next) {
248
+ case 0:
249
+ _context5.prev = 0;
250
+ _context5.next = 3;
251
+ return _this3.configure(opts);
252
+
253
+ case 3:
254
+ _yield$_this3$configu = _context5.sent;
255
+ parser = _yield$_this3$configu.parser;
256
+ bigbed = _yield$_this3$configu.bigbed;
257
+ _context5.next = 8;
258
+ return bigbed.getFeatureStream(refName, start, end, {
259
+ signal: signal,
260
+ basesPerSpan: end - start
261
+ });
262
+
263
+ case 8:
264
+ ob = _context5.sent;
265
+ ob.pipe((0, _operators.mergeAll)(), (0, _operators.map)(function (r) {
266
+ var data = parser.parseLine("".concat(refName, "\t").concat(r.start, "\t").concat(r.end, "\t").concat(r.rest), {
267
+ uniqueId: r.uniqueId
268
+ });
269
+ var blockCount = data.blockCount,
270
+ blockSizes = data.blockSizes,
271
+ blockStarts = data.blockStarts,
272
+ chromStarts = data.chromStarts;
273
+
274
+ if (blockCount) {
275
+ var starts = chromStarts || blockStarts || [];
276
+ var sizes = blockSizes;
277
+ var blocksOffset = r.start;
278
+ data.subfeatures = [];
279
+
280
+ for (var b = 0; b < blockCount; b += 1) {
281
+ var bmin = (starts[b] || 0) + blocksOffset;
282
+ var bmax = bmin + (sizes[b] || 0);
283
+ data.subfeatures.push({
284
+ uniqueId: "".concat(r.uniqueId, "-").concat(b),
285
+ start: bmin,
286
+ end: bmax,
287
+ type: 'block'
288
+ });
289
+ }
290
+ }
291
+
292
+ if (r.uniqueId === undefined) {
293
+ throw new Error('invalid bbi feature');
294
+ }
295
+
296
+ var chromStart = data.chromStart,
297
+ chromEnd = data.chromEnd,
298
+ chrom = data.chrom,
299
+ rest = (0, _objectWithoutProperties2["default"])(data, _excluded2);
300
+ var f = new _simpleFeature["default"]({
301
+ id: "".concat(_this3.id, "-").concat(r.uniqueId),
302
+ data: _objectSpread(_objectSpread({}, rest), {}, {
303
+ start: r.start,
304
+ end: r.end,
305
+ refName: refName
306
+ })
307
+ }); // collection of heuristics for suggesting that this feature
308
+ // should be converted to a gene, CNV bigbed has many gene like
309
+ // features including thickStart and blockCount but no strand
310
+
311
+ return isUCSC(f) ? (0, _util.ucscProcessedTranscript)(f) : f;
312
+ })).subscribe(observer);
313
+ _context5.next = 15;
314
+ break;
315
+
316
+ case 12:
317
+ _context5.prev = 12;
318
+ _context5.t0 = _context5["catch"](0);
319
+ observer.error(_context5.t0);
320
+
321
+ case 15:
322
+ case "end":
323
+ return _context5.stop();
324
+ }
325
+ }
326
+ }, _callee5, null, [[0, 12]]);
327
+ }));
328
+
329
+ return function (_x5) {
330
+ return _ref2.apply(this, arguments);
331
+ };
332
+ }(), opts.signal);
333
+ }
334
+ }, {
335
+ key: "freeResources",
336
+ value: function freeResources() {}
337
+ }]);
338
+ return BigBedAdapter;
339
+ }(_BaseAdapter.BaseFeatureDataAdapter);
340
+
341
+ exports["default"] = BigBedAdapter;
@@ -0,0 +1,63 @@
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 _operators = require("rxjs/operators");
10
+
11
+ var _BigBedAdapter = _interopRequireDefault(require("./BigBedAdapter"));
12
+
13
+ var _configSchema = _interopRequireDefault(require("./configSchema"));
14
+
15
+ test('adapter can fetch features from volvox.bb', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
16
+ var adapter, features, featuresArray, featuresJsonArray;
17
+ return _regenerator["default"].wrap(function _callee$(_context) {
18
+ while (1) {
19
+ switch (_context.prev = _context.next) {
20
+ case 0:
21
+ adapter = new _BigBedAdapter["default"](_configSchema["default"].create({
22
+ bigBedLocation: {
23
+ localPath: require.resolve('./test_data/volvox.bb'),
24
+ locationType: 'LocalPathLocation'
25
+ }
26
+ }));
27
+ features = adapter.getFeatures({
28
+ assemblyName: 'volvox',
29
+ refName: 'ctgA',
30
+ start: 0,
31
+ end: 20000
32
+ });
33
+ _context.t0 = expect;
34
+ _context.next = 5;
35
+ return adapter.hasDataForRefName('ctgA');
36
+
37
+ case 5:
38
+ _context.t1 = _context.sent;
39
+ (0, _context.t0)(_context.t1).toBe(true);
40
+ _context.t2 = expect;
41
+ _context.next = 10;
42
+ return adapter.hasDataForRefName('ctgB');
43
+
44
+ case 10:
45
+ _context.t3 = _context.sent;
46
+ (0, _context.t2)(_context.t3).toBe(false);
47
+ _context.next = 14;
48
+ return features.pipe((0, _operators.toArray)()).toPromise();
49
+
50
+ case 14:
51
+ featuresArray = _context.sent;
52
+ featuresJsonArray = featuresArray.map(function (f) {
53
+ return f.toJSON();
54
+ });
55
+ expect(featuresJsonArray).toMatchSnapshot();
56
+
57
+ case 17:
58
+ case "end":
59
+ return _context.stop();
60
+ }
61
+ }
62
+ }, _callee);
63
+ })));
@@ -0,0 +1,22 @@
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)('BigBedAdapter', {
11
+ bigBedLocation: {
12
+ type: 'fileLocation',
13
+ defaultValue: {
14
+ uri: '/path/to/my.bb',
15
+ locationType: 'UriLocation'
16
+ }
17
+ }
18
+ }, {
19
+ explicitlyTyped: true
20
+ });
21
+
22
+ exports["default"] = _default;
@@ -0,0 +1,15 @@
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, "configSchema", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _configSchema["default"];
12
+ }
13
+ });
14
+
15
+ var _configSchema = _interopRequireDefault(require("./configSchema"));
@@ -0,0 +1 @@
1
+ "use strict";
package/dist/index.js CHANGED
@@ -1,8 +1,137 @@
1
+ "use strict";
1
2
 
2
- 'use strict'
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
 
4
- if (process.env.NODE_ENV === 'production') {
5
- module.exports = require('./plugin-bed.cjs.production.min.js')
6
- } else {
7
- module.exports = require('./plugin-bed.cjs.development.js')
8
- }
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _AdapterType = _interopRequireDefault(require("@jbrowse/core/pluggableElementTypes/AdapterType"));
27
+
28
+ var _Plugin2 = _interopRequireDefault(require("@jbrowse/core/Plugin"));
29
+
30
+ var _BigBedAdapter = require("./BigBedAdapter");
31
+
32
+ var _BedTabixAdapter = require("./BedTabixAdapter");
33
+
34
+ var _tracks = require("@jbrowse/core/util/tracks");
35
+
36
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
37
+
38
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
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 BedPlugin = /*#__PURE__*/function (_Plugin) {
45
+ (0, _inherits2["default"])(BedPlugin, _Plugin);
46
+
47
+ var _super = _createSuper(BedPlugin);
48
+
49
+ function BedPlugin() {
50
+ var _this;
51
+
52
+ (0, _classCallCheck2["default"])(this, BedPlugin);
53
+
54
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
55
+ args[_key] = arguments[_key];
56
+ }
57
+
58
+ _this = _super.call.apply(_super, [this].concat(args));
59
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "name", 'BedPlugin');
60
+ return _this;
61
+ }
62
+
63
+ (0, _createClass2["default"])(BedPlugin, [{
64
+ key: "install",
65
+ value: function install(pluginManager) {
66
+ pluginManager.addAdapterType(function () {
67
+ return new _AdapterType["default"]({
68
+ name: 'BigBedAdapter',
69
+ configSchema: _BigBedAdapter.configSchema,
70
+ getAdapterClass: function getAdapterClass() {
71
+ return Promise.resolve().then(function () {
72
+ return _interopRequireWildcard(require('./BigBedAdapter/BigBedAdapter'));
73
+ }).then(function (r) {
74
+ return r["default"];
75
+ });
76
+ }
77
+ });
78
+ });
79
+ pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', function (adapterGuesser) {
80
+ return function (file, index, adapterHint) {
81
+ var regexGuess = /\.(bb|bigbed)$/i;
82
+ var adapterName = 'BigBedAdapter';
83
+ var fileName = (0, _tracks.getFileName)(file);
84
+ var obj = {
85
+ type: adapterName,
86
+ bigBedLocation: file
87
+ };
88
+
89
+ if (regexGuess.test(fileName) && !adapterHint) {
90
+ return obj;
91
+ } else if (adapterHint === adapterName) {
92
+ return obj;
93
+ }
94
+
95
+ return adapterGuesser(file, index, adapterHint);
96
+ };
97
+ });
98
+ pluginManager.addAdapterType(function () {
99
+ return new _AdapterType["default"]({
100
+ name: 'BedTabixAdapter',
101
+ configSchema: _BedTabixAdapter.configSchema,
102
+ getAdapterClass: function getAdapterClass() {
103
+ return Promise.resolve().then(function () {
104
+ return _interopRequireWildcard(require('./BedTabixAdapter/BedTabixAdapter'));
105
+ }).then(function (r) {
106
+ return r["default"];
107
+ });
108
+ }
109
+ });
110
+ });
111
+ pluginManager.addToExtensionPoint('Core-guessAdapterForLocation', function (adapterGuesser) {
112
+ return function (file, index, adapterHint) {
113
+ var regexGuess = /\.bed\.b?gz$/i;
114
+ var adapterName = 'BedTabixAdapter';
115
+ var fileName = (0, _tracks.getFileName)(file);
116
+ var indexName = index && (0, _tracks.getFileName)(index);
117
+
118
+ if (regexGuess.test(fileName) || adapterHint === adapterName) {
119
+ return {
120
+ type: adapterName,
121
+ bedGzLocation: file,
122
+ index: {
123
+ location: index || (0, _tracks.makeIndex)(file, '.tbi'),
124
+ indexType: (0, _tracks.makeIndexType)(indexName, 'CSI', 'TBI')
125
+ }
126
+ };
127
+ }
128
+
129
+ return adapterGuesser(file, index, adapterHint);
130
+ };
131
+ });
132
+ }
133
+ }]);
134
+ return BedPlugin;
135
+ }(_Plugin2["default"]);
136
+
137
+ exports["default"] = BedPlugin;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _PluginManager = _interopRequireDefault(require("@jbrowse/core/PluginManager"));
6
+
7
+ var _mobxStateTree = require("mobx-state-tree");
8
+
9
+ var _ = _interopRequireDefault(require("."));
10
+
11
+ test('plugin in a stock JBrowse', function () {
12
+ console.warn = jest.fn();
13
+ var pluginManager = new _PluginManager["default"]([new _["default"]()]);
14
+ pluginManager.createPluggableElements();
15
+ pluginManager.configure();
16
+ expect(function () {
17
+ return pluginManager.addPlugin(new _["default"]());
18
+ }).toThrow(/JBrowse already configured, cannot add plugins/);
19
+ var BigBedAdapter = pluginManager.getAdapterType('BigBedAdapter');
20
+ var config = BigBedAdapter.configSchema.create({
21
+ type: 'BigBedAdapter'
22
+ });
23
+ expect((0, _mobxStateTree.getSnapshot)(config)).toMatchSnapshot();
24
+ });