@gmod/tabix 1.5.13 → 1.5.15
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 +13 -2
- package/README.md +9 -0
- package/dist/chunk.js +0 -1
- package/dist/chunk.js.map +1 -1
- package/dist/csi.d.ts +1 -2
- package/dist/csi.js +10 -10
- package/dist/csi.js.map +1 -1
- package/dist/indexFile.js +8 -8
- package/dist/indexFile.js.map +1 -1
- package/dist/tabix-bundle.js +2 -0
- package/dist/tabix-bundle.js.LICENSE.txt +8 -0
- package/dist/tabixIndexedFile.d.ts +43 -21
- package/dist/tabixIndexedFile.js +82 -58
- package/dist/tabixIndexedFile.js.map +1 -1
- package/dist/tbi.d.ts +0 -1
- package/dist/tbi.js +12 -11
- package/dist/tbi.js.map +1 -1
- package/dist/util.d.ts +7 -7
- package/dist/util.js +11 -12
- package/dist/util.js.map +1 -1
- package/dist/virtualOffset.d.ts +0 -2
- package/dist/virtualOffset.js +1 -15
- package/dist/virtualOffset.js.map +1 -1
- package/esm/chunk.js +0 -1
- package/esm/chunk.js.map +1 -1
- package/esm/csi.d.ts +1 -2
- package/esm/csi.js +4 -4
- package/esm/csi.js.map +1 -1
- package/esm/indexFile.js +1 -1
- package/esm/indexFile.js.map +1 -1
- package/esm/tabixIndexedFile.d.ts +43 -21
- package/esm/tabixIndexedFile.js +68 -44
- package/esm/tabixIndexedFile.js.map +1 -1
- package/esm/tbi.d.ts +0 -1
- package/esm/tbi.js +6 -5
- package/esm/tbi.js.map +1 -1
- package/esm/util.d.ts +7 -7
- package/esm/util.js +6 -6
- package/esm/util.js.map +1 -1
- package/esm/virtualOffset.d.ts +0 -2
- package/esm/virtualOffset.js +0 -13
- package/esm/virtualOffset.js.map +1 -1
- package/package.json +25 -21
- package/src/chunk.ts +1 -1
- package/src/csi.ts +6 -5
- package/src/indexFile.ts +1 -1
- package/src/tabixIndexedFile.ts +74 -52
- package/src/tbi.ts +7 -6
- package/src/util.ts +7 -7
- package/src/virtualOffset.ts +7 -21
package/dist/util.js
CHANGED
|
@@ -9,7 +9,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.longToNumber = longToNumber;
|
|
13
|
+
exports.checkAbortSignal = checkAbortSignal;
|
|
14
|
+
exports.abortBreakPoint = abortBreakPoint;
|
|
15
|
+
exports.canMergeBlocks = canMergeBlocks;
|
|
16
|
+
exports.optimizeChunks = optimizeChunks;
|
|
13
17
|
function longToNumber(long) {
|
|
14
18
|
if (long.greaterThan(Number.MAX_SAFE_INTEGER) ||
|
|
15
19
|
long.lessThan(Number.MIN_SAFE_INTEGER)) {
|
|
@@ -17,18 +21,18 @@ function longToNumber(long) {
|
|
|
17
21
|
}
|
|
18
22
|
return long.toNumber();
|
|
19
23
|
}
|
|
20
|
-
exports.longToNumber = longToNumber;
|
|
21
24
|
class AbortError extends Error {
|
|
22
25
|
}
|
|
23
26
|
/**
|
|
24
|
-
* Properly check if the given AbortSignal is aborted.
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* with a `code` attribute set to `ERR_ABORTED`.
|
|
27
|
+
* Properly check if the given AbortSignal is aborted. Per the standard, if the
|
|
28
|
+
* signal reads as aborted, this function throws either a DOMException
|
|
29
|
+
* AbortError, or a regular error with a `code` attribute set to `ERR_ABORTED`.
|
|
28
30
|
*
|
|
29
31
|
* For convenience, passing `undefined` is a no-op
|
|
30
32
|
*
|
|
31
|
-
* @param {AbortSignal} [signal] an AbortSignal, or anything with an `aborted`
|
|
33
|
+
* @param {AbortSignal} [signal] an AbortSignal, or anything with an `aborted`
|
|
34
|
+
* attribute
|
|
35
|
+
*
|
|
32
36
|
* @returns nothing
|
|
33
37
|
*/
|
|
34
38
|
function checkAbortSignal(signal) {
|
|
@@ -37,7 +41,6 @@ function checkAbortSignal(signal) {
|
|
|
37
41
|
}
|
|
38
42
|
if (signal.aborted) {
|
|
39
43
|
if (typeof DOMException !== 'undefined') {
|
|
40
|
-
// eslint-disable-next-line no-undef
|
|
41
44
|
throw new DOMException('aborted', 'AbortError');
|
|
42
45
|
}
|
|
43
46
|
else {
|
|
@@ -47,7 +50,6 @@ function checkAbortSignal(signal) {
|
|
|
47
50
|
}
|
|
48
51
|
}
|
|
49
52
|
}
|
|
50
|
-
exports.checkAbortSignal = checkAbortSignal;
|
|
51
53
|
/**
|
|
52
54
|
* Skips to the next tick, then runs `checkAbortSignal`.
|
|
53
55
|
* Await this to inside an otherwise synchronous loop to
|
|
@@ -60,12 +62,10 @@ function abortBreakPoint(signal) {
|
|
|
60
62
|
checkAbortSignal(signal);
|
|
61
63
|
});
|
|
62
64
|
}
|
|
63
|
-
exports.abortBreakPoint = abortBreakPoint;
|
|
64
65
|
function canMergeBlocks(chunk1, chunk2) {
|
|
65
66
|
return (chunk2.minv.blockPosition - chunk1.maxv.blockPosition < 65000 &&
|
|
66
67
|
chunk2.maxv.blockPosition - chunk1.minv.blockPosition < 5000000);
|
|
67
68
|
}
|
|
68
|
-
exports.canMergeBlocks = canMergeBlocks;
|
|
69
69
|
function optimizeChunks(chunks, lowest) {
|
|
70
70
|
const mergedChunks = [];
|
|
71
71
|
let lastChunk = null;
|
|
@@ -97,5 +97,4 @@ function optimizeChunks(chunks, lowest) {
|
|
|
97
97
|
});
|
|
98
98
|
return mergedChunks;
|
|
99
99
|
}
|
|
100
|
-
exports.optimizeChunks = optimizeChunks;
|
|
101
100
|
//# sourceMappingURL=util.js.map
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/dist/virtualOffset.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { Buffer } from 'buffer';
|
|
3
2
|
export default class VirtualOffset {
|
|
4
3
|
blockPosition: number;
|
|
@@ -6,6 +5,5 @@ export default class VirtualOffset {
|
|
|
6
5
|
constructor(blockPosition: number, dataPosition: number);
|
|
7
6
|
toString(): string;
|
|
8
7
|
compareTo(b: VirtualOffset): number;
|
|
9
|
-
static min(...args: VirtualOffset[]): VirtualOffset;
|
|
10
8
|
}
|
|
11
9
|
export declare function fromBytes(bytes: Buffer, offset?: number, bigendian?: boolean): VirtualOffset;
|
package/dist/virtualOffset.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fromBytes =
|
|
3
|
+
exports.fromBytes = fromBytes;
|
|
4
4
|
class VirtualOffset {
|
|
5
5
|
constructor(blockPosition, dataPosition) {
|
|
6
6
|
this.blockPosition = blockPosition; // < offset of the compressed data block
|
|
@@ -12,19 +12,6 @@ class VirtualOffset {
|
|
|
12
12
|
compareTo(b) {
|
|
13
13
|
return (this.blockPosition - b.blockPosition || this.dataPosition - b.dataPosition);
|
|
14
14
|
}
|
|
15
|
-
static min(...args) {
|
|
16
|
-
let min;
|
|
17
|
-
let i = 0;
|
|
18
|
-
for (; !min; i += 1) {
|
|
19
|
-
min = args[i];
|
|
20
|
-
}
|
|
21
|
-
for (; i < args.length; i += 1) {
|
|
22
|
-
if (min.compareTo(args[i]) > 0) {
|
|
23
|
-
min = args[i];
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
return min;
|
|
27
|
-
}
|
|
28
15
|
}
|
|
29
16
|
exports.default = VirtualOffset;
|
|
30
17
|
function fromBytes(bytes, offset = 0, bigendian = false) {
|
|
@@ -38,5 +25,4 @@ function fromBytes(bytes, offset = 0, bigendian = false) {
|
|
|
38
25
|
bytes[offset + 3] * 0x100 +
|
|
39
26
|
bytes[offset + 2], (bytes[offset + 1] << 8) | bytes[offset]);
|
|
40
27
|
}
|
|
41
|
-
exports.fromBytes = fromBytes;
|
|
42
28
|
//# sourceMappingURL=virtualOffset.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtualOffset.js","sourceRoot":"","sources":["../src/virtualOffset.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"virtualOffset.js","sourceRoot":"","sources":["../src/virtualOffset.ts"],"names":[],"mappings":";;AAmBA,8BAcC;AAhCD,MAAqB,aAAa;IAGhC,YAAY,aAAqB,EAAE,YAAoB;QACrD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA,CAAC,wCAAwC;QAC3E,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA,CAAC,sCAAsC;IACzE,CAAC;IAED,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE,CAAA;IACrD,CAAC;IAED,SAAS,CAAC,CAAgB;QACxB,OAAO,CACL,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAC3E,CAAA;IACH,CAAC;CACF;AAjBD,gCAiBC;AACD,SAAgB,SAAS,CAAC,KAAa,EAAE,MAAM,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK;IACpE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;IACpE,CAAC;IAED,OAAO,IAAI,aAAa,CACtB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,GAAG,aAAa;QAChC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,GAAG,WAAW;QAChC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,GAAG,SAAS;QAC9B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,GAAG,OAAO;QAC5B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,GAAG,KAAK;QAC1B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,EACpB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAE,CAC3C,CAAA;AACH,CAAC"}
|
package/esm/chunk.js
CHANGED
|
@@ -7,7 +7,6 @@ export default class Chunk {
|
|
|
7
7
|
this._fetchedSize = fetchedSize;
|
|
8
8
|
}
|
|
9
9
|
toUniqueString() {
|
|
10
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
11
10
|
return `${this.minv}..${this.maxv} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`;
|
|
12
11
|
}
|
|
13
12
|
toString() {
|
package/esm/chunk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk.js","sourceRoot":"","sources":["../src/chunk.ts"],"names":[],"mappings":"AAEA,iDAAiD;AACjD,MAAM,CAAC,OAAO,OAAO,KAAK;IAMxB,YACE,IAAmB,EACnB,IAAmB,EACnB,GAAW,EACX,WAAW,GAAG,SAAS;QAEvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,YAAY,GAAG,WAAW,CAAA;IACjC,CAAC;IAED,cAAc;
|
|
1
|
+
{"version":3,"file":"chunk.js","sourceRoot":"","sources":["../src/chunk.ts"],"names":[],"mappings":"AAEA,iDAAiD;AACjD,MAAM,CAAC,OAAO,OAAO,KAAK;IAMxB,YACE,IAAmB,EACnB,IAAmB,EACnB,GAAW,EACX,WAAW,GAAG,SAAS;QAEvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,YAAY,GAAG,WAAW,CAAA;IACjC,CAAC;IAED,cAAc;QAEZ,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,SAC/B,IAAI,CAAC,GACP,iBAAiB,IAAI,CAAC,WAAW,EAAE,GAAG,CAAA;IACxC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,cAAc,EAAE,CAAA;IAC9B,CAAC;IAED,SAAS,CAAC,CAAQ;QAChB,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CACjB,CAAA;IACH,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,YAAY,CAAA;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAA;IACtE,CAAC;CACF"}
|
package/esm/csi.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { Buffer } from 'buffer';
|
|
3
2
|
import VirtualOffset from './virtualOffset';
|
|
4
3
|
import Chunk from './chunk';
|
|
@@ -86,5 +85,5 @@ export default class CSI extends IndexFile {
|
|
|
86
85
|
/**
|
|
87
86
|
* calculate the list of bins that may overlap with region [beg,end) (zero-based half-open)
|
|
88
87
|
*/
|
|
89
|
-
reg2bins(beg: number, end: number): number
|
|
88
|
+
reg2bins(beg: number, end: number): (readonly [number, number])[];
|
|
90
89
|
}
|
package/esm/csi.js
CHANGED
|
@@ -21,10 +21,10 @@ export default class CSI extends IndexFile {
|
|
|
21
21
|
}
|
|
22
22
|
async lineCount(refName, opts = {}) {
|
|
23
23
|
const indexData = await this.parse(opts);
|
|
24
|
-
|
|
24
|
+
const refId = indexData.refNameToId[refName];
|
|
25
|
+
if (refId === undefined) {
|
|
25
26
|
return -1;
|
|
26
27
|
}
|
|
27
|
-
const refId = indexData.refNameToId[refName];
|
|
28
28
|
const idx = indexData.indices[refId];
|
|
29
29
|
if (!idx) {
|
|
30
30
|
return -1;
|
|
@@ -172,10 +172,10 @@ export default class CSI extends IndexFile {
|
|
|
172
172
|
min = 0;
|
|
173
173
|
}
|
|
174
174
|
const indexData = await this.parse(opts);
|
|
175
|
-
|
|
175
|
+
const refId = indexData.refNameToId[refName];
|
|
176
|
+
if (refId === undefined) {
|
|
176
177
|
return [];
|
|
177
178
|
}
|
|
178
|
-
const refId = indexData.refNameToId[refName];
|
|
179
179
|
const ba = indexData.indices[refId];
|
|
180
180
|
if (!ba) {
|
|
181
181
|
return [];
|
package/esm/csi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csi.js","sourceRoot":"","sources":["../src/csi.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAE7C,OAAO,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAErD,OAAO,SAAsB,MAAM,aAAa,CAAA;AAEhD,MAAM,UAAU,GAAG,QAAQ,CAAA,CAAC,QAAQ;AACpC,MAAM,UAAU,GAAG,QAAQ,CAAA,CAAC,QAAQ;AAEpC,SAAS,MAAM,CAAC,GAAW,EAAE,IAAY;IACvC,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,CAAA;AACxB,CAAC;AACD,SAAS,MAAM,CAAC,GAAW,EAAE,IAAY;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,SAAS;IAIxC,YAAY,IAAS;QACnB,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;QACd,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;IACnB,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,OAAgB,EAAE;QACjD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxC,
|
|
1
|
+
{"version":3,"file":"csi.js","sourceRoot":"","sources":["../src/csi.ts"],"names":[],"mappings":"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"}
|
package/esm/indexFile.js
CHANGED
package/esm/indexFile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexFile.js","sourceRoot":"","sources":["../src/indexFile.ts"],"names":[],"mappings":"AAoBA,MAAM,CAAC,OAAO,OAAgB,SAAS;IAKrC,YAAY,EACV,UAAU,EACV,aAAa,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAIjC;QACC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,YAAY,GAAG,aAAa,CAAA;IACnC,CAAC;IAMM,KAAK,CAAC,WAAW,CAAC,OAAgB,EAAE;QACzC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC7D,OAAO,IAAI,CAAA;IACb,CAAC;IASD,cAAc,CACZ,UAAqC,EACrC,aAA4B;QAE5B,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC;gBAC5C,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,UAAU,CAAA;QAChB,CAAC;aAAM,CAAC;YACN,OAAO,aAAa,CAAA;QACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAgB,EAAE;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"indexFile.js","sourceRoot":"","sources":["../src/indexFile.ts"],"names":[],"mappings":"AAoBA,MAAM,CAAC,OAAO,OAAgB,SAAS;IAKrC,YAAY,EACV,UAAU,EACV,aAAa,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAIjC;QACC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,YAAY,GAAG,aAAa,CAAA;IACnC,CAAC;IAMM,KAAK,CAAC,WAAW,CAAC,OAAgB,EAAE;QACzC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC7D,OAAO,IAAI,CAAA;IACb,CAAC;IASD,cAAc,CACZ,UAAqC,EACrC,aAA4B;QAE5B,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC;gBAC5C,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,UAAU,CAAA;QAChB,CAAC;aAAM,CAAC;YACN,OAAO,aAAa,CAAA;QACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAgB,EAAE;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;gBACnD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;gBACvB,MAAM,CAAC,CAAA;YACT,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,OAAgB,EAAE;;QAC/C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAClC,OAAO,CAAC,CAAC,CAAA,MAAA,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,0CAAE,QAAQ,CAAA,CAAA;IACvC,CAAC;CACF"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { Buffer } from 'buffer';
|
|
3
2
|
import { GenericFilehandle } from 'generic-filehandle';
|
|
4
3
|
import { Options, IndexData } from './indexFile';
|
|
@@ -12,41 +11,58 @@ interface GetLinesOpts {
|
|
|
12
11
|
export default class TabixIndexedFile {
|
|
13
12
|
private filehandle;
|
|
14
13
|
private index;
|
|
15
|
-
private chunkSizeLimit;
|
|
16
14
|
private yieldTime;
|
|
17
15
|
private renameRefSeq;
|
|
18
16
|
private chunkCache;
|
|
19
17
|
/**
|
|
20
18
|
* @param {object} args
|
|
19
|
+
*
|
|
21
20
|
* @param {string} [args.path]
|
|
21
|
+
*
|
|
22
22
|
* @param {filehandle} [args.filehandle]
|
|
23
|
+
*
|
|
23
24
|
* @param {string} [args.tbiPath]
|
|
25
|
+
*
|
|
24
26
|
* @param {filehandle} [args.tbiFilehandle]
|
|
27
|
+
*
|
|
25
28
|
* @param {string} [args.csiPath]
|
|
29
|
+
*
|
|
26
30
|
* @param {filehandle} [args.csiFilehandle]
|
|
27
|
-
*
|
|
28
|
-
* @param {
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
+
*
|
|
32
|
+
* @param {number} [args.yieldTime] yield to main thread after N milliseconds
|
|
33
|
+
* if reading features is taking a long time to avoid hanging main thread
|
|
34
|
+
*
|
|
35
|
+
* @param {function} [args.renameRefSeqs] optional function with sig `string
|
|
36
|
+
* => string` to transform reference sequence names for the purpose of
|
|
37
|
+
* indexing and querying. note that the data that is returned is not altered,
|
|
38
|
+
* just the names of the reference sequences that are used for querying.
|
|
31
39
|
*/
|
|
32
|
-
constructor({ path, filehandle, tbiPath, tbiFilehandle, csiPath, csiFilehandle, yieldTime,
|
|
40
|
+
constructor({ path, filehandle, url, tbiPath, tbiUrl, tbiFilehandle, csiPath, csiUrl, csiFilehandle, yieldTime, renameRefSeqs, chunkCacheSize, }: {
|
|
33
41
|
path?: string;
|
|
34
42
|
filehandle?: GenericFilehandle;
|
|
43
|
+
url?: string;
|
|
35
44
|
tbiPath?: string;
|
|
45
|
+
tbiUrl?: string;
|
|
36
46
|
tbiFilehandle?: GenericFilehandle;
|
|
37
47
|
csiPath?: string;
|
|
48
|
+
csiUrl?: string;
|
|
38
49
|
csiFilehandle?: GenericFilehandle;
|
|
39
50
|
yieldTime?: number;
|
|
40
|
-
chunkSizeLimit?: number;
|
|
41
51
|
renameRefSeqs?: (n: string) => string;
|
|
42
52
|
chunkCacheSize?: number;
|
|
43
53
|
});
|
|
44
54
|
/**
|
|
45
55
|
* @param refName name of the reference sequence
|
|
56
|
+
*
|
|
46
57
|
* @param start start of the region (in 0-based half-open coordinates)
|
|
58
|
+
*
|
|
47
59
|
* @param end end of the region (in 0-based half-open coordinates)
|
|
48
|
-
*
|
|
49
|
-
* @
|
|
60
|
+
*
|
|
61
|
+
* @param opts callback called for each line in the region. can also pass a
|
|
62
|
+
* object param containing obj.lineCallback, obj.signal, etc
|
|
63
|
+
*
|
|
64
|
+
* @returns promise that is resolved when the whole read is finished,
|
|
65
|
+
* rejected on error
|
|
50
66
|
*/
|
|
51
67
|
getLines(refName: string, s: number | undefined, e: number | undefined, opts: GetLinesOpts | GetLinesCallback): Promise<void>;
|
|
52
68
|
getMetadata(opts?: Options): Promise<{
|
|
@@ -63,31 +79,34 @@ export default class TabixIndexedFile {
|
|
|
63
79
|
format: string;
|
|
64
80
|
}>;
|
|
65
81
|
/**
|
|
66
|
-
* get a buffer containing the "header" region of
|
|
67
|
-
*
|
|
68
|
-
* non-meta line
|
|
82
|
+
* get a buffer containing the "header" region of the file, which are the
|
|
83
|
+
* bytes up to the first non-meta line
|
|
69
84
|
*/
|
|
70
85
|
getHeaderBuffer(opts?: Options): Promise<Buffer>;
|
|
71
86
|
/**
|
|
72
|
-
* get a string containing the "header" region of the
|
|
73
|
-
*
|
|
87
|
+
* get a string containing the "header" region of the file, is the portion up
|
|
88
|
+
* to the first non-meta line
|
|
74
89
|
*
|
|
75
90
|
* @returns {Promise} for a string
|
|
76
91
|
*/
|
|
77
92
|
getHeader(opts?: Options): Promise<string>;
|
|
78
93
|
/**
|
|
79
|
-
* get an array of reference sequence names, in the order in which
|
|
80
|
-
*
|
|
81
|
-
* to these names.
|
|
94
|
+
* get an array of reference sequence names, in the order in which they occur
|
|
95
|
+
* in the file. reference sequence renaming is not applied to these names.
|
|
82
96
|
*/
|
|
83
97
|
getReferenceSequenceNames(opts?: Options): Promise<string[]>;
|
|
84
98
|
/**
|
|
85
|
-
* @param {object} metadata metadata object from the parsed index,
|
|
86
|
-
*
|
|
99
|
+
* @param {object} metadata metadata object from the parsed index, containing
|
|
100
|
+
* columnNumbers, metaChar, and format
|
|
101
|
+
*
|
|
87
102
|
* @param {string} regionRefName
|
|
103
|
+
*
|
|
88
104
|
* @param {number} regionStart region start coordinate (0-based-half-open)
|
|
105
|
+
*
|
|
89
106
|
* @param {number} regionEnd region end coordinate (0-based-half-open)
|
|
107
|
+
*
|
|
90
108
|
* @param {array[string]} line
|
|
109
|
+
*
|
|
91
110
|
* @returns {object} like `{startCoordinate, overlaps}`. overlaps is boolean,
|
|
92
111
|
* true if line is a data line that overlaps the given region
|
|
93
112
|
*/
|
|
@@ -100,8 +119,11 @@ export default class TabixIndexedFile {
|
|
|
100
119
|
};
|
|
101
120
|
_getVcfEnd(startCoordinate: number, refSeq: string, info: any): number;
|
|
102
121
|
/**
|
|
103
|
-
* return the approximate number of data lines in the given reference
|
|
122
|
+
* return the approximate number of data lines in the given reference
|
|
123
|
+
* sequence
|
|
124
|
+
*
|
|
104
125
|
* @param refSeq reference sequence name
|
|
126
|
+
*
|
|
105
127
|
* @returns number of data lines present on that reference sequence
|
|
106
128
|
*/
|
|
107
129
|
lineCount(refName: string, opts?: Options): Promise<number>;
|
package/esm/tabixIndexedFile.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import AbortablePromiseCache from 'abortable-promise-cache';
|
|
1
|
+
import AbortablePromiseCache from '@gmod/abortable-promise-cache';
|
|
2
2
|
import LRU from 'quick-lru';
|
|
3
3
|
import { Buffer } from 'buffer';
|
|
4
|
-
import { LocalFile } from 'generic-filehandle';
|
|
4
|
+
import { RemoteFile, LocalFile } from 'generic-filehandle';
|
|
5
5
|
import { unzip, unzipChunkSlice } from '@gmod/bgzf-filehandle';
|
|
6
6
|
import { checkAbortSignal } from './util';
|
|
7
7
|
import TBI from './tbi';
|
|
@@ -13,24 +13,37 @@ function timeout(time) {
|
|
|
13
13
|
export default class TabixIndexedFile {
|
|
14
14
|
/**
|
|
15
15
|
* @param {object} args
|
|
16
|
+
*
|
|
16
17
|
* @param {string} [args.path]
|
|
18
|
+
*
|
|
17
19
|
* @param {filehandle} [args.filehandle]
|
|
20
|
+
*
|
|
18
21
|
* @param {string} [args.tbiPath]
|
|
22
|
+
*
|
|
19
23
|
* @param {filehandle} [args.tbiFilehandle]
|
|
24
|
+
*
|
|
20
25
|
* @param {string} [args.csiPath]
|
|
26
|
+
*
|
|
21
27
|
* @param {filehandle} [args.csiFilehandle]
|
|
22
|
-
*
|
|
23
|
-
* @param {
|
|
24
|
-
*
|
|
25
|
-
*
|
|
28
|
+
*
|
|
29
|
+
* @param {number} [args.yieldTime] yield to main thread after N milliseconds
|
|
30
|
+
* if reading features is taking a long time to avoid hanging main thread
|
|
31
|
+
*
|
|
32
|
+
* @param {function} [args.renameRefSeqs] optional function with sig `string
|
|
33
|
+
* => string` to transform reference sequence names for the purpose of
|
|
34
|
+
* indexing and querying. note that the data that is returned is not altered,
|
|
35
|
+
* just the names of the reference sequences that are used for querying.
|
|
26
36
|
*/
|
|
27
|
-
constructor({ path, filehandle, tbiPath, tbiFilehandle, csiPath, csiFilehandle, yieldTime = 500,
|
|
37
|
+
constructor({ path, filehandle, url, tbiPath, tbiUrl, tbiFilehandle, csiPath, csiUrl, csiFilehandle, yieldTime = 500, renameRefSeqs = n => n, chunkCacheSize = 5 * 2 ** 20, }) {
|
|
28
38
|
if (filehandle) {
|
|
29
39
|
this.filehandle = filehandle;
|
|
30
40
|
}
|
|
31
41
|
else if (path) {
|
|
32
42
|
this.filehandle = new LocalFile(path);
|
|
33
43
|
}
|
|
44
|
+
else if (url) {
|
|
45
|
+
this.filehandle = new RemoteFile(url);
|
|
46
|
+
}
|
|
34
47
|
else {
|
|
35
48
|
throw new TypeError('must provide either filehandle or path');
|
|
36
49
|
}
|
|
@@ -64,10 +77,24 @@ export default class TabixIndexedFile {
|
|
|
64
77
|
renameRefSeqs,
|
|
65
78
|
});
|
|
66
79
|
}
|
|
80
|
+
else if (csiUrl) {
|
|
81
|
+
this.index = new CSI({
|
|
82
|
+
filehandle: new RemoteFile(csiUrl),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
else if (tbiUrl) {
|
|
86
|
+
this.index = new TBI({
|
|
87
|
+
filehandle: new RemoteFile(tbiUrl),
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
else if (url) {
|
|
91
|
+
this.index = new TBI({
|
|
92
|
+
filehandle: new RemoteFile(`${url}.tbi`),
|
|
93
|
+
});
|
|
94
|
+
}
|
|
67
95
|
else {
|
|
68
|
-
throw new TypeError('must provide one of tbiFilehandle, tbiPath, csiFilehandle,
|
|
96
|
+
throw new TypeError('must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl');
|
|
69
97
|
}
|
|
70
|
-
this.chunkSizeLimit = chunkSizeLimit;
|
|
71
98
|
this.renameRefSeq = renameRefSeqs;
|
|
72
99
|
this.yieldTime = yieldTime;
|
|
73
100
|
this.chunkCache = new AbortablePromiseCache({
|
|
@@ -77,19 +104,22 @@ export default class TabixIndexedFile {
|
|
|
77
104
|
}
|
|
78
105
|
/**
|
|
79
106
|
* @param refName name of the reference sequence
|
|
107
|
+
*
|
|
80
108
|
* @param start start of the region (in 0-based half-open coordinates)
|
|
109
|
+
*
|
|
81
110
|
* @param end end of the region (in 0-based half-open coordinates)
|
|
82
|
-
*
|
|
83
|
-
* @
|
|
111
|
+
*
|
|
112
|
+
* @param opts callback called for each line in the region. can also pass a
|
|
113
|
+
* object param containing obj.lineCallback, obj.signal, etc
|
|
114
|
+
*
|
|
115
|
+
* @returns promise that is resolved when the whole read is finished,
|
|
116
|
+
* rejected on error
|
|
84
117
|
*/
|
|
85
118
|
async getLines(refName, s, e, opts) {
|
|
86
119
|
var _a;
|
|
87
120
|
let signal;
|
|
88
121
|
let options = {};
|
|
89
122
|
let callback;
|
|
90
|
-
if (opts === undefined) {
|
|
91
|
-
throw new TypeError('line callback must be provided');
|
|
92
|
-
}
|
|
93
123
|
if (typeof opts === 'function') {
|
|
94
124
|
callback = opts;
|
|
95
125
|
}
|
|
@@ -98,12 +128,6 @@ export default class TabixIndexedFile {
|
|
|
98
128
|
callback = opts.lineCallback;
|
|
99
129
|
signal = opts.signal;
|
|
100
130
|
}
|
|
101
|
-
if (refName === undefined) {
|
|
102
|
-
throw new TypeError('must provide a reference sequence name');
|
|
103
|
-
}
|
|
104
|
-
if (!callback) {
|
|
105
|
-
throw new TypeError('line callback must be provided');
|
|
106
|
-
}
|
|
107
131
|
const metadata = await this.index.getMetadata(options);
|
|
108
132
|
checkAbortSignal(signal);
|
|
109
133
|
const start = s !== null && s !== void 0 ? s : 0;
|
|
@@ -116,14 +140,6 @@ export default class TabixIndexedFile {
|
|
|
116
140
|
}
|
|
117
141
|
const chunks = await this.index.blocksForRange(refName, start, end, options);
|
|
118
142
|
checkAbortSignal(signal);
|
|
119
|
-
// check the chunks for any that are over the size limit. if
|
|
120
|
-
// any are, don't fetch any of them
|
|
121
|
-
for (const chunk of chunks) {
|
|
122
|
-
const size = chunk.fetchedSize();
|
|
123
|
-
if (size > this.chunkSizeLimit) {
|
|
124
|
-
throw new Error(`Too much data. Chunk size ${size.toLocaleString()} bytes exceeds chunkSizeLimit of ${this.chunkSizeLimit.toLocaleString()}.`);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
143
|
// now go through each chunk and parse and filter the lines out of it
|
|
128
144
|
let last = Date.now();
|
|
129
145
|
for (const c of chunks) {
|
|
@@ -139,6 +155,7 @@ export default class TabixIndexedFile {
|
|
|
139
155
|
}
|
|
140
156
|
const b = buffer.slice(blockStart, n);
|
|
141
157
|
const line = (_a = decoder === null || decoder === void 0 ? void 0 : decoder.decode(b)) !== null && _a !== void 0 ? _a : b.toString();
|
|
158
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
142
159
|
if (dpositions) {
|
|
143
160
|
while (blockStart + c.minv.dataPosition >= dpositions[pos++]) { }
|
|
144
161
|
pos--;
|
|
@@ -188,13 +205,13 @@ export default class TabixIndexedFile {
|
|
|
188
205
|
return this.index.getMetadata(opts);
|
|
189
206
|
}
|
|
190
207
|
/**
|
|
191
|
-
* get a buffer containing the "header" region of
|
|
192
|
-
*
|
|
193
|
-
* non-meta line
|
|
208
|
+
* get a buffer containing the "header" region of the file, which are the
|
|
209
|
+
* bytes up to the first non-meta line
|
|
194
210
|
*/
|
|
195
211
|
async getHeaderBuffer(opts = {}) {
|
|
196
212
|
const { firstDataLine, metaChar, maxBlockSize } = await this.getMetadata(opts);
|
|
197
213
|
checkAbortSignal(opts.signal);
|
|
214
|
+
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
|
|
198
215
|
const maxFetch = ((firstDataLine === null || firstDataLine === void 0 ? void 0 : firstDataLine.blockPosition) || 0) + maxBlockSize;
|
|
199
216
|
// TODO: what if we don't have a firstDataLine, and the header
|
|
200
217
|
// actually takes up more than one block? this case is not covered here
|
|
@@ -219,8 +236,8 @@ export default class TabixIndexedFile {
|
|
|
219
236
|
return bytes;
|
|
220
237
|
}
|
|
221
238
|
/**
|
|
222
|
-
* get a string containing the "header" region of the
|
|
223
|
-
*
|
|
239
|
+
* get a string containing the "header" region of the file, is the portion up
|
|
240
|
+
* to the first non-meta line
|
|
224
241
|
*
|
|
225
242
|
* @returns {Promise} for a string
|
|
226
243
|
*/
|
|
@@ -229,21 +246,25 @@ export default class TabixIndexedFile {
|
|
|
229
246
|
return bytes.toString('utf8');
|
|
230
247
|
}
|
|
231
248
|
/**
|
|
232
|
-
* get an array of reference sequence names, in the order in which
|
|
233
|
-
*
|
|
234
|
-
* to these names.
|
|
249
|
+
* get an array of reference sequence names, in the order in which they occur
|
|
250
|
+
* in the file. reference sequence renaming is not applied to these names.
|
|
235
251
|
*/
|
|
236
252
|
async getReferenceSequenceNames(opts = {}) {
|
|
237
253
|
const metadata = await this.getMetadata(opts);
|
|
238
254
|
return metadata.refIdToName;
|
|
239
255
|
}
|
|
240
256
|
/**
|
|
241
|
-
* @param {object} metadata metadata object from the parsed index,
|
|
242
|
-
*
|
|
257
|
+
* @param {object} metadata metadata object from the parsed index, containing
|
|
258
|
+
* columnNumbers, metaChar, and format
|
|
259
|
+
*
|
|
243
260
|
* @param {string} regionRefName
|
|
261
|
+
*
|
|
244
262
|
* @param {number} regionStart region start coordinate (0-based-half-open)
|
|
263
|
+
*
|
|
245
264
|
* @param {number} regionEnd region end coordinate (0-based-half-open)
|
|
265
|
+
*
|
|
246
266
|
* @param {array[string]} line
|
|
267
|
+
*
|
|
247
268
|
* @returns {object} like `{startCoordinate, overlaps}`. overlaps is boolean,
|
|
248
269
|
* true if line is a data line that overlaps the given region
|
|
249
270
|
*/
|
|
@@ -268,9 +289,9 @@ export default class TabixIndexedFile {
|
|
|
268
289
|
end = 8;
|
|
269
290
|
}
|
|
270
291
|
const maxColumn = Math.max(ref, start, end);
|
|
271
|
-
// this code is kind of complex, but it is fairly fast.
|
|
272
|
-
//
|
|
273
|
-
//
|
|
292
|
+
// this code is kind of complex, but it is fairly fast. basically, we want
|
|
293
|
+
// to avoid doing a split, because if the lines are really long that could
|
|
294
|
+
// lead to us allocating a bunch of extra memory, which is slow
|
|
274
295
|
let currentColumnNumber = 1; // cols are numbered starting at 1 in the index metadata
|
|
275
296
|
let currentColumnStart = 0;
|
|
276
297
|
let refSeq = '';
|
|
@@ -348,8 +369,11 @@ export default class TabixIndexedFile {
|
|
|
348
369
|
return endCoordinate;
|
|
349
370
|
}
|
|
350
371
|
/**
|
|
351
|
-
* return the approximate number of data lines in the given reference
|
|
372
|
+
* return the approximate number of data lines in the given reference
|
|
373
|
+
* sequence
|
|
374
|
+
*
|
|
352
375
|
* @param refSeq reference sequence name
|
|
376
|
+
*
|
|
353
377
|
* @returns number of data lines present on that reference sequence
|
|
354
378
|
*/
|
|
355
379
|
async lineCount(refName, opts = {}) {
|
|
@@ -365,8 +389,8 @@ export default class TabixIndexedFile {
|
|
|
365
389
|
* contiguous bgzip blocks) of the file
|
|
366
390
|
*/
|
|
367
391
|
async readChunk(c, opts = {}) {
|
|
368
|
-
// fetch the uncompressed data, uncompress carefully a block at a time,
|
|
369
|
-
//
|
|
392
|
+
// fetch the uncompressed data, uncompress carefully a block at a time, and
|
|
393
|
+
// stop when done
|
|
370
394
|
const data = await this._readRegion(c.minv.blockPosition, c.fetchedSize(), opts);
|
|
371
395
|
return unzipChunkSlice(data, c);
|
|
372
396
|
}
|