@gmod/cram 2.0.4 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/cram-bundle.js +1 -1
- package/dist/cramFile/codecs/byteArrayLength.js +1 -1
- package/dist/cramFile/codecs/byteArrayLength.js.map +1 -1
- package/dist/cramFile/codecs/byteArrayStop.js +1 -1
- package/dist/cramFile/codecs/external.js +1 -1
- package/dist/cramFile/codecs/external.js.map +1 -1
- package/dist/cramFile/codecs/huffman.js +3 -2
- package/dist/cramFile/codecs/huffman.js.map +1 -1
- package/dist/cramFile/codecs/subexp.js.map +1 -1
- package/dist/cramFile/container/compressionScheme.d.ts +0 -3
- package/dist/cramFile/container/compressionScheme.js +0 -4
- package/dist/cramFile/container/compressionScheme.js.map +1 -1
- package/dist/cramFile/container/index.d.ts +57 -3
- package/dist/cramFile/container/index.js +21 -12
- package/dist/cramFile/container/index.js.map +1 -1
- package/dist/cramFile/file.d.ts +25 -59
- package/dist/cramFile/file.js +33 -37
- package/dist/cramFile/file.js.map +1 -1
- package/dist/cramFile/record.d.ts +1 -1
- package/dist/cramFile/record.js +2 -2
- package/dist/cramFile/record.js.map +1 -1
- package/dist/cramFile/sectionParsers.d.ts +195 -48
- package/dist/cramFile/sectionParsers.js +621 -303
- package/dist/cramFile/sectionParsers.js.map +1 -1
- package/dist/cramFile/slice/decodeRecord.js +5 -4
- package/dist/cramFile/slice/decodeRecord.js.map +1 -1
- package/dist/cramFile/slice/index.d.ts +23 -1
- package/dist/cramFile/slice/index.js +11 -8
- package/dist/cramFile/slice/index.js.map +1 -1
- package/dist/cramFile/util.d.ts +6 -4
- package/dist/cramFile/util.js +88 -6
- package/dist/cramFile/util.js.map +1 -1
- package/dist/rans/d04.js.map +1 -1
- package/dist/rans/decoding.d.ts +4 -4
- package/dist/rans/decoding.js +5 -6
- package/dist/rans/decoding.js.map +1 -1
- package/dist/rans/index.js +4 -3
- package/dist/rans/index.js.map +1 -1
- package/esm/cramFile/codecs/byteArrayLength.js +1 -1
- package/esm/cramFile/codecs/byteArrayLength.js.map +1 -1
- package/esm/cramFile/codecs/byteArrayStop.js +1 -1
- package/esm/cramFile/codecs/external.js +1 -1
- package/esm/cramFile/codecs/external.js.map +1 -1
- package/esm/cramFile/codecs/huffman.js +3 -2
- package/esm/cramFile/codecs/huffman.js.map +1 -1
- package/esm/cramFile/codecs/subexp.js.map +1 -1
- package/esm/cramFile/container/compressionScheme.d.ts +0 -3
- package/esm/cramFile/container/compressionScheme.js +0 -4
- package/esm/cramFile/container/compressionScheme.js.map +1 -1
- package/esm/cramFile/container/index.d.ts +57 -3
- package/esm/cramFile/container/index.js +19 -10
- package/esm/cramFile/container/index.js.map +1 -1
- package/esm/cramFile/file.d.ts +25 -59
- package/esm/cramFile/file.js +27 -29
- package/esm/cramFile/file.js.map +1 -1
- package/esm/cramFile/record.d.ts +1 -1
- package/esm/cramFile/record.js +2 -2
- package/esm/cramFile/record.js.map +1 -1
- package/esm/cramFile/sectionParsers.d.ts +195 -48
- package/esm/cramFile/sectionParsers.js +620 -303
- package/esm/cramFile/sectionParsers.js.map +1 -1
- package/esm/cramFile/slice/decodeRecord.js +5 -4
- package/esm/cramFile/slice/decodeRecord.js.map +1 -1
- package/esm/cramFile/slice/index.d.ts +23 -1
- package/esm/cramFile/slice/index.js +12 -9
- package/esm/cramFile/slice/index.js.map +1 -1
- package/esm/cramFile/util.d.ts +6 -4
- package/esm/cramFile/util.js +87 -6
- package/esm/cramFile/util.js.map +1 -1
- package/esm/rans/d04.js.map +1 -1
- package/esm/rans/decoding.d.ts +4 -4
- package/esm/rans/decoding.js +5 -6
- package/esm/rans/decoding.js.map +1 -1
- package/esm/rans/index.js +3 -2
- package/esm/rans/index.js.map +1 -1
- package/package.json +7 -8
- package/src/cramFile/codecs/byteArrayLength.ts +1 -2
- package/src/cramFile/codecs/byteArrayStop.ts +1 -1
- package/src/cramFile/codecs/external.ts +1 -1
- package/src/cramFile/codecs/huffman.ts +3 -2
- package/src/cramFile/codecs/subexp.ts +2 -2
- package/src/cramFile/container/compressionScheme.ts +1 -8
- package/src/cramFile/container/index.ts +23 -12
- package/src/cramFile/declare.d.ts +1 -0
- package/src/cramFile/file.ts +37 -53
- package/src/cramFile/record.ts +4 -7
- package/src/cramFile/sectionParsers.ts +668 -390
- package/src/cramFile/slice/decodeRecord.ts +20 -12
- package/src/cramFile/slice/index.ts +13 -7
- package/src/cramFile/util.ts +91 -92
- package/src/rans/d04.ts +1 -1
- package/src/rans/decoding.ts +5 -7
- package/src/rans/index.ts +3 -2
- package/src/typings/binary-parser.d.ts +0 -44
package/dist/rans/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rans/index.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rans/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"byteArrayLength.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/byteArrayLength.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"byteArrayLength.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/byteArrayLength.ts"],"names":[],"mappings":"AAAA,OAAO,SAAsB,MAAM,SAAS,CAAA;AAK5C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAOrC,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,SAG/C;IAGC,YACE,UAAiD,EACjD,QAAqB,EACrB,gBAAkC;QAElC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QACxC,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC7B,MAAM,IAAI,SAAS,CACjB,8CAA8C,QAAQ,EAAE,CACzD,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,CACJ,KAAgB,EAChB,aAA4B,EAC5B,iBAAgD,EAChD,OAAgB;QAEhB,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAC1C,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CACpC,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,OAAO,CACR,CAAA;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QACtC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CACxB,KAAK,EACL,aAAa,EACb,iBAAiB,EACjB,OAAO,CACR,CAAA;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU;IACV,eAAe;QACb,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAA;QACtD,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;IACrD,CAAC;IAED,UAAU;IACV,aAAa;QACX,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAA;QACrD,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;IACtD,CAAC;CACF;AAED,+BAA+B;KAC5B,KAAK,CAAC,GAAG,CAAC;KACV,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAA"}
|
|
@@ -26,7 +26,7 @@ export default class ByteArrayStopCodec extends CramCodec {
|
|
|
26
26
|
while (dataBuffer[stopPosition] !== stopByte &&
|
|
27
27
|
stopPosition < dataBuffer.length) {
|
|
28
28
|
if (stopPosition === dataBuffer.length) {
|
|
29
|
-
throw new CramBufferOverrunError(
|
|
29
|
+
throw new CramBufferOverrunError('byteArrayStop reading beyond length of data buffer?');
|
|
30
30
|
}
|
|
31
31
|
stopPosition = stopPosition + 1;
|
|
32
32
|
}
|
|
@@ -20,7 +20,7 @@ export default class ExternalCodec extends CramCodec {
|
|
|
20
20
|
const { blockContentId } = this.parameters;
|
|
21
21
|
const contentBlock = blocksByContentId[blockContentId];
|
|
22
22
|
if (!contentBlock) {
|
|
23
|
-
throw new CramMalformedError(`no block found with content ID ${blockContentId}`);
|
|
23
|
+
throw new CramMalformedError(`no block found with content ID ${blockContentId}}`);
|
|
24
24
|
}
|
|
25
25
|
const cursor = cursors.externalBlocks.getCursor(blockContentId);
|
|
26
26
|
return this._decodeData(contentBlock, cursor);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/external.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,SAA8B,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAGlD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,SAG1C;IAMC,YACE,UAA8C,EAC9C,QAAwB;QAExB,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAA;QACpC,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QACrC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,sBAAsB,CAC9B,GAAG,IAAI,CAAC,QAAQ,iDAAiD,CAClE,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,CACJ,KAAgB,EAChB,aAA4B,EAC5B,iBAAgD,EAChD,OAAgB;QAEhB,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,UAAU,CAAA;QAC1C,MAAM,YAAY,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAA;QACtD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,kBAAkB,CAC1B,kCAAkC,cAAc,
|
|
1
|
+
{"version":3,"file":"external.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/external.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,SAA8B,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAGlD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,SAG1C;IAMC,YACE,UAA8C,EAC9C,QAAwB;QAExB,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAA;QACpC,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QACrC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,sBAAsB,CAC9B,GAAG,IAAI,CAAC,QAAQ,iDAAiD,CAClE,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,CACJ,KAAgB,EAChB,aAA4B,EAC5B,iBAAgD,EAChD,OAAgB;QAEhB,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,UAAU,CAAA;QAC1C,MAAM,YAAY,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAA;QACtD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,kBAAkB,CAC1B,kCAAkC,cAAc,GAAG,CACpD,CAAA;QACH,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;QAC/D,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAED,UAAU,CAAC,YAA2B,EAAE,MAAc;QACpD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CACnC,YAAY,CAAC,OAAO,EACpB,MAAM,CAAC,YAAY,CACpB,CAAA;QACD,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,SAAS,CAAA;QACrD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,WAAW,CAAC,YAA2B,EAAE,MAAc;QACrD,IAAI,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACvD,MAAM,IAAI,sBAAsB,CAC9B,mEAAmE,CACpE,CAAA;QACH,CAAC;QACD,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAA;IACpD,CAAC;CACF"}
|
|
@@ -23,7 +23,8 @@ export default class HuffmanIntCodec extends CramCodec {
|
|
|
23
23
|
this.buildCodeBook();
|
|
24
24
|
this.buildCodes();
|
|
25
25
|
this.buildCaches();
|
|
26
|
-
// if this is a degenerate zero-length huffman code, special-case the
|
|
26
|
+
// if this is a degenerate zero-length huffman code, special-case the
|
|
27
|
+
// decoding
|
|
27
28
|
if (this.sortedCodes[0].bitLength === 0) {
|
|
28
29
|
this._decode = this._decodeZeroLengthCode;
|
|
29
30
|
}
|
|
@@ -52,7 +53,7 @@ export default class HuffmanIntCodec extends CramCodec {
|
|
|
52
53
|
let codeLength = 0;
|
|
53
54
|
let codeValue = -1;
|
|
54
55
|
Object.entries(this.codeBook).forEach(([bitLength, symbols]) => {
|
|
55
|
-
const bitLengthInt = parseInt(bitLength, 10);
|
|
56
|
+
const bitLengthInt = Number.parseInt(bitLength, 10);
|
|
56
57
|
symbols.forEach(symbol => {
|
|
57
58
|
const code = {
|
|
58
59
|
bitLength: bitLengthInt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huffman.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/huffman.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,SAA8B,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,SAAS,eAAe,CAAC,EAAU;IACjC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAA;IACrC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,CAAA;IAC9C,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,CAAA;AAC3D,CAAC;AAQD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,SAG5C;IASC,YACE,UAAyC,EACzC,QAAwB;QAExB,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAZrB,UAAK,GAAyB,EAAE,CAAA;QAChC,aAAQ,GAA6B,EAAE,CAAA;QACvC,gBAAW,GAAW,EAAE,CAAA;QACxB,0BAAqB,GAAa,EAAE,CAAA;QACpC,mBAAc,GAAa,EAAE,CAAA;QAC7B,8BAAyB,GAAa,EAAE,CAAA;QACxC,mBAAc,GAAa,EAAE,CAAA;QAOnC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,SAAS,CACjB,GAAG,IAAI,CAAC,QAAQ,oDAAoD,CACrE,CAAA;QACH,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAA;QACpB,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,CAAC,WAAW,EAAE,CAAA;QAElB,
|
|
1
|
+
{"version":3,"file":"huffman.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/huffman.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subexp.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/subexp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,SAAsB,MAAM,SAAS,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAGxC;IACC,YAAY,UAAwC,EAAE,QAAe;QACnE,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,sBAAsB,CAC9B,GAAG,IAAI,CAAC,QAAQ,+CAA+C,CAChE,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,CACJ,KAAgB,EAChB,aAA4B,EAC5B,iBAAgD,EAChD,OAAgB;QAEhB,IAAI,cAAc,GAAG,CAAC,CAAA;QACtB,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC;YAC5D,cAAc,GAAG,cAAc,GAAG,CAAC,CAAA;QACrC,CAAC;QAED,IAAI,
|
|
1
|
+
{"version":3,"file":"subexp.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/subexp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,SAAsB,MAAM,SAAS,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAGxC;IACC,YAAY,UAAwC,EAAE,QAAe;QACnE,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,sBAAsB,CAC9B,GAAG,IAAI,CAAC,QAAQ,+CAA+C,CAChE,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,CACJ,KAAgB,EAChB,aAA4B,EAC5B,iBAAgD,EAChD,OAAgB;QAEhB,IAAI,cAAc,GAAG,CAAC,CAAA;QACtB,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC;YAC5D,cAAc,GAAG,cAAc,GAAG,CAAC,CAAA;QACrC,CAAC;QAED,IAAI,CAAS,CAAA;QACb,IAAI,CAAS,CAAA;QACb,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;YACzB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;YACrB,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QAC1D,CAAC;aAAM,CAAC;YACN,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAA;YAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;YACjE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;QACrB,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAA;IACnC,CAAC;CACF"}
|
|
@@ -48,9 +48,6 @@ export default class CramContainerCompressionScheme {
|
|
|
48
48
|
tagCodecCache: Record<string, CramCodec>;
|
|
49
49
|
tagEncoding: Record<string, CramEncoding>;
|
|
50
50
|
dataSeriesEncoding: DataSeriesEncodingMap;
|
|
51
|
-
private preservation;
|
|
52
|
-
private _endPosition;
|
|
53
|
-
private _size;
|
|
54
51
|
constructor(content: CramCompressionHeader);
|
|
55
52
|
/**
|
|
56
53
|
* @param {string} tagName three-character tag name
|
|
@@ -68,7 +68,6 @@ export default class CramContainerCompressionScheme {
|
|
|
68
68
|
this.dataSeriesCodecCache = {};
|
|
69
69
|
this.tagCodecCache = {};
|
|
70
70
|
this.tagEncoding = {};
|
|
71
|
-
// Object.assign(this, content)
|
|
72
71
|
// interpret some of the preservation map tags for convenient use
|
|
73
72
|
this.readNamesIncluded = content.preservation.RN;
|
|
74
73
|
this.APdelta = content.preservation.AP;
|
|
@@ -77,9 +76,6 @@ export default class CramContainerCompressionScheme {
|
|
|
77
76
|
this.substitutionMatrix = parseSubstitutionMatrix(content.preservation.SM);
|
|
78
77
|
this.dataSeriesEncoding = content.dataSeriesEncoding;
|
|
79
78
|
this.tagEncoding = content.tagEncoding;
|
|
80
|
-
this.preservation = content.preservation;
|
|
81
|
-
this._size = content._size;
|
|
82
|
-
this._endPosition = content._endPosition;
|
|
83
79
|
}
|
|
84
80
|
/**
|
|
85
81
|
* @param {string} tagName three-character tag name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compressionScheme.js","sourceRoot":"","sources":["../../../src/cramFile/container/compressionScheme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAI5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAMjD,sDAAsD;AACtD,aAAa;AACb,MAAM,eAAe,GAAG;IACtB,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,KAAK;IACT,gBAAgB;IAChB,gBAAgB;CACR,CAAA;AAIV,SAAS,uBAAuB,CAAC,SAAmB;IAClD,MAAM,MAAM,GAAe,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IAExC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IAExC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IAExC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IAExC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IAExC,OAAO,MAAM,CAAA;AACf,CAAC;AAMD,MAAM,CAAC,OAAO,OAAO,8BAA8B;
|
|
1
|
+
{"version":3,"file":"compressionScheme.js","sourceRoot":"","sources":["../../../src/cramFile/container/compressionScheme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAI5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAMjD,sDAAsD;AACtD,aAAa;AACb,MAAM,eAAe,GAAG;IACtB,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,KAAK;IACT,gBAAgB;IAChB,gBAAgB;CACR,CAAA;AAIV,SAAS,uBAAuB,CAAC,SAAmB;IAClD,MAAM,MAAM,GAAe,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IAExC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IAExC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IAExC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
1
2
|
import CramSlice from '../slice';
|
|
2
3
|
import CramContainerCompressionScheme from './compressionScheme';
|
|
3
4
|
import CramFile from '../file';
|
|
@@ -5,9 +6,39 @@ export default class CramContainer {
|
|
|
5
6
|
file: CramFile;
|
|
6
7
|
filePosition: number;
|
|
7
8
|
constructor(file: CramFile, filePosition: number);
|
|
8
|
-
getHeader(): Promise<
|
|
9
|
+
getHeader(): Promise<({
|
|
10
|
+
length: number;
|
|
11
|
+
refSeqId: number;
|
|
12
|
+
refSeqStart: number;
|
|
13
|
+
alignmentSpan: number;
|
|
14
|
+
numBlocks: number;
|
|
15
|
+
numLandmarks: number;
|
|
16
|
+
numBases: number | undefined;
|
|
17
|
+
recordCounter: number;
|
|
18
|
+
numRecords: number;
|
|
19
|
+
} & {
|
|
20
|
+
_endPosition: number;
|
|
21
|
+
_size: number;
|
|
22
|
+
} & {
|
|
23
|
+
numLandmarks: number;
|
|
24
|
+
landmarks: number[];
|
|
25
|
+
crc32?: number | undefined;
|
|
26
|
+
} & {
|
|
27
|
+
_endPosition: number;
|
|
28
|
+
_size: number;
|
|
29
|
+
} & {
|
|
30
|
+
_size: number;
|
|
31
|
+
_endPosition: number;
|
|
32
|
+
}) | undefined>;
|
|
9
33
|
getCompressionHeaderBlock(): Promise<{
|
|
10
|
-
parsedContent:
|
|
34
|
+
parsedContent: {
|
|
35
|
+
dataSeriesEncoding: import("../codecs/dataSeriesTypes").DataSeriesEncodingMap;
|
|
36
|
+
preservation: import("../sectionParsers").CramPreservationMap;
|
|
37
|
+
tagEncoding: Record<string, import("../encoding").CramEncoding>;
|
|
38
|
+
} & {
|
|
39
|
+
_endPosition: number;
|
|
40
|
+
_size: number;
|
|
41
|
+
};
|
|
11
42
|
compressionMethod: import("../sectionParsers").CompressionMethod;
|
|
12
43
|
contentType: "FILE_HEADER" | "COMPRESSION_HEADER" | "MAPPED_SLICE_HEADER" | "UNMAPPED_SLICE_HEADER" | "EXTERNAL_DATA" | "CORE_DATA";
|
|
13
44
|
contentId: number;
|
|
@@ -22,5 +53,28 @@ export default class CramContainer {
|
|
|
22
53
|
getFirstBlock(): Promise<import("../file").CramFileBlock | undefined>;
|
|
23
54
|
getCompressionScheme(): Promise<CramContainerCompressionScheme | undefined>;
|
|
24
55
|
getSlice(slicePosition: number, sliceSize: number): CramSlice;
|
|
25
|
-
_readContainerHeader(position: number): Promise<
|
|
56
|
+
_readContainerHeader(position: number): Promise<({
|
|
57
|
+
length: number;
|
|
58
|
+
refSeqId: number;
|
|
59
|
+
refSeqStart: number;
|
|
60
|
+
alignmentSpan: number;
|
|
61
|
+
numBlocks: number;
|
|
62
|
+
numLandmarks: number;
|
|
63
|
+
numBases: number | undefined;
|
|
64
|
+
recordCounter: number;
|
|
65
|
+
numRecords: number;
|
|
66
|
+
} & {
|
|
67
|
+
_endPosition: number;
|
|
68
|
+
_size: number;
|
|
69
|
+
} & {
|
|
70
|
+
numLandmarks: number;
|
|
71
|
+
landmarks: number[];
|
|
72
|
+
crc32?: number | undefined;
|
|
73
|
+
} & {
|
|
74
|
+
_endPosition: number;
|
|
75
|
+
_size: number;
|
|
76
|
+
} & {
|
|
77
|
+
_size: number;
|
|
78
|
+
_endPosition: number;
|
|
79
|
+
}) | undefined>;
|
|
26
80
|
}
|
|
@@ -1,30 +1,33 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
1
2
|
import { CramMalformedError } from '../../errors';
|
|
3
|
+
// locals
|
|
2
4
|
import { itf8Size, parseItem, tinyMemoize } from '../util';
|
|
3
5
|
import CramSlice from '../slice';
|
|
4
6
|
import CramContainerCompressionScheme from './compressionScheme';
|
|
7
|
+
import { getSectionParsers } from '../sectionParsers';
|
|
5
8
|
export default class CramContainer {
|
|
6
9
|
constructor(file, filePosition) {
|
|
7
10
|
this.file = file;
|
|
8
11
|
this.filePosition = filePosition;
|
|
9
12
|
}
|
|
10
|
-
// memoize
|
|
11
13
|
getHeader() {
|
|
12
14
|
return this._readContainerHeader(this.filePosition);
|
|
13
15
|
}
|
|
14
|
-
// memoize
|
|
15
16
|
async getCompressionHeaderBlock() {
|
|
16
17
|
const containerHeader = await this.getHeader();
|
|
17
|
-
// if there are no records in the container, there will be no compression
|
|
18
|
-
|
|
18
|
+
// if there are no records in the container, there will be no compression
|
|
19
|
+
// header
|
|
20
|
+
if (!(containerHeader === null || containerHeader === void 0 ? void 0 : containerHeader.numRecords)) {
|
|
19
21
|
return null;
|
|
20
22
|
}
|
|
21
|
-
const
|
|
23
|
+
const { majorVersion } = await this.file.getDefinition();
|
|
24
|
+
const sectionParsers = getSectionParsers(majorVersion);
|
|
22
25
|
const block = await this.getFirstBlock();
|
|
23
26
|
if (block === undefined) {
|
|
24
27
|
return undefined;
|
|
25
28
|
}
|
|
26
29
|
if (block.contentType !== 'COMPRESSION_HEADER') {
|
|
27
|
-
throw new CramMalformedError(`invalid content type ${block.contentType} in
|
|
30
|
+
throw new CramMalformedError(`invalid content type ${block.contentType} in compression header block`);
|
|
28
31
|
}
|
|
29
32
|
const content = parseItem(block.content, sectionParsers.cramCompressionHeader.parser, 0, block.contentPosition);
|
|
30
33
|
return {
|
|
@@ -34,10 +37,13 @@ export default class CramContainer {
|
|
|
34
37
|
}
|
|
35
38
|
async getFirstBlock() {
|
|
36
39
|
const containerHeader = await this.getHeader();
|
|
40
|
+
if (!containerHeader) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
37
43
|
return this.file.readBlock(containerHeader._endPosition);
|
|
38
44
|
}
|
|
39
|
-
// parses the compression header data into a CramContainerCompressionScheme
|
|
40
|
-
//
|
|
45
|
+
// parses the compression header data into a CramContainerCompressionScheme
|
|
46
|
+
// object
|
|
41
47
|
async getCompressionScheme() {
|
|
42
48
|
const header = await this.getCompressionHeaderBlock();
|
|
43
49
|
if (!header) {
|
|
@@ -51,10 +57,12 @@ export default class CramContainer {
|
|
|
51
57
|
return new CramSlice(this, slicePosition, sliceSize);
|
|
52
58
|
}
|
|
53
59
|
async _readContainerHeader(position) {
|
|
54
|
-
const
|
|
60
|
+
const { majorVersion } = await this.file.getDefinition();
|
|
61
|
+
const sectionParsers = getSectionParsers(majorVersion);
|
|
55
62
|
const { cramContainerHeader1, cramContainerHeader2 } = sectionParsers;
|
|
56
63
|
const { size: fileSize } = await this.file.stat();
|
|
57
64
|
if (position >= fileSize) {
|
|
65
|
+
console.warn(`pos:${position}>=fileSize:${fileSize} in cram container`);
|
|
58
66
|
return undefined;
|
|
59
67
|
}
|
|
60
68
|
// parse the container header. do it in 2 pieces because you cannot tell
|
|
@@ -64,7 +72,8 @@ export default class CramContainer {
|
|
|
64
72
|
const header1 = parseItem(bytes1, cramContainerHeader1.parser);
|
|
65
73
|
const numLandmarksSize = itf8Size(header1.numLandmarks);
|
|
66
74
|
if (position + header1.length >= fileSize) {
|
|
67
|
-
|
|
75
|
+
// header indicates container goes beyond fileSize
|
|
76
|
+
console.warn(`container at ${position} is beyond fileSize:${fileSize}, skipping`);
|
|
68
77
|
return undefined;
|
|
69
78
|
}
|
|
70
79
|
const bytes2 = Buffer.allocUnsafe(cramContainerHeader2.maxLength(header1.numLandmarks));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cramFile/container/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cramFile/container/index.ts"],"names":[],"mappings":"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"}
|
package/esm/cramFile/file.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
1
2
|
import QuickLRU from 'quick-lru';
|
|
2
|
-
import { Parser } from '@gmod/binary-parser';
|
|
3
3
|
import { BlockHeader, CompressionMethod } from './sectionParsers';
|
|
4
4
|
import CramContainer from './container';
|
|
5
5
|
import CramRecord from './record';
|
|
@@ -38,7 +38,12 @@ export default class CramFile {
|
|
|
38
38
|
buffer: Buffer;
|
|
39
39
|
}>;
|
|
40
40
|
stat(): Promise<import("generic-filehandle").Stats>;
|
|
41
|
-
getDefinition(): Promise<
|
|
41
|
+
getDefinition(): Promise<{
|
|
42
|
+
magic: string;
|
|
43
|
+
majorVersion: number;
|
|
44
|
+
minorVersion: number;
|
|
45
|
+
fileId: string;
|
|
46
|
+
}>;
|
|
42
47
|
getSamHeader(): Promise<{
|
|
43
48
|
tag: string;
|
|
44
49
|
data: {
|
|
@@ -47,60 +52,6 @@ export default class CramFile {
|
|
|
47
52
|
}[];
|
|
48
53
|
}[]>;
|
|
49
54
|
getHeaderText(): Promise<string | undefined>;
|
|
50
|
-
getSectionParsers(): Promise<{
|
|
51
|
-
cramFileDefinition: {
|
|
52
|
-
parser: Parser<{
|
|
53
|
-
magic: string;
|
|
54
|
-
majorVersion: number;
|
|
55
|
-
minorVersion: number;
|
|
56
|
-
fileId: string;
|
|
57
|
-
}>;
|
|
58
|
-
maxLength: number;
|
|
59
|
-
};
|
|
60
|
-
cramContainerHeader1: {
|
|
61
|
-
parser: Parser<{
|
|
62
|
-
length: number;
|
|
63
|
-
refSeqId: number;
|
|
64
|
-
refSeqStart: number;
|
|
65
|
-
alignmentSpan: number;
|
|
66
|
-
numRecords: number;
|
|
67
|
-
recordCounter: number;
|
|
68
|
-
numBases: number;
|
|
69
|
-
numBlocks: number;
|
|
70
|
-
numLandmarks: number;
|
|
71
|
-
}>;
|
|
72
|
-
maxLength: number;
|
|
73
|
-
};
|
|
74
|
-
cramContainerHeader2: {
|
|
75
|
-
parser: Parser<{
|
|
76
|
-
numLandmarks: number;
|
|
77
|
-
landmarks: number[];
|
|
78
|
-
crc32: number;
|
|
79
|
-
}>;
|
|
80
|
-
maxLength: (x: number) => number;
|
|
81
|
-
};
|
|
82
|
-
cramBlockHeader: {
|
|
83
|
-
parser: Parser<BlockHeader>;
|
|
84
|
-
maxLength: number;
|
|
85
|
-
};
|
|
86
|
-
cramBlockCrc32: {
|
|
87
|
-
parser: Parser<{
|
|
88
|
-
crc32: number;
|
|
89
|
-
}>;
|
|
90
|
-
maxLength: number;
|
|
91
|
-
};
|
|
92
|
-
cramCompressionHeader: {
|
|
93
|
-
parser: Parser<import("./sectionParsers").CramCompressionHeader>;
|
|
94
|
-
};
|
|
95
|
-
cramMappedSliceHeader: {
|
|
96
|
-
parser: Parser<import("./sectionParsers").MappedSliceHeader>;
|
|
97
|
-
maxLength: (numContentIds: number) => number;
|
|
98
|
-
};
|
|
99
|
-
cramUnmappedSliceHeader: {
|
|
100
|
-
parser: Parser<import("./sectionParsers").UnmappedSliceHeader>;
|
|
101
|
-
maxLength: (numContentIds: number) => number;
|
|
102
|
-
};
|
|
103
|
-
}>;
|
|
104
55
|
getContainerById(containerNumber: number): Promise<CramContainer | undefined>;
|
|
105
56
|
checkCrc32(position: number, length: number, recordedCrc32: number, description: string): Promise<void>;
|
|
106
57
|
/**
|
|
@@ -108,11 +59,26 @@ export default class CramFile {
|
|
|
108
59
|
*/
|
|
109
60
|
containerCount(): Promise<number | undefined>;
|
|
110
61
|
getContainerAtPosition(position: number): CramContainer;
|
|
111
|
-
readBlockHeader(position: number): Promise<
|
|
62
|
+
readBlockHeader(position: number): Promise<({
|
|
63
|
+
uncompressedSize: number;
|
|
64
|
+
compressedSize: number;
|
|
65
|
+
contentId: number;
|
|
66
|
+
contentType: "FILE_HEADER" | "COMPRESSION_HEADER" | "MAPPED_SLICE_HEADER" | "UNMAPPED_SLICE_HEADER" | "EXTERNAL_DATA" | "CORE_DATA";
|
|
67
|
+
compressionMethod: CompressionMethod;
|
|
68
|
+
} & {
|
|
69
|
+
_endPosition: number;
|
|
70
|
+
_size: number;
|
|
71
|
+
}) | undefined>;
|
|
112
72
|
_parseSection<T>(section: {
|
|
113
|
-
parser: Parser<T>;
|
|
114
73
|
maxLength: number;
|
|
115
|
-
|
|
74
|
+
parser: (buffer: Buffer, offset: number) => {
|
|
75
|
+
offset: number;
|
|
76
|
+
value: T;
|
|
77
|
+
};
|
|
78
|
+
}, position: number, size?: number, preReadBuffer?: undefined): Promise<(T & {
|
|
79
|
+
_endPosition: number;
|
|
80
|
+
_size: number;
|
|
81
|
+
}) | undefined>;
|
|
116
82
|
_uncompress(compressionMethod: CompressionMethod, inputBuffer: Buffer, outputBuffer: Buffer): Promise<void>;
|
|
117
83
|
readBlock(position: number): Promise<CramFileBlock | undefined>;
|
|
118
84
|
}
|
package/esm/cramFile/file.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
2
2
|
import crc32 from 'buffer-crc32';
|
|
3
3
|
import QuickLRU from 'quick-lru';
|
|
4
4
|
import htscodecs from '@jkbonfield/htscodecs';
|
|
5
|
-
// @ts-expect-error
|
|
6
5
|
import bzip2 from 'bzip2';
|
|
7
6
|
import { XzReadableStream } from 'xz-decompress';
|
|
8
7
|
import { CramMalformedError, CramUnimplementedError } from '../errors';
|
|
8
|
+
// locals
|
|
9
|
+
import { unzip } from '../unzip';
|
|
9
10
|
import ransuncompress from '../rans';
|
|
10
|
-
import { cramFileDefinition
|
|
11
|
+
import { cramFileDefinition, getSectionParsers, } from './sectionParsers';
|
|
11
12
|
import CramContainer from './container';
|
|
12
13
|
import { open } from '../io';
|
|
13
14
|
import { parseItem, tinyMemoize } from './util';
|
|
@@ -20,18 +21,18 @@ function bufferToStream(buf) {
|
|
|
20
21
|
},
|
|
21
22
|
});
|
|
22
23
|
}
|
|
23
|
-
//source:https://abdulapopoola.com/2019/01/20/check-endianness-with-javascript/
|
|
24
|
+
// source: https://abdulapopoola.com/2019/01/20/check-endianness-with-javascript/
|
|
24
25
|
function getEndianness() {
|
|
25
26
|
const uInt32 = new Uint32Array([0x11223344]);
|
|
26
27
|
const uInt8 = new Uint8Array(uInt32.buffer);
|
|
27
28
|
if (uInt8[0] === 0x44) {
|
|
28
|
-
return 0; //little-endian
|
|
29
|
+
return 0; // little-endian
|
|
29
30
|
}
|
|
30
31
|
else if (uInt8[0] === 0x11) {
|
|
31
|
-
return 1; //big-endian
|
|
32
|
+
return 1; // big-endian
|
|
32
33
|
}
|
|
33
34
|
else {
|
|
34
|
-
return 2; //mixed-endian?
|
|
35
|
+
return 2; // mixed-endian?
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
export default class CramFile {
|
|
@@ -65,10 +66,10 @@ export default class CramFile {
|
|
|
65
66
|
}
|
|
66
67
|
// memoized
|
|
67
68
|
async getDefinition() {
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
const { maxLength, parser } = cramFileDefinition();
|
|
70
|
+
const headbytes = Buffer.allocUnsafe(maxLength);
|
|
71
|
+
await this.file.read(headbytes, 0, maxLength, 0);
|
|
72
|
+
const definition = parser(headbytes).value;
|
|
72
73
|
if (definition.majorVersion !== 2 && definition.majorVersion !== 3) {
|
|
73
74
|
throw new CramUnimplementedError(`CRAM version ${definition.majorVersion} not supported`);
|
|
74
75
|
}
|
|
@@ -99,19 +100,15 @@ export default class CramFile {
|
|
|
99
100
|
await this.getSamHeader();
|
|
100
101
|
return this.header;
|
|
101
102
|
}
|
|
102
|
-
// memoize
|
|
103
|
-
async getSectionParsers() {
|
|
104
|
-
const { majorVersion } = await this.getDefinition();
|
|
105
|
-
return getSectionParsers(majorVersion);
|
|
106
|
-
}
|
|
107
103
|
async getContainerById(containerNumber) {
|
|
108
|
-
const
|
|
104
|
+
const { majorVersion } = await this.getDefinition();
|
|
105
|
+
const sectionParsers = getSectionParsers(majorVersion);
|
|
109
106
|
let position = sectionParsers.cramFileDefinition.maxLength;
|
|
110
107
|
const { size: fileSize } = await this.file.stat();
|
|
111
108
|
const { cramContainerHeader1 } = sectionParsers;
|
|
112
109
|
// skip with a series of reads to the proper container
|
|
113
110
|
let currentContainer;
|
|
114
|
-
for (let i = 0; i <= containerNumber; i
|
|
111
|
+
for (let i = 0; i <= containerNumber; i++) {
|
|
115
112
|
// if we are about to go off the end of the file
|
|
116
113
|
// and have not found that container, it does not exist
|
|
117
114
|
if (position + cramContainerHeader1.maxLength + 8 >= fileSize) {
|
|
@@ -122,13 +119,12 @@ export default class CramFile {
|
|
|
122
119
|
if (!currentHeader) {
|
|
123
120
|
throw new CramMalformedError(`container ${containerNumber} not found in file`);
|
|
124
121
|
}
|
|
125
|
-
// if this is the first container, read all the blocks in the
|
|
126
|
-
//
|
|
127
|
-
//
|
|
128
|
-
// in htslib
|
|
122
|
+
// if this is the first container, read all the blocks in the container
|
|
123
|
+
// to determine its length, because we cannot trust the container
|
|
124
|
+
// header's given length due to a bug somewhere in htslib
|
|
129
125
|
if (i === 0) {
|
|
130
126
|
position = currentHeader._endPosition;
|
|
131
|
-
for (let j = 0; j < currentHeader.numBlocks; j
|
|
127
|
+
for (let j = 0; j < currentHeader.numBlocks; j++) {
|
|
132
128
|
const block = await this.readBlock(position);
|
|
133
129
|
if (block === undefined) {
|
|
134
130
|
return undefined;
|
|
@@ -155,7 +151,8 @@ export default class CramFile {
|
|
|
155
151
|
* @returns {Promise[number]} the number of containers in the file
|
|
156
152
|
*/
|
|
157
153
|
async containerCount() {
|
|
158
|
-
const
|
|
154
|
+
const { majorVersion } = await this.getDefinition();
|
|
155
|
+
const sectionParsers = getSectionParsers(majorVersion);
|
|
159
156
|
const { size: fileSize } = await this.file.stat();
|
|
160
157
|
const { cramContainerHeader1 } = sectionParsers;
|
|
161
158
|
let containerCount = 0;
|
|
@@ -170,7 +167,7 @@ export default class CramFile {
|
|
|
170
167
|
// header's given length due to a bug somewhere in htslib
|
|
171
168
|
if (containerCount === 0) {
|
|
172
169
|
position = currentHeader._endPosition;
|
|
173
|
-
for (let j = 0; j < currentHeader.numBlocks; j
|
|
170
|
+
for (let j = 0; j < currentHeader.numBlocks; j++) {
|
|
174
171
|
const block = await this.readBlock(position);
|
|
175
172
|
if (block === undefined) {
|
|
176
173
|
return undefined;
|
|
@@ -190,7 +187,8 @@ export default class CramFile {
|
|
|
190
187
|
return new CramContainer(this, position);
|
|
191
188
|
}
|
|
192
189
|
async readBlockHeader(position) {
|
|
193
|
-
const
|
|
190
|
+
const { majorVersion } = await this.getDefinition();
|
|
191
|
+
const sectionParsers = getSectionParsers(majorVersion);
|
|
194
192
|
const { cramBlockHeader } = sectionParsers;
|
|
195
193
|
const { size: fileSize } = await this.file.stat();
|
|
196
194
|
if (position + cramBlockHeader.maxLength >= fileSize) {
|
|
@@ -231,12 +229,12 @@ export default class CramFile {
|
|
|
231
229
|
let chunk;
|
|
232
230
|
do {
|
|
233
231
|
chunk = bzip2.decompress(bits, size);
|
|
234
|
-
if (chunk
|
|
232
|
+
if (chunk !== -1) {
|
|
235
233
|
Buffer.from(chunk).copy(outputBuffer, j);
|
|
236
234
|
j += chunk.length;
|
|
237
235
|
size -= chunk.length;
|
|
238
236
|
}
|
|
239
|
-
} while (chunk
|
|
237
|
+
} while (chunk !== -1);
|
|
240
238
|
}
|
|
241
239
|
else if (compressionMethod === 'lzma') {
|
|
242
240
|
const decompressedResponse = new Response(new XzReadableStream(bufferToStream(inputBuffer)));
|
|
@@ -266,7 +264,7 @@ export default class CramFile {
|
|
|
266
264
|
}
|
|
267
265
|
async readBlock(position) {
|
|
268
266
|
const { majorVersion } = await this.getDefinition();
|
|
269
|
-
const sectionParsers =
|
|
267
|
+
const sectionParsers = getSectionParsers(majorVersion);
|
|
270
268
|
const blockHeader = await this.readBlockHeader(position);
|
|
271
269
|
if (blockHeader === undefined) {
|
|
272
270
|
return undefined;
|