@gmod/bbi 1.0.35 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/blockView.js CHANGED
@@ -1,12 +1,16 @@
1
- import { Parser } from '@gmod/binary-parser';
1
+ import { Parser } from 'binary-parser';
2
2
  import AbortablePromiseCache from 'abortable-promise-cache';
3
- import { unzip } from './unzip';
4
3
  import QuickLRU from 'quick-lru';
4
+ // locals
5
5
  import Range from './range';
6
+ import { unzip } from './unzip';
6
7
  import { groupBlocks, checkAbortSignal } from './util';
7
8
  const BIG_WIG_TYPE_GRAPH = 1;
8
9
  const BIG_WIG_TYPE_VSTEP = 2;
9
10
  const BIG_WIG_TYPE_FSTEP = 3;
11
+ function coordFilter(s1, e1, s2, e2) {
12
+ return s1 < e2 && e1 >= s2;
13
+ }
10
14
  function getParsers(isBigEndian) {
11
15
  const le = isBigEndian ? 'big' : 'little';
12
16
  const summaryParser = new Parser()
@@ -15,10 +19,11 @@ function getParsers(isBigEndian) {
15
19
  .uint32('start')
16
20
  .uint32('end')
17
21
  .uint32('validCnt')
18
- .float('minScore')
19
- .float('maxScore')
20
- .float('sumData')
21
- .float('sumSqData');
22
+ .floatle('minScore')
23
+ .floatle('maxScore')
24
+ .floatle('sumData')
25
+ .floatle('sumSqData')
26
+ .saveOffset('offset');
22
27
  const leafParser = new Parser()
23
28
  .endianess(le)
24
29
  .uint8('isLeaf')
@@ -27,24 +32,28 @@ function getParsers(isBigEndian) {
27
32
  .choice({
28
33
  tag: 'isLeaf',
29
34
  choices: {
30
- 1: new Parser().array('blocksToFetch', {
35
+ 1: new Parser().endianess(le).array('blocksToFetch', {
31
36
  length: 'cnt',
32
37
  type: new Parser()
38
+ .endianess(le)
33
39
  .uint32('startChrom')
34
40
  .uint32('startBase')
35
41
  .uint32('endChrom')
36
42
  .uint32('endBase')
37
43
  .uint64('blockOffset')
38
- .uint64('blockSize'),
44
+ .uint64('blockSize')
45
+ .saveOffset('offset'),
39
46
  }),
40
47
  0: new Parser().array('recurOffsets', {
41
48
  length: 'cnt',
42
49
  type: new Parser()
50
+ .endianess(le)
43
51
  .uint32('startChrom')
44
52
  .uint32('startBase')
45
53
  .uint32('endChrom')
46
54
  .uint32('endBase')
47
- .uint64('blockOffset'),
55
+ .uint64('blockOffset')
56
+ .saveOffset('offset'),
48
57
  }),
49
58
  },
50
59
  });
@@ -55,7 +64,8 @@ function getParsers(isBigEndian) {
55
64
  .int32('end')
56
65
  .string('rest', {
57
66
  zeroTerminated: true,
58
- });
67
+ })
68
+ .saveOffset('offset');
59
69
  const bigWigParser = new Parser()
60
70
  .endianess(le)
61
71
  .skip(4)
@@ -71,15 +81,19 @@ function getParsers(isBigEndian) {
71
81
  choices: {
72
82
  [BIG_WIG_TYPE_FSTEP]: new Parser().array('items', {
73
83
  length: 'itemCount',
74
- type: new Parser().float('score'),
84
+ type: new Parser().floatle('score'),
75
85
  }),
76
86
  [BIG_WIG_TYPE_VSTEP]: new Parser().array('items', {
77
87
  length: 'itemCount',
78
- type: new Parser().int32('start').float('score'),
88
+ type: new Parser().endianess(le).int32('start').floatle('score'),
79
89
  }),
80
90
  [BIG_WIG_TYPE_GRAPH]: new Parser().array('items', {
81
91
  length: 'itemCount',
82
- type: new Parser().int32('start').int32('end').float('score'),
92
+ type: new Parser()
93
+ .endianess(le)
94
+ .int32('start')
95
+ .int32('end')
96
+ .floatle('score'),
83
97
  }),
84
98
  },
85
99
  });
@@ -98,43 +112,42 @@ function getParsers(isBigEndian) {
98
112
  * @constructs
99
113
  */
100
114
  export class BlockView {
101
- constructor(bbi, refsByName, cirTreeOffset, cirTreeLength, isBigEndian, isCompressed, blockType) {
115
+ constructor(bbi, refsByName, cirTreeOffset, isBigEndian, isCompressed, blockType) {
116
+ this.bbi = bbi;
117
+ this.refsByName = refsByName;
118
+ this.cirTreeOffset = cirTreeOffset;
119
+ this.isBigEndian = isBigEndian;
120
+ this.isCompressed = isCompressed;
121
+ this.blockType = blockType;
102
122
  this.featureCache = new AbortablePromiseCache({
103
123
  cache: new QuickLRU({ maxSize: 1000 }),
104
124
  fill: async (requestData, signal) => {
105
- const { length, offset } = requestData;
106
- const { buffer } = await this.bbi.read(Buffer.alloc(length), 0, length, offset, { signal });
125
+ const len = Number(requestData.length);
126
+ const off = Number(requestData.offset);
127
+ const { buffer } = await this.bbi.read(Buffer.alloc(len), 0, len, off, {
128
+ signal,
129
+ });
107
130
  return buffer;
108
131
  },
109
132
  });
110
133
  if (!(cirTreeOffset >= 0)) {
111
134
  throw new Error('invalid cirTreeOffset!');
112
135
  }
113
- if (!(cirTreeLength > 0)) {
114
- throw new Error('invalid cirTreeLength!');
115
- }
116
- this.cirTreeOffset = cirTreeOffset;
117
- this.cirTreeLength = cirTreeLength;
118
- this.isCompressed = isCompressed;
119
- this.refsByName = refsByName;
120
- this.isBigEndian = isBigEndian;
121
- this.bbi = bbi;
122
- this.blockType = blockType;
123
- Object.assign(this, getParsers(isBigEndian));
136
+ const parsers = getParsers(isBigEndian);
137
+ this.leafParser = parsers.leafParser;
138
+ this.bigBedParser = parsers.bigBedParser;
124
139
  }
125
140
  async readWigData(chrName, start, end, observer, opts) {
126
141
  try {
127
142
  const { refsByName, bbi, cirTreeOffset, isBigEndian } = this;
128
- const { signal } = opts;
129
143
  const chrId = refsByName[chrName];
130
144
  if (chrId === undefined) {
131
145
  observer.complete();
132
146
  }
133
147
  const request = { chrId, start, end };
134
148
  if (!this.cirTreePromise) {
135
- this.cirTreePromise = bbi.read(Buffer.alloc(48), 0, 48, cirTreeOffset, {
136
- signal,
137
- });
149
+ const off = Number(cirTreeOffset);
150
+ this.cirTreePromise = bbi.read(Buffer.alloc(48), 0, 48, off, opts);
138
151
  }
139
152
  const { buffer } = await this.cirTreePromise;
140
153
  const cirBlockSize = isBigEndian
@@ -144,10 +157,12 @@ export class BlockView {
144
157
  let outstanding = 0;
145
158
  const cirFobRecur2 = (cirBlockData, offset, level) => {
146
159
  try {
147
- const data = cirBlockData.slice(offset);
148
- const p = this.leafParser.parse(data).result;
160
+ const data = cirBlockData.subarray(offset);
161
+ const p = this.leafParser.parse(data);
149
162
  if (p.blocksToFetch) {
150
- blocksToFetch = blocksToFetch.concat(p.blocksToFetch.filter(filterFeats).map((l) => ({
163
+ blocksToFetch = blocksToFetch.concat(p.blocksToFetch
164
+ .filter(filterFeats)
165
+ .map((l) => ({
151
166
  offset: l.blockOffset,
152
167
  length: l.blockSize,
153
168
  })));
@@ -155,7 +170,7 @@ export class BlockView {
155
170
  if (p.recurOffsets) {
156
171
  const recurOffsets = p.recurOffsets
157
172
  .filter(filterFeats)
158
- .map((l) => l.blockOffset);
173
+ .map((l) => Number(l.blockOffset));
159
174
  if (recurOffsets.length > 0) {
160
175
  cirFobRecur(recurOffsets, level + 1);
161
176
  }
@@ -174,7 +189,7 @@ export class BlockView {
174
189
  try {
175
190
  const length = fr.max() - fr.min();
176
191
  const offset = fr.min();
177
- const resultBuffer = await this.featureCache.get(`${length}_${offset}`, { length, offset }, signal);
192
+ const resultBuffer = await this.featureCache.get(`${length}_${offset}`, { length, offset }, opts.signal);
178
193
  for (let i = 0; i < off.length; i += 1) {
179
194
  if (fr.contains(off[i])) {
180
195
  cirFobRecur2(resultBuffer, off[i] - offset, level);
@@ -192,7 +207,7 @@ export class BlockView {
192
207
  const cirFobRecur = (offset, level) => {
193
208
  try {
194
209
  outstanding += offset.length;
195
- const maxCirBlockSpan = 4 + cirBlockSize * 32; // Upper bound on size, based on a completely full leaf node.
210
+ const maxCirBlockSpan = 4 + Number(cirBlockSize) * 32; // Upper bound on size, based on a completely full leaf node.
196
211
  let spans = new Range(offset[0], offset[0] + maxCirBlockSpan);
197
212
  for (let i = 1; i < offset.length; i += 1) {
198
213
  const blockSpan = new Range(offset[i], offset[i] + maxCirBlockSpan);
@@ -204,71 +219,114 @@ export class BlockView {
204
219
  observer.error(e);
205
220
  }
206
221
  };
207
- return cirFobRecur([cirTreeOffset + 48], 1);
222
+ return cirFobRecur([Number(cirTreeOffset) + 48], 1);
208
223
  }
209
224
  catch (e) {
210
225
  observer.error(e);
211
226
  }
212
227
  }
213
- parseSummaryBlock(data, startOffset, request) {
228
+ parseSummaryBlock(buffer, startOffset, request) {
214
229
  const features = [];
215
- let currOffset = startOffset;
216
- while (currOffset < data.byteLength) {
217
- const res = this.summaryParser.parse(data.slice(currOffset));
218
- features.push(res.result);
219
- currOffset += res.offset;
220
- }
221
- let items = features;
222
- if (request) {
223
- items = items.filter(elt => elt.chromId === request.chrId);
230
+ let offset = startOffset;
231
+ const dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);
232
+ while (offset < buffer.byteLength) {
233
+ // this was extracted from looking at the runtime code generated by
234
+ // binary-parser
235
+ const chromId = dataView.getUint32(offset, true);
236
+ offset += 4;
237
+ const start = dataView.getUint32(offset, true);
238
+ offset += 4;
239
+ const end = dataView.getUint32(offset, true);
240
+ offset += 4;
241
+ const validCnt = dataView.getUint32(offset, true);
242
+ offset += 4;
243
+ const minScore = dataView.getFloat32(offset, true);
244
+ offset += 4;
245
+ const maxScore = dataView.getFloat32(offset, true);
246
+ offset += 4;
247
+ const sumData = dataView.getFloat32(offset, true);
248
+ offset += 4;
249
+ // unused
250
+ // const sumSqData = dataView.getFloat32(offset, true)
251
+ offset += 4;
252
+ if (request
253
+ ? chromId === request.chrId &&
254
+ coordFilter(start, end, request.start, request.end)
255
+ : true) {
256
+ features.push({
257
+ start,
258
+ end,
259
+ maxScore,
260
+ minScore,
261
+ summary: true,
262
+ score: sumData / (validCnt || 1),
263
+ });
264
+ }
224
265
  }
225
- const feats = items.map((elt) => ({
226
- start: elt.start,
227
- end: elt.end,
228
- maxScore: elt.maxScore,
229
- minScore: elt.minScore,
230
- score: elt.sumData / (elt.validCnt || 1),
231
- summary: true,
232
- }));
233
- return request
234
- ? feats.filter(f => BlockView.coordFilter(f, request))
235
- : feats;
266
+ return features;
236
267
  }
237
268
  parseBigBedBlock(data, startOffset, offset, request) {
238
269
  const items = [];
239
270
  let currOffset = startOffset;
240
271
  while (currOffset < data.byteLength) {
241
- const res = this.bigBedParser.parse(data.slice(currOffset));
242
- res.result.uniqueId = `bb-${offset + currOffset}`;
243
- items.push(res.result);
272
+ const res = this.bigBedParser.parse(data.subarray(currOffset));
273
+ items.push({ ...res, uniqueId: `bb-${offset + currOffset}` });
244
274
  currOffset += res.offset;
245
275
  }
246
276
  return request
247
- ? items.filter((f) => BlockView.coordFilter(f, request))
277
+ ? items.filter((f) => coordFilter(f.start, f.end, request.start, request.end))
248
278
  : items;
249
279
  }
250
- parseBigWigBlock(bytes, startOffset, request) {
251
- const data = bytes.slice(startOffset);
252
- const results = this.bigWigParser.parse(data).result;
253
- const { items, itemSpan, itemStep, blockStart, blockType } = results;
254
- if (blockType === BIG_WIG_TYPE_FSTEP) {
255
- for (let i = 0; i < items.length; i++) {
256
- items[i].start = blockStart + i * itemStep;
257
- items[i].end = blockStart + i * itemStep + itemSpan;
258
- }
259
- }
260
- else if (blockType === BIG_WIG_TYPE_VSTEP) {
261
- for (let i = 0; i < items.length; i++) {
262
- items[i].end = items[i].start + itemSpan;
263
- }
280
+ parseBigWigBlock(buffer, startOffset, request) {
281
+ const b = buffer.subarray(startOffset);
282
+ const dataView = new DataView(b.buffer, b.byteOffset, b.length);
283
+ let offset = 0;
284
+ offset += 4;
285
+ const blockStart = dataView.getInt32(offset, true);
286
+ offset += 8;
287
+ const itemStep = dataView.getUint32(offset, true);
288
+ offset += 4;
289
+ const itemSpan = dataView.getUint32(offset, true);
290
+ offset += 4;
291
+ const blockType = dataView.getUint8(offset);
292
+ offset += 2;
293
+ const itemCount = dataView.getUint16(offset, true);
294
+ offset += 2;
295
+ const items = new Array(itemCount);
296
+ switch (blockType) {
297
+ case 1:
298
+ for (let i = 0; i < itemCount; i++) {
299
+ const start = dataView.getInt32(offset, true);
300
+ offset += 4;
301
+ const end = dataView.getInt32(offset, true);
302
+ offset += 4;
303
+ const score = dataView.getFloat32(offset, true);
304
+ offset += 4;
305
+ items[i] = { start, end, score };
306
+ }
307
+ break;
308
+ case 2:
309
+ for (let i = 0; i < itemCount; i++) {
310
+ const start = dataView.getInt32(offset, true);
311
+ offset += 4;
312
+ const score = dataView.getFloat32(offset, true);
313
+ offset += 4;
314
+ items[i] = { score, start, end: start + itemSpan };
315
+ }
316
+ break;
317
+ case 3:
318
+ for (let i = 0; i < itemCount; i++) {
319
+ const score = dataView.getFloat32(offset, true);
320
+ offset += 4;
321
+ const start = blockStart + i * itemStep;
322
+ items[i] = { score, start, end: start + itemSpan };
323
+ }
324
+ break;
264
325
  }
265
326
  return request
266
- ? items.filter((f) => BlockView.coordFilter(f, request))
327
+ ? items.filter((f) => coordFilter(f.start, f.end, request.start, request.end))
267
328
  : items;
268
329
  }
269
- static coordFilter(f, range) {
270
- return f.start < range.end && f.end >= range.start;
271
- }
272
330
  async readFeatures(observer, blocks, opts = {}) {
273
331
  try {
274
332
  const { blockType, isCompressed } = this;
@@ -279,12 +337,12 @@ export class BlockView {
279
337
  checkAbortSignal(signal);
280
338
  const { length, offset } = blockGroup;
281
339
  const data = await this.featureCache.get(`${length}_${offset}`, blockGroup, signal);
282
- blockGroup.blocks.forEach((block) => {
340
+ blockGroup.blocks.forEach(block => {
283
341
  checkAbortSignal(signal);
284
- let blockOffset = block.offset - blockGroup.offset;
342
+ let blockOffset = Number(block.offset) - Number(blockGroup.offset);
285
343
  let resultData = data;
286
344
  if (isCompressed) {
287
- resultData = unzip(data.slice(blockOffset));
345
+ resultData = unzip(data.subarray(blockOffset));
288
346
  blockOffset = 0;
289
347
  }
290
348
  checkAbortSignal(signal);
@@ -296,9 +354,7 @@ export class BlockView {
296
354
  observer.next(this.parseBigWigBlock(resultData, blockOffset, request));
297
355
  break;
298
356
  case 'bigbed':
299
- observer.next(this.parseBigBedBlock(resultData, blockOffset,
300
- // eslint-disable-next-line no-bitwise
301
- block.offset * (1 << 8), request));
357
+ observer.next(this.parseBigBedBlock(resultData, blockOffset, Number(block.offset) * (1 << 8), request));
302
358
  break;
303
359
  default:
304
360
  console.warn(`Don't know what to do with ${blockType}`);
@@ -1 +1 @@
1
- {"version":3,"file":"blockView.js","sourceRoot":"","sources":["../src/blockView.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blockView.js","sourceRoot":"","sources":["../src/blockView.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  /// <reference types="node" />
2
- export declare function unzip(input: Buffer): Buffer;
2
+ export declare function unzip(input: Buffer): Uint8Array;
package/esm/unzip-pako.js CHANGED
@@ -1,5 +1,5 @@
1
- import { inflate } from 'pako';
1
+ import { inflateRaw } from 'pako';
2
2
  export function unzip(input) {
3
- return Buffer.from(inflate(input));
3
+ return inflateRaw(input.subarray(2));
4
4
  }
5
5
  //# sourceMappingURL=unzip-pako.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"unzip-pako.js","sourceRoot":"","sources":["../src/unzip-pako.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAE9B,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;AACpC,CAAC"}
1
+ {"version":3,"file":"unzip-pako.js","sourceRoot":"","sources":["../src/unzip-pako.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAEjC,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC"}
package/esm/util.d.ts CHANGED
@@ -2,7 +2,17 @@ export declare class AbortError extends Error {
2
2
  code: string;
3
3
  constructor(message: string);
4
4
  }
5
- export declare function groupBlocks(blocks: any[]): any[];
5
+ export declare function groupBlocks(blocks: {
6
+ offset: bigint;
7
+ length: bigint;
8
+ }[]): {
9
+ blocks: {
10
+ offset: bigint;
11
+ length: bigint;
12
+ }[];
13
+ length: bigint;
14
+ offset: bigint;
15
+ }[];
6
16
  /**
7
17
  * Properly check if the given AbortSignal is aborted.
8
18
  * Per the standard, if the signal reads as aborted,
package/esm/util.js CHANGED
@@ -8,13 +8,18 @@ export class AbortError extends Error {
8
8
  // sort blocks by file offset and
9
9
  // group blocks that are within 2KB of eachother
10
10
  export function groupBlocks(blocks) {
11
- blocks.sort((b0, b1) => (b0.offset | 0) - (b1.offset | 0));
11
+ blocks.sort((b0, b1) => Number(b0.offset) - Number(b1.offset));
12
12
  const blockGroups = [];
13
13
  let lastBlock;
14
14
  let lastBlockEnd;
15
15
  for (let i = 0; i < blocks.length; i += 1) {
16
- if (lastBlock && blocks[i].offset - lastBlockEnd <= 2000) {
17
- lastBlock.length += blocks[i].length - lastBlockEnd + blocks[i].offset;
16
+ if (lastBlock &&
17
+ lastBlockEnd &&
18
+ Number(blocks[i].offset) - lastBlockEnd <= 2000) {
19
+ lastBlock.length = BigInt(Number(lastBlock.length) +
20
+ Number(blocks[i].length) -
21
+ lastBlockEnd +
22
+ Number(blocks[i].offset));
18
23
  lastBlock.blocks.push(blocks[i]);
19
24
  }
20
25
  else {
@@ -24,7 +29,7 @@ export function groupBlocks(blocks) {
24
29
  offset: blocks[i].offset,
25
30
  }));
26
31
  }
27
- lastBlockEnd = lastBlock.offset + lastBlock.length;
32
+ lastBlockEnd = Number(lastBlock.offset) + Number(lastBlock.length);
28
33
  }
29
34
  return blockGroups;
30
35
  }
package/esm/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,MAAM,OAAO,UAAW,SAAQ,KAAK;IAGnC,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF;AACD,iCAAiC;AACjC,gDAAgD;AAChD,MAAM,UAAU,WAAW,CAAC,MAAa;IACvC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IAE1D,MAAM,WAAW,GAAG,EAAE,CAAA;IACtB,IAAI,SAAS,CAAA;IACb,IAAI,YAAY,CAAA;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACzC,IAAI,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,YAAY,IAAI,IAAI,EAAE;YACxD,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;YACtE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;SACjC;aAAM;YACL,WAAW,CAAC,IAAI,CACd,CAAC,SAAS,GAAG;gBACX,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACnB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;gBACxB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;aACzB,CAAC,CACH,CAAA;SACF;QACD,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;KACnD;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAoB;IACnD,IAAI,CAAC,MAAM,EAAE;QACX,OAAM;KACP;IAED,IAAI,MAAM,CAAC,OAAO,EAAE;QAClB,8BAA8B;QAC9B,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;YACvC,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;SAChD;aAAM;YACL,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAA;YACnC,CAAC,CAAC,IAAI,GAAG,aAAa,CAAA;YACtB,MAAM,CAAC,CAAA;SACR;KACF;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAoB;IACxD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;IACvB,gBAAgB,CAAC,MAAM,CAAC,CAAA;AAC1B,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,MAAM,OAAO,UAAW,SAAQ,KAAK;IAGnC,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF;AACD,iCAAiC;AACjC,gDAAgD;AAChD,MAAM,UAAU,WAAW,CAAC,MAA4C;IACtE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAE9D,MAAM,WAAW,GAAG,EAAE,CAAA;IACtB,IAAI,SAAS,CAAA;IACb,IAAI,YAAY,CAAA;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACzC,IACE,SAAS;YACT,YAAY;YACZ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,YAAY,IAAI,IAAI,EAC/C;YACA,SAAS,CAAC,MAAM,GAAG,MAAM,CACvB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;gBACtB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACxB,YAAY;gBACZ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAC3B,CAAA;YACD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;SACjC;aAAM;YACL,WAAW,CAAC,IAAI,CACd,CAAC,SAAS,GAAG;gBACX,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACnB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;gBACxB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;aACzB,CAAC,CACH,CAAA;SACF;QACD,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;KACnE;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAoB;IACnD,IAAI,CAAC,MAAM,EAAE;QACX,OAAM;KACP;IAED,IAAI,MAAM,CAAC,OAAO,EAAE;QAClB,8BAA8B;QAC9B,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;YACvC,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;SAChD;aAAM;YACL,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAA;YACnC,CAAC,CAAC,IAAI,GAAG,aAAa,CAAA;YACtB,MAAM,CAAC,CAAA;SACR;KACF;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAoB;IACxD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;IACvB,gBAAgB,CAAC,MAAM,CAAC,CAAA;AAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gmod/bbi",
3
- "version": "1.0.35",
3
+ "version": "2.0.0",
4
4
  "description": "Parser for BigWig/BigBed files",
5
5
  "license": "MIT",
6
6
  "repository": "GMOD/bbi-js",
@@ -41,21 +41,19 @@
41
41
  "genomics"
42
42
  ],
43
43
  "dependencies": {
44
- "@gmod/binary-parser": "^1.4.0",
45
44
  "abortable-promise-cache": "^1.4.1",
46
- "buffer-crc32": "^0.2.13",
47
- "es6-promisify": "^6.0.1",
45
+ "binary-parser": "^2.1.0",
48
46
  "generic-filehandle": "^2.0.0",
49
- "pako": "^1.0.0",
47
+ "pako": "^2.0.0",
50
48
  "quick-lru": "^4.0.0",
51
49
  "rxjs": "^6.5.2"
52
50
  },
53
51
  "devDependencies": {
54
52
  "@gmod/bed": "^2.0.0",
55
- "@types/jest": "^27.0.3",
53
+ "@types/jest": "^28.1.4",
56
54
  "@types/long": "^4.0.0",
57
- "@types/node": "^12.0.2",
58
- "@types/pako": "^1.0.3",
55
+ "@types/node": "^18.0.0",
56
+ "@types/pako": "^2.0.0",
59
57
  "@typescript-eslint/eslint-plugin": "^5.10.0",
60
58
  "@typescript-eslint/parser": "^5.10.0",
61
59
  "cross-fetch": "^3.0.2",
@@ -63,11 +61,12 @@
63
61
  "eslint-config-prettier": "^8.3.0",
64
62
  "eslint-plugin-import": "^2.25.3",
65
63
  "eslint-plugin-prettier": "^4.0.0",
66
- "jest": "^27.4.3",
64
+ "jest": "^28.1.2",
65
+ "jest-environment-jsdom": "^28.1.2",
67
66
  "prettier": "^2.5.1",
68
67
  "rimraf": "^3.0.2",
69
68
  "standard-changelog": "^2.0.11",
70
- "ts-jest": "^27.0.7",
69
+ "ts-jest": "^28.0.5",
71
70
  "typescript": "^4.5.2"
72
71
  },
73
72
  "publishConfig": {