@gmod/bbi 1.0.34 → 2.0.1

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.
Files changed (60) hide show
  1. package/CHANGELOG.md +17 -8
  2. package/dist/bbi.d.ts +2 -2
  3. package/dist/bbi.js +56 -59
  4. package/dist/bbi.js.map +1 -0
  5. package/dist/bigbed.d.ts +1 -2
  6. package/dist/bigbed.js +23 -20
  7. package/dist/bigbed.js.map +1 -0
  8. package/dist/bigwig.d.ts +1 -3
  9. package/dist/bigwig.js +5 -8
  10. package/dist/bigwig.js.map +1 -0
  11. package/dist/blockView.d.ts +8 -9
  12. package/dist/blockView.js +156 -95
  13. package/dist/blockView.js.map +1 -0
  14. package/dist/index.js +1 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/range.js +2 -0
  17. package/dist/range.js.map +1 -0
  18. package/dist/unzip-pako.d.ts +1 -1
  19. package/dist/unzip-pako.js +2 -1
  20. package/dist/unzip-pako.js.map +1 -0
  21. package/dist/unzip.js +1 -0
  22. package/dist/unzip.js.map +1 -0
  23. package/dist/util.d.ts +11 -1
  24. package/dist/util.js +10 -4
  25. package/dist/util.js.map +1 -0
  26. package/esm/bbi.d.ts +2 -2
  27. package/esm/bbi.js +62 -67
  28. package/esm/bbi.js.map +1 -0
  29. package/esm/bigbed.d.ts +1 -2
  30. package/esm/bigbed.js +42 -46
  31. package/esm/bigbed.js.map +1 -0
  32. package/esm/bigwig.d.ts +1 -3
  33. package/esm/bigwig.js +7 -14
  34. package/esm/bigwig.js.map +1 -0
  35. package/esm/blockView.d.ts +8 -9
  36. package/esm/blockView.js +168 -118
  37. package/esm/blockView.js.map +1 -0
  38. package/esm/index.js +3 -7
  39. package/esm/index.js.map +1 -0
  40. package/esm/range.js +3 -4
  41. package/esm/range.js.map +1 -0
  42. package/esm/unzip-pako.d.ts +1 -1
  43. package/esm/unzip-pako.js +4 -7
  44. package/esm/unzip-pako.js.map +1 -0
  45. package/esm/unzip.js +3 -5
  46. package/esm/unzip.js.map +1 -0
  47. package/esm/util.d.ts +11 -1
  48. package/esm/util.js +14 -15
  49. package/esm/util.js.map +1 -0
  50. package/package.json +14 -14
  51. package/src/bbi.ts +375 -0
  52. package/src/bigbed.ts +244 -0
  53. package/src/bigwig.ts +38 -0
  54. package/src/blockView.ts +496 -0
  55. package/src/declare.d.ts +2 -0
  56. package/src/index.ts +3 -0
  57. package/src/range.ts +142 -0
  58. package/src/unzip-pako.ts +5 -0
  59. package/src/unzip.ts +2 -0
  60. package/src/util.ts +83 -0
package/CHANGELOG.md CHANGED
@@ -1,26 +1,35 @@
1
- ## [1.0.34](https://github.com/GMOD/bbi-js/compare/v1.0.33...v1.0.34) (2022-03-11)
1
+ ## [2.0.1](https://github.com/GMOD/bbi-js/compare/v2.0.0...v2.0.1) (2022-07-18)
2
2
 
3
3
 
4
- ### Reverts
5
4
 
