@gmod/bam 1.1.17 → 1.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
- ## [1.1.17](https://github.com/GMOD/bam-js/compare/v1.1.16...v1.1.17) (2022-07-18)
1
+ ## [1.1.18](https://github.com/GMOD/bam-js/compare/v1.1.17...v1.1.18) (2022-12-17)
2
+
2
3
 
3
4
 
5
+ - Use es2015 for nodejs build
6
+
7
+ ## [1.1.17](https://github.com/GMOD/bam-js/compare/v1.1.16...v1.1.17) (2022-07-18)
4
8
 
5
9
  - Bump devDeps and generic-filehandle to 3.0.0
6
10
 
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  [![NPM version](https://img.shields.io/npm/v/@gmod/bam.svg?style=flat-square)](https://npmjs.org/package/@gmod/bam)
2
2
  [![Coverage Status](https://img.shields.io/codecov/c/github/GMOD/bam-js/master.svg?style=flat-square)](https://codecov.io/gh/GMOD/bam-js/branch/master)
3
- [![Build Status](https://img.shields.io/github/workflow/status/GMOD/bam-js/Push/master?logo=github&style=flat-query)](https://github.com/GMOD/bam-js/actions?query=branch%3Amaster+workflow%3APush+)
3
+ [![Build Status](https://img.shields.io/github/actions/workflow/status/GMOD/bam-js/push.yml?branch=master)](https://github.com/GMOD/bam-js/actions?query=branch%3Amaster+workflow%3APush+)
4
4
 
5
5
  ## Install
6
6
 
@@ -15,10 +15,21 @@ const t = new BamFile({
15
15
  bamPath: 'test.bam',
16
16
  })
17
17
 
18
+ // note: it's required to first run getHeader before any getRecordsForRange
18
19
  var header = await t.getHeader()
19
20
 
20
21
  // this would get same records as samtools view ctgA:1-50000
21
- var records = await t.getRecordsForRange('ctgA', 0, 49999)
22
+ var records = await t.getRecordsForRange('ctgA', 0, 50000)
23
+ ```
24
+
25
+ The `bamPath` argument only works on nodejs, in the browser, you should pass `bamFilehandle` with a generic-filehandle e.g. RemoteFile
26
+
27
+ ```js
28
+ const { RemoteFile } = require('generic-filehandle')
29
+ const bam = new BamFile({
30
+ bamFilehandle: new RemoteFile('yourfile.bam'), // or a full http url
31
+ baiFilehandle: new RemoteFile('yourfile.bam.bai'), // or a full http url
32
+ })
22
33
  ```
23
34
 
24
35
  Input are 0-based half-open coordinates (note: not the same as samtools view coordinate inputs!)
@@ -58,6 +69,8 @@ Note: filehandles implement the Filehandle interface from https://www.npmjs.com/
58
69
 
59
70
  ### async getRecordsForRange(refName, start, end, opts)
60
71
 
72
+ Note: you must run getHeader before running getRecordsForRange
73
+
61
74
  - refName - a string for the chrom to fetch from
62
75
  - start - a 0 based half open start coordinate
63
76
  - end - a 0 based half open end coordinate
package/dist/bai.js CHANGED
@@ -1,30 +1,4 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __assign = (this && this.__assign) || function () {
18
- __assign = Object.assign || function(t) {
19
- for (var s, i = 1, n = arguments.length; i < n; i++) {
20
- s = arguments[i];
21
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
- t[p] = s[p];
23
- }
24
- return t;
25
- };
26
- return __assign.apply(this, arguments);
27
- };
28
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -34,209 +8,154 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
34
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
35
9
  });
36
10
  };
37
- var __generator = (this && this.__generator) || function (thisArg, body) {
38
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
- function verb(n) { return function (v) { return step([n, v]); }; }
41
- function step(op) {
42
- if (f) throw new TypeError("Generator is already executing.");
43
- while (_) try {
44
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45
- if (y = 0, t) op = [op[0] & 2, t.value];
46
- switch (op[0]) {
47
- case 0: case 1: t = op; break;
48
- case 4: _.label++; return { value: op[1], done: false };
49
- case 5: _.label++; y = op[1]; op = [0]; continue;
50
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
- default:
52
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
- if (t[2]) _.ops.pop();
57
- _.trys.pop(); continue;
58
- }
59
- op = body.call(thisArg, _);
60
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
- }
63
- };
64
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
65
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
66
13
  };
67
14
  Object.defineProperty(exports, "__esModule", { value: true });
68
- var long_1 = __importDefault(require("long"));
69
- var virtualOffset_1 = require("./virtualOffset");
70
- var chunk_1 = __importDefault(require("./chunk"));
71
- var indexFile_1 = __importDefault(require("./indexFile"));
72
- var util_1 = require("./util");
73
- var BAI_MAGIC = 21578050; // BAI\1
15
+ const long_1 = __importDefault(require("long"));
16
+ const virtualOffset_1 = require("./virtualOffset");
17
+ const chunk_1 = __importDefault(require("./chunk"));
18
+ const indexFile_1 = __importDefault(require("./indexFile"));
19
+ const util_1 = require("./util");
20
+ const BAI_MAGIC = 21578050; // BAI\1
74
21
  function roundDown(n, multiple) {
75
22
  return n - (n % multiple);
76
23
  }
77
24
  function roundUp(n, multiple) {
78
25
  return n - (n % multiple) + multiple;
79
26
  }
80
- var BAI = /** @class */ (function (_super) {
81
- __extends(BAI, _super);
82
- function BAI() {
83
- return _super !== null && _super.apply(this, arguments) || this;
27
+ class BAI extends indexFile_1.default {
28
+ parsePseudoBin(bytes, offset) {
29
+ const lineCount = (0, util_1.longToNumber)(long_1.default.fromBytesLE(Array.prototype.slice.call(bytes, offset + 16, offset + 24), true));
30
+ return { lineCount };
84
31
  }
85
- BAI.prototype.parsePseudoBin = function (bytes, offset) {
86
- var lineCount = (0, util_1.longToNumber)(long_1.default.fromBytesLE(Array.prototype.slice.call(bytes, offset + 16, offset + 24), true));
87
- return { lineCount: lineCount };
88
- };
89
- BAI.prototype.lineCount = function (refId, opts) {
90
- if (opts === void 0) { opts = {}; }
91
- return __awaiter(this, void 0, void 0, function () {
92
- var prom, index, ret;
93
- return __generator(this, function (_a) {
94
- switch (_a.label) {
95
- case 0: return [4 /*yield*/, this.parse(opts)];
96
- case 1:
97
- prom = _a.sent();
98
- index = prom.indices[refId];
99
- if (!index) {
100
- return [2 /*return*/, -1];
101
- }
102
- ret = index.stats || {};
103
- return [2 /*return*/, ret.lineCount === undefined ? -1 : ret.lineCount];
104
- }
105
- });
32
+ lineCount(refId, opts = {}) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ const prom = yield this.parse(opts);
35
+ const index = prom.indices[refId];
36
+ if (!index) {
37
+ return -1;
38
+ }
39
+ const ret = index.stats || {};
40
+ return ret.lineCount === undefined ? -1 : ret.lineCount;
106
41
  });
107
- };
108
- BAI.prototype.fetchBai = function (opts) {
109
- var _this = this;
110
- if (opts === void 0) { opts = {}; }
42
+ }
43
+ fetchBai(opts = {}) {
111
44
  if (!this.baiP) {
112
- this.baiP = this.filehandle.readFile(opts).catch(function (e) {
113
- _this.baiP = undefined;
45
+ this.baiP = this.filehandle.readFile(opts).catch(e => {
46
+ this.baiP = undefined;
114
47
  throw e;
115
48
  });
116
49
  }
117
50
  return this.baiP;
118
- };
51
+ }
119
52
  // fetch and parse the index
120
- BAI.prototype._parse = function () {
121
- return __awaiter(this, void 0, void 0, function () {
122
- var data, bytes, depth, binLimit, currOffset, i, binCount, stats, binIndex, j, bin, chunkCount, chunks, k, u, v, linearCount, linearIndex, k;
123
- return __generator(this, function (_a) {
124
- switch (_a.label) {
125
- case 0:
126
- data = { bai: true, maxBlockSize: 1 << 16 };
127
- return [4 /*yield*/, this.fetchBai()
128
- // check BAI magic numbers
129
- ];
130
- case 1:
131
- bytes = _a.sent();
132
- // check BAI magic numbers
133
- if (bytes.readUInt32LE(0) !== BAI_MAGIC) {
134
- throw new Error('Not a BAI file');
135
- }
136
- data.refCount = bytes.readInt32LE(4);
137
- depth = 5;
138
- binLimit = ((1 << ((depth + 1) * 3)) - 1) / 7;
139
- // read the indexes for each reference sequence
140
- data.indices = new Array(data.refCount);
141
- currOffset = 8;
142
- for (i = 0; i < data.refCount; i += 1) {
143
- binCount = bytes.readInt32LE(currOffset);
144
- stats = void 0;
145
- currOffset += 4;
146
- binIndex = {};
147
- for (j = 0; j < binCount; j += 1) {
148
- bin = bytes.readUInt32LE(currOffset);
149
- currOffset += 4;
150
- if (bin === binLimit + 1) {
151
- currOffset += 4;
152
- stats = this.parsePseudoBin(bytes, currOffset);
153
- currOffset += 32;
154
- }
155
- else if (bin > binLimit + 1) {
156
- throw new Error('bai index contains too many bins, please use CSI');
157
- }
158
- else {
159
- chunkCount = bytes.readInt32LE(currOffset);
160
- currOffset += 4;
161
- chunks = new Array(chunkCount);
162
- for (k = 0; k < chunkCount; k += 1) {
163
- u = (0, virtualOffset_1.fromBytes)(bytes, currOffset);
164
- v = (0, virtualOffset_1.fromBytes)(bytes, currOffset + 8);
165
- currOffset += 16;
166
- this._findFirstData(data, u);
167
- chunks[k] = new chunk_1.default(u, v, bin);
168
- }
169
- binIndex[bin] = chunks;
170
- }
171
- }
172
- linearCount = bytes.readInt32LE(currOffset);
173
- currOffset += 4;
174
- linearIndex = new Array(linearCount);
175
- for (k = 0; k < linearCount; k += 1) {
176
- linearIndex[k] = (0, virtualOffset_1.fromBytes)(bytes, currOffset);
177
- currOffset += 8;
178
- this._findFirstData(data, linearIndex[k]);
179
- }
180
- data.indices[i] = { binIndex: binIndex, linearIndex: linearIndex, stats: stats };
53
+ _parse() {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ const data = { bai: true, maxBlockSize: 1 << 16 };
56
+ const bytes = yield this.fetchBai();
57
+ // check BAI magic numbers
58
+ if (bytes.readUInt32LE(0) !== BAI_MAGIC) {
59
+ throw new Error('Not a BAI file');
60
+ }
61
+ data.refCount = bytes.readInt32LE(4);
62
+ const depth = 5;
63
+ const binLimit = ((1 << ((depth + 1) * 3)) - 1) / 7;
64
+ // read the indexes for each reference sequence
65
+ data.indices = new Array(data.refCount);
66
+ let currOffset = 8;
67
+ for (let i = 0; i < data.refCount; i += 1) {
68
+ // the binning index
69
+ const binCount = bytes.readInt32LE(currOffset);
70
+ let stats;
71
+ currOffset += 4;
72
+ const binIndex = {};
73
+ for (let j = 0; j < binCount; j += 1) {
74
+ const bin = bytes.readUInt32LE(currOffset);
75
+ currOffset += 4;
76
+ if (bin === binLimit + 1) {
77
+ currOffset += 4;
78
+ stats = this.parsePseudoBin(bytes, currOffset);
79
+ currOffset += 32;
80
+ }
81
+ else if (bin > binLimit + 1) {
82
+ throw new Error('bai index contains too many bins, please use CSI');
83
+ }
84
+ else {
85
+ const chunkCount = bytes.readInt32LE(currOffset);
86
+ currOffset += 4;
87
+ const chunks = new Array(chunkCount);
88
+ for (let k = 0; k < chunkCount; k += 1) {
89
+ const u = (0, virtualOffset_1.fromBytes)(bytes, currOffset);
90
+ const v = (0, virtualOffset_1.fromBytes)(bytes, currOffset + 8);
91
+ currOffset += 16;
92
+ this._findFirstData(data, u);
93
+ chunks[k] = new chunk_1.default(u, v, bin);
181
94
  }
182
- return [2 /*return*/, data];
95
+ binIndex[bin] = chunks;
96
+ }
183
97
  }
184
- });
185
- });
186
- };
187
- BAI.prototype.indexCov = function (seqId, start, end, opts) {
188
- if (opts === void 0) { opts = {}; }
189
- return __awaiter(this, void 0, void 0, function () {
190
- var v, range, indexData, seqIdx, _a, linearIndex, stats, e, s, depths, totalSize, currentPos, i, j;
191
- return __generator(this, function (_b) {
192
- switch (_b.label) {
193
- case 0:
194
- v = 16384;
195
- range = start !== undefined;
196
- return [4 /*yield*/, this.parse(opts)];
197
- case 1:
198
- indexData = _b.sent();
199
- seqIdx = indexData.indices[seqId];
200
- if (!seqIdx) {
201
- return [2 /*return*/, []];
202
- }
203
- _a = seqIdx.linearIndex, linearIndex = _a === void 0 ? [] : _a, stats = seqIdx.stats;
204
- if (!linearIndex.length) {
205
- return [2 /*return*/, []];
206
- }
207
- e = end !== undefined ? roundUp(end, v) : (linearIndex.length - 1) * v;
208
- s = start !== undefined ? roundDown(start, v) : 0;
209
- if (range) {
210
- depths = new Array((e - s) / v);
211
- }
212
- else {
213
- depths = new Array(linearIndex.length - 1);
214
- }
215
- totalSize = linearIndex[linearIndex.length - 1].blockPosition;
216
- if (e > (linearIndex.length - 1) * v) {
217
- throw new Error('query outside of range of linear index');
218
- }
219
- currentPos = linearIndex[s / v].blockPosition;
220
- for (i = s / v, j = 0; i < e / v; i++, j++) {
221
- depths[j] = {
222
- score: linearIndex[i + 1].blockPosition - currentPos,
223
- start: i * v,
224
- end: i * v + v,
225
- };
226
- currentPos = linearIndex[i + 1].blockPosition;
227
- }
228
- return [2 /*return*/, depths.map(function (d) {
229
- return __assign(__assign({}, d), { score: (d.score * stats.lineCount) / totalSize });
230
- })];
98
+ const linearCount = bytes.readInt32LE(currOffset);
99
+ currOffset += 4;
100
+ // as we're going through the linear index, figure out
101
+ // the smallest virtual offset in the indexes, which
102
+ // tells us where the BAM header ends
103
+ const linearIndex = new Array(linearCount);
104
+ for (let k = 0; k < linearCount; k += 1) {
105
+ linearIndex[k] = (0, virtualOffset_1.fromBytes)(bytes, currOffset);
106
+ currOffset += 8;
107
+ this._findFirstData(data, linearIndex[k]);
231
108
  }
109
+ data.indices[i] = { binIndex, linearIndex, stats };
110
+ }
111
+ return data;
112
+ });
113
+ }
114
+ indexCov(seqId, start, end, opts = {}) {
115
+ return __awaiter(this, void 0, void 0, function* () {
116
+ const v = 16384;
117
+ const range = start !== undefined;
118
+ const indexData = yield this.parse(opts);
119
+ const seqIdx = indexData.indices[seqId];
120
+ if (!seqIdx) {
121
+ return [];
122
+ }
123
+ const { linearIndex = [], stats } = seqIdx;
124
+ if (!linearIndex.length) {
125
+ return [];
126
+ }
127
+ const e = end !== undefined ? roundUp(end, v) : (linearIndex.length - 1) * v;
128
+ const s = start !== undefined ? roundDown(start, v) : 0;
129
+ let depths;
130
+ if (range) {
131
+ depths = new Array((e - s) / v);
132
+ }
133
+ else {
134
+ depths = new Array(linearIndex.length - 1);
135
+ }
136
+ const totalSize = linearIndex[linearIndex.length - 1].blockPosition;
137
+ if (e > (linearIndex.length - 1) * v) {
138
+ throw new Error('query outside of range of linear index');
139
+ }
140
+ let currentPos = linearIndex[s / v].blockPosition;
141
+ for (let i = s / v, j = 0; i < e / v; i++, j++) {
142
+ depths[j] = {
143
+ score: linearIndex[i + 1].blockPosition - currentPos,
144
+ start: i * v,
145
+ end: i * v + v,
146
+ };
147
+ currentPos = linearIndex[i + 1].blockPosition;
148
+ }
149
+ return depths.map(d => {
150
+ return Object.assign(Object.assign({}, d), { score: (d.score * stats.lineCount) / totalSize });
232
151
  });
233
152
  });
234
- };
153
+ }
235
154
  /**
236
155
  * calculate the list of bins that may overlap with region [beg,end) (zero-based half-open)
237
156
  * @returns {Array[number]}
238
157
  */
239
- BAI.prototype.reg2bins = function (beg, end) {
158
+ reg2bins(beg, end) {
240
159
  end -= 1;
241
160
  return [
242
161
  [0, 0],
@@ -246,59 +165,51 @@ var BAI = /** @class */ (function (_super) {
246
165
  [585 + (beg >> 17), 585 + (end >> 17)],
247
166
  [4681 + (beg >> 14), 4681 + (end >> 14)],
248
167
  ];
249
- };
250
- BAI.prototype.blocksForRange = function (refId, min, max, opts) {
251
- if (opts === void 0) { opts = {}; }
252
- return __awaiter(this, void 0, void 0, function () {
253
- var indexData, ba, overlappingBins, chunks, _i, overlappingBins_1, _a, start, end, bin, binChunks, c, nintv, lowest, minLin, maxLin, i, vp;
254
- return __generator(this, function (_b) {
255
- switch (_b.label) {
256
- case 0:
257
- if (min < 0) {
258
- min = 0;
259
- }
260
- return [4 /*yield*/, this.parse(opts)];
261
- case 1:
262
- indexData = _b.sent();
263
- if (!indexData) {
264
- return [2 /*return*/, []];
265
- }
266
- ba = indexData.indices[refId];
267
- if (!ba) {
268
- return [2 /*return*/, []];
269
- }
270
- overlappingBins = this.reg2bins(min, max);
271
- chunks = [];
272
- // Find chunks in overlapping bins. Leaf bins (< 4681) are not pruned
273
- for (_i = 0, overlappingBins_1 = overlappingBins; _i < overlappingBins_1.length; _i++) {
274
- _a = overlappingBins_1[_i], start = _a[0], end = _a[1];
275
- for (bin = start; bin <= end; bin++) {
276
- if (ba.binIndex[bin]) {
277
- binChunks = ba.binIndex[bin];
278
- for (c = 0; c < binChunks.length; ++c) {
279
- chunks.push(new chunk_1.default(binChunks[c].minv, binChunks[c].maxv, bin));
280
- }
281
- }
282
- }
283
- }
284
- nintv = ba.linearIndex.length;
285
- lowest = null;
286
- minLin = Math.min(min >> 14, nintv - 1);
287
- maxLin = Math.min(max >> 14, nintv - 1);
288
- for (i = minLin; i <= maxLin; ++i) {
289
- vp = ba.linearIndex[i];
290
- if (vp) {
291
- if (!lowest || vp.compareTo(lowest) < 0) {
292
- lowest = vp;
293
- }
294
- }
168
+ }
169
+ blocksForRange(refId, min, max, opts = {}) {
170
+ return __awaiter(this, void 0, void 0, function* () {
171
+ if (min < 0) {
172
+ min = 0;
173
+ }
174
+ const indexData = yield this.parse(opts);
175
+ if (!indexData) {
176
+ return [];
177
+ }
178
+ const ba = indexData.indices[refId];
179
+ if (!ba) {
180
+ return [];
181
+ }
182
+ // List of bin #s that overlap min, max
183
+ const overlappingBins = this.reg2bins(min, max);
184
+ const chunks = [];
185
+ // Find chunks in overlapping bins. Leaf bins (< 4681) are not pruned
186
+ for (const [start, end] of overlappingBins) {
187
+ for (let bin = start; bin <= end; bin++) {
188
+ if (ba.binIndex[bin]) {
189
+ const binChunks = ba.binIndex[bin];
190
+ for (let c = 0; c < binChunks.length; ++c) {
191
+ chunks.push(new chunk_1.default(binChunks[c].minv, binChunks[c].maxv, bin));
295
192
  }
296
- return [2 /*return*/, (0, util_1.optimizeChunks)(chunks, lowest)];
193
+ }
297
194
  }
298
- });
195
+ }
196
+ // Use the linear index to find minimum file position of chunks that could
197
+ // contain alignments in the region
198
+ const nintv = ba.linearIndex.length;
199
+ let lowest = null;
200
+ const minLin = Math.min(min >> 14, nintv - 1);
201
+ const maxLin = Math.min(max >> 14, nintv - 1);
202
+ for (let i = minLin; i <= maxLin; ++i) {
203
+ const vp = ba.linearIndex[i];
204
+ if (vp) {
205
+ if (!lowest || vp.compareTo(lowest) < 0) {
206
+ lowest = vp;
207
+ }
208
+ }
209
+ }
210
+ return (0, util_1.optimizeChunks)(chunks, lowest);
299
211
  });
300
- };
301
- return BAI;
302
- }(indexFile_1.default));
212
+ }
213
+ }
303
214
  exports.default = BAI;
304
215
  //# sourceMappingURL=bai.js.map
package/dist/bai.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bai.js","sourceRoot":"","sources":["../src/bai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bai.js","sourceRoot":"","sources":["../src/bai.ts"],"names":[],"mappings":"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"}