@gmod/bam 1.1.18 → 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.
Files changed (79) hide show
  1. package/CHANGELOG.md +61 -25
  2. package/README.md +95 -57
  3. package/dist/bai.d.ts +34 -15
  4. package/dist/bai.js +87 -91
  5. package/dist/bai.js.map +1 -1
  6. package/dist/bamFile.d.ts +33 -27
  7. package/dist/bamFile.js +127 -121
  8. package/dist/bamFile.js.map +1 -1
  9. package/dist/chunk.d.ts +4 -8
  10. package/dist/chunk.js +2 -8
  11. package/dist/chunk.js.map +1 -1
  12. package/dist/csi.d.ts +74 -10
  13. package/dist/csi.js +78 -90
  14. package/dist/csi.js.map +1 -1
  15. package/dist/htsget.d.ts +5 -8
  16. package/dist/htsget.js +72 -47
  17. package/dist/htsget.js.map +1 -1
  18. package/dist/index.d.ts +5 -6
  19. package/dist/index.js +11 -11
  20. package/dist/index.js.map +1 -1
  21. package/dist/indexFile.d.ts +0 -6
  22. package/dist/indexFile.js +0 -35
  23. package/dist/indexFile.js.map +1 -1
  24. package/dist/nullIndex.d.ts +7 -0
  25. package/dist/nullIndex.js +33 -0
  26. package/dist/nullIndex.js.map +1 -0
  27. package/dist/record.d.ts +2 -2
  28. package/dist/record.js +34 -24
  29. package/dist/record.js.map +1 -1
  30. package/dist/sam.js +9 -7
  31. package/dist/sam.js.map +1 -1
  32. package/dist/util.d.ts +13 -1
  33. package/dist/util.js +47 -15
  34. package/dist/util.js.map +1 -1
  35. package/esm/bai.d.ts +34 -15
  36. package/esm/bai.js +86 -91
  37. package/esm/bai.js.map +1 -1
  38. package/esm/bamFile.d.ts +33 -27
  39. package/esm/bamFile.js +124 -120
  40. package/esm/bamFile.js.map +1 -1
  41. package/esm/chunk.d.ts +4 -8
  42. package/esm/chunk.js +2 -8
  43. package/esm/chunk.js.map +1 -1
  44. package/esm/csi.d.ts +74 -10
  45. package/esm/csi.js +85 -93
  46. package/esm/csi.js.map +1 -1
  47. package/esm/htsget.d.ts +5 -8
  48. package/esm/htsget.js +68 -43
  49. package/esm/htsget.js.map +1 -1
  50. package/esm/index.d.ts +5 -6
  51. package/esm/index.js +5 -6
  52. package/esm/index.js.map +1 -1
  53. package/esm/indexFile.d.ts +0 -6
  54. package/esm/indexFile.js +0 -22
  55. package/esm/indexFile.js.map +1 -1
  56. package/esm/nullIndex.d.ts +7 -0
  57. package/esm/nullIndex.js +16 -0
  58. package/esm/nullIndex.js.map +1 -0
  59. package/esm/record.d.ts +2 -2
  60. package/esm/record.js +34 -24
  61. package/esm/record.js.map +1 -1
  62. package/esm/sam.js +9 -7
  63. package/esm/sam.js.map +1 -1
  64. package/esm/util.d.ts +13 -1
  65. package/esm/util.js +40 -14
  66. package/esm/util.js.map +1 -1
  67. package/package.json +16 -17
  68. package/src/bai.ts +99 -102
  69. package/src/bamFile.ts +174 -198
  70. package/src/chunk.ts +6 -20
  71. package/src/csi.ts +102 -111
  72. package/src/htsget.ts +81 -61
  73. package/src/index.ts +5 -7
  74. package/src/indexFile.ts +0 -27
  75. package/src/nullIndex.ts +18 -0
  76. package/src/record.ts +34 -24
  77. package/src/sam.ts +9 -7
  78. package/src/util.ts +54 -13
  79. package/src/declare.d.ts +0 -2
package/esm/csi.js CHANGED
@@ -1,8 +1,7 @@
1
- import Long from 'long';
2
1
  import { unzip } from '@gmod/bgzf-filehandle';
3
2
  import VirtualOffset, { fromBytes } from './virtualOffset';
4
3
  import Chunk from './chunk';
5
- import { longToNumber, abortBreakPoint, optimizeChunks } from './util';
4
+ import { optimizeChunks, findFirstData, parsePseudoBin, parseNameBytes, } from './util';
6
5
  import IndexFile from './indexFile';
7
6
  const CSI1_MAGIC = 21582659; // CSI\1
8
7
  const CSI2_MAGIC = 38359875; // CSI\2
@@ -13,84 +12,58 @@ function rshift(num, bits) {
13
12
  return Math.floor(num / 2 ** bits);
14
13
  }
