@gmod/cram 3.0.3 → 3.0.5
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/dist/craiIndex.d.ts +3 -5
- package/dist/craiIndex.js +28 -30
- package/dist/craiIndex.js.map +1 -1
- package/dist/cram-bundle.js +1 -1
- package/dist/cramFile/codecs/byteArrayLength.js +3 -6
- package/dist/cramFile/codecs/byteArrayLength.js.map +1 -1
- package/dist/cramFile/codecs/byteArrayStop.d.ts +0 -1
- package/dist/cramFile/codecs/byteArrayStop.js +0 -6
- package/dist/cramFile/codecs/byteArrayStop.js.map +1 -1
- package/dist/cramFile/codecs/external.js +0 -1
- package/dist/cramFile/codecs/external.js.map +1 -1
- package/dist/cramFile/codecs/getBits.js.map +1 -1
- package/dist/cramFile/codecs/huffman.js +1 -2
- package/dist/cramFile/codecs/huffman.js.map +1 -1
- package/dist/cramFile/container/compressionScheme.d.ts +1 -1
- package/dist/cramFile/container/compressionScheme.js +12 -4
- package/dist/cramFile/container/compressionScheme.js.map +1 -1
- package/dist/cramFile/container/index.js +3 -1
- package/dist/cramFile/container/index.js.map +1 -1
- package/dist/cramFile/file.d.ts +1 -1
- package/dist/cramFile/file.js +11 -12
- package/dist/cramFile/file.js.map +1 -1
- package/dist/cramFile/record.js +1 -7
- package/dist/cramFile/record.js.map +1 -1
- package/dist/cramFile/sectionParsers.js.map +1 -1
- package/dist/cramFile/slice/decodeRecord.js +6 -11
- package/dist/cramFile/slice/decodeRecord.js.map +1 -1
- package/dist/cramFile/slice/index.d.ts +3 -2
- package/dist/cramFile/slice/index.js +10 -16
- package/dist/cramFile/slice/index.js.map +1 -1
- package/dist/cramFile/util.js.map +1 -1
- package/dist/indexedCramFile.js +0 -3
- package/dist/indexedCramFile.js.map +1 -1
- package/dist/rans/d04.js +1 -1
- package/dist/rans/d04.js.map +1 -1
- package/dist/rans/d14.js +1 -1
- package/dist/rans/d14.js.map +1 -1
- package/dist/rans/decoding.js +1 -1
- package/dist/rans/decoding.js.map +1 -1
- package/dist/rans/frequencies.js +1 -1
- package/dist/rans/frequencies.js.map +1 -1
- package/dist/rans/index.js +1 -1
- package/dist/rans/index.js.map +1 -1
- package/esm/craiIndex.d.ts +3 -5
- package/esm/craiIndex.js +63 -64
- package/esm/craiIndex.js.map +1 -1
- package/esm/cramFile/codecs/byteArrayLength.js +3 -6
- package/esm/cramFile/codecs/byteArrayLength.js.map +1 -1
- package/esm/cramFile/codecs/byteArrayStop.d.ts +0 -1
- package/esm/cramFile/codecs/byteArrayStop.js +0 -6
- package/esm/cramFile/codecs/byteArrayStop.js.map +1 -1
- package/esm/cramFile/codecs/external.js +0 -1
- package/esm/cramFile/codecs/external.js.map +1 -1
- package/esm/cramFile/codecs/getBits.js.map +1 -1
- package/esm/cramFile/codecs/huffman.js +1 -2
- package/esm/cramFile/codecs/huffman.js.map +1 -1
- package/esm/cramFile/container/compressionScheme.d.ts +1 -1
- package/esm/cramFile/container/compressionScheme.js +12 -4
- package/esm/cramFile/container/compressionScheme.js.map +1 -1
- package/esm/cramFile/container/index.js +3 -1
- package/esm/cramFile/container/index.js.map +1 -1
- package/esm/cramFile/file.d.ts +1 -1
- package/esm/cramFile/file.js +10 -11
- package/esm/cramFile/file.js.map +1 -1
- package/esm/cramFile/record.js +1 -7
- package/esm/cramFile/record.js.map +1 -1
- package/esm/cramFile/sectionParsers.js.map +1 -1
- package/esm/cramFile/slice/decodeRecord.js +6 -8
- package/esm/cramFile/slice/decodeRecord.js.map +1 -1
- package/esm/cramFile/slice/index.d.ts +3 -2
- package/esm/cramFile/slice/index.js +10 -16
- package/esm/cramFile/slice/index.js.map +1 -1
- package/esm/cramFile/util.js.map +1 -1
- package/esm/indexedCramFile.js +0 -3
- package/esm/indexedCramFile.js.map +1 -1
- package/esm/rans/d04.js +1 -1
- package/esm/rans/d04.js.map +1 -1
- package/esm/rans/d14.js +1 -1
- package/esm/rans/d14.js.map +1 -1
- package/esm/rans/decoding.js +1 -1
- package/esm/rans/decoding.js.map +1 -1
- package/esm/rans/frequencies.js +1 -1
- package/esm/rans/frequencies.js.map +1 -1
- package/esm/rans/index.js +1 -1
- package/esm/rans/index.js.map +1 -1
- package/package.json +10 -10
- package/src/craiIndex.ts +82 -81
- package/src/cramFile/codecs/byteArrayLength.ts +3 -8
- package/src/cramFile/codecs/byteArrayStop.ts +0 -12
- package/src/cramFile/codecs/external.ts +1 -2
- package/src/cramFile/codecs/getBits.ts +1 -1
- package/src/cramFile/codecs/huffman.ts +11 -12
- package/src/cramFile/container/compressionScheme.ts +38 -31
- package/src/cramFile/container/index.ts +3 -1
- package/src/cramFile/file.ts +10 -11
- package/src/cramFile/record.ts +3 -10
- package/src/cramFile/sectionParsers.ts +4 -4
- package/src/cramFile/slice/decodeRecord.ts +22 -32
- package/src/cramFile/slice/index.ts +16 -25
- package/src/cramFile/util.ts +36 -35
- package/src/indexedCramFile.ts +1 -4
- package/src/rans/d04.ts +1 -1
- package/src/rans/d14.ts +1 -1
- package/src/rans/decoding.ts +1 -1
- package/src/rans/frequencies.ts +1 -1
- package/src/rans/index.ts +1 -1
package/dist/craiIndex.d.ts
CHANGED
|
@@ -6,9 +6,9 @@ export interface Slice {
|
|
|
6
6
|
sliceStart: number;
|
|
7
7
|
sliceBytes: number;
|
|
8
8
|
}
|
|
9
|
-
type ParsedIndex = Record<string, Slice[]>;
|
|
9
|
+
type ParsedIndex = Record<string, Slice[] | undefined>;
|
|
10
10
|
export default class CraiIndex {
|
|
11
|
-
private
|
|
11
|
+
private parseIndexP?;
|
|
12
12
|
private filehandle;
|
|
13
13
|
/**
|
|
14
14
|
*
|
|
@@ -19,9 +19,7 @@ export default class CraiIndex {
|
|
|
19
19
|
*/
|
|
20
20
|
constructor(args: CramFileSource);
|
|
21
21
|
parseIndex(): Promise<ParsedIndex>;
|
|
22
|
-
getIndex(
|
|
23
|
-
signal?: AbortSignal;
|
|
24
|
-
}): Promise<ParsedIndex>;
|
|
22
|
+
getIndex(): Promise<ParsedIndex>;
|
|
25
23
|
/**
|
|
26
24
|
* @param {number} seqId
|
|
27
25
|
* @returns {Promise} true if the index contains entries for
|
package/dist/craiIndex.js
CHANGED
|
@@ -8,29 +8,31 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const abortable_promise_cache_1 = __importDefault(require("@gmod/abortable-promise-cache"));
|
|
16
|
-
const quick_lru_1 = __importDefault(require("quick-lru"));
|
|
17
12
|
const unzip_1 = require("./unzip");
|
|
18
13
|
const io_1 = require("./io");
|
|
19
14
|
const errors_1 = require("./errors");
|
|
20
15
|
const BAI_MAGIC = 21578050; // BAI\1
|
|
21
16
|
function addRecordToIndex(index, record) {
|
|
22
17
|
const [seqId, start, span, containerStart, sliceStart, sliceBytes] = record;
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
const s = seqId;
|
|
19
|
+
if (!index[s]) {
|
|
20
|
+
index[s] = [];
|
|
25
21
|
}
|
|
26
|
-
index[
|
|
27
|
-
start,
|
|
28
|
-
span,
|
|
29
|
-
containerStart,
|
|
30
|
-
sliceStart,
|
|
31
|
-
sliceBytes,
|
|
22
|
+
index[s].push({
|
|
23
|
+
start: start,
|
|
24
|
+
span: span,
|
|
25
|
+
containerStart: containerStart,
|
|
26
|
+
sliceStart: sliceStart,
|
|
27
|
+
sliceBytes: sliceBytes,
|
|
32
28
|
});
|
|
33
29
|
}
|
|
30
|
+
function maybeUnzip(data) {
|
|
31
|
+
if (data[0] === 31 && data[1] === 139) {
|
|
32
|
+
return (0, unzip_1.unzip)(data);
|
|
33
|
+
}
|
|
34
|
+
return data;
|
|
35
|
+
}
|
|
34
36
|
class CraiIndex {
|
|
35
37
|
/**
|
|
36
38
|
*
|
|
@@ -41,22 +43,11 @@ class CraiIndex {
|
|
|
41
43
|
*/
|
|
42
44
|
constructor(args) {
|
|
43
45
|
this.filehandle = (0, io_1.open)(args.url, args.path, args.filehandle);
|
|
44
|
-
this._parseCache = new abortable_promise_cache_1.default({
|
|
45
|
-
cache: new quick_lru_1.default({ maxSize: 1 }),
|
|
46
|
-
fill: (_data, _signal) => this.parseIndex(),
|
|
47
|
-
});
|
|
48
46
|
}
|
|
49
47
|
parseIndex() {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
.readFile()
|
|
53
|
-
.then(data => {
|
|
54
|
-
if (data[0] === 31 && data[1] === 139) {
|
|
55
|
-
return (0, unzip_1.unzip)(data);
|
|
56
|
-
}
|
|
57
|
-
return data;
|
|
58
|
-
})
|
|
59
|
-
.then(uncompressedBuffer => {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
const index = {};
|
|
50
|
+
const uncompressedBuffer = maybeUnzip(yield this.filehandle.readFile());
|
|
60
51
|
if (uncompressedBuffer.length > 4 &&
|
|
61
52
|
uncompressedBuffer.readUInt32LE(0) === BAI_MAGIC) {
|
|
62
53
|
throw new errors_1.CramMalformedError('invalid .crai index file. note: file appears to be a .bai index. this is technically legal but please open a github issue if you need support');
|
|
@@ -97,13 +88,20 @@ class CraiIndex {
|
|
|
97
88
|
}
|
|
98
89
|
// sort each of them by start
|
|
99
90
|
Object.entries(index).forEach(([seqId, ent]) => {
|
|
100
|
-
|
|
91
|
+
const e2 = ent;
|
|
92
|
+
index[seqId] = e2.sort((a, b) => a.start - b.start || a.span - b.span);
|
|
101
93
|
});
|
|
102
94
|
return index;
|
|
103
95
|
});
|
|
104
96
|
}
|
|
105
|
-
getIndex(
|
|
106
|
-
|
|
97
|
+
getIndex() {
|
|
98
|
+
if (!this.parseIndexP) {
|
|
99
|
+
this.parseIndexP = this.parseIndex().catch((e) => {
|
|
100
|
+
this.parseIndexP = undefined;
|
|
101
|
+
throw e;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return this.parseIndexP;
|
|
107
105
|
}
|
|
108
106
|
/**
|
|
109
107
|
* @param {number} seqId
|
package/dist/craiIndex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"craiIndex.js","sourceRoot":"","sources":["../src/craiIndex.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"craiIndex.js","sourceRoot":"","sources":["../src/craiIndex.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mCAA+B;AAC/B,6BAA2B;AAC3B,qCAA6C;AAI7C,MAAM,SAAS,GAAG,QAAU,CAAA,CAAC,QAAQ;AAYrC,SAAS,gBAAgB,CAAC,KAAkB,EAAE,MAAgB;IAC5D,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,GAAG,MAAM,CAAA;IAE3E,MAAM,CAAC,GAAG,KAAM,CAAA;IAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACd,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACZ,KAAK,EAAE,KAAM;QACb,IAAI,EAAE,IAAK;QACX,cAAc,EAAE,cAAe;QAC/B,UAAU,EAAE,UAAW;QACvB,UAAU,EAAE,UAAW;KACxB,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACtC,OAAO,IAAA,aAAK,EAAC,IAAI,CAAC,CAAA;IACpB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAqB,SAAS;IAe5B;;;;;;OAMG;IACH,YAAY,IAAoB;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAA,SAAI,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAC9D,CAAC;IAEK,UAAU;;YACd,MAAM,KAAK,GAAgB,EAAE,CAAA;YAC7B,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;YACvE,IACE,kBAAkB,CAAC,MAAM,GAAG,CAAC;gBAC7B,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,EAChD,CAAC;gBACD,MAAM,IAAI,2BAAkB,CAC1B,+IAA+I,CAChJ,CAAA;YACH,CAAC;YACD,mDAAmD;YACnD,uDAAuD;YACvD,uEAAuE;YACvE,gDAAgD;YAChD,IAAI,aAAa,GAAa,EAAE,CAAA;YAChC,IAAI,aAAa,GAAG,EAAE,CAAA;YACtB,KAAK,MAAM,QAAQ,IAAI,kBAAkB,EAAE,CAAC;gBAC1C,IACE,CAAC,QAAQ,IAAI,EAAE,IAAI,QAAQ,IAAI,EAAE,CAAC,CAAC,SAAS;oBAC5C,CAAC,CAAC,aAAa,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,eAAe,EACnD,CAAC;oBACD,aAAa,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;gBAChD,CAAC;qBAAM,IAAI,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACnC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAA;oBACtD,aAAa,GAAG,EAAE,CAAA;gBACpB,CAAC;qBAAM,IAAI,QAAQ,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;oBACpC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAA;oBACtD,aAAa,GAAG,EAAE,CAAA;oBAClB,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;oBACtC,aAAa,GAAG,EAAE,CAAA;gBACpB,CAAC;qBAAM,IAAI,QAAQ,KAAK,EAAE,CAAC,QAAQ,IAAI,QAAQ,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;oBACnE,oDAAoD;oBACpD,oCAAoC;oBACpC,MAAM,IAAI,2BAAkB,CAAC,0BAA0B,CAAC,CAAA;gBAC1D,CAAC;YACH,CAAC;YAED,8DAA8D;YAC9D,IAAI,aAAa,EAAE,CAAC;gBAClB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAA;YACxD,CAAC;YACD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;YACxC,CAAC;YAED,6BAA6B;YAC7B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE;gBAC7C,MAAM,EAAE,GAAG,GAAI,CAAA;gBACf,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;YACxE,CAAC,CAAC,CAAA;YACF,OAAO,KAAK,CAAA;QACd,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;gBACxD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;gBAC5B,MAAM,CAAC,CAAA;YACT,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED;;;;OAIG;IACG,2BAA2B,CAAC,KAAa;;YAC7C,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;QACzC,CAAC;KAAA;IAED;;;;;;;;;;OAUG;IACG,kBAAkB,CACtB,KAAa,EACb,UAAkB,EAClB,QAAgB;;YAEhB,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;YACjD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,EAAE,CAAA;YACX,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;gBAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAA;gBAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;gBACzC,IAAI,UAAU,GAAG,QAAQ,EAAE,CAAC;oBAC1B,OAAO,CAAC,CAAC,CAAA;gBACX,CAAC,CAAC,0BAA0B;gBAC5B,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;oBAC3B,OAAO,CAAC,CAAA;gBACV,CAAC,CAAC,wBAAwB;gBAC1B,OAAO,CAAC,CAAA,CAAC,uBAAuB;YAClC,CAAC,CAAA;YACD,MAAM,IAAI,GAAG,EAAa,CAAA;YAC1B,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAClB,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;CACF;AA3ID,4BA2IC"}
|