@gmod/tabix 1.5.5 → 1.5.7

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 CHANGED
@@ -1,39 +1,41 @@
1
- ## [1.5.5](https://github.com/GMOD/tabix-js/compare/v1.5.4...v1.5.5) (2022-12-17)
1
+ ## [1.5.7](https://github.com/GMOD/tabix-js/compare/v1.5.6...v1.5.7) (2023-03-24)
2
2
 
3
3
 
4
4
 
5
- - Use es2015 for nodejs build
5
+ - Add yieldTime parameter
6
+ - Improve typescripting
6
7
 
7
- ## [1.5.4](https://github.com/GMOD/tabix-js/compare/v1.5.3...v1.5.4) (2022-07-18)
8
+ ## [1.5.6](https://github.com/GMOD/tabix-js/compare/v1.5.5...v1.5.6) (2023-02-28)
8
9
 
10
+ - Add fix for fileOffset being stable in presence of Unicode characters (#137)
9
11
 
12
+ ## [1.5.5](https://github.com/GMOD/tabix-js/compare/v1.5.4...v1.5.5) (2022-12-17)
10
13
 
11
- - Bump generic-filehandle 2->3
14
+ - Use es2015 for nodejs build
12
15
 
13
- ## [1.5.3](https://github.com/GMOD/tabix-js/compare/v1.5.2...v1.5.3) (2022-04-25)
16
+ ## [1.5.4](https://github.com/GMOD/tabix-js/compare/v1.5.3...v1.5.4) (2022-07-18)
14
17
 
18
+ - Bump generic-filehandle 2->3
15
19
 
20
+ ## [1.5.3](https://github.com/GMOD/tabix-js/compare/v1.5.2...v1.5.3) (2022-04-25)
16
21
 
17
22
  - Fix esm module build to use ESM instead of CJS
18
23
 
19
24
  <a name="1.5.2"></a>
20
- ## [1.5.2](https://github.com/GMOD/tabix-js/compare/v1.5.1...v1.5.2) (2021-12-15)
21
-
22
25
 
26
+ ## [1.5.2](https://github.com/GMOD/tabix-js/compare/v1.5.1...v1.5.2) (2021-12-15)
23
27
 
24
28
  - Change typescript signature of lineCallback from Promise<void> to void
25
29
 
26
30
  <a name="1.5.1"></a>
27
- ## [1.5.1](https://github.com/GMOD/tabix-js/compare/v1.5.0...v1.5.1) (2021-12-15)
28
-
29
31
 
32
+ ## [1.5.1](https://github.com/GMOD/tabix-js/compare/v1.5.0...v1.5.1) (2021-12-15)
30
33
 
31
34
  - Add esm module with less babelification for smaller bundle size
32
35
 
33
36
  <a name="1.5.0"></a>
34
- # [1.5.0](https://github.com/GMOD/tabix-js/compare/v1.4.6...v1.5.0) (2020-12-11)
35
-
36
37
 
38
+ # [1.5.0](https://github.com/GMOD/tabix-js/compare/v1.4.6...v1.5.0) (2020-12-11)
37
39
 
38
40
  - Use TextDecoder for chunk decoding for small speedup
39
41
  - Use canMergeChunks logic to avoid too large of chunks being used
@@ -43,14 +45,16 @@
43
45
 
44
46
  ## [1.4.6](https://github.com/GMOD/tabix-js/compare/v1.4.5...v1.4.6) (2020-04-30)
45
47
 
46
- - Fix regression with browser only version of tabix-js not being able to parse results in 1.4.5
48
+ - Fix regression with browser only version of tabix-js not being able to parse
49
+ results in 1.4.5
47
50
 
48
51
  <a name="1.4.5"></a>
49
52
 
50
53
  ## [1.4.5](https://github.com/GMOD/tabix-js/compare/v1.4.4...v1.4.5) (2020-04-28)
51
54
 
52
- - Remove the filehandle size() call because this is unnecessary and would indicate a corrupt index,
53
- and because it additionally has a CORS configuration overhead
55
+ - Remove the filehandle size() call because this is unnecessary and would
56
+ indicate a corrupt index, and because it additionally has a CORS configuration
57
+ overhead
54
58
 
55
59
  <a name="1.4.4"></a>
56
60
 
@@ -63,7 +67,8 @@
63
67
  ## [1.4.3](https://github.com/GMOD/tabix-js/compare/v1.4.2...v1.4.3) (2020-02-04)
64
68
 
65
69
  - Fix optional param for constructor for typescript
66
- - Update method of calculating fileOffset based IDs using updated @gmod/bgzf-filehandle
70
+ - Update method of calculating fileOffset based IDs using updated
71
+ @gmod/bgzf-filehandle
67
72
 
68
73
  <a name="1.4.2"></a>
69
74
 
@@ -115,11 +120,13 @@
115
120
 
116
121
  ## [1.1.8](https://github.com/GMOD/tabix-js/compare/v1.1.7...v1.1.8) (2019-06-06)
117
122
 
118
- - Add a fix for a bgzf unzipping thing that could result in duplicate features being returned
123
+ - Add a fix for a bgzf unzipping thing that could result in duplicate features
124
+ being returned
119
125
 
120
126
  ## [1.1.7](https://github.com/GMOD/tabix-js/compare/v1.1.6...v1.1.7) (2019-06-04)
121
127
 
122
- - Removed chunk merging from header file parsing which now results in smaller bgzf unzip calls being streamed out to clients
128
+ - Removed chunk merging from header file parsing which now results in smaller
129
+ bgzf unzip calls being streamed out to clients
123
130
 
124
131
  ## [1.1.6](https://github.com/GMOD/tabix-js/compare/v1.1.5...v1.1.6) (2019-05-31)
125
132
 
@@ -128,7 +135,8 @@
128
135
 
129
136
  ## [1.1.5](https://github.com/GMOD/tabix-js/compare/v1.1.4...v1.1.5) (2019-03-05)
130
137
 
131
- - Fix parsing on a tabix file that should be csi files (e.g. too long of chromosomes)
138
+ - Fix parsing on a tabix file that should be csi files (e.g. too long of
139
+ chromosomes)
132
140
 
133
141
  ## [1.1.4](https://github.com/GMOD/tabix-js/compare/v1.1.3...v1.1.4) (2019-02-23)
134
142
 
@@ -136,7 +144,8 @@
136
144
 
137
145
  ## [1.1.3](https://github.com/GMOD/tabix-js/compare/v1.1.2...v1.1.3) (2018-11-23)
138
146
 
139
- - Change to es6-promisify and quick-lru which can be babelified to IE11 (util.promisify and lru-cache used Object.defineProperty('length', ...))
147
+ - Change to es6-promisify and quick-lru which can be babelified to IE11
148
+ (util.promisify and lru-cache used Object.defineProperty('length', ...))
140
149
 
141
150
  ## [1.1.2](https://github.com/GMOD/tabix-js/compare/v1.1.1...v1.1.2) (2018-10-26)
142
151
 
package/dist/csi.d.ts CHANGED
@@ -8,22 +8,14 @@ export default class CSI extends IndexFile {
8
8
  private minShift;
9
9
  constructor(args: any);
10
10
  lineCount(refName: string, opts?: Options): Promise<number>;
11
- indexCov(): Promise<never[]>;
12
- parseAuxData(bytes: Buffer, offset: number, auxLength: number): {
13
- refIdToName: never[];
14
- refNameToId: {};
15
- skipLines?: undefined;
16
- metaChar?: undefined;
17
- columnNumbers?: undefined;
18
- format?: undefined;
19
- coordinateType?: undefined;
20
- } | {
11
+ indexCov(): Promise<void>;
12
+ parseAuxData(bytes: Buffer, offset: number): {
21
13
  refIdToName: string[];
22
14
  refNameToId: {
23
15
  [key: string]: number;
24
16
  };
25
17
  skipLines: number;
26
- metaChar: string;
18
+ metaChar: string | null;
27
19
  columnNumbers: {
28
20
  ref: number;
29
21
  start: number;
@@ -40,7 +32,7 @@ export default class CSI extends IndexFile {
40
32
  };
41
33
  _parse(opts?: Options): Promise<{
42
34
  csi: boolean;
43
- refCount: any;
35
+ refCount: number;
44
36
  maxBlockSize: number;
45
37
  firstDataLine: VirtualOffset | undefined;
46
38
  csiVersion: number;
@@ -59,6 +51,42 @@ export default class CSI extends IndexFile {
59
51
  refNameToId: {
60
52
  [key: string]: number;
61
53
  };
54
+ skipLines: number;
55
+ metaChar: string | null;
56
+ columnNumbers: {
57
+ ref: number;
58
+ start: number;
59
+ end: number;
60
+ };
61
+ format: string;
62
+ coordinateType: string;
63
+ } | {
64
+ csi: boolean;
65
+ refCount: number;
66
+ maxBlockSize: number;
67
+ firstDataLine: VirtualOffset | undefined;
68
+ csiVersion: number;
69
+ indices: {
70
+ binIndex: {
71
+ [key: string]: Chunk[];
72
+ };
73
+ stats: {
74
+ lineCount: number;
75
+ } | undefined;
76
+ }[];
77
+ depth: number;
78
+ maxBinNumber: number;
79
+ maxRefLength: number;
80
+ refIdToName: never[];
81
+ refNameToId: {};
82
+ metaChar: null;
83
+ columnNumbers: {
84
+ ref: number;
85
+ start: number;
86
+ end: number;
87
+ };
88
+ coordinateType: string;
89
+ format: string;
62
90
  }>;
63
91
  parsePseudoBin(bytes: Buffer, offset: number): {
64
92
  lineCount: number;
package/dist/csi.js CHANGED
@@ -77,16 +77,9 @@ class CSI extends indexFile_1.default {
77
77
  indexCov() {
78
78
  return __awaiter(this, void 0, void 0, function* () {
79
79
  throw new Error('CSI indexes do not support indexcov');
80
- return [];
81
80
  });
82
81
  }
83
- parseAuxData(bytes, offset, auxLength) {
84
- if (auxLength < 30) {
85
- return {
86
- refIdToName: [],
87
- refNameToId: {},
88
- };
89
- }
82
+ parseAuxData(bytes, offset) {
90
83
  const formatFlags = bytes.readInt32LE(offset);
91
84
  const coordinateType = formatFlags & 0x10000 ? 'zero-based-half-open' : '1-based-closed';
92
85
  const format = { 0: 'generic', 1: 'SAM', 2: 'VCF' }[formatFlags & 0xf];
@@ -99,10 +92,10 @@ class CSI extends indexFile_1.default {
99
92
  end: bytes.readInt32LE(offset + 12),
100
93
  };
101
94
  const metaValue = bytes.readInt32LE(offset + 16);
102
- const metaChar = metaValue ? String.fromCharCode(metaValue) : '';
95
+ const metaChar = metaValue ? String.fromCharCode(metaValue) : null;
103
96
  const skipLines = bytes.readInt32LE(offset + 20);
104
97
  const nameSectionLength = bytes.readInt32LE(offset + 24);
105
- const { refIdToName, refNameToId } = this._parseNameBytes(bytes.slice(offset + 28, offset + 28 + nameSectionLength));
98
+ const { refIdToName, refNameToId } = this._parseNameBytes(bytes.subarray(offset + 28, offset + 28 + nameSectionLength));
106
99
  return {
107
100
  refIdToName,
108
101
  refNameToId,
@@ -153,13 +146,16 @@ class CSI extends indexFile_1.default {
153
146
  this.maxBinNumber = ((1 << ((this.depth + 1) * 3)) - 1) / 7;
154
147
  const maxRefLength = Math.pow(2, (this.minShift + this.depth * 3));
155
148
  const auxLength = bytes.readInt32LE(12);
156
- let aux = {
157
- refIdToName: [],
158
- refNameToId: {},
159
- };
160
- if (auxLength) {
161
- aux = this.parseAuxData(bytes, 16, auxLength);
162
- }
149
+ const aux = auxLength && auxLength >= 30
150
+ ? this.parseAuxData(bytes, 16)
151
+ : {
152
+ refIdToName: [],
153
+ refNameToId: {},
154
+ metaChar: null,
155
+ columnNumbers: { ref: 0, start: 1, end: 2 },
156
+ coordinateType: 'zero-based-half-open',
157
+ format: 'generic',
158
+ };
163
159
  const refCount = bytes.readInt32LE(16 + auxLength);
164
160
  // read the indexes for each reference sequence
165
161
  let firstDataLine;
@@ -202,7 +198,7 @@ class CSI extends indexFile_1.default {
202
198
  });
203
199
  }
204
200
  parsePseudoBin(bytes, offset) {
205
- const lineCount = (0, util_1.longToNumber)(long_1.default.fromBytesLE(Array.prototype.slice.call(bytes, offset + 28, offset + 36), true));
201
+ const lineCount = (0, util_1.longToNumber)(long_1.default.fromBytesLE(bytes.subarray(offset + 28, offset + 36), true));
206
202
  return { lineCount };
207
203
  }
208
204
  blocksForRange(refName, min, max, opts = {}) {
package/dist/csi.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"csi.js","sourceRoot":"","sources":["../src/csi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"csi.js","sourceRoot":"","sources":["../src/csi.ts"],"names":[],"mappings":"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"}
@@ -5,28 +5,48 @@ export interface Options {
5
5
  [key: string]: unknown;
6
6
  signal?: AbortSignal;
7
7
  }
8
+ export interface IndexData {
9
+ refNameToId: {
10
+ [key: string]: number;
11
+ };
12
+ refIdToName: string[];
13
+ metaChar: string | null;
14
+ columnNumbers: {
15
+ ref: number;
16
+ start: number;
17
+ end: number;
18
+ };
19
+ coordinateType: string;
20
+ format: string;
21
+ [key: string]: any;
22
+ }
8
23
  export default abstract class IndexFile {
9
24
  filehandle: GenericFilehandle;
10
25
  renameRefSeq: (arg0: string) => string;
11
- private _parseCache;
12
- /**
13
- * @param {filehandle} filehandle
14
- * @param {function} [renameRefSeqs]
15
- */
26
+ private parseP?;
16
27
  constructor({ filehandle, renameRefSeqs, }: {
17
28
  filehandle: GenericFilehandle;
18
29
  renameRefSeqs?: (a: string) => string;
19
30
  });
20
31
  abstract lineCount(refName: string, args: Options): Promise<number>;
21
- protected abstract _parse(opts: Options): Promise<{
32
+ protected abstract _parse(opts: Options): Promise<IndexData>;
33
+ getMetadata(opts?: Options): Promise<{
34
+ [key: string]: any;
22
35
  refNameToId: {
23
36
  [key: string]: number;
24
37
  };
25
38
  refIdToName: string[];
39
+ metaChar: string | null;
40
+ columnNumbers: {
41
+ ref: number;
42
+ start: number;
43
+ end: number;
44
+ };
45
+ coordinateType: string;
46
+ format: string;
26
47
  }>;
27
- getMetadata(opts?: Options): Promise<any>;
28
48
  abstract blocksForRange(refName: string, start: number, end: number, opts: Options): Promise<Chunk[]>;
29
49
  _findFirstData(currentFdl: VirtualOffset | undefined, virtualOffset: VirtualOffset): VirtualOffset;
30
- parse(opts?: Options): Promise<any>;
50
+ parse(opts?: Options): Promise<IndexData>;
31
51
  hasRefSeq(seqId: number, opts?: Options): Promise<boolean>;
32
52
  }
package/dist/indexFile.js CHANGED
@@ -19,17 +19,8 @@ var __rest = (this && this.__rest) || function (s, e) {
19
19
  }
20
20
  return t;
21
21
  };
22
- var __importDefault = (this && this.__importDefault) || function (mod) {
23
- return (mod && mod.__esModule) ? mod : { "default": mod };
24
- };
25
22
  Object.defineProperty(exports, "__esModule", { value: true });
26
- const abortable_promise_cache_1 = __importDefault(require("abortable-promise-cache"));
27
- const quick_lru_1 = __importDefault(require("quick-lru"));
28
23
  class IndexFile {
29
- /**
30
- * @param {filehandle} filehandle
31
- * @param {function} [renameRefSeqs]
32
- */
33
24
  constructor({ filehandle, renameRefSeqs = (n) => n, }) {
34
25
  this.filehandle = filehandle;
35
26
  this.renameRefSeq = renameRefSeqs;
@@ -53,13 +44,13 @@ class IndexFile {
53
44
  }
54
45
  parse(opts = {}) {
55
46
  return __awaiter(this, void 0, void 0, function* () {
56
- if (!this._parseCache) {
57
- this._parseCache = new abortable_promise_cache_1.default({
58
- cache: new quick_lru_1.default({ maxSize: 1 }),
59
- fill: () => this._parse(opts),
47
+ if (!this.parseP) {
48
+ this.parseP = this._parse(opts).catch(e => {
49
+ this.parseP = undefined;
50
+ throw e;
60
51
  });
61
52
  }
62
- return this._parseCache.get('index', null, undefined);
53
+ return this.parseP;
63
54
  });
64
55
  }
65
56
  hasRefSeq(seqId, opts = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"indexFile.js","sourceRoot":"","sources":["../src/indexFile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sFAA2D;AAC3D,0DAAgC;AAWhC,MAA8B,SAAS;IAKrC;;;OAGG;IACH,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;IASY,WAAW,CAAC,OAAgB,EAAE;;YACzC,6DAA6D;YAC7D,MAAM,KAAuB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAA7C,EAAE,OAAO,OAAoC,EAA/B,IAAI,cAAlB,WAAoB,CAAyB,CAAA;YACnD,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;IASD,cAAc,CACZ,UAAqC,EACrC,aAA4B;QAE5B,IAAI,UAAU,EAAE;YACd,OAAO,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC;gBAC5C,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,UAAU,CAAA;SACf;aAAM;YACL,OAAO,aAAa,CAAA;SACrB;IACH,CAAC;IAEK,KAAK,CAAC,OAAgB,EAAE;;YAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,IAAI,CAAC,WAAW,GAAG,IAAI,iCAAqB,CAAC;oBAC3C,KAAK,EAAE,IAAI,mBAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;oBACnC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;iBAC9B,CAAC,CAAA;aACH;YACD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;QACvD,CAAC;KAAA;IAEK,SAAS,CAAC,KAAa,EAAE,OAAgB,EAAE;;YAC/C,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAA;QACnE,CAAC;KAAA;CACF;AAlED,4BAkEC"}
1
+ {"version":3,"file":"indexFile.js","sourceRoot":"","sources":["../src/indexFile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoBA,MAA8B,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;IAMY,WAAW,CAAC,OAAgB,EAAE;;YACzC,6DAA6D;YAC7D,MAAM,KAAuB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAA7C,EAAE,OAAO,OAAoC,EAA/B,IAAI,cAAlB,WAAoB,CAAyB,CAAA;YACnD,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;IASD,cAAc,CACZ,UAAqC,EACrC,aAA4B;QAE5B,IAAI,UAAU,EAAE;YACd,OAAO,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC;gBAC5C,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,UAAU,CAAA;SACf;aAAM;YACL,OAAO,aAAa,CAAA;SACrB;IACH,CAAC;IAEK,KAAK,CAAC,OAAgB,EAAE;;YAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBACxC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;oBACvB,MAAM,CAAC,CAAA;gBACT,CAAC,CAAC,CAAA;aACH;YACD,OAAO,IAAI,CAAC,MAAM,CAAA;QACpB,CAAC;KAAA;IAEK,SAAS,CAAC,KAAa,EAAE,OAAgB,EAAE;;YAC/C,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAA;QACnE,CAAC;KAAA;CACF;AA3DD,4BA2DC"}
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import { GenericFilehandle } from 'generic-filehandle';
3
- import { Options } from './indexFile';
3
+ import { Options, IndexData } from './indexFile';
4
4
  import Chunk from './chunk';
5
5
  type GetLinesCallback = (line: string, fileOffset: number) => void;
6
6
  interface GetLinesOpts {
@@ -12,6 +12,7 @@ export default class TabixIndexedFile {
12
12
  private filehandle;
13
13
  private index;
14
14
  private chunkSizeLimit;
15
+ private yieldTime;
15
16
  private renameRefSeq;
16
17
  private chunkCache;
17
18
  /**
@@ -22,39 +23,50 @@ export default class TabixIndexedFile {
22
23
  * @param {filehandle} [args.tbiFilehandle]
23
24
  * @param {string} [args.csiPath]
24
25
  * @param {filehandle} [args.csiFilehandle]
25
- * @param {chunkSizeLimit} default 50MiB
26
+ * @param {number} [args.yieldTime] yield to main thread after N milliseconds if reading features is taking a long time to avoid hanging main thread
26
27
  * @param {function} [args.renameRefSeqs] optional function with sig `string => string` to transform
27
28
  * reference sequence names for the purpose of indexing and querying. note that the data that is returned is
28
29
  * not altered, just the names of the reference sequences that are used for querying.
29
- * @param {number} [args.chunkCacheSize] maximum size in bytes of the chunk cache. default 5MB
30
- * @param {number} [args.blockCacheSize] maximum size in bytes of the block cache. default 5MB
31
30
  */
32
- constructor({ path, filehandle, tbiPath, tbiFilehandle, csiPath, csiFilehandle, chunkSizeLimit, renameRefSeqs, chunkCacheSize, }: {
31
+ constructor({ path, filehandle, tbiPath, tbiFilehandle, csiPath, csiFilehandle, yieldTime, chunkSizeLimit, renameRefSeqs, chunkCacheSize, }: {
33
32
  path?: string;
34
33
  filehandle?: GenericFilehandle;
35
34
  tbiPath?: string;
36
35
  tbiFilehandle?: GenericFilehandle;
37
36
  csiPath?: string;
38
37
  csiFilehandle?: GenericFilehandle;
38
+ yieldTime: number;
39
39
  chunkSizeLimit?: number;
40
40
  renameRefSeqs?: (n: string) => string;
41
41
  chunkCacheSize?: number;
42
42
  });
43
43
  /**
44
- * @param {string} refName name of the reference sequence
45
- * @param {number} start start of the region (in 0-based half-open coordinates)
46
- * @param {number} end end of the region (in 0-based half-open coordinates)
47
- * @param {function|object} lineCallback callback called for each line in the region. can also pass a object param containing obj.lineCallback, obj.signal, etc
48
- * @returns {Promise} resolved when the whole read is finished, rejected on error
44
+ * @param refName name of the reference sequence
45
+ * @param start start of the region (in 0-based half-open coordinates)
46
+ * @param end end of the region (in 0-based half-open coordinates)
47
+ * @param opts callback called for each line in the region. can also pass a object param containing obj.lineCallback, obj.signal, etc
48
+ * @returns promise that is resolved when the whole read is finished, rejected on error
49
49
  */
50
50
  getLines(refName: string, start: number, end: number, opts: GetLinesOpts | GetLinesCallback): Promise<void>;
51
- getMetadata(opts?: Options): Promise<any>;
51
+ getMetadata(opts?: Options): Promise<{
52
+ [key: string]: any;
53
+ refNameToId: {
54
+ [key: string]: number;
55
+ };
56
+ refIdToName: string[];
57
+ metaChar: string | null;
58
+ columnNumbers: {
59
+ ref: number;
60
+ start: number;
61
+ end: number;
62
+ };
63
+ coordinateType: string;
64
+ format: string;
65
+ }>;
52
66
  /**
53
67
  * get a buffer containing the "header" region of
54
68
  * the file, which are the bytes up to the first
55
69
  * non-meta line
56
- *
57
- * @returns {Promise} for a buffer
58
70
  */
59
71
  getHeaderBuffer(opts?: Options): Promise<Buffer>;
60
72
  /**
@@ -66,13 +78,10 @@ export default class TabixIndexedFile {
66
78
  getHeader(opts?: Options): Promise<string>;
67
79
  /**
68
80
  * get an array of reference sequence names, in the order in which
69
- * they occur in the file.
70
- *
71
- * reference sequence renaming is not applied to these names.
72
- *
73
- * @returns {Promise} for an array of string sequence names
81
+ * they occur in the file. reference sequence renaming is not applied
82
+ * to these names.
74
83
  */
75
- getReferenceSequenceNames(opts?: Options): Promise<any>;
84
+ getReferenceSequenceNames(opts?: Options): Promise<string[]>;
76
85
  /**
77
86
  * @param {object} metadata metadata object from the parsed index,
78
87
  * containing columnNumbers, metaChar, and format
@@ -83,16 +92,7 @@ export default class TabixIndexedFile {
83
92
  * @returns {object} like `{startCoordinate, overlaps}`. overlaps is boolean,
84
93
  * true if line is a data line that overlaps the given region
85
94
  */
86
- checkLine({ columnNumbers, metaChar, coordinateType, format, }: {
87
- columnNumbers: {
88
- ref: number;
89
- start: number;
90
- end: number;
91
- };
92
- metaChar: string;
93
- coordinateType: string;
94
- format: string;
95
- }, regionRefName: string, regionStart: number, regionEnd: number, line: string): {
95
+ checkLine(metadata: IndexData, regionRefName: string, regionStart: number, regionEnd: number, line: string): {
96
96
  overlaps: boolean;
97
97
  startCoordinate?: undefined;
98
98
  } | {
@@ -102,17 +102,19 @@ export default class TabixIndexedFile {
102
102
  _getVcfEnd(startCoordinate: number, refSeq: string, info: any): number;
103
103
  /**
104
104
  * return the approximate number of data lines in the given reference sequence
105
- * @param {string} refSeq reference sequence name
106
- * @returns {Promise} for number of data lines present on that reference sequence
105
+ * @param refSeq reference sequence name
106
+ * @returns number of data lines present on that reference sequence
107
107
  */
108
108
  lineCount(refName: string, opts?: Options): Promise<number>;
109
- _readRegion(position: number, compressedSize: number, opts?: Options): Promise<Buffer>;
109
+ _readRegion(pos: number, size: number, opts?: Options): Promise<Buffer>;
110
110
  /**
111
111
  * read and uncompress the data in a chunk (composed of one or more
112
112
  * contiguous bgzip blocks) of the file
113
- * @param {Chunk} chunk
114
- * @returns {Promise} for a string chunk of the file
115
113
  */
116
- readChunk(chunk: Chunk, opts?: Options): Promise<any>;
114
+ readChunk(c: Chunk, opts?: Options): Promise<{
115
+ buffer: Buffer;
116
+ cpositions: number[];
117
+ dpositions: number[];
118
+ }>;
117
119
  }
118
120
  export {};