6
- * Revert "Use subarray instead of slice since slice is deprecated under node xref 'https://nodejs.org/api/buffer.html#bufslicestart-end'" ([44116cc](https://github.com/GMOD/bbi-js/commit/44116cce54601727d37f1c449bfcc60c1b4e602d))
5
+ - Bump generic-filehandle 2->3
7
6
 
7
+ # [2.0.0](https://github.com/GMOD/bbi-js/compare/v1.0.35...v2.0.0) (2022-07-18)
8
8
 
9
+ - Use binary-parser instead of @gmod/binary-parser, with some optimizations.
10
+ This uses BigInt and TextDecoder, so requires a major version bump
9
11
 
10
- - Back to slice instead of subarray, as subarray returned a UInt8Array instead
11
- of a true Buffer
12
+ ## [1.0.35](https://github.com/GMOD/bbi-js/compare/v1.0.34...v1.0.35) (2022-04-22)
12
13
 
13
- ## [1.0.33](https://github.com/GMOD/bbi-js/compare/v1.0.32...v1.0.33) (2022-02-25)
14
+ - Produce actual ESM module for the "module" field in package.json, was commonJS
15
+ - Add sourceMap:true to tsconfig
14
16
 
17
+ ## [1.0.34](https://github.com/GMOD/bbi-js/compare/v1.0.33...v1.0.34) (2022-03-11)
18
+
19
+ ### Reverts
15
20
 
21
+ - Revert "Use subarray instead of slice since slice is deprecated under node xref 'https://nodejs.org/api/buffer.html#bufslicestart-end'" ([44116cc](https://github.com/GMOD/bbi-js/commit/44116cce54601727d37f1c449bfcc60c1b4e602d))
22
+
23
+ * Back to slice instead of subarray, as subarray returned a UInt8Array instead
24
+ of a true Buffer
25
+
26
+ ## [1.0.33](https://github.com/GMOD/bbi-js/compare/v1.0.32...v1.0.33) (2022-02-25)
16
27
 
17
28
  - Use subarray instead of slice since slice is deprecated under node xref
18
29
  'https://nodejs.org/api/buffer.html#bufslicestart-end'"
19
30
 
20
31
  ## [1.0.32](https://github.com/GMOD/bbi-js/compare/v1.0.31...v1.0.32) (2022-02-16)
21
32
 
22
-
23
-
24
33
  - Use pako to decode on command line instead of using zlib to avoid need to
25
34
  manually polyfill zlib
26
35
 
package/dist/bbi.d.ts CHANGED
@@ -49,9 +49,9 @@ export interface RequestOptions {
49
49
  }
50
50
  export declare abstract class BBI {
51
51
  protected bbi: GenericFilehandle;
52
- protected headerCache: any;
52
+ private headerP?;
53
53
  protected renameRefSeqs: (a: string) => string;
54
- getHeader(opts?: RequestOptions | AbortSignal): any;
54
+ getHeader(opts?: RequestOptions | AbortSignal): Promise<Header>;
55
55
  constructor(options?: {
56
56
  filehandle?: GenericFilehandle;
57
57
  path?: string;
package/dist/bbi.js CHANGED
@@ -46,17 +46,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
46
46
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
47
  }
48
48
  };
49
- var __importDefault = (this && this.__importDefault) || function (mod) {
50
- return (mod && mod.__esModule) ? mod : { "default": mod };
51
- };
52
49
  Object.defineProperty(exports, "__esModule", { value: true });
53
50
  exports.BBI = void 0;
54
- var binary_parser_1 = require("@gmod/binary-parser");
51
+ var binary_parser_1 = require("binary-parser");
55
52
  var generic_filehandle_1 = require("generic-filehandle");
56
53
  var rxjs_1 = require("rxjs");
57
54
  var operators_1 = require("rxjs/operators");
58
- var abortable_promise_cache_1 = __importDefault(require("abortable-promise-cache"));
59
- var quick_lru_1 = __importDefault(require("quick-lru"));
60
55
  var blockView_1 = require("./blockView");
61
56
  var BIG_WIG_MAGIC = -2003829722;
62
57
  var BIG_BED_MAGIC = -2021002517;
@@ -84,6 +79,7 @@ function getParsers(isBE) {
84
79
  .array('zoomLevels', {
85
80
  length: 'numZoomLevels',
86
81
  type: new binary_parser_1.Parser()
82
+ .endianess(le)
87
83
  .uint32('reductionLevel')
88
84
  .uint32('reserved')
89
85
  .uint64('dataOffset')
@@ -92,10 +88,10 @@ function getParsers(isBE) {
92
88
  var totalSummaryParser = new binary_parser_1.Parser()
93
89
  .endianess(le)
94
90
  .uint64('basesCovered')
95
- .double('scoreMin')
96
- .double('scoreMax')
97
- .double('scoreSum')
98
- .double('scoreSumSquares');
91
+ .doublele('scoreMin')
92
+ .doublele('scoreMax')
93
+ .doublele('scoreSum')
94
+ .doublele('scoreSumSquares');
99
95
  var chromTreeParser = new binary_parser_1.Parser()
100
96
  .endianess(le)
101
97
  .uint32('magic')
@@ -107,7 +103,8 @@ function getParsers(isBE) {
107
103
  .endianess(le)
108
104
  .uint8('isLeafNode')
109
105
  .skip(1)
110
- .uint16('cnt');
106
+ .uint16('cnt')
107
+ .saveOffset('offset');
111
108
  return {
112
109
  chromTreeParser: chromTreeParser,
113
110
  totalSummaryParser: totalSummaryParser,
@@ -123,18 +120,9 @@ var BBI = /** @class */ (function () {
123
120
  * @param renameRefSeqs - an optional method to rename the internal reference sequences using a mapping function
124
121
  */
125
122
  function BBI(options) {
126
- var _this = this;
127
123
  if (options === void 0) { options = {}; }
128
- this.headerCache = new abortable_promise_cache_1.default({
129
- cache: new quick_lru_1.default({ maxSize: 1 }),
130
- fill: function (params, signal) { return __awaiter(_this, void 0, void 0, function () {
131
- return __generator(this, function (_a) {
132
- return [2 /*return*/, this._getHeader(__assign(__assign({}, params), { signal: signal }))];
133
- });
134
- }); },
135
- });
136
- var filehandle = options.filehandle, renameRefSeqs = options.renameRefSeqs, path = options.path, url = options.url;
137
- this.renameRefSeqs = renameRefSeqs || (function (s) { return s; });
124
+ var filehandle = options.filehandle, _a = options.renameRefSeqs, renameRefSeqs = _a === void 0 ? function (s) { return s; } : _a, path = options.path, url = options.url;
125
+ this.renameRefSeqs = renameRefSeqs;
138
126
  if (filehandle) {
139
127
  this.bbi = filehandle;
140
128
  }
@@ -153,9 +141,16 @@ var BBI = /** @class */ (function () {
153
141
  * @return a Header object
154
142
  */
155
143
  BBI.prototype.getHeader = function (opts) {
144
+ var _this = this;
156
145
  if (opts === void 0) { opts = {}; }
157
146
  var options = 'aborted' in opts ? { signal: opts } : opts;
158
- return this.headerCache.get(JSON.stringify(options), options, options.signal);
147
+ if (!this.headerP) {
148
+ this.headerP = this._getHeader(options).catch(function (e) {
149
+ _this.headerP = undefined;
150
+ throw e;
151
+ });
152
+ }
153
+ return this.headerP;
159
154
  };
160
155
  BBI.prototype._getHeader = function (opts) {
161
156
  return __awaiter(this, void 0, void 0, function () {
@@ -176,7 +171,7 @@ var BBI = /** @class */ (function () {
176
171
  BBI.prototype._getMainHeader = function (opts, requestSize) {
177
172
  if (requestSize === void 0) { requestSize = 2000; }
178
173
  return __awaiter(this, void 0, void 0, function () {
179
- var buffer, isBigEndian, ret, header, tail;
174
+ var buffer, isBigEndian, ret, header, magic, asOffset, totalSummaryOffset, off, tail;
180
175
  return __generator(this, function (_a) {
181
176
  switch (_a.label) {
182
177
  case 0: return [4 /*yield*/, this.bbi.read(Buffer.alloc(requestSize), 0, requestSize, 0, opts)];
@@ -184,23 +179,24 @@ var BBI = /** @class */ (function () {
184
179
  buffer = (_a.sent()).buffer;
185
180
  isBigEndian = this._isBigEndian(buffer);
186
181
  ret = getParsers(isBigEndian);
187
- header = ret.headerParser.parse(buffer).result;
188
- header.fileType = header.magic === BIG_BED_MAGIC ? 'bigbed' : 'bigwig';
189
- if (header.asOffset > requestSize ||
190
- header.totalSummaryOffset > requestSize) {
182
+ header = ret.headerParser.parse(buffer);
183
+ magic = header.magic, asOffset = header.asOffset, totalSummaryOffset = header.totalSummaryOffset;
184
+ header.fileType = magic === BIG_BED_MAGIC ? 'bigbed' : 'bigwig';
185
+ if (asOffset > requestSize || totalSummaryOffset > requestSize) {
191
186
  return [2 /*return*/, this._getMainHeader(opts, requestSize * 2)];
192
187
  }
193
- if (header.asOffset) {
188
+ if (asOffset) {
189
+ off = Number(header.asOffset);
194
190
  header.autoSql = buffer
195
- .slice(header.asOffset, buffer.indexOf(0, header.asOffset))
191
+ .subarray(off, buffer.indexOf(0, off))
196
192
  .toString('utf8');
197
193
  }
198
194
  if (header.totalSummaryOffset > requestSize) {
199
195
  return [2 /*return*/, this._getMainHeader(opts, requestSize * 2)];
200
196
  }
201
197
  if (header.totalSummaryOffset) {
202
- tail = buffer.slice(header.totalSummaryOffset);
203
- header.totalSummary = ret.totalSummaryParser.parse(tail).result;
198
+ tail = buffer.subarray(Number(header.totalSummaryOffset));
199
+ header.totalSummary = ret.totalSummaryParser.parse(tail);
204
200
  }
205
201
  return [2 /*return*/, __assign(__assign({}, header), { isBigEndian: isBigEndian })];
206
202
  }
@@ -221,7 +217,7 @@ var BBI = /** @class */ (function () {
221
217
  // todo: add progress if long running
222
218
  BBI.prototype._readChromTree = function (header, opts) {
223
219
  return __awaiter(this, void 0, void 0, function () {
224
- var isBE, le, refsByNumber, refsByName, chromTreeOffset, unzoomedDataOffset, data, p, keySize, leafNodeParser, nonleafNodeParser, rootNodeOffset, bptReadNode;
220
+ var isBE, le, refsByNumber, refsByName, unzoomedDataOffset, chromTreeOffset, off, buffer, p, keySize, leafNodeParser, nonleafNodeParser, rootNodeOffset, bptReadNode;
225
221
  var _this = this;
226
222
  return __generator(this, function (_a) {
227
223
  switch (_a.label) {
@@ -230,43 +226,46 @@ var BBI = /** @class */ (function () {
230
226
  le = isBE ? 'big' : 'little';
231
227
  refsByNumber = [];
232
228
  refsByName = {};
233
- chromTreeOffset = header.chromTreeOffset;
234
- unzoomedDataOffset = header.unzoomedDataOffset;
229
+ unzoomedDataOffset = Number(header.unzoomedDataOffset);
230
+ chromTreeOffset = Number(header.chromTreeOffset);
235
231
  while (unzoomedDataOffset % 4 !== 0) {
236
232
  unzoomedDataOffset += 1;
237
233
  }
238
- return [4 /*yield*/, this.bbi.read(Buffer.alloc(unzoomedDataOffset - chromTreeOffset), 0, unzoomedDataOffset - chromTreeOffset, chromTreeOffset, opts)];
234
+ off = unzoomedDataOffset - chromTreeOffset;
235
+ return [4 /*yield*/, this.bbi.read(Buffer.alloc(off), 0, off, Number(chromTreeOffset), opts)];
239
236
  case 1:
240
- data = (_a.sent()).buffer;
237
+ buffer = (_a.sent()).buffer;
241
238
  p = getParsers(isBE);
242
- keySize = p.chromTreeParser.parse(data).result.keySize;
239
+ keySize = p.chromTreeParser.parse(buffer).keySize;
243
240
  leafNodeParser = new binary_parser_1.Parser()
244
241
  .endianess(le)
245
242
  .string('key', { stripNull: true, length: keySize })
246
243
  .uint32('refId')
247
- .uint32('refSize');
244
+ .uint32('refSize')
245
+ .saveOffset('offset');
248
246
  nonleafNodeParser = new binary_parser_1.Parser()
249
247
  .endianess(le)
250
248
  .skip(keySize)
251
- .uint64('childOffset');
249
+ .uint64('childOffset')
250
+ .saveOffset('offset');
252
251
  rootNodeOffset = 32;
253
252
  bptReadNode = function (currentOffset) { return __awaiter(_this, void 0, void 0, function () {
254
- var offset, ret, _a, isLeafNode, cnt, n, leafRet, _b, key, refId, refSize, refRec, nextNodes, n, nonleafRet, childOffset;
255
- return __generator(this, function (_c) {
256
- switch (_c.label) {
253
+ var offset, ret, isLeafNode, cnt, n, leafRet, key, refId, refSize, refRec, nextNodes, n, nonleafRet, childOffset;
254
+ return __generator(this, function (_a) {
255
+ switch (_a.label) {
257
256
  case 0:
258
257
  offset = currentOffset;
259
- if (offset >= data.length) {
258
+ if (offset >= buffer.length) {
260
259
  throw new Error('reading beyond end of buffer');
261
260
  }
262
- ret = p.isLeafNode.parse(data.slice(offset));
263
- _a = ret.result, isLeafNode = _a.isLeafNode, cnt = _a.cnt;
261
+ ret = p.isLeafNode.parse(buffer.subarray(offset));
262
+ isLeafNode = ret.isLeafNode, cnt = ret.cnt;
264
263
  offset += ret.offset;
265
264
  if (!isLeafNode) return [3 /*break*/, 1];
266
265
  for (n = 0; n < cnt; n += 1) {
267
- leafRet = leafNodeParser.parse(data.slice(offset));
266
+ leafRet = leafNodeParser.parse(buffer.subarray(offset));
268
267
  offset += leafRet.offset;
269
- _b = leafRet.result, key = _b.key, refId = _b.refId, refSize = _b.refSize;
268
+ key = leafRet.key, refId = leafRet.refId, refSize = leafRet.refSize;
270
269
  refRec = { name: key, id: refId, length: refSize };
271
270
  refsByName[this.renameRefSeqs(key)] = refId;
272
271
  refsByNumber[refId] = refRec;
@@ -275,16 +274,15 @@ var BBI = /** @class */ (function () {
275
274
  case 1:
276
275
  nextNodes = [];
277
276
  for (n = 0; n < cnt; n += 1) {
278
- nonleafRet = nonleafNodeParser.parse(data.slice(offset));
279
- childOffset = nonleafRet.result.childOffset;
277
+ nonleafRet = nonleafNodeParser.parse(buffer.subarray(offset));
278
+ childOffset = nonleafRet.childOffset;
280
279
  offset += nonleafRet.offset;
281
- childOffset -= chromTreeOffset;
282
- nextNodes.push(bptReadNode(childOffset));
280
+ nextNodes.push(bptReadNode(Number(childOffset) - Number(chromTreeOffset)));
283
281
  }
284
282
  return [4 /*yield*/, Promise.all(nextNodes)];
285
283
  case 2:
286
- _c.sent();
287
- _c.label = 3;
284
+ _a.sent();
285
+ _a.label = 3;
288
286
  case 3: return [2 /*return*/];
289
287
  }
290
288
  });
@@ -306,15 +304,13 @@ var BBI = /** @class */ (function () {
306
304
  */
307
305
  BBI.prototype.getUnzoomedView = function (opts) {
308
306
  return __awaiter(this, void 0, void 0, function () {
309
- var _a, unzoomedIndexOffset, zoomLevels, refsByName, uncompressBufSize, isBigEndian, fileType, nzl, cirLen;
307
+ var _a, unzoomedIndexOffset, refsByName, uncompressBufSize, isBigEndian, fileType;
310
308
  return __generator(this, function (_b) {
311
309
  switch (_b.label) {
312
310
  case 0: return [4 /*yield*/, this.getHeader(opts)];
313
311
  case 1:
314
- _a = _b.sent(), unzoomedIndexOffset = _a.unzoomedIndexOffset, zoomLevels = _a.zoomLevels, refsByName = _a.refsByName, uncompressBufSize = _a.uncompressBufSize, isBigEndian = _a.isBigEndian, fileType = _a.fileType;
315
- nzl = zoomLevels[0];
316
- cirLen = nzl ? nzl.dataOffset - unzoomedIndexOffset : 4000;
317
- return [2 /*return*/, new blockView_1.BlockView(this.bbi, refsByName, unzoomedIndexOffset, cirLen, isBigEndian, uncompressBufSize > 0, fileType)];
312
+ _a = _b.sent(), unzoomedIndexOffset = _a.unzoomedIndexOffset, refsByName = _a.refsByName, uncompressBufSize = _a.uncompressBufSize, isBigEndian = _a.isBigEndian, fileType = _a.fileType;
313
+ return [2 /*return*/, new blockView_1.BlockView(this.bbi, refsByName, unzoomedIndexOffset, isBigEndian, uncompressBufSize > 0, fileType)];
318
314
  }
319
315
  });
320
316
  });
@@ -389,3 +385,4 @@ var BBI = /** @class */ (function () {
389
385
  return BBI;
390
386
  }());
391
387
  exports.BBI = BBI;
388
+ //# sourceMappingURL=bbi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bbi.js","sourceRoot":"","sources":["../src/bbi.ts"],"names":[],"mappings":"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"}
package/dist/bigbed.d.ts CHANGED
@@ -3,9 +3,8 @@ import { BlockView } from './blockView';
3
3
  export declare function filterUndef<T>(ts: (T | undefined)[]): T[];
4
4
  export declare class BigBed extends BBI {
5
5
  readIndicesCache: any;
6
- constructor(opts?: any);
7
6
  readIndices(opts?: AbortSignal | RequestOptions): any;
8
- protected getView(scale: number, opts: RequestOptions): Promise<BlockView>;
7
+ protected getView(_scale: number, opts: RequestOptions): Promise<BlockView>;
9
8
  private _readIndices;
10
9
  private searchExtraIndexBlocks;
11
10
  searchExtraIndex(name: string, opts?: RequestOptions): Promise<Feature[]>;
package/dist/bigbed.js CHANGED
@@ -66,7 +66,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
66
66
  };
67
67
  Object.defineProperty(exports, "__esModule", { value: true });
68
68
  exports.BigBed = exports.filterUndef = void 0;
69
- var binary_parser_1 = require("@gmod/binary-parser");
69
+ var binary_parser_1 = require("binary-parser");
70
70
  var rxjs_1 = require("rxjs");
71
71
  var operators_1 = require("rxjs/operators");
72
72
  var abortable_promise_cache_1 = __importDefault(require("abortable-promise-cache"));
@@ -78,8 +78,8 @@ function filterUndef(ts) {
78
78
  exports.filterUndef = filterUndef;
79
79
  var BigBed = /** @class */ (function (_super) {
80
80
  __extends(BigBed, _super);
81
- function BigBed(opts) {
82
- var _this = _super.call(this, opts) || this;
81
+ function BigBed() {
82
+ var _this = _super !== null && _super.apply(this, arguments) || this;
83
83
  _this.readIndicesCache = new abortable_promise_cache_1.default({
84
84
  cache: new quick_lru_1.default({ maxSize: 1 }),
85
85
  fill: function (args, signal) { return __awaiter(_this, void 0, void 0, function () {
@@ -101,7 +101,7 @@ var BigBed = /** @class */ (function (_super) {
101
101
  * @param abortSignal - an optional AbortSignal to kill operation
102
102
  * @return promise for a BlockView
103
103
  */
104
- BigBed.prototype.getView = function (scale, opts) {
104
+ BigBed.prototype.getView = function (_scale, opts) {
105
105
  return __awaiter(this, void 0, void 0, function () {
106
106
  return __generator(this, function (_a) {
107
107
  return [2 /*return*/, this.getUnzoomedView(opts)];
@@ -121,7 +121,7 @@ var BigBed = /** @class */ (function (_super) {
121
121
  case 0: return [4 /*yield*/, this.getHeader(opts)];
122
122
  case 1:
123
123
  _a = _b.sent(), extHeaderOffset = _a.extHeaderOffset, isBigEndian = _a.isBigEndian;
124
- return [4 /*yield*/, this.bbi.read(Buffer.alloc(64), 0, 64, extHeaderOffset)];
124
+ return [4 /*yield*/, this.bbi.read(Buffer.alloc(64), 0, 64, Number(extHeaderOffset))];
125
125
  case 2:
126
126
  data = (_b.sent()).buffer;
127
127
  le = isBigEndian ? 'big' : 'little';
@@ -130,7 +130,7 @@ var BigBed = /** @class */ (function (_super) {
130
130
  .uint16('size')
131
131
  .uint16('count')
132
132
  .uint64('offset')
133
- .parse(data).result;
133
+ .parse(data);
134
134
  count = ret.count, offset = ret.offset;
135
135
  // no extra index is defined if count==0
136
136
  if (count === 0) {
@@ -138,7 +138,7 @@ var BigBed = /** @class */ (function (_super) {
138
138
  }
139
139
  blocklen = 20;
140
140
  len = blocklen * count;
141
- return [4 /*yield*/, this.bbi.read(Buffer.alloc(len), 0, len, offset)];
141
+ return [4 /*yield*/, this.bbi.read(Buffer.alloc(len), 0, len, Number(offset))];
142
142
  case 3:
143
143
  buffer = (_b.sent()).buffer;
144
144
  extParser = new binary_parser_1.Parser()
@@ -150,7 +150,7 @@ var BigBed = /** @class */ (function (_super) {
150
150
  .int16('field');
151
151
  indices = [];
152
152
  for (i = 0; i < count; i += 1) {
153
- indices.push(extParser.parse(buffer.slice(i * blocklen)).result);
153
+ indices.push(extParser.parse(buffer.subarray(i * blocklen)));
154
154
  }
155
155
  return [2 /*return*/, indices];
156
156
  }
@@ -182,25 +182,26 @@ var BigBed = /** @class */ (function (_super) {
182
182
  return [2 /*return*/, []];
183
183
  }
184
184
  locs = indices.map(function (index) { return __awaiter(_this, void 0, void 0, function () {
185
- var offset, field, data, p, _a, blockSize, keySize, valSize, bpt, bptReadNode, rootNodeOffset;
185
+ var offset, field, data, le, p, _a, blockSize, keySize, valSize, bpt, bptReadNode, rootNodeOffset;
186
186
  var _this = this;
187
187
  return __generator(this, function (_b) {
188
188
  switch (_b.label) {
189
189
  case 0:
190
190
  offset = index.offset, field = index.field;
191
- return [4 /*yield*/, this.bbi.read(Buffer.alloc(32), 0, 32, offset, opts)];
191
+ return [4 /*yield*/, this.bbi.read(Buffer.alloc(32), 0, 32, Number(offset), opts)];
192
192
  case 1:
193
193
  data = (_b.sent()).buffer;
194
+ le = isBigEndian ? 'big' : 'little';
194
195
  p = new binary_parser_1.Parser()
195
- .endianess(isBigEndian ? 'big' : 'little')
196
+ .endianess(le)
196
197
  .int32('magic')
197
198
  .int32('blockSize')
198
199
  .int32('keySize')
199
200
  .int32('valSize')
200
201
  .uint64('itemCount');
201
- _a = p.parse(data).result, blockSize = _a.blockSize, keySize = _a.keySize, valSize = _a.valSize;
202
+ _a = p.parse(data), blockSize = _a.blockSize, keySize = _a.keySize, valSize = _a.valSize;
202
203
  bpt = new binary_parser_1.Parser()
203
- .endianess(isBigEndian ? 'big' : 'little')
204
+ .endianess(le)
204
205
  .int8('nodeType')
205
206
  .skip(1)
206
207
  .int16('cnt')
@@ -210,12 +211,14 @@ var BigBed = /** @class */ (function (_super) {
210
211
  0: new binary_parser_1.Parser().array('leafkeys', {
211
212
  length: 'cnt',
212
213
  type: new binary_parser_1.Parser()
214
+ .endianess(le)
213
215
  .string('key', { length: keySize, stripNull: true })
214
216
  .uint64('offset'),
215
217
  }),
216
218
  1: new binary_parser_1.Parser().array('keys', {
217
219
  length: 'cnt',
218
220
  type: new binary_parser_1.Parser()
221
+ .endianess(le)
219
222
  .string('key', { length: keySize, stripNull: true })
220
223
  .uint64('offset')
221
224
  .uint32('length')
@@ -224,15 +227,16 @@ var BigBed = /** @class */ (function (_super) {
224
227
  },
225
228
  });
226
229
  bptReadNode = function (nodeOffset) { return __awaiter(_this, void 0, void 0, function () {
227
- var len, buffer, node, lastOffset, i, key, i;
230
+ var val, len, buffer, node, lastOffset, i, key, i;
228
231
  return __generator(this, function (_a) {
229
232
  switch (_a.label) {
230
233
  case 0:
234
+ val = Number(nodeOffset);
231
235
  len = 4 + blockSize * (keySize + valSize);
232
- return [4 /*yield*/, this.bbi.read(Buffer.alloc(len), 0, len, nodeOffset, opts)];
236
+ return [4 /*yield*/, this.bbi.read(Buffer.alloc(len), 0, len, val, opts)];
233
237
  case 1:
234
238
  buffer = (_a.sent()).buffer;
235
- node = bpt.parse(buffer).result;
239
+ node = bpt.parse(buffer);
236
240
  if (node.leafkeys) {
237
241
  lastOffset = void 0;
238
242
  for (i = 0; i < node.leafkeys.length; i += 1) {
@@ -254,7 +258,7 @@ var BigBed = /** @class */ (function (_super) {
254
258
  });
255
259
  }); };
256
260
  rootNodeOffset = 32;
257
- return [2 /*return*/, bptReadNode(offset + rootNodeOffset)];
261
+ return [2 /*return*/, bptReadNode(Number(offset) + rootNodeOffset)];
258
262
  }
259
263
  });
260
264
  }); });
@@ -301,9 +305,7 @@ var BigBed = /** @class */ (function (_super) {
301
305
  return [4 /*yield*/, rxjs_1.merge.apply(void 0, res).toPromise()];
302
306
  case 3:
303
307
  ret = _a.sent();
304
- return [2 /*return*/, ret.filter(function (f) {
305
- return f.rest.split('\t')[f.field - 3] === name;
306
- })];
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; })];
307
309
  }
308
310
  });
309
311
  });
@@ -311,3 +313,4 @@ var BigBed = /** @class */ (function (_super) {
311
313
  return BigBed;
312
314
  }(bbi_1.BBI));
313
315
  exports.BigBed = BigBed;
316
+ //# sourceMappingURL=bigbed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigbed.js","sourceRoot":"","sources":["../src/bigbed.ts"],"names":[],"mappings":"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"}
package/dist/bigwig.d.ts CHANGED
@@ -4,9 +4,7 @@ export declare class BigWig extends BBI {
4
4
  /**
5
5
  * Retrieves a BlockView of a specific zoomLevel
6
6
  *
7
- * @param refName - The chromosome name
8
- * @param start - The start of a region
9
- * @param end - The end of a region
7
+ * @param scale - number
10
8
  * @param opts - An object containing basesPerSpan (e.g. pixels per basepair) or scale used to infer the zoomLevel to use
11
9
  */
12
10
  protected getView(scale: number, opts: RequestOptions): Promise<BlockView>;
package/dist/bigwig.js CHANGED
@@ -62,14 +62,12 @@ var BigWig = /** @class */ (function (_super) {
62
62
  /**
63
63
  * Retrieves a BlockView of a specific zoomLevel
64
64
  *
65
- * @param refName - The chromosome name
66
- * @param start - The start of a region
67
- * @param end - The end of a region
65
+ * @param scale - number
68
66
  * @param opts - An object containing basesPerSpan (e.g. pixels per basepair) or scale used to infer the zoomLevel to use
69
67
  */
70
68
  BigWig.prototype.getView = function (scale, opts) {
71
69
  return __awaiter(this, void 0, void 0, function () {
72
- var _a, zoomLevels, refsByName, fileSize, isBigEndian, uncompressBufSize, basesPerPx, maxLevel, i, zh, indexLength;
70
+ var _a, zoomLevels, refsByName, fileSize, isBigEndian, uncompressBufSize, basesPerPx, maxLevel, i, zh, indexOffset;
73
71
  return __generator(this, function (_b) {
74
72
  switch (_b.label) {
75
73
  case 0: return [4 /*yield*/, this.getHeader(opts)];
@@ -84,10 +82,8 @@ var BigWig = /** @class */ (function (_super) {
84
82
  for (i = maxLevel; i >= 0; i -= 1) {
85
83
  zh = zoomLevels[i];
86
84
  if (zh && zh.reductionLevel <= 2 * basesPerPx) {
87
- indexLength = i < zoomLevels.length - 1
88
- ? zoomLevels[i + 1].dataOffset - zh.indexOffset
89
- : fileSize - 4 - zh.indexOffset;
90
- return [2 /*return*/, new blockView_1.BlockView(this.bbi, refsByName, zh.indexOffset, indexLength, isBigEndian, uncompressBufSize > 0, 'summary')];
85
+ indexOffset = Number(zh.indexOffset);
86
+ return [2 /*return*/, new blockView_1.BlockView(this.bbi, refsByName, indexOffset, isBigEndian, uncompressBufSize > 0, 'summary')];
91
87
  }
92
88
  }
93
89
  return [2 /*return*/, this.getUnzoomedView(opts)];
@@ -98,3 +94,4 @@ var BigWig = /** @class */ (function (_super) {
98
94
  return BigWig;
99
95
  }(bbi_1.BBI));
100
96
  exports.BigWig = BigWig;
97
+ //# sourceMappingURL=bigwig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigwig.js","sourceRoot":"","sources":["../src/bigwig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAuC;AACvC,6BAA2C;AAE3C;IAA4B,0BAAG;IAA/B;;IAkCA,CAAC;IAjCC;;;;;OAKG;IACa,wBAAO,GAAvB,UAAwB,KAAa,EAAE,IAAoB;;;;;4BAEvD,qBAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAA;;wBADtB,KACJ,SAA0B,EADpB,UAAU,gBAAA,EAAE,UAAU,gBAAA,EAAE,QAAQ,cAAA,EAAE,WAAW,iBAAA,EAAE,iBAAiB,uBAAA;wBAElE,UAAU,GAAG,CAAC,GAAG,KAAK,CAAA;wBACxB,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAA;wBAChC,IAAI,CAAC,QAAQ,EAAE;4BACb,4EAA4E;4BAC5E,QAAQ,IAAI,CAAC,CAAA;yBACd;wBAED,KAAS,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;4BAC/B,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;4BACxB,IAAI,EAAE,IAAI,EAAE,CAAC,cAAc,IAAI,CAAC,GAAG,UAAU,EAAE;gCACvC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;gCAE1C,sBAAO,IAAI,qBAAS,CAClB,IAAI,CAAC,GAAG,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,GAAG,CAAC,EACrB,SAAS,CACV,EAAA;6BACF;yBACF;wBACD,sBAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAA;;;;KAClC;IACH,aAAC;AAAD,CAAC,AAlCD,CAA4B,SAAG,GAkC9B;AAlCY,wBAAM"}
@@ -18,25 +18,24 @@ interface Options {
18
18
  * @constructs
19
19
  */
20
20
  export declare class BlockView {
21
- private cirTreeOffset;
22
- private cirTreeLength;
23
21
  private bbi;
24
- private isCompressed;
25
- private isBigEndian;
26
22
  private refsByName;
23
+ private cirTreeOffset;
24
+ private isBigEndian;
25
+ private isCompressed;
27
26
  private blockType;
28
27
  private cirTreePromise?;
29
28
  private featureCache;
30
29
  private leafParser;
31
- private bigWigParser;
32
30
  private bigBedParser;
33
- private summaryParser;
34
- constructor(bbi: GenericFilehandle, refsByName: any, cirTreeOffset: number, cirTreeLength: number, isBigEndian: boolean, isCompressed: boolean, blockType: string);
31
+ constructor(bbi: GenericFilehandle, refsByName: any, cirTreeOffset: number, isBigEndian: boolean, isCompressed: boolean, blockType: string);
35
32
  readWigData(chrName: string, start: number, end: number, observer: Observer<Feature[]>, opts: Options): Promise<void>;
36
33
  private parseSummaryBlock;
37
34
  private parseBigBedBlock;
38
35
  private parseBigWigBlock;
39
- private static coordFilter;
40
- readFeatures(observer: Observer<Feature[]>, blocks: any, opts?: Options): Promise<void>;
36
+ readFeatures(observer: Observer<Feature[]>, blocks: {
37
+ offset: bigint;
38
+ length: bigint;
39
+ }[], opts?: Options): Promise<void>;
41
40
  }
42
41
  export {};