@gmod/bbi 2.0.3 → 2.0.5
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/CHANGELOG.md +11 -1
- package/README.md +1 -1
- package/dist/bbi.js +160 -268
- package/dist/bbi.js.map +1 -1
- package/dist/bigbed.js +146 -259
- package/dist/bigbed.js.map +1 -1
- package/dist/bigint-polyfill/polyfill.js +1 -1
- package/dist/bigint-polyfill/polyfill.js.map +1 -1
- package/dist/bigint-polyfill/pure.js +11 -11
- package/dist/bigint-polyfill/pure.js.map +1 -1
- package/dist/bigwig.js +21 -75
- package/dist/bigwig.js.map +1 -1
- package/dist/blockView.js +207 -303
- package/dist/blockView.js.map +1 -1
- package/dist/range.js +49 -50
- package/dist/range.js.map +1 -1
- package/dist/unzip-pako.js +1 -1
- package/dist/unzip-pako.js.map +1 -1
- package/dist/unzip.js +1 -1
- package/dist/unzip.js.map +1 -1
- package/dist/util.js +14 -66
- package/dist/util.js.map +1 -1
- package/esm/bbi.js +4 -3
- package/esm/bbi.js.map +1 -1
- package/esm/blockView.js +2 -3
- package/esm/blockView.js.map +1 -1
- package/package.json +13 -13
- package/src/bbi.ts +5 -3
- package/src/blockView.ts +14 -4
package/dist/bigbed.js
CHANGED
|
@@ -1,30 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __assign = (this && this.__assign) || function () {
|
|
18
|
-
__assign = Object.assign || function(t) {
|
|
19
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
-
s = arguments[i];
|
|
21
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
-
t[p] = s[p];
|
|
23
|
-
}
|
|
24
|
-
return t;
|
|
25
|
-
};
|
|
26
|
-
return __assign.apply(this, arguments);
|
|
27
|
-
};
|
|
28
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
29
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
30
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -34,129 +8,84 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
34
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
35
9
|
});
|
|
36
10
|
};
|
|
37
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
38
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
39
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
40
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
41
|
-
function step(op) {
|
|
42
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
43
|
-
while (_) try {
|
|
44
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
45
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
46
|
-
switch (op[0]) {
|
|
47
|
-
case 0: case 1: t = op; break;
|
|
48
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
49
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
50
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
51
|
-
default:
|
|
52
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
53
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
54
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
55
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
56
|
-
if (t[2]) _.ops.pop();
|
|
57
|
-
_.trys.pop(); continue;
|
|
58
|
-
}
|
|
59
|
-
op = body.call(thisArg, _);
|
|
60
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
61
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
65
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
66
13
|
};
|
|
67
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
68
15
|
exports.BigBed = exports.filterUndef = void 0;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
16
|
+
const binary_parser_1 = require("binary-parser");
|
|
17
|
+
const rxjs_1 = require("rxjs");
|
|
18
|
+
const operators_1 = require("rxjs/operators");
|
|
19
|
+
const abortable_promise_cache_1 = __importDefault(require("abortable-promise-cache"));
|
|
20
|
+
const quick_lru_1 = __importDefault(require("quick-lru"));
|
|
21
|
+
const bbi_1 = require("./bbi");
|
|
75
22
|
function filterUndef(ts) {
|
|
76
|
-
return ts.filter(
|
|
23
|
+
return ts.filter((t) => !!t);
|
|
77
24
|
}
|
|
78
25
|
exports.filterUndef = filterUndef;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
_this.readIndicesCache = new abortable_promise_cache_1.default({
|
|
26
|
+
class BigBed extends bbi_1.BBI {
|
|
27
|
+
constructor() {
|
|
28
|
+
super(...arguments);
|
|
29
|
+
this.readIndicesCache = new abortable_promise_cache_1.default({
|
|
84
30
|
cache: new quick_lru_1.default({ maxSize: 1 }),
|
|
85
|
-
fill:
|
|
86
|
-
return
|
|
87
|
-
|
|
88
|
-
});
|
|
89
|
-
}); },
|
|
31
|
+
fill: (args, signal) => __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
return this._readIndices(Object.assign(Object.assign({}, args), { signal }));
|
|
33
|
+
}),
|
|
90
34
|
});
|
|
91
|
-
return _this;
|
|
92
35
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
var options = 'aborted' in opts ? { signal: opts } : opts;
|
|
36
|
+
readIndices(opts = {}) {
|
|
37
|
+
const options = 'aborted' in opts ? { signal: opts } : opts;
|
|
96
38
|
return this.readIndicesCache.get(JSON.stringify(options), options, options.signal);
|
|
97
|
-
}
|
|
39
|
+
}
|
|
98
40
|
/*
|
|
99
41
|
* retrieve unzoomed view for any scale
|
|
100
42
|
* @param scale - unused
|
|
101
43
|
* @param abortSignal - an optional AbortSignal to kill operation
|
|
102
44
|
* @return promise for a BlockView
|
|
103
45
|
*/
|
|
104
|
-
|
|
105
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
106
|
-
return
|
|
107
|
-
return [2 /*return*/, this.getUnzoomedView(opts)];
|
|
108
|
-
});
|
|
46
|
+
getView(_scale, opts) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
return this.getUnzoomedView(opts);
|
|
109
49
|
});
|
|
110
|
-
}
|
|
50
|
+
}
|
|
111
51
|
/*
|
|
112
52
|
* parse the bigbed extraIndex fields
|
|
113
53
|
* @param abortSignal to abort operation
|
|
114
54
|
* @return a Promise for an array of Index data structure since there can be multiple extraIndexes in a bigbed, see bedToBigBed documentation
|
|
115
55
|
*/
|
|
116
|
-
|
|
117
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
.int16('fieldcount')
|
|
148
|
-
.uint64('offset')
|
|
149
|
-
.skip(4)
|
|
150
|
-
.int16('field');
|
|
151
|
-
indices = [];
|
|
152
|
-
for (i = 0; i < count; i += 1) {
|
|
153
|
-
indices.push(extParser.parse(buffer.subarray(i * blocklen)));
|
|
154
|
-
}
|
|
155
|
-
return [2 /*return*/, indices];
|
|
156
|
-
}
|
|
157
|
-
});
|
|
56
|
+
_readIndices(opts) {
|
|
57
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
const { extHeaderOffset, isBigEndian } = yield this.getHeader(opts);
|
|
59
|
+
const { buffer: data } = yield this.bbi.read(Buffer.alloc(64), 0, 64, Number(extHeaderOffset));
|
|
60
|
+
const le = isBigEndian ? 'big' : 'little';
|
|
61
|
+
const ret = new binary_parser_1.Parser()
|
|
62
|
+
.endianess(le)
|
|
63
|
+
.uint16('size')
|
|
64
|
+
.uint16('count')
|
|
65
|
+
.uint64('offset')
|
|
66
|
+
.parse(data);
|
|
67
|
+
const { count, offset } = ret;
|
|
68
|
+
// no extra index is defined if count==0
|
|
69
|
+
if (count === 0) {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
const blocklen = 20;
|
|
73
|
+
const len = blocklen * count;
|
|
74
|
+
const { buffer } = yield this.bbi.read(Buffer.alloc(len), 0, len, Number(offset));
|
|
75
|
+
const extParser = new binary_parser_1.Parser()
|
|
76
|
+
.endianess(le)
|
|
77
|
+
.int16('type')
|
|
78
|
+
.int16('fieldcount')
|
|
79
|
+
.uint64('offset')
|
|
80
|
+
.skip(4)
|
|
81
|
+
.int16('field');
|
|
82
|
+
const indices = [];
|
|
83
|
+
for (let i = 0; i < count; i += 1) {
|
|
84
|
+
indices.push(extParser.parse(buffer.subarray(i * blocklen)));
|
|
85
|
+
}
|
|
86
|
+
return indices;
|
|
158
87
|
});
|
|
159
|
-
}
|
|
88
|
+
}
|
|
160
89
|
/*
|
|
161
90
|
* perform a search in the bigbed extraIndex to find which blocks in the bigbed data to look for the
|
|
162
91
|
* actual feature data
|
|
@@ -165,110 +94,81 @@ var BigBed = /** @class */ (function (_super) {
|
|
|
165
94
|
* @param opts - a SearchOptions argument with optional signal
|
|
166
95
|
* @return a Promise for an array of bigbed block Loc entries
|
|
167
96
|
*/
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
97
|
+
searchExtraIndexBlocks(name, opts = {}) {
|
|
98
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
99
|
+
const { isBigEndian } = yield this.getHeader(opts);
|
|
100
|
+
const indices = yield this.readIndices(opts);
|
|
101
|
+
if (!indices.length) {
|
|
102
|
+
return [];
|
|
103
|
+
}
|
|
104
|
+
const locs = indices.map((index) => __awaiter(this, void 0, void 0, function* () {
|
|
105
|
+
const { offset, field } = index;
|
|
106
|
+
const { buffer: data } = yield this.bbi.read(Buffer.alloc(32), 0, 32, Number(offset), opts);
|
|
107
|
+
const le = isBigEndian ? 'big' : 'little';
|
|
108
|
+
const p = new binary_parser_1.Parser()
|
|
109
|
+
.endianess(le)
|
|
110
|
+
.int32('magic')
|
|
111
|
+
.int32('blockSize')
|
|
112
|
+
.int32('keySize')
|
|
113
|
+
.int32('valSize')
|
|
114
|
+
.uint64('itemCount');
|
|
115
|
+
const { blockSize, keySize, valSize } = p.parse(data);
|
|
116
|
+
// console.log({blockSize,keySize,valSize})
|
|
117
|
+
const bpt = new binary_parser_1.Parser()
|
|
118
|
+
.endianess(le)
|
|
119
|
+
.int8('nodeType')
|
|
120
|
+
.skip(1)
|
|
121
|
+
.int16('cnt')
|
|
122
|
+
.choice({
|
|
123
|
+
tag: 'nodeType',
|
|
124
|
+
choices: {
|
|
125
|
+
0: new binary_parser_1.Parser().array('leafkeys', {
|
|
126
|
+
length: 'cnt',
|
|
127
|
+
type: new binary_parser_1.Parser()
|
|
128
|
+
.endianess(le)
|
|
129
|
+
.string('key', { length: keySize, stripNull: true })
|
|
130
|
+
.uint64('offset'),
|
|
131
|
+
}),
|
|
132
|
+
1: new binary_parser_1.Parser().array('keys', {
|
|
133
|
+
length: 'cnt',
|
|
134
|
+
type: new binary_parser_1.Parser()
|
|
135
|
+
.endianess(le)
|
|
136
|
+
.string('key', { length: keySize, stripNull: true })
|
|
137
|
+
.uint64('offset')
|
|
138
|
+
.uint32('length')
|
|
139
|
+
.uint32('reserved'),
|
|
140
|
+
}),
|
|
141
|
+
},
|
|
142
|
+
});
|
|
143
|
+
const bptReadNode = (nodeOffset) => __awaiter(this, void 0, void 0, function* () {
|
|
144
|
+
const val = Number(nodeOffset);
|
|
145
|
+
const len = 4 + blockSize * (keySize + valSize);
|
|
146
|
+
const { buffer } = yield this.bbi.read(Buffer.alloc(len), 0, len, val, opts);
|
|
147
|
+
const node = bpt.parse(buffer);
|
|
148
|
+
if (node.leafkeys) {
|
|
149
|
+
let lastOffset;
|
|
150
|
+
for (let i = 0; i < node.leafkeys.length; i += 1) {
|
|
151
|
+
const { key } = node.leafkeys[i];
|
|
152
|
+
if (name.localeCompare(key) < 0 && lastOffset) {
|
|
153
|
+
return bptReadNode(lastOffset);
|
|
154
|
+
}
|
|
155
|
+
lastOffset = node.leafkeys[i].offset;
|
|
183
156
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
.int32('magic')
|
|
198
|
-
.int32('blockSize')
|
|
199
|
-
.int32('keySize')
|
|
200
|
-
.int32('valSize')
|
|
201
|
-
.uint64('itemCount');
|
|
202
|
-
_a = p.parse(data), blockSize = _a.blockSize, keySize = _a.keySize, valSize = _a.valSize;
|
|
203
|
-
bpt = new binary_parser_1.Parser()
|
|
204
|
-
.endianess(le)
|
|
205
|
-
.int8('nodeType')
|
|
206
|
-
.skip(1)
|
|
207
|
-
.int16('cnt')
|
|
208
|
-
.choice({
|
|
209
|
-
tag: 'nodeType',
|
|
210
|
-
choices: {
|
|
211
|
-
0: new binary_parser_1.Parser().array('leafkeys', {
|
|
212
|
-
length: 'cnt',
|
|
213
|
-
type: new binary_parser_1.Parser()
|
|
214
|
-
.endianess(le)
|
|
215
|
-
.string('key', { length: keySize, stripNull: true })
|
|
216
|
-
.uint64('offset'),
|
|
217
|
-
}),
|
|
218
|
-
1: new binary_parser_1.Parser().array('keys', {
|
|
219
|
-
length: 'cnt',
|
|
220
|
-
type: new binary_parser_1.Parser()
|
|
221
|
-
.endianess(le)
|
|
222
|
-
.string('key', { length: keySize, stripNull: true })
|
|
223
|
-
.uint64('offset')
|
|
224
|
-
.uint32('length')
|
|
225
|
-
.uint32('reserved'),
|
|
226
|
-
}),
|
|
227
|
-
},
|
|
228
|
-
});
|
|
229
|
-
bptReadNode = function (nodeOffset) { return __awaiter(_this, void 0, void 0, function () {
|
|
230
|
-
var val, len, buffer, node, lastOffset, i, key, i;
|
|
231
|
-
return __generator(this, function (_a) {
|
|
232
|
-
switch (_a.label) {
|
|
233
|
-
case 0:
|
|
234
|
-
val = Number(nodeOffset);
|
|
235
|
-
len = 4 + blockSize * (keySize + valSize);
|
|
236
|
-
return [4 /*yield*/, this.bbi.read(Buffer.alloc(len), 0, len, val, opts)];
|
|
237
|
-
case 1:
|
|
238
|
-
buffer = (_a.sent()).buffer;
|
|
239
|
-
node = bpt.parse(buffer);
|
|
240
|
-
if (node.leafkeys) {
|
|
241
|
-
lastOffset = void 0;
|
|
242
|
-
for (i = 0; i < node.leafkeys.length; i += 1) {
|
|
243
|
-
key = node.leafkeys[i].key;
|
|
244
|
-
if (name.localeCompare(key) < 0 && lastOffset) {
|
|
245
|
-
return [2 /*return*/, bptReadNode(lastOffset)];
|
|
246
|
-
}
|
|
247
|
-
lastOffset = node.leafkeys[i].offset;
|
|
248
|
-
}
|
|
249
|
-
return [2 /*return*/, bptReadNode(lastOffset)];
|
|
250
|
-
}
|
|
251
|
-
for (i = 0; i < node.keys.length; i += 1) {
|
|
252
|
-
if (node.keys[i].key === name) {
|
|
253
|
-
return [2 /*return*/, __assign(__assign({}, node.keys[i]), { field: field })];
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
return [2 /*return*/, undefined];
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
}); };
|
|
260
|
-
rootNodeOffset = 32;
|
|
261
|
-
return [2 /*return*/, bptReadNode(Number(offset) + rootNodeOffset)];
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
}); });
|
|
265
|
-
_a = filterUndef;
|
|
266
|
-
return [4 /*yield*/, Promise.all(locs)];
|
|
267
|
-
case 3: return [2 /*return*/, _a.apply(void 0, [_b.sent()])];
|
|
268
|
-
}
|
|
269
|
-
});
|
|
157
|
+
return bptReadNode(lastOffset);
|
|
158
|
+
}
|
|
159
|
+
for (let i = 0; i < node.keys.length; i += 1) {
|
|
160
|
+
if (node.keys[i].key === name) {
|
|
161
|
+
return Object.assign(Object.assign({}, node.keys[i]), { field });
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return undefined;
|
|
165
|
+
});
|
|
166
|
+
const rootNodeOffset = 32;
|
|
167
|
+
return bptReadNode(Number(offset) + rootNodeOffset);
|
|
168
|
+
}));
|
|
169
|
+
return filterUndef(yield Promise.all(locs));
|
|
270
170
|
});
|
|
271
|
-
}
|
|
171
|
+
}
|
|
272
172
|
/*
|
|
273
173
|
* retrieve the features from the bigbed data that were found through the lookup of the extraIndex
|
|
274
174
|
* note that there can be multiple extraIndex, see the BigBed specification and the -extraIndex argument to bedToBigBed
|
|
@@ -277,40 +177,27 @@ var BigBed = /** @class */ (function (_super) {
|
|
|
277
177
|
* @param opts - a SearchOptions argument with optional signal
|
|
278
178
|
* @return a Promise for an array of Feature
|
|
279
179
|
*/
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
return new rxjs_1.Observable(function (observer) {
|
|
297
|
-
view.readFeatures(observer, [block], opts);
|
|
298
|
-
}).pipe((0, operators_1.reduce)(function (acc, curr) { return acc.concat(curr); }), (0, operators_1.map)(function (x) {
|
|
299
|
-
for (var i = 0; i < x.length; i += 1) {
|
|
300
|
-
x[i].field = block.field;
|
|
301
|
-
}
|
|
302
|
-
return x;
|
|
303
|
-
}));
|
|
304
|
-
});
|
|
305
|
-
return [4 /*yield*/, rxjs_1.merge.apply(void 0, res).toPromise()];
|
|
306
|
-
case 3:
|
|
307
|
-
ret = _a.sent();
|
|
308
|
-
return [2 /*return*/, ret.filter(function (f) { var _a; return ((_a = f.rest) === null || _a === void 0 ? void 0 : _a.split('\t')[(f.field || 0) - 3]) === name; })];
|
|
309
|
-
}
|
|
180
|
+
searchExtraIndex(name, opts = {}) {
|
|
181
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
182
|
+
const blocks = yield this.searchExtraIndexBlocks(name, opts);
|
|
183
|
+
if (!blocks.length) {
|
|
184
|
+
return [];
|
|
185
|
+
}
|
|
186
|
+
const view = yield this.getUnzoomedView(opts);
|
|
187
|
+
const res = blocks.map(block => {
|
|
188
|
+
return new rxjs_1.Observable(observer => {
|
|
189
|
+
view.readFeatures(observer, [block], opts);
|
|
190
|
+
}).pipe((0, operators_1.reduce)((acc, curr) => acc.concat(curr)), (0, operators_1.map)(x => {
|
|
191
|
+
for (let i = 0; i < x.length; i += 1) {
|
|
192
|
+
x[i].field = block.field;
|
|
193
|
+
}
|
|
194
|
+
return x;
|
|
195
|
+
}));
|
|
310
196
|
});
|
|
197
|
+
const ret = yield (0, rxjs_1.merge)(...res).toPromise();
|
|
198
|
+
return ret.filter(f => { var _a; return ((_a = f.rest) === null || _a === void 0 ? void 0 : _a.split('\t')[(f.field || 0) - 3]) === name; });
|
|
311
199
|
});
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
}(bbi_1.BBI));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
315
202
|
exports.BigBed = BigBed;
|
|
316
203
|
//# sourceMappingURL=bigbed.js.map
|
package/dist/bigbed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigbed.js","sourceRoot":"","sources":["../src/bigbed.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bigbed.js","sourceRoot":"","sources":["../src/bigbed.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
const pure_1 = require("./pure");
|
|
4
4
|
if (!('getBigInt64' in DataView)) {
|
|
5
5
|
DataView.prototype.getBigInt64 = function (byteOffset, littleEndian) {
|
|
6
6
|
return (0, pure_1.getBigInt64)(this, byteOffset, littleEndian);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../../src/bigint-polyfill/polyfill.ts"],"names":[],"mappings":";;AAAA
|
|
1
|
+
{"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../../src/bigint-polyfill/polyfill.ts"],"names":[],"mappings":";;AAAA,iCAA6E;AAE7E,IAAI,CAAC,CAAC,aAAa,IAAI,QAAQ,CAAC,EAAE;IAChC,QAAQ,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,UAAU,EAAE,YAAY;QACjE,OAAO,IAAA,kBAAW,EAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAA;IACpD,CAAC,CAAA;CACF;AAED,IAAI,CAAC,CAAC,cAAc,IAAI,QAAQ,CAAC,EAAE;IACjC,QAAQ,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,UAAU,EAAE,YAAY;QAClE,OAAO,IAAA,mBAAY,EAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,CAAA;IACrD,CAAC,CAAA;CACF;AAED,IAAI,CAAC,CAAC,aAAa,IAAI,QAAQ,CAAC,EAAE;IAChC,QAAQ,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,UAAU,EAAE,KAAK,EAAE,YAAY;QACxE,IAAA,kBAAW,EAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;IACpD,CAAC,CAAA;CACF;AAED,IAAI,CAAC,CAAC,cAAc,IAAI,QAAQ,CAAC,EAAE;IACjC,QAAQ,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,UAAU,EAAE,KAAK,EAAE,YAAY;QACzE,IAAA,mBAAY,EAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;IACrD,CAAC,CAAA;CACF"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.setBigUint64 = exports.setBigInt64 = exports.getBigUint64 = exports.getBigInt64 = void 0;
|
|
4
|
-
|
|
4
|
+
const BigInt32 = BigInt(32);
|
|
5
5
|
function getBigInt64(dataView, byteOffset, littleEndian) {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
const littleEndianMask = Number(!!littleEndian);
|
|
7
|
+
const bigEndianMask = Number(!littleEndian);
|
|
8
8
|
return ((BigInt(dataView.getInt32(byteOffset, littleEndian) * bigEndianMask +
|
|
9
9
|
dataView.getInt32(byteOffset + 4, littleEndian) * littleEndianMask) <<
|
|
10
10
|
BigInt32) |
|
|
@@ -13,10 +13,10 @@ function getBigInt64(dataView, byteOffset, littleEndian) {
|
|
|
13
13
|
}
|
|
14
14
|
exports.getBigInt64 = getBigInt64;
|
|
15
15
|
function getBigUint64(dataView, byteOffset, littleEndian) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
const a = dataView.getUint32(byteOffset, littleEndian);
|
|
17
|
+
const b = dataView.getUint32(byteOffset + 4, littleEndian);
|
|
18
|
+
const littleEndianMask = Number(!!littleEndian);
|
|
19
|
+
const bigEndianMask = Number(!littleEndian);
|
|
20
20
|
// This branch-less optimization is 77x faster than normal ternary operator.
|
|
21
21
|
// and only 3% slower than native implementation
|
|
22
22
|
// https://jsbench.me/p8kyhg1eqv/1
|
|
@@ -25,8 +25,8 @@ function getBigUint64(dataView, byteOffset, littleEndian) {
|
|
|
25
25
|
}
|
|
26
26
|
exports.getBigUint64 = getBigUint64;
|
|
27
27
|
function setBigInt64(dataView, byteOffset, value, littleEndian) {
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
const hi = Number(value >> BigInt32);
|
|
29
|
+
const lo = Number(value & BigInt(0xffffffff));
|
|
30
30
|
if (littleEndian) {
|
|
31
31
|
dataView.setInt32(byteOffset + 4, hi, littleEndian);
|
|
32
32
|
dataView.setUint32(byteOffset, lo, littleEndian);
|
|
@@ -38,8 +38,8 @@ function setBigInt64(dataView, byteOffset, value, littleEndian) {
|
|
|
38
38
|
}
|
|
39
39
|
exports.setBigInt64 = setBigInt64;
|
|
40
40
|
function setBigUint64(dataView, byteOffset, value, littleEndian) {
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
const hi = Number(value >> BigInt32);
|
|
42
|
+
const lo = Number(value & BigInt(0xffffffff));
|
|
43
43
|
if (littleEndian) {
|
|
44
44
|
dataView.setUint32(byteOffset + 4, hi, littleEndian);
|
|
45
45
|
dataView.setUint32(byteOffset, lo, littleEndian);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../src/bigint-polyfill/pure.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../src/bigint-polyfill/pure.ts"],"names":[],"mappings":"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"}
|