15
14
  export default class CSI extends IndexFile {
16
- constructor(args) {
17
- super(args);
15
+ constructor() {
16
+ super(...arguments);
18
17
  this.maxBinNumber = 0;
19
18
  this.depth = 0;
20
19
  this.minShift = 0;
21
20
  }
22
- async lineCount(refId) {
23
- const indexData = await this.parse();
24
- if (!indexData) {
25
- return -1;
26
- }
27
- const idx = indexData.indices[refId];
28
- if (!idx) {
29
- return -1;
30
- }
31
- const { stats } = indexData.indices[refId];
32
- if (stats) {
33
- return stats.lineCount;
34
- }
35
- return -1;
21
+ async lineCount(refId, opts) {
22
+ var _a, _b;
23
+ const indexData = await this.parse(opts);
24
+ return ((_b = (_a = indexData.indices[refId]) === null || _a === void 0 ? void 0 : _a.stats) === null || _b === void 0 ? void 0 : _b.lineCount) || 0;
36
25
  }
37
26
  async indexCov() {
38
27
  return [];
39
28
  }
40
- parseAuxData(bytes, offset, auxLength) {
41
- if (auxLength < 30) {
42
- return {};
43
- }
44
- const data = {};
45
- data.formatFlags = bytes.readInt32LE(offset);
46
- data.coordinateType =
47
- data.formatFlags & 0x10000 ? 'zero-based-half-open' : '1-based-closed';
48
- data.format = { 0: 'generic', 1: 'SAM', 2: 'VCF' }[data.formatFlags & 0xf];
49
- if (!data.format) {
50
- throw new Error(`invalid Tabix preset format flags ${data.formatFlags}`);
51
- }
52
- data.columnNumbers = {
29
+ parseAuxData(bytes, offset) {
30
+ const formatFlags = bytes.readInt32LE(offset);
31
+ const coordinateType = formatFlags & 0x10000 ? 'zero-based-half-open' : '1-based-closed';
32
+ const format = { 0: 'generic', 1: 'SAM', 2: 'VCF' }[formatFlags & 0xf];
33
+ if (!format) {
34
+ throw new Error(`invalid Tabix preset format flags ${formatFlags}`);
35
+ }
36
+ const columnNumbers = {
53
37
  ref: bytes.readInt32LE(offset + 4),
54
38
  start: bytes.readInt32LE(offset + 8),
55
39
  end: bytes.readInt32LE(offset + 12),
56
40
  };
57
- data.metaValue = bytes.readInt32LE(offset + 16);
58
- data.metaChar = data.metaValue ? String.fromCharCode(data.metaValue) : '';
59
- data.skipLines = bytes.readInt32LE(offset + 20);
41
+ const metaValue = bytes.readInt32LE(offset + 16);
42
+ const metaChar = metaValue ? String.fromCharCode(metaValue) : '';
43
+ const skipLines = bytes.readInt32LE(offset + 20);
60
44
  const nameSectionLength = bytes.readInt32LE(offset + 24);
61
- Object.assign(data, this._parseNameBytes(bytes.subarray(offset + 28, offset + 28 + nameSectionLength)));
62
- return data;
63
- }
64
- _parseNameBytes(namesBytes) {
65
- let currRefId = 0;
66
- let currNameStart = 0;
67
- const refIdToName = [];
68
- const refNameToId = {};
69
- for (let i = 0; i < namesBytes.length; i += 1) {
70
- if (!namesBytes[i]) {
71
- if (currNameStart < i) {
72
- let refName = namesBytes.toString('utf8', currNameStart, i);
73
- refName = this.renameRefSeq(refName);
74
- refIdToName[currRefId] = refName;
75
- refNameToId[refName] = currRefId;
76
- }
77
- currNameStart = i + 1;
78
- currRefId += 1;
79
- }
80
- }
81
- return { refNameToId, refIdToName };
45
+ return {
46
+ columnNumbers,
47
+ coordinateType,
48
+ metaValue,
49
+ metaChar,
50
+ skipLines,
51
+ format,
52
+ formatFlags,
53
+ ...parseNameBytes(bytes.subarray(offset + 28, offset + 28 + nameSectionLength), this.renameRefSeq),
54
+ };
82
55
  }
83
56
  // fetch and parse the index
84
57
  async _parse(opts) {
85
- const data = { csi: true, maxBlockSize: 1 << 16 };
86
- const buffer = (await this.filehandle.readFile(opts));
58
+ const buffer = await this.filehandle.readFile(opts);
87
59
  const bytes = await unzip(buffer);
60
+ let csiVersion;
88
61
  // check TBI magic numbers
89
62
  if (bytes.readUInt32LE(0) === CSI1_MAGIC) {
90
- data.csiVersion = 1;
63
+ csiVersion = 1;
91
64
  }
92
65
  else if (bytes.readUInt32LE(0) === CSI2_MAGIC) {
93
- data.csiVersion = 2;
66
+ csiVersion = 2;
94
67
  }
95
68
  else {
96
69
  throw new Error('Not a CSI file');
@@ -100,51 +73,53 @@ export default class CSI extends IndexFile {
100
73
  this.depth = bytes.readInt32LE(8);
101
74
  this.maxBinNumber = ((1 << ((this.depth + 1) * 3)) - 1) / 7;
102
75
  const auxLength = bytes.readInt32LE(12);
103
- if (auxLength) {
104
- Object.assign(data, this.parseAuxData(bytes, 16, auxLength));
105
- }
106
- data.refCount = bytes.readInt32LE(16 + auxLength);
76
+ const aux = auxLength >= 30 ? this.parseAuxData(bytes, 16) : undefined;
77
+ const refCount = bytes.readInt32LE(16 + auxLength);
107
78
  // read the indexes for each reference sequence
108
- data.indices = new Array(data.refCount);
109
- let currOffset = 16 + auxLength + 4;
110
- for (let i = 0; i < data.refCount; i += 1) {
111
- await abortBreakPoint(opts.signal);
79
+ let curr = 16 + auxLength + 4;
80
+ let firstDataLine;
81
+ const indices = new Array(refCount);
82
+ for (let i = 0; i < refCount; i++) {
112
83
  // the binning index
113
- const binCount = bytes.readInt32LE(currOffset);
114
- currOffset += 4;
84
+ const binCount = bytes.readInt32LE(curr);
85
+ curr += 4;
115
86
  const binIndex = {};
116
87
  let stats; // < provided by parsing a pseudo-bin, if present
117
- for (let j = 0; j < binCount; j += 1) {
118
- const bin = bytes.readUInt32LE(currOffset);
88
+ for (let j = 0; j < binCount; j++) {
89
+ const bin = bytes.readUInt32LE(curr);
90
+ curr += 4;
119
91
  if (bin > this.maxBinNumber) {
120
- // this is a fake bin that actually has stats information
121
- // about the reference sequence in it
122
- stats = this.parsePseudoBin(bytes, currOffset + 4);
123
- currOffset += 4 + 8 + 4 + 16 + 16;
92
+ stats = parsePseudoBin(bytes, curr + 28);
93
+ curr += 28 + 16;
124
94
  }
125
95
  else {
126
- const loffset = fromBytes(bytes, currOffset + 4);
127
- this._findFirstData(data, loffset);
128
- const chunkCount = bytes.readInt32LE(currOffset + 12);
129
- currOffset += 16;
96
+ firstDataLine = findFirstData(firstDataLine, fromBytes(bytes, curr));
97
+ curr += 8;
98
+ const chunkCount = bytes.readInt32LE(curr);
99
+ curr += 4;
130
100
  const chunks = new Array(chunkCount);
131
101
  for (let k = 0; k < chunkCount; k += 1) {
132
- const u = fromBytes(bytes, currOffset);
133
- const v = fromBytes(bytes, currOffset + 8);
134
- currOffset += 16;
135
- // this._findFirstData(data, u)
102
+ const u = fromBytes(bytes, curr);
103
+ curr += 8;
104
+ const v = fromBytes(bytes, curr);
105
+ curr += 8;
106
+ firstDataLine = findFirstData(firstDataLine, u);
136
107
  chunks[k] = new Chunk(u, v, bin);
137
108
  }
138
109
  binIndex[bin] = chunks;
139
110
  }
140
111
  }
141
- data.indices[i] = { binIndex, stats };
142
- }
143
- return data;
144
- }
145
- parsePseudoBin(bytes, offset) {
146
- const lineCount = longToNumber(Long.fromBytesLE(Array.prototype.slice.call(bytes, offset + 28, offset + 36), true));
147
- return { lineCount };
112
+ indices[i] = { binIndex, stats };
113
+ }
114
+ return {
115
+ csiVersion,
116
+ firstDataLine,
117
+ indices,
118
+ refCount,
119
+ csi: true,
120
+ maxBlockSize: 1 << 16,
121
+ ...aux,
122
+ };
148
123
  }
149
124
  async blocksForRange(refId, min, max, opts = {}) {
150
125
  if (min < 0) {
@@ -155,15 +130,18 @@ export default class CSI extends IndexFile {
155
130
  if (!ba) {
156
131
  return [];
157
132
  }
158
- const overlappingBins = this.reg2bins(min, max); // List of bin #s that overlap min, max
133
+ const overlappingBins = this.reg2bins(min, max);
134
+ if (overlappingBins.length === 0) {
135
+ return [];
136
+ }
159
137
  const chunks = [];
160
138
  // Find chunks in overlapping bins. Leaf bins (< 4681) are not pruned
161
139
  for (const [start, end] of overlappingBins) {
162
140
  for (let bin = start; bin <= end; bin++) {
163
141
  if (ba.binIndex[bin]) {
164
142
  const binChunks = ba.binIndex[bin];
165
- for (let c = 0; c < binChunks.length; ++c) {
166
- chunks.push(new Chunk(binChunks[c].minv, binChunks[c].maxv, bin));
143
+ for (const c of binChunks) {
144
+ chunks.push(c);
167
145
  }
168
146
  }
169
147
  }
@@ -197,5 +175,19 @@ export default class CSI extends IndexFile {
197
175
  }
198
176
  return bins;
199
177
  }
178
+ async parse(opts = {}) {
179
+ if (!this.setupP) {
180
+ this.setupP = this._parse(opts).catch(e => {
181
+ this.setupP = undefined;
182
+ throw e;
183
+ });
184
+ }
185
+ return this.setupP;
186
+ }
187
+ async hasRefSeq(seqId, opts = {}) {
188
+ var _a;
189
+ const header = await this.parse(opts);
190
+ return !!((_a = header.indices[seqId]) === null || _a === void 0 ? void 0 : _a.binIndex);
191
+ }
200
192
  }
201
193
  //# sourceMappingURL=csi.js.map
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;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAY,MAAM,QAAQ,CAAA;AAEhF,OAAO,SAAS,MAAM,aAAa,CAAA;AAEnC,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,KAAa;QAC3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QACpC,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,CAAC,CAAC,CAAA;SACV;QACD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,CAAC,GAAG,EAAE;YACR,OAAO,CAAC,CAAC,CAAA;SACV;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,KAAK,EAAE;YACT,OAAO,KAAK,CAAC,SAAS,CAAA;SACvB;QACD,OAAO,CAAC,CAAC,CAAA;IACX,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,EAAE,CAAA;IACX,CAAC;IAED,YAAY,CAAC,KAAa,EAAE,MAAc,EAAE,SAAiB;QAC3D,IAAI,SAAS,GAAG,EAAE,EAAE;YAClB,OAAO,EAAE,CAAA;SACV;QAED,MAAM,IAAI,GAA2B,EAAE,CAAA;QACvC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAC5C,IAAI,CAAC,cAAc;YACjB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,gBAAgB,CAAA;QACxE,IAAI,CAAC,MAAM,GACT,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAGnC,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;SACzE;QACD,IAAI,CAAC,aAAa,GAAG;YACnB,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YAClC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YACpC,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;SACpC,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACzE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QAC/C,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QAExD,MAAM,CAAC,MAAM,CACX,IAAI,EACJ,IAAI,CAAC,eAAe,CAClB,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,GAAG,iBAAiB,CAAC,CAC7D,CACF,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,eAAe,CAAC,UAAkB;QAChC,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,IAAI,aAAa,GAAG,CAAC,CAAA;QACrB,MAAM,WAAW,GAAG,EAAE,CAAA;QACtB,MAAM,WAAW,GAA8B,EAAE,CAAA;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAC7C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;gBAClB,IAAI,aAAa,GAAG,CAAC,EAAE;oBACrB,IAAI,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,CAAA;oBAC3D,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;oBACpC,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO,CAAA;oBAChC,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;iBACjC;gBACD,aAAa,GAAG,CAAC,GAAG,CAAC,CAAA;gBACrB,SAAS,IAAI,CAAC,CAAA;aACf;SACF;QACD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAA;IACrC,CAAC;IAED,4BAA4B;IAC5B,KAAK,CAAC,MAAM,CAAC,IAA8B;QACzC,MAAM,IAAI,GAA2B,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAA;QACzE,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAW,CAAA;QAC/D,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAA;QAEjC,0BAA0B;QAC1B,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;YACxC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;SACpB;aAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;YAC/C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;SACpB;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;YACjC,oDAAoD;SACrD;QAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QACjC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACvC,IAAI,SAAS,EAAE;YACb,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAA;SAC7D;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,SAAS,CAAC,CAAA;QAEjD,+CAA+C;QAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACvC,IAAI,UAAU,GAAG,EAAE,GAAG,SAAS,GAAG,CAAC,CAAA;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE;YACzC,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAClC,oBAAoB;YACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;YAC9C,UAAU,IAAI,CAAC,CAAA;YACf,MAAM,QAAQ,GAA+B,EAAE,CAAA;YAC/C,IAAI,KAAK,CAAA,CAAC,iDAAiD;YAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE;gBACpC,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;gBAC1C,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE;oBAC3B,yDAAyD;oBACzD,qCAAqC;oBACrC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;oBAClD,UAAU,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAA;iBAClC;qBAAM;oBACL,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;oBAChD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;oBAClC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,UAAU,GAAG,EAAE,CAAC,CAAA;oBACrD,UAAU,IAAI,EAAE,CAAA;oBAChB,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;oBACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;wBACtC,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;wBACtC,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;wBAC1C,UAAU,IAAI,EAAE,CAAA;wBAChB,+BAA+B;wBAC/B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;qBACjC;oBACD,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAA;iBACvB;aACF;YAED,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;SACtC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,MAAM,SAAS,GAAG,YAAY,CAC5B,IAAI,CAAC,WAAW,CACd,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC,EAC3D,IAAI,CACL,CACF,CAAA;QACD,OAAO,EAAE,SAAS,EAAE,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,KAAa,EACb,GAAW,EACX,GAAW,EACX,OAAiB,EAAE;QAEnB,IAAI,GAAG,GAAG,CAAC,EAAE;YACX,GAAG,GAAG,CAAC,CAAA;SACR;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxC,MAAM,EAAE,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,CAAC,EAAE,EAAE;YACP,OAAO,EAAE,CAAA;SACV;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA,CAAC,uCAAuC;QACvF,MAAM,MAAM,GAAG,EAAE,CAAA;QAEjB,sEAAsE;QACtE,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,eAAe,EAAE;YAC1C,KAAK,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE;gBACvC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACpB,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;oBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;wBACzC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;qBAClE;iBACF;aACF;SACF;QAED,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,GAAW,EAAE,GAAW;QAC/B,GAAG,IAAI,CAAC,CAAA,CAAC,8BAA8B;QACvC,IAAI,GAAG,GAAG,CAAC,EAAE;YACX,GAAG,GAAG,CAAC,CAAA;SACR;QACD,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE;YACjB,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;SACd,CAAC,wCAAwC;QAC1C,GAAG,IAAI,CAAC,CAAA;QACR,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,EAAE,CAAA;QACf,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YAC7D,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;gBAC3C,MAAM,IAAI,KAAK,CACb,SAAS,GAAG,IAAI,GAAG,mDAAmD,IAAI,CAAC,QAAQ,WAAW,IAAI,CAAC,KAAK,0DAA0D,CACnK,CAAA;aACF;YACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;SAClB;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
1
+ {"version":3,"file":"csi.js","sourceRoot":"","sources":["../src/csi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,GAEf,MAAM,QAAQ,CAAA;AAEf,OAAO,SAAS,MAAM,aAAa,CAAA;AAEnC,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;IAA1C;;QACU,iBAAY,GAAG,CAAC,CAAA;QAChB,UAAK,GAAG,CAAC,CAAA;QACT,aAAQ,GAAG,CAAC,CAAA;IA+MtB,CAAC;IA3MC,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,IAAe;;QAC5C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxC,OAAO,CAAA,MAAA,MAAA,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,0CAAE,KAAK,0CAAE,SAAS,KAAI,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,EAAE,CAAA;IACX,CAAC;IAED,YAAY,CAAC,KAAa,EAAE,MAAc;QACxC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAC7C,MAAM,cAAc,GAClB,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,gBAAgB,CAAA;QACnE,MAAM,MAAM,GACV,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAGnC,CAAC,WAAW,GAAG,GAAG,CAAC,CAAA;QACpB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAA;SACpE;QACD,MAAM,aAAa,GAAG;YACpB,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YAClC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YACpC,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;SACpC,CAAA;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAChE,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QAChD,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QAExD,OAAO;YACL,aAAa;YACb,cAAc;YACd,SAAS;YACT,QAAQ;YACR,SAAS;YACT,MAAM;YACN,WAAW;YACX,GAAG,cAAc,CACf,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,GAAG,iBAAiB,CAAC,EAC5D,IAAI,CAAC,YAAY,CAClB;SACF,CAAA;IACH,CAAC;IAED,4BAA4B;IAC5B,KAAK,CAAC,MAAM,CAAC,IAA8B;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACnD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAA;QAEjC,IAAI,UAAU,CAAA;QACd,0BAA0B;QAC1B,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;YACxC,UAAU,GAAG,CAAC,CAAA;SACf;aAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;YAC/C,UAAU,GAAG,CAAC,CAAA;SACf;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;YACjC,oDAAoD;SACrD;QAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QACjC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACvC,MAAM,GAAG,GAAG,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,SAAS,CAAC,CAAA;QAIlD,+CAA+C;QAC/C,IAAI,IAAI,GAAG,EAAE,GAAG,SAAS,GAAG,CAAC,CAAA;QAC7B,IAAI,aAAwC,CAAA;QAC5C,MAAM,OAAO,GAAG,IAAI,KAAK,CAGtB,QAAQ,CAAC,CAAA;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YACjC,oBAAoB;YACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YACxC,IAAI,IAAI,CAAC,CAAA;YACT,MAAM,QAAQ,GAA+B,EAAE,CAAA;YAC/C,IAAI,KAAK,CAAA,CAAC,iDAAiD;YAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;gBACjC,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;gBACpC,IAAI,IAAI,CAAC,CAAA;gBACT,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE;oBAC3B,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;oBACxC,IAAI,IAAI,EAAE,GAAG,EAAE,CAAA;iBAChB;qBAAM;oBACL,aAAa,GAAG,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;oBACpE,IAAI,IAAI,CAAC,CAAA;oBACT,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;oBAC1C,IAAI,IAAI,CAAC,CAAA;oBACT,MAAM,MAAM,GAAG,IAAI,KAAK,CAAQ,UAAU,CAAC,CAAA;oBAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;wBACtC,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;wBAChC,IAAI,IAAI,CAAC,CAAA;wBACT,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;wBAChC,IAAI,IAAI,CAAC,CAAA;wBACT,aAAa,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;wBAC/C,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;qBACjC;oBACD,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAA;iBACvB;aACF;YAED,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;SACjC;QAED,OAAO;YACL,UAAU;YACV,aAAa;YACb,OAAO;YACP,QAAQ;YACR,GAAG,EAAE,IAAI;YACT,YAAY,EAAE,CAAC,IAAI,EAAE;YACrB,GAAG,GAAG;SACP,CAAA;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,KAAa,EACb,GAAW,EACX,GAAW,EACX,OAAiB,EAAE;QAEnB,IAAI,GAAG,GAAG,CAAC,EAAE;YACX,GAAG,GAAG,CAAC,CAAA;SACR;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACxC,MAAM,EAAE,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,CAAC,EAAE,EAAE;YACP,OAAO,EAAE,CAAA;SACV;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAE/C,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAO,EAAE,CAAA;SACV;QAED,MAAM,MAAM,GAAG,EAAE,CAAA;QACjB,sEAAsE;QACtE,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,eAAe,EAAE;YAC1C,KAAK,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE;gBACvC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACpB,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;oBAClC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;wBACzB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;qBACf;iBACF;aACF;SACF;QAED,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,GAAW,EAAE,GAAW;QAC/B,GAAG,IAAI,CAAC,CAAA,CAAC,8BAA8B;QACvC,IAAI,GAAG,GAAG,CAAC,EAAE;YACX,GAAG,GAAG,CAAC,CAAA;SACR;QACD,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE;YACjB,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;SACd,CAAC,wCAAwC;QAC1C,GAAG,IAAI,CAAC,CAAA;QACR,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,EAAE,CAAA;QACf,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YAC7D,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;gBAC3C,MAAM,IAAI,KAAK,CACb,SAAS,GAAG,IAAI,GAAG,mDAAmD,IAAI,CAAC,QAAQ,WAAW,IAAI,CAAC,KAAK,0DAA0D,CACnK,CAAA;aACF;YACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;SAClB;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAiB,EAAE;QAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACxC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;gBACvB,MAAM,CAAC,CAAA;YACT,CAAC,CAAC,CAAA;SACH;QACD,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,OAAiB,EAAE;;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACrC,OAAO,CAAC,CAAC,CAAA,MAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,0CAAE,QAAQ,CAAA,CAAA;IAC1C,CAAC;CACF"}
package/esm/htsget.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
+ import { Buffer } from 'buffer';
2
3
  import { BaseOpts, BamOpts } from './util';
3
4
  import BamFile from './bamFile';
4
- import 'cross-fetch/polyfill';
5
5
  import Chunk from './chunk';
6
6
  export default class HtsgetFile extends BamFile {
7
7
  private baseUrl;
@@ -11,16 +11,13 @@ export default class HtsgetFile extends BamFile {
11
11
  baseUrl: string;
12
12
  });
13
13
  streamRecordsForRange(chr: string, min: number, max: number, opts?: BamOpts): AsyncGenerator<import("./record").default[], void, unknown>;
14
- _readChunk(params: {
15
- chunk: {
16
- buffer: Buffer;
17
- chunk: Chunk;
18
- };
14
+ _readChunk({ chunk }: {
15
+ chunk: Chunk;
19
16
  opts: BaseOpts;
20
17
  }): Promise<{
21
18
  data: Buffer;
22
- cpositions: null;
23
- dpositions: null;
19
+ cpositions: never[];
20
+ dpositions: never[];
24
21
  chunk: Chunk;
25
22
  }>;
26
23
  getHeader(opts?: BaseOpts): Promise<{
package/esm/htsget.js CHANGED
@@ -1,6 +1,6 @@
1
- import BamFile, { BAM_MAGIC } from './bamFile';
2
- import 'cross-fetch/polyfill';
3
1
  import { unzip } from '@gmod/bgzf-filehandle';
2
+ import { Buffer } from 'buffer';
3
+ import BamFile, { BAM_MAGIC } from './bamFile';
4
4
  import { parseHeaderText } from './sam';
5
5
  async function concat(arr, opts) {
6
6
  const res = await Promise.all(arr.map(async (chunk) => {
@@ -10,15 +10,15 @@ async function concat(arr, opts) {
10
10
  }
11
11
  else {
12
12
  //remove referer header, it is not even allowed to be specified
13
- //@ts-ignore
13
+ // @ts-expect-error
14
14
  //eslint-disable-next-line @typescript-eslint/no-unused-vars
15
15
  const { referer, ...rest } = headers;
16
16
  const res = await fetch(url, {
17
17
  ...opts,
18
- headers: { ...opts.headers, ...rest },
18
+ headers: { ...opts === null || opts === void 0 ? void 0 : opts.headers, ...rest },
19
19
  });
20
20
  if (!res.ok) {
21
- throw new Error(`Failed to fetch ${res.statusText}`);
21
+ throw new Error(`HTTP ${res.status} fetching ${url}: ${await res.text()}`);
22
22
  }
23
23
  return Buffer.from(await res.arrayBuffer());
24
24
  }
@@ -27,47 +27,68 @@ async function concat(arr, opts) {
27
27
  }
28
28
  export default class HtsgetFile extends BamFile {
29
29
  constructor(args) {
30
- // @ts-ignore override bam defaults
31
- super({ bamFilehandle: '?', baiFilehandle: '?' });
30
+ super({ htsget: true });
32
31
  this.baseUrl = args.baseUrl;
33
32
  this.trackId = args.trackId;
34
33
  }
35
- async *streamRecordsForRange(chr, min, max, opts = {
36
- viewAsPairs: false,
37
- pairAcrossChr: false,
38
- maxInsertSize: 200000,
39
- }) {
34
+ async *streamRecordsForRange(chr, min, max, opts) {
35
+ var _a;
40
36
  const base = `${this.baseUrl}/${this.trackId}`;
41
37
  const url = `${base}?referenceName=${chr}&start=${min}&end=${max}&format=BAM`;
42
- const chrId = this.chrToIndex && this.chrToIndex[chr];
43
- const result = await fetch(url, { ...opts });
44
- if (!result.ok) {
45
- throw new Error(result.statusText);
38
+ const chrId = (_a = this.chrToIndex) === null || _a === void 0 ? void 0 : _a[chr];
39
+ if (chrId === undefined) {
40
+ yield [];
41
+ }
42
+ else {
43
+ const result = await fetch(url, { ...opts });
44
+ if (!result.ok) {
45
+ throw new Error(`HTTP ${result.status} fetching ${url}: ${await result.text()}`);
46
+ }
47
+ const data = await result.json();
48
+ const uncba = await concat(data.htsget.urls.slice(1), opts);
49
+ yield* this._fetchChunkFeatures([
50
+ // fake stuff to pretend to be a Chunk
51
+ {
52
+ buffer: uncba,
53
+ _fetchedSize: undefined,
54
+ bin: 0,
55
+ compareTo() {
56
+ return 0;
57
+ },
58
+ toUniqueString() {
59
+ return `${chr}_${min}_${max}`;
60
+ },
61
+ fetchedSize() {
62
+ return 0;
63
+ },
64
+ minv: {
65
+ dataPosition: 0,
66
+ blockPosition: 0,
67
+ compareTo: () => 0,
68
+ },
69
+ maxv: {
70
+ dataPosition: Number.MAX_SAFE_INTEGER,
71
+ blockPosition: 0,
72
+ compareTo: () => 0,
73
+ },
74
+ toString() {
75
+ return `${chr}_${min}_${max}`;
76
+ },
77
+ },
78
+ ], chrId, min, max, opts);
46
79
  }
47
- const data = await result.json();
48
- const uncba = await concat(data.htsget.urls.slice(1), opts);
49
- const chunk = {
50
- buffer: uncba,
51
- chunk: { minv: { dataPosition: 0 } },
52
- toString() {
53
- return `${chr}_${min}_${max}`;
54
- },
55
- };
56
- yield* this._fetchChunkFeatures(
57
- // @ts-ignore
58
- [chunk], chrId, min, max, opts);
59
80
  }
60
- //@ts-ignore
61
- async _readChunk(params) {
62
- const { chunk } = params;
63
- const { buffer, chunk: c2 } = chunk;
64
- return { data: buffer, cpositions: null, dpositions: null, chunk: c2 };
81
+ async _readChunk({ chunk }) {
82
+ if (!chunk.buffer) {
83
+ throw new Error('expected chunk.buffer in htsget');
84
+ }
85
+ return { data: chunk.buffer, cpositions: [], dpositions: [], chunk };
65
86
  }
66
87
  async getHeader(opts = {}) {
67
88
  const url = `${this.baseUrl}/${this.trackId}?referenceName=na&class=header`;
68
89
  const result = await fetch(url, opts);
69
90
  if (!result.ok) {
70
- throw new Error(`Failed to fetch ${result.statusText}`);
91
+ throw new Error(`HTTP ${result.status} fetching ${url}: ${await result.text()}`);
71
92
  }
72
93
  const data = await result.json();
73
94
  const uncba = await concat(data.htsget.urls, opts);
@@ -81,17 +102,21 @@ export default class HtsgetFile extends BamFile {
81
102
  // mapping between ref ref ID numbers and names
82
103
  const idToName = [];
83
104
  const nameToId = {};
84
- const sqLines = samHeader.filter((l) => l.tag === 'SQ');
85
- sqLines.forEach((sqLine, refId) => {
86
- sqLine.data.forEach((item) => {
105
+ const sqLines = samHeader.filter(l => l.tag === 'SQ');
106
+ for (const [refId, sqLine] of sqLines.entries()) {
107
+ let refName = '';
108
+ let length = 0;
109
+ for (const item of sqLine.data) {
87
110
  if (item.tag === 'SN') {
88
- // this is the ref name
89
- const refName = item.value;
90
- nameToId[refName] = refId;
91
- idToName[refId] = refName;
111
+ refName = item.value;
92
112
  }
93
- });
94
- });
113
+ else if (item.tag === 'LN') {
114
+ length = +item.value;
115
+ }
116
+ }
117
+ nameToId[refName] = refId;
118
+ idToName[refId] = { refName, length };
119
+ }
95
120
  this.chrToIndex = nameToId;
96
121
  this.indexToChr = idToName;
97
122
  return samHeader;
package/esm/htsget.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"htsget.js","sourceRoot":"","sources":["../src/htsget.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,sBAAsB,CAAA;AAE7B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAWvC,KAAK,UAAU,MAAM,CAAC,GAAsB,EAAE,IAAyB;IACrE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAkB,EAAE,EAAE;QACnC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;QAC9B,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;SAChD;aAAM;YACL,+DAA+D;YAC/D,YAAY;YACZ,4DAA4D;YAC5D,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;YACpC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC3B,GAAG,IAAI;gBACP,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE;aACtC,CAAC,CAAA;YACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;aACrD;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;SAC5C;IACH,CAAC,CAAC,CACH,CAAA;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAK7C,YAAY,IAA0C;QACpD,mCAAmC;QACnC,KAAK,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAA;QACjD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,CAAC,qBAAqB,CAC1B,GAAW,EACX,GAAW,EACX,GAAW,EACX,OAAgB;QACd,WAAW,EAAE,KAAK;QAClB,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,MAAM;KACtB;QAED,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAA;QAC9C,MAAM,GAAG,GAAG,GAAG,IAAI,kBAAkB,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAA;QAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;QAC5C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;SACnC;QACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QAChC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC3D,MAAM,KAAK,GAAG;YACZ,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;YACpC,QAAQ;gBACN,OAAO,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAA;YAC/B,CAAC;SACF,CAAA;QAED,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB;QAC7B,aAAa;QACb,CAAC,KAAK,CAAC,EACP,KAAK,EACL,GAAG,EACH,GAAG,EACH,IAAI,CACL,CAAA;IACH,CAAC;IAED,YAAY;IACZ,KAAK,CAAC,UAAU,CAAC,MAGhB;QACC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;QACxB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,KAAK,CAAA;QACnC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IACxE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAiB,EAAE;QACjC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,gCAAgC,CAAA;QAC3E,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACrC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;SACxD;QACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QAChC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAElD,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;SAClC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QAEpC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAA;QACzD,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;QAE7C,oDAAoD;QACpD,+CAA+C;QAC/C,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,MAAM,QAAQ,GAA2B,EAAE,CAAA;QAC3C,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAA;QACxE,OAAO,CAAC,OAAO,CAAC,CAAC,MAA8B,EAAE,KAAa,EAAE,EAAE;YAChE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAgB,EAAE,EAAE;gBACvC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;oBACrB,uBAAuB;oBACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;oBAC1B,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;oBACzB,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;iBAC1B;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAA;QAC1B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAA;QAC1B,OAAO,SAAS,CAAA;IAClB,CAAC;CACF"}
1
+ {"version":3,"file":"htsget.js","sourceRoot":"","sources":["../src/htsget.ts"],"names":[],"mappings":"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"}
package/esm/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- import BAI from './bai';
2
- import CSI from './csi';
3
- import BamFile from './bamFile';
4
- import HtsgetFile from './htsget';
5
- import BamRecord from './record';
6
- export { BAI, CSI, BamFile, BamRecord, HtsgetFile };
1
+ export { default as BAI } from './bai';
2
+ export { default as BamFile } from './bamFile';
3
+ export { default as CSI } from './csi';
4
+ export { default as BamRecord } from './record';
5
+ export { default as HtsgetFile } from './htsget';
package/esm/index.js CHANGED
@@ -1,7 +1,6 @@
1
- import BAI from './bai';
2
- import CSI from './csi';
3
- import BamFile from './bamFile';
4
- import HtsgetFile from './htsget';
5
- import BamRecord from './record';
6
- export { BAI, CSI, BamFile, BamRecord, HtsgetFile };
1
+ export { default as BAI } from './bai';
2
+ export { default as BamFile } from './bamFile';
3
+ export { default as CSI } from './csi';
4
+ export { default as BamRecord } from './record';
5
+ export { default as HtsgetFile } from './htsget';
7
6
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,OAAO,CAAA;AACvB,OAAO,GAAG,MAAM,OAAO,CAAA;AACvB,OAAO,OAAO,MAAM,WAAW,CAAA;AAC/B,OAAO,UAAU,MAAM,UAAU,CAAA;AACjC,OAAO,SAAS,MAAM,UAAU,CAAA;AAEhC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,UAAU,CAAA"}
@@ -1,11 +1,9 @@
1
1
  import { GenericFilehandle } from 'generic-filehandle';
2
- import VirtualOffset from './virtualOffset';
3
2
  import Chunk from './chunk';
4
3
  import { BaseOpts } from './util';
5
4
  export default abstract class IndexFile {
6
5
  filehandle: GenericFilehandle;
7
6
  renameRefSeq: (s: string) => string;
8
- setupP?: Promise<any>;
9
7
  /**
10
8
  * @param {filehandle} filehandle
11
9
  * @param {function} [renameRefSeqs]
@@ -15,14 +13,10 @@ export default abstract class IndexFile {
15
13
  renameRefSeq?: (a: string) => string;
16
14
  });
17
15
  abstract lineCount(refId: number): Promise<number>;
18
- protected abstract _parse(opts?: BaseOpts): Promise<any>;
19
16
  abstract indexCov(refId: number, start?: number, end?: number): Promise<{
20
17
  start: number;
21
18
  end: number;
22
19
  score: number;
23
20
  }[]>;
24
21
  abstract blocksForRange(chrId: number, start: number, end: number, opts?: BaseOpts): Promise<Chunk[]>;
25
- _findFirstData(data: any, virtualOffset: VirtualOffset): void;
26
- parse(opts?: BaseOpts): Promise<any>;
27
- hasRefSeq(seqId: number, opts?: BaseOpts): Promise<boolean>;
28
22
  }
package/esm/indexFile.js CHANGED
@@ -7,27 +7,5 @@ export default class IndexFile {
7
7
  this.filehandle = filehandle;
8
8
  this.renameRefSeq = renameRefSeq;
9
9
  }
10
- _findFirstData(data, virtualOffset) {
11
- const currentFdl = data.firstDataLine;
12
- if (currentFdl) {
13
- data.firstDataLine =
14
- currentFdl.compareTo(virtualOffset) > 0 ? virtualOffset : currentFdl;
15
- }
16
- else {
17
- data.firstDataLine = virtualOffset;
18
- }
19
- }
20
- async parse(opts = {}) {
21
- if (!this.setupP) {
22
- this.setupP = this._parse(opts).catch(e => {
23
- this.setupP = undefined;
24
- throw e;
25
- });
26
- }
27
- return this.setupP;
28
- }
29
- async hasRefSeq(seqId, opts = {}) {
30
- return !!((await this.parse(opts)).indices[seqId] || {}).binIndex;
31
- }
32
10
  }
33
11
  //# sourceMappingURL=indexFile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexFile.js","sourceRoot":"","sources":["../src/indexFile.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,OAAgB,SAAS;IAKrC;;;OAGG;IACH,YAAY,EACV,UAAU,EACV,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAIhC;QACC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAgBD,cAAc,CAAC,IAAS,EAAE,aAA4B;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAA;QACrC,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,aAAa;gBAChB,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAA;SACvE;aAAM;YACL,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;SACnC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAiB,EAAE;QAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACxC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;gBACvB,MAAM,CAAC,CAAA;YACT,CAAC,CAAC,CAAA;SACH;QACD,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,OAAiB,EAAE;QAChD,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAA;IACnE,CAAC;CACF"}
1
+ {"version":3,"file":"indexFile.js","sourceRoot":"","sources":["../src/indexFile.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,OAAgB,SAAS;IAIrC;;;OAGG;IACH,YAAY,EACV,UAAU,EACV,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAIhC;QACC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;CAcF"}
@@ -0,0 +1,7 @@
1
+ import IndexFile from './indexFile';
2
+ export default class NullIndex extends IndexFile {
3
+ lineCount(): Promise<any>;
4
+ protected _parse(): Promise<any>;
5
+ indexCov(): Promise<any>;
6
+ blocksForRange(): Promise<any>;
7
+ }
@@ -0,0 +1,16 @@
1
+ import IndexFile from './indexFile';
2
+ export default class NullIndex extends IndexFile {
3
+ lineCount() {
4
+ throw new Error('never called');
5
+ }
6
+ _parse() {
7
+ throw new Error('never called');
8
+ }
9
+ async indexCov() {
10
+ throw new Error('never called');
11
+ }
12
+ blocksForRange() {
13
+ throw new Error('never called');
14
+ }
15
+ }
16
+ //# sourceMappingURL=nullIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nullIndex.js","sourceRoot":"","sources":["../src/nullIndex.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,SAAS;IACvC,SAAS;QACd,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;IACjC,CAAC;IACS,MAAM;QACd,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;IACjC,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;IACjC,CAAC;IAEM,cAAc;QACnB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;IACjC,CAAC;CACF"}