@gmod/cram 4.0.3 → 4.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.
Files changed (132) hide show
  1. package/README.md +53 -51
  2. package/dist/cram-bundle.js +1 -1
  3. package/dist/cramFile/codecs/_base.d.ts +1 -1
  4. package/dist/cramFile/codecs/byteArrayLength.js +3 -2
  5. package/dist/cramFile/codecs/byteArrayLength.js.map +1 -1
  6. package/dist/cramFile/codecs/external.d.ts +1 -1
  7. package/dist/cramFile/codecs/external.js +1 -4
  8. package/dist/cramFile/codecs/external.js.map +1 -1
  9. package/dist/cramFile/container/index.d.ts +16 -34
  10. package/dist/cramFile/container/index.js +5 -20
  11. package/dist/cramFile/container/index.js.map +1 -1
  12. package/dist/cramFile/file.d.ts +8 -6
  13. package/dist/cramFile/file.js +80 -82
  14. package/dist/cramFile/file.js.map +1 -1
  15. package/dist/cramFile/record.js.map +1 -1
  16. package/dist/cramFile/sectionParsers.js +3 -2
  17. package/dist/cramFile/sectionParsers.js.map +1 -1
  18. package/dist/cramFile/slice/decodeRecord.d.ts +2 -2
  19. package/dist/cramFile/slice/decodeRecord.js +10 -7
  20. package/dist/cramFile/slice/decodeRecord.js.map +1 -1
  21. package/dist/cramFile/slice/index.js +14 -16
  22. package/dist/cramFile/slice/index.js.map +1 -1
  23. package/dist/cramFile/util.d.ts +5 -2
  24. package/dist/cramFile/util.js +75 -79
  25. package/dist/cramFile/util.js.map +1 -1
  26. package/dist/htscodecs/arith_gen.d.ts +5 -7
  27. package/dist/htscodecs/arith_gen.js +122 -105
  28. package/dist/htscodecs/arith_gen.js.map +1 -1
  29. package/dist/htscodecs/arith_sh.d.ts +1 -8
  30. package/dist/htscodecs/arith_sh.js +16 -10
  31. package/dist/htscodecs/arith_sh.js.map +1 -1
  32. package/dist/htscodecs/byte_model.d.ts +1 -6
  33. package/dist/htscodecs/byte_model.js +25 -17
  34. package/dist/htscodecs/byte_model.js.map +1 -1
  35. package/dist/htscodecs/fqzcomp.d.ts +1 -1
  36. package/dist/htscodecs/fqzcomp.js +98 -77
  37. package/dist/htscodecs/fqzcomp.js.map +1 -1
  38. package/dist/htscodecs/index.d.ts +5 -5
  39. package/dist/htscodecs/index.js +53 -16
  40. package/dist/htscodecs/index.js.map +1 -1
  41. package/dist/htscodecs/iostream.d.ts +9 -20
  42. package/dist/htscodecs/iostream.js +21 -116
  43. package/dist/htscodecs/iostream.js.map +1 -1
  44. package/dist/htscodecs/rans.d.ts +1 -1
  45. package/dist/htscodecs/rans.js +65 -54
  46. package/dist/htscodecs/rans.js.map +1 -1
  47. package/dist/htscodecs/rans4x16.d.ts +1 -1
  48. package/dist/htscodecs/rans4x16.js +151 -111
  49. package/dist/htscodecs/rans4x16.js.map +1 -1
  50. package/dist/htscodecs/tok3.d.ts +1 -2
  51. package/dist/htscodecs/tok3.js +82 -239
  52. package/dist/htscodecs/tok3.js.map +1 -1
  53. package/dist/util.d.ts +1 -0
  54. package/dist/util.js +20 -0
  55. package/dist/util.js.map +1 -0
  56. package/esm/cramFile/codecs/_base.d.ts +1 -1
  57. package/esm/cramFile/codecs/byteArrayLength.js +3 -2
  58. package/esm/cramFile/codecs/byteArrayLength.js.map +1 -1
  59. package/esm/cramFile/codecs/external.d.ts +1 -1
  60. package/esm/cramFile/codecs/external.js +2 -5
  61. package/esm/cramFile/codecs/external.js.map +1 -1
  62. package/esm/cramFile/container/index.d.ts +16 -34
  63. package/esm/cramFile/container/index.js +5 -20
  64. package/esm/cramFile/container/index.js.map +1 -1
  65. package/esm/cramFile/file.d.ts +8 -6
  66. package/esm/cramFile/file.js +40 -75
  67. package/esm/cramFile/file.js.map +1 -1
  68. package/esm/cramFile/record.js.map +1 -1
  69. package/esm/cramFile/sectionParsers.js +3 -2
  70. package/esm/cramFile/sectionParsers.js.map +1 -1
  71. package/esm/cramFile/slice/decodeRecord.d.ts +2 -2
  72. package/esm/cramFile/slice/decodeRecord.js +10 -7
  73. package/esm/cramFile/slice/decodeRecord.js.map +1 -1
  74. package/esm/cramFile/slice/index.js +14 -16
  75. package/esm/cramFile/slice/index.js.map +1 -1
  76. package/esm/cramFile/util.d.ts +5 -2
  77. package/esm/cramFile/util.js +74 -77
  78. package/esm/cramFile/util.js.map +1 -1
  79. package/esm/htscodecs/arith_gen.d.ts +5 -7
  80. package/esm/htscodecs/arith_gen.js +108 -97
  81. package/esm/htscodecs/arith_gen.js.map +1 -1
  82. package/esm/htscodecs/arith_sh.d.ts +1 -8
  83. package/esm/htscodecs/arith_sh.js +14 -11
  84. package/esm/htscodecs/arith_sh.js.map +1 -1
  85. package/esm/htscodecs/byte_model.d.ts +1 -6
  86. package/esm/htscodecs/byte_model.js +23 -18
  87. package/esm/htscodecs/byte_model.js.map +1 -1
  88. package/esm/htscodecs/fqzcomp.d.ts +1 -1
  89. package/esm/htscodecs/fqzcomp.js +91 -76
  90. package/esm/htscodecs/fqzcomp.js.map +1 -1
  91. package/esm/htscodecs/index.d.ts +5 -5
  92. package/esm/htscodecs/index.js +14 -20
  93. package/esm/htscodecs/index.js.map +1 -1
  94. package/esm/htscodecs/iostream.d.ts +9 -20
  95. package/esm/htscodecs/iostream.js +19 -117
  96. package/esm/htscodecs/iostream.js.map +1 -1
  97. package/esm/htscodecs/rans.d.ts +1 -1
  98. package/esm/htscodecs/rans.js +61 -56
  99. package/esm/htscodecs/rans.js.map +1 -1
  100. package/esm/htscodecs/rans4x16.d.ts +1 -1
  101. package/esm/htscodecs/rans4x16.js +143 -109
  102. package/esm/htscodecs/rans4x16.js.map +1 -1
  103. package/esm/htscodecs/tok3.d.ts +1 -2
  104. package/esm/htscodecs/tok3.js +41 -237
  105. package/esm/htscodecs/tok3.js.map +1 -1
  106. package/esm/util.d.ts +1 -0
  107. package/esm/util.js +17 -0
  108. package/esm/util.js.map +1 -0
  109. package/package.json +3 -6
  110. package/src/cramFile/codecs/_base.ts +1 -1
  111. package/src/cramFile/codecs/byteArrayLength.ts +4 -12
  112. package/src/cramFile/codecs/external.ts +3 -7
  113. package/src/cramFile/container/index.ts +5 -24
  114. package/src/cramFile/file.ts +44 -79
  115. package/src/cramFile/record.ts +1 -1
  116. package/src/cramFile/sectionParsers.ts +5 -2
  117. package/src/cramFile/slice/decodeRecord.ts +29 -28
  118. package/src/cramFile/slice/index.ts +25 -31
  119. package/src/cramFile/util.ts +107 -106
  120. package/src/htscodecs/{arith_gen.js → arith_gen.ts} +133 -95
  121. package/src/htscodecs/{arith_sh.js → arith_sh.ts} +17 -9
  122. package/src/htscodecs/{byte_model.js → byte_model.ts} +26 -16
  123. package/src/htscodecs/{fqzcomp.js → fqzcomp.ts} +108 -74
  124. package/src/htscodecs/{index.js → index.ts} +14 -20
  125. package/src/htscodecs/iostream.ts +159 -0
  126. package/src/htscodecs/{rans.js → rans.ts} +73 -56
  127. package/src/htscodecs/{rans4x16.js → rans4x16.ts} +180 -111
  128. package/src/htscodecs/tok3.ts +197 -0
  129. package/src/util.ts +16 -0
  130. package/errors.js +0 -27
  131. package/src/htscodecs/iostream.js +0 -257
  132. package/src/htscodecs/tok3.js +0 -413
@@ -23,5 +23,5 @@ export default abstract class CramCodec<TResult extends DataType = DataType, TPa
23
23
  parameters: TParameters;
24
24
  dataType: DataType;
25
25
  constructor(parameters: TParameters, dataType: TResult);
26
- abstract decode(slice: CramSlice, coreDataBlock: CramFileBlock, blocksByContentId: Record<number, CramFileBlock>, cursors: Cursors): DataTypeMapping[TResult];
26
+ abstract decode(slice: CramSlice, coreDataBlock: CramFileBlock, blocksByContentId: Record<number, CramFileBlock>, cursors: Cursors): DataTypeMapping[TResult] | undefined;
27
27
  }
@@ -12,11 +12,12 @@ class ByteArrayStopCodec extends _base_1.default {
12
12
  }
13
13
  decode(slice, coreDataBlock, blocksByContentId, cursors) {
14
14
  const lengthCodec = this._getLengthCodec();
15
- const arrayLength = lengthCodec.decode(slice, coreDataBlock, blocksByContentId, cursors);
15
+ const arrayLength = lengthCodec.decode(slice, coreDataBlock, blocksByContentId, cursors) || 0;
16
16
  const dataCodec = this._getDataCodec();
17
17
  const data = new Uint8Array(arrayLength);
18
18
  for (let i = 0; i < arrayLength; i += 1) {
19
- data[i] = dataCodec.decode(slice, coreDataBlock, blocksByContentId, cursors);
19
+ data[i] =
20
+ dataCodec.decode(slice, coreDataBlock, blocksByContentId, cursors) || 0;
20
21
  }
21
22
  return data;
22
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"byteArrayLength.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/byteArrayLength.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4C;AAK5C,kCAAqC;AAOrC,MAAqB,kBAAmB,SAAQ,eAG/C;IAGC,YACE,UAAiD,EACjD,QAAqB,EACrB,gBAAkC;QAElC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;IAC1C,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;AAtDD,qCAsDC;AAED,+BAA+B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IAC1D,IAAA,kBAAW,EAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;AACzC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"byteArrayLength.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/byteArrayLength.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4C;AAK5C,kCAAqC;AAOrC,MAAqB,kBAAmB,SAAQ,eAG/C;IAGC,YACE,UAAiD,EACjD,QAAqB,EACrB,gBAAkC;QAElC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAC3B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;IAC1C,CAAC;IAED,MAAM,CACJ,KAAgB,EAChB,aAA4B,EAC5B,iBAAgD,EAChD,OAAgB;QAEhB,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAC1C,MAAM,WAAW,GACf,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAE3E,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;gBACL,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAC3E,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;AA9CD,qCA8CC;AAED,+BAA+B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IAC1D,IAAA,kBAAW,EAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;AACzC,CAAC,CAAC,CAAA"}
@@ -5,7 +5,7 @@ import { ExternalCramEncoding } from '../encoding';
5
5
  export default class ExternalCodec extends CramCodec<'int' | 'byte', ExternalCramEncoding['parameters']> {
6
6
  private readonly _decodeData;
7
7
  constructor(parameters: ExternalCramEncoding['parameters'], dataType: 'int' | 'byte');
8
- decode(slice: CramSlice, coreDataBlock: CramFileBlock, blocksByContentId: Record<number, CramFileBlock>, cursors: Cursors): number;
8
+ decode(slice: CramSlice, coreDataBlock: CramFileBlock, blocksByContentId: Record<number, CramFileBlock>, cursors: Cursors): number | undefined;
9
9
  _decodeInt(contentBlock: CramFileBlock, cursor: Cursor): number;
10
10
  _decodeByte(contentBlock: CramFileBlock, cursor: Cursor): number;
11
11
  }
@@ -23,11 +23,8 @@ class ExternalCodec extends _base_1.default {
23
23
  decode(slice, coreDataBlock, blocksByContentId, cursors) {
24
24
  const { blockContentId } = this.parameters;
25
25
  const contentBlock = blocksByContentId[blockContentId];
26
- if (!contentBlock) {
27
- throw new errors_1.CramMalformedError(`no block found with content ID ${blockContentId}}`);
28
- }
29
26
  const cursor = cursors.externalBlocks.getCursor(blockContentId);
30
- return this._decodeData(contentBlock, cursor);
27
+ return contentBlock ? this._decodeData(contentBlock, cursor) : undefined;
31
28
  }
32
29
  _decodeInt(contentBlock, cursor) {
33
30
  const [result, bytesRead] = (0, util_1.parseItf8)(contentBlock.content, cursor.bytePosition);
@@ -1 +1 @@
1
- {"version":3,"file":"external.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/external.ts"],"names":[],"mappings":";;;;;AAAA,oDAAoD;AACpD,yCAAyE;AAGzE,kCAAmC;AACnC,uCAAkD;AAGlD,MAAqB,aAAc,SAAQ,eAG1C;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,+BAAsB,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,2BAAkB,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,IAAA,gBAAS,EACnC,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,gCAAsB,CAC9B,mEAAmE,CACpE,CAAA;QACH,CAAC;QACD,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAE,CAAA;IACrD,CAAC;CACF;AA3DD,gCA2DC"}
1
+ {"version":3,"file":"external.js","sourceRoot":"","sources":["../../../src/cramFile/codecs/external.ts"],"names":[],"mappings":";;;;;AAAA,oDAAoD;AACpD,yCAAqD;AAGrD,kCAAmC;AACnC,uCAAkD;AAGlD,MAAqB,aAAc,SAAQ,eAG1C;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,+BAAsB,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;QAEtD,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;QAC/D,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1E,CAAC;IAED,UAAU,CAAC,YAA2B,EAAE,MAAc;QACpD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAS,EACnC,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,gCAAsB,CAC9B,mEAAmE,CACpE,CAAA;QACH,CAAC;QACD,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAE,CAAA;IACrD,CAAC;CACF;AAvDD,gCAuDC"}
@@ -5,30 +5,21 @@ export default class CramContainer {
5
5
  file: CramFile;
6
6
  filePosition: number;
7
7
  constructor(file: CramFile, filePosition: number);
8
- getHeader(): Promise<({
8
+ getHeader(): Promise<{
9
+ _size: number;
10
+ _endPosition: number;
11
+ numLandmarks: number;
12
+ landmarks: number[];
13
+ crc32?: number | undefined;
9
14
  length: number;
10
15
  refSeqId: number;
11
16
  refSeqStart: number;
12
17
  alignmentSpan: number;
13
18
  numBlocks: number;
14
- numLandmarks: number;
15
19
  numBases: number | undefined;
16
20
  recordCounter: number;
17
21
  numRecords: number;
18
- } & {
19
- _endPosition: number;
20
- _size: number;
21
- } & {
22
- numLandmarks: number;
23
- landmarks: number[];
24
- crc32?: number | undefined;
25
- } & {
26
- _endPosition: number;
27
- _size: number;
28
- } & {
29
- _size: number;
30
- _endPosition: number;
31
- }) | undefined>;
22
+ }>;
32
23
  getCompressionHeaderBlock(): Promise<{
33
24
  parsedContent: {
34
25
  dataSeriesEncoding: import("../codecs/dataSeriesTypes").DataSeriesEncodingMap;
@@ -48,32 +39,23 @@ export default class CramContainer {
48
39
  _size: number;
49
40
  content: Uint8Array;
50
41
  crc32?: number;
51
- } | null | undefined>;
52
- getFirstBlock(): Promise<import("../file").CramFileBlock | undefined>;
42
+ } | null>;
43
+ getFirstBlock(): Promise<import("../file").CramFileBlock>;
53
44
  getCompressionScheme(): Promise<CramContainerCompressionScheme | undefined>;
54
45
  getSlice(slicePosition: number, sliceSize: number): CramSlice;
55
- _readContainerHeader(position: number): Promise<({
46
+ _readContainerHeader(position: number): Promise<{
47
+ _size: number;
48
+ _endPosition: number;
49
+ numLandmarks: number;
50
+ landmarks: number[];
51
+ crc32?: number | undefined;
56
52
  length: number;
57
53
  refSeqId: number;
58
54
  refSeqStart: number;
59
55
  alignmentSpan: number;
60
56
  numBlocks: number;
61
- numLandmarks: number;
62
57
  numBases: number | undefined;
63
58
  recordCounter: number;
64
59
  numRecords: number;
65
- } & {
66
- _endPosition: number;
67
- _size: number;
68
- } & {
69
- numLandmarks: number;
70
- landmarks: number[];
71
- crc32?: number | undefined;
72
- } & {
73
- _endPosition: number;
74
- _size: number;
75
- } & {
76
- _size: number;
77
- _endPosition: number;
78
- }) | undefined>;
60
+ }>;
79
61
  }
@@ -21,15 +21,12 @@ class CramContainer {
21
21
  const containerHeader = await this.getHeader();
22
22
  // if there are no records in the container, there will be no compression
23
23
  // header
24
- if (!containerHeader?.numRecords) {
24
+ if (!containerHeader.numRecords) {
25
25
  return null;
26
26
  }
27
27
  const { majorVersion } = await this.file.getDefinition();
28
28
  const sectionParsers = (0, sectionParsers_1.getSectionParsers)(majorVersion);
29
29
  const block = await this.getFirstBlock();
30
- if (block === undefined) {
31
- return undefined;
32
- }
33
30
  if (block.contentType !== 'COMPRESSION_HEADER') {
34
31
  throw new errors_1.CramMalformedError(`invalid content type ${block.contentType} in compression header block`);
35
32
  }
@@ -41,9 +38,6 @@ class CramContainer {
41
38
  }
42
39
  async getFirstBlock() {
43
40
  const containerHeader = await this.getHeader();
44
- if (!containerHeader) {
45
- return undefined;
46
- }
47
41
  return this.file.readBlock(containerHeader._endPosition);
48
42
  }
49
43
  // parses the compression header data into a CramContainerCompressionScheme
@@ -64,31 +58,22 @@ class CramContainer {
64
58
  const { majorVersion } = await this.file.getDefinition();
65
59
  const sectionParsers = (0, sectionParsers_1.getSectionParsers)(majorVersion);
66
60
  const { cramContainerHeader1, cramContainerHeader2 } = sectionParsers;
67
- const { size: fileSize } = await this.file.stat();
68
- if (position >= fileSize) {
69
- console.warn(`pos:${position}>=fileSize:${fileSize} in cram container`);
70
- return undefined;
71
- }
72
61
  // parse the container header. do it in 2 pieces because you cannot tell
73
62
  // how much to buffer until you read numLandmarks
74
63
  const bytes1 = await this.file.read(cramContainerHeader1.maxLength, position);
75
64
  const header1 = (0, util_1.parseItem)(bytes1, cramContainerHeader1.parser);
76
65
  const numLandmarksSize = (0, util_1.itf8Size)(header1.numLandmarks);
77
- if (position + header1.length >= fileSize) {
78
- // header indicates container goes beyond fileSize
79
- console.warn(`container at ${position} is beyond fileSize:${fileSize}, skipping`);
80
- return undefined;
81
- }
82
66
  const bytes2 = await this.file.read(cramContainerHeader2.maxLength(header1.numLandmarks), position + header1._size - numLandmarksSize);
83
67
  const header2 = (0, util_1.parseItem)(bytes2, cramContainerHeader2.parser);
84
68
  if (this.file.validateChecksums && header2.crc32 !== undefined) {
85
69
  await this.file.checkCrc32(position, header1._size + header2._size - numLandmarksSize - 4, header2.crc32, `container header beginning at position ${position}`);
86
70
  }
87
- const completeHeader = Object.assign(header1, header2, {
71
+ return {
72
+ ...header1,
73
+ ...header2,
88
74
  _size: header1._size + header2._size - numLandmarksSize,
89
75
  _endPosition: header1._size + header2._size - numLandmarksSize + position,
90
- });
91
- return completeHeader;
76
+ };
92
77
  }
93
78
  }
94
79
  exports.default = CramContainer;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cramFile/container/index.ts"],"names":[],"mappings":";;;;;AAAA,yCAAiD;AACjD,SAAS;AACT,qDAAgC;AAChC,kCAA0D;AAC1D,4EAAgE;AAEhE,sDAAqD;AAErD,MAAqB,aAAa;IAChC,YACS,IAAc,EACd,YAAoB;QADpB,SAAI,GAAJ,IAAI,CAAU;QACd,iBAAY,GAAZ,YAAY,CAAQ;IAC1B,CAAC;IAEJ,SAAS;QACP,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,yBAAyB;QAC7B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QAE9C,yEAAyE;QACzE,SAAS;QACT,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC;YACjC,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAA;QACxD,MAAM,cAAc,GAAG,IAAA,kCAAiB,EAAC,YAAY,CAAC,CAAA;QAEtD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QACxC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,KAAK,oBAAoB,EAAE,CAAC;YAC/C,MAAM,IAAI,2BAAkB,CAC1B,wBAAwB,KAAK,CAAC,WAAW,8BAA8B,CACxE,CAAA;QACH,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,gBAAS,EACvB,KAAK,CAAC,OAAO,EACb,cAAc,CAAC,qBAAqB,CAAC,MAAM,EAC3C,CAAC,EACD,KAAK,CAAC,eAAe,CACtB,CAAA;QACD,OAAO;YACL,GAAG,KAAK;YACR,aAAa,EAAE,OAAO;SACvB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QAC9C,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;IAC1D,CAAC;IAED,2EAA2E;IAC3E,SAAS;IACT,KAAK,CAAC,oBAAoB;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAA;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,OAAO,IAAI,2BAA8B,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IACjE,CAAC;IAED,QAAQ,CAAC,aAAqB,EAAE,SAAiB;QAC/C,qEAAqE;QACrE,wCAAwC;QACxC,OAAO,IAAI,eAAS,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,CAAC,CAAA;IACtD,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,QAAgB;QACzC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAA;QACxD,MAAM,cAAc,GAAG,IAAA,kCAAiB,EAAC,YAAY,CAAC,CAAA;QACtD,MAAM,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,GAAG,cAAc,CAAA;QACrE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QAEjD,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,OAAO,QAAQ,cAAc,QAAQ,oBAAoB,CAAC,CAAA;YACvE,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,wEAAwE;QACxE,iDAAiD;QACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACjC,oBAAoB,CAAC,SAAS,EAC9B,QAAQ,CACT,CAAA;QACD,MAAM,OAAO,GAAG,IAAA,gBAAS,EAAC,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAC9D,MAAM,gBAAgB,GAAG,IAAA,eAAQ,EAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QACvD,IAAI,QAAQ,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC1C,kDAAkD;YAClD,OAAO,CAAC,IAAI,CACV,gBAAgB,QAAQ,uBAAuB,QAAQ,YAAY,CACpE,CAAA;YACD,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACjC,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EACpD,QAAQ,GAAG,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAC5C,CAAA;QACD,MAAM,OAAO,GAAG,IAAA,gBAAS,EAAC,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAE9D,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CACxB,QAAQ,EACR,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,gBAAgB,GAAG,CAAC,EACpD,OAAO,CAAC,KAAK,EACb,0CAA0C,QAAQ,EAAE,CACrD,CAAA;QACH,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;YACrD,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,gBAAgB;YACvD,YAAY,EAAE,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,gBAAgB,GAAG,QAAQ;SAC1E,CAAC,CAAA;QAEF,OAAO,cAAc,CAAA;IACvB,CAAC;CACF;AArHD,gCAqHC;AAED,0DAA0D;KACvD,KAAK,CAAC,GAAG,CAAC;KACV,OAAO,CAAC,MAAM,CAAC,EAAE;IAChB,IAAA,kBAAW,EAAC,aAAa,EAAE,MAAM,CAAC,CAAA;AACpC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cramFile/container/index.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,6 @@ export default class CramFile {
32
32
  featureCache: QuickLRU<string, Promise<CramRecord[]>>;
33
33
  private header;
34
34
  constructor(args: CramFileArgs);
35
- stat(): Promise<import("generic-filehandle2").Stats>;
36
35
  read(length: number, position: number): Promise<Uint8Array<ArrayBuffer>>;
37
36
  getDefinition(): Promise<{
38
37
  magic: string;
@@ -52,10 +51,13 @@ export default class CramFile {
52
51
  checkCrc32(position: number, length: number, recordedCrc32: number, description: string): Promise<void>;
53
52
  /**
54
53
  * @returns {Promise[number]} the number of containers in the file
54
+ *
55
+ * note: this is currently used only in unit tests, and after removing file
56
+ * length check, relies on a try catch to read return an error to break
55
57
  */
56
58
  containerCount(): Promise<number | undefined>;
57
59
  getContainerAtPosition(position: number): CramContainer;
58
- readBlockHeader(position: number): Promise<({
60
+ readBlockHeader(position: number): Promise<{
59
61
  uncompressedSize: number;
60
62
  compressedSize: number;
61
63
  contentId: number;
@@ -64,17 +66,17 @@ export default class CramFile {
64
66
  } & {
65
67
  _endPosition: number;
66
68
  _size: number;
67
- }) | undefined>;
69
+ }>;
68
70
  _parseSection<T>(section: {
69
71
  maxLength: number;
70
72
  parser: (buffer: Uint8Array, offset: number) => {
71
73
  offset: number;
72
74
  value: T;
73
75
  };
74
- }, position: number, size?: number, preReadBuffer?: Uint8Array): Promise<(T & {
76
+ }, position: number, size?: number, preReadBuffer?: Uint8Array): Promise<T & {
75
77
  _endPosition: number;
76
78
  _size: number;
77
- }) | undefined>;
79
+ }>;
78
80
  _uncompress(compressionMethod: CompressionMethod, inputBuffer: Uint8Array, uncompressedSize: number): Promise<any>;
79
- readBlock(position: number): Promise<CramFileBlock | undefined>;
81
+ readBlock(position: number): Promise<CramFileBlock>;
80
82
  }
@@ -1,4 +1,37 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
@@ -8,14 +41,15 @@ const crc32_1 = __importDefault(require("crc/calculators/crc32"));
8
41
  const quick_lru_1 = __importDefault(require("quick-lru"));
9
42
  const xz_decompress_1 = require("xz-decompress");
10
43
  const errors_1 = require("../errors");
11
- const htscodecs_1 = __importDefault(require("../htscodecs"));
44
+ const htscodecs = __importStar(require("../htscodecs"));
12
45
  const io_1 = require("../io");
13
46
  const rans_1 = __importDefault(require("../rans"));
14
47
  const sam_1 = require("../sam");
15
48
  const unzip_1 = require("../unzip");
49
+ const util_1 = require("../util");
16
50
  const container_1 = __importDefault(require("./container"));
17
51
  const sectionParsers_1 = require("./sectionParsers");
18
- const util_1 = require("./util");
52
+ const util_2 = require("./util");
19
53
  function bufferToStream(buf) {
20
54
  return new ReadableStream({
21
55
  start(controller) {
@@ -57,11 +91,6 @@ class CramFile {
57
91
  throw new Error('Detected big-endian machine, may be unable to run');
58
92
  }
59
93
  }
60
- // can just stat this object like a filehandle
61
- stat() {
62
- return this.file.stat();
63
- }
64
- // can just stat this object like a filehandle
65
94
  read(length, position) {
66
95
  return this.file.read(length, position);
67
96
  }
@@ -82,19 +111,14 @@ class CramFile {
82
111
  throw new errors_1.CramMalformedError('file contains no containers');
83
112
  }
84
113
  const firstBlock = await firstContainer.getFirstBlock();
85
- if (firstBlock === undefined) {
86
- return (0, sam_1.parseHeaderText)('');
87
- }
88
- else {
89
- const content = firstBlock.content;
90
- const dataView = new DataView(content.buffer);
91
- const headerLength = dataView.getInt32(0, true);
92
- const textStart = 4;
93
- const decoder = new TextDecoder('utf8');
94
- const text = decoder.decode(content.subarray(textStart, textStart + headerLength));
95
- this.header = text;
96
- return (0, sam_1.parseHeaderText)(text);
97
- }
114
+ const content = firstBlock.content;
115
+ const dataView = new DataView(content.buffer);
116
+ const headerLength = dataView.getInt32(0, true);
117
+ const textStart = 4;
118
+ const decoder = new TextDecoder('utf8');
119
+ const text = decoder.decode(content.subarray(textStart, textStart + headerLength));
120
+ this.header = text;
121
+ return (0, sam_1.parseHeaderText)(text);
98
122
  }
99
123
  async getHeaderText() {
100
124
  await this.getSamHeader();
@@ -104,21 +128,16 @@ class CramFile {
104
128
  const { majorVersion } = await this.getDefinition();
105
129
  const sectionParsers = (0, sectionParsers_1.getSectionParsers)(majorVersion);
106
130
  let position = sectionParsers.cramFileDefinition.maxLength;
107
- const { size: fileSize } = await this.file.stat();
108
- const { cramContainerHeader1 } = sectionParsers;
109
131
  // skip with a series of reads to the proper container
110
132
  let currentContainer;
111
133
  for (let i = 0; i <= containerNumber; i++) {
112
134
  // if we are about to go off the end of the file
113
135
  // and have not found that container, it does not exist
114
- if (position + cramContainerHeader1.maxLength + 8 >= fileSize) {
115
- return undefined;
116
- }
136
+ // if (position + cramContainerHeader1.maxLength + 8 >= fileSize) {
137
+ // return undefined
138
+ // }
117
139
  currentContainer = this.getContainerAtPosition(position);
118
140
  const currentHeader = await currentContainer.getHeader();
119
- if (!currentHeader) {
120
- throw new errors_1.CramMalformedError(`container ${containerNumber} not found in file`);
121
- }
122
141
  // if this is the first container, read all the blocks in the container
123
142
  // to determine its length, because we cannot trust the container
124
143
  // header's given length due to a bug somewhere in htslib
@@ -126,9 +145,6 @@ class CramFile {
126
145
  position = currentHeader._endPosition;
127
146
  for (let j = 0; j < currentHeader.numBlocks; j++) {
128
147
  const block = await this.readBlock(position);
129
- if (block === undefined) {
130
- return undefined;
131
- }
132
148
  position = block._endPosition;
133
149
  }
134
150
  }
@@ -152,38 +168,40 @@ class CramFile {
152
168
  }
153
169
  /**
154
170
  * @returns {Promise[number]} the number of containers in the file
171
+ *
172
+ * note: this is currently used only in unit tests, and after removing file
173
+ * length check, relies on a try catch to read return an error to break
155
174
  */
156
175
  async containerCount() {
157
176
  const { majorVersion } = await this.getDefinition();
158
177
  const sectionParsers = (0, sectionParsers_1.getSectionParsers)(majorVersion);
159
- const { size: fileSize } = await this.file.stat();
160
- const { cramContainerHeader1 } = sectionParsers;
161
178
  let containerCount = 0;
162
179
  let position = sectionParsers.cramFileDefinition.maxLength;
163
- while (position + cramContainerHeader1.maxLength + 8 < fileSize) {
164
- const currentHeader = await this.getContainerAtPosition(position).getHeader();
165
- if (!currentHeader) {
166
- break;
167
- }
168
- // if this is the first container, read all the blocks in the container,
169
- // because we cannot trust the container header's given length due to a
170
- // bug somewhere in htslib
171
- if (containerCount === 0) {
172
- position = currentHeader._endPosition;
173
- for (let j = 0; j < currentHeader.numBlocks; j++) {
174
- const block = await this.readBlock(position);
175
- if (block === undefined) {
176
- return undefined;
180
+ try {
181
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
182
+ while (true) {
183
+ const currentHeader = await this.getContainerAtPosition(position).getHeader();
184
+ // if this is the first container, read all the blocks in the container,
185
+ // because we cannot trust the container header's given length due to a
186
+ // bug somewhere in htslib
187
+ if (containerCount === 0) {
188
+ position = currentHeader._endPosition;
189
+ for (let j = 0; j < currentHeader.numBlocks; j++) {
190
+ const block = await this.readBlock(position);
191
+ position = block._endPosition;
177
192
  }
178
- position = block._endPosition;
179
193
  }
194
+ else {
195
+ // otherwise, just traverse to the next container using the container's
196
+ // length
197
+ position += currentHeader._size + currentHeader.length;
198
+ }
199
+ containerCount += 1;
180
200
  }
181
- else {
182
- // otherwise, just traverse to the next container using the container's
183
- // length
184
- position += currentHeader._size + currentHeader.length;
185
- }
186
- containerCount += 1;
201
+ }
202
+ catch (e) {
203
+ containerCount--;
204
+ /* do nothing */
187
205
  }
188
206
  return containerCount;
189
207
  }
@@ -194,26 +212,12 @@ class CramFile {
194
212
  const { majorVersion } = await this.getDefinition();
195
213
  const sectionParsers = (0, sectionParsers_1.getSectionParsers)(majorVersion);
196
214
  const { cramBlockHeader } = sectionParsers;
197
- const { size: fileSize } = await this.file.stat();
198
- if (position + cramBlockHeader.maxLength >= fileSize) {
199
- return undefined;
200
- }
201
215
  const buffer = await this.file.read(cramBlockHeader.maxLength, position);
202
- return (0, util_1.parseItem)(buffer, cramBlockHeader.parser, 0, position);
216
+ return (0, util_2.parseItem)(buffer, cramBlockHeader.parser, 0, position);
203
217
  }
204
218
  async _parseSection(section, position, size = section.maxLength, preReadBuffer) {
205
- let buffer;
206
- if (preReadBuffer) {
207
- buffer = preReadBuffer;
208
- }
209
- else {
210
- const { size: fileSize } = await this.file.stat();
211
- if (position + size >= fileSize) {
212
- return undefined;
213
- }
214
- buffer = await this.file.read(size, position);
215
- }
216
- const data = (0, util_1.parseItem)(buffer, section.parser, 0, position);
219
+ const buffer = preReadBuffer ?? (await this.file.read(size, position));
220
+ const data = (0, util_2.parseItem)(buffer, section.parser, 0, position);
217
221
  if (data._size !== size) {
218
222
  throw new errors_1.CramMalformedError(`section read error: requested size ${size} does not equal parsed size ${data._size}`);
219
223
  }
@@ -249,16 +253,16 @@ class CramFile {
249
253
  // htscodecs.r4x8_uncompress(inputBuffer, outputBuffer);
250
254
  }
251
255
  else if (compressionMethod === 'rans4x16') {
252
- return htscodecs_1.default.r4x16_uncompress(inputBuffer);
256
+ return htscodecs.r4x16_uncompress(inputBuffer);
253
257
  }
254
258
  else if (compressionMethod === 'arith') {
255
- return htscodecs_1.default.arith_uncompress(inputBuffer);
259
+ return htscodecs.arith_uncompress(inputBuffer);
256
260
  }
257
261
  else if (compressionMethod === 'fqzcomp') {
258
- return htscodecs_1.default.fqzcomp_uncompress(inputBuffer);
262
+ return htscodecs.fqzcomp_uncompress(inputBuffer);
259
263
  }
260
264
  else if (compressionMethod === 'tok3') {
261
- return htscodecs_1.default.tok3_uncompress(inputBuffer);
265
+ return htscodecs.tok3_uncompress(inputBuffer);
262
266
  }
263
267
  else {
264
268
  throw new errors_1.CramUnimplementedError(`${compressionMethod} decompression not yet implemented`);
@@ -268,9 +272,6 @@ class CramFile {
268
272
  const { majorVersion } = await this.getDefinition();
269
273
  const sectionParsers = (0, sectionParsers_1.getSectionParsers)(majorVersion);
270
274
  const blockHeader = await this.readBlockHeader(position);
271
- if (blockHeader === undefined) {
272
- return undefined;
273
- }
274
275
  const blockContentPosition = blockHeader._endPosition;
275
276
  const d = await this.file.read(blockHeader.compressedSize, blockContentPosition);
276
277
  const uncompressedData = blockHeader.compressionMethod !== 'raw'
@@ -285,9 +286,6 @@ class CramFile {
285
286
  if (majorVersion >= 3) {
286
287
  // parse the crc32
287
288
  const crc = await this._parseSection(sectionParsers.cramBlockCrc32, blockContentPosition + blockHeader.compressedSize);
288
- if (crc === undefined) {
289
- return undefined;
290
- }
291
289
  block.crc32 = crc.crc32;
292
290
  // check the block data crc32
293
291
  if (this.validateChecksums) {
@@ -307,6 +305,6 @@ class CramFile {
307
305
  }
308
306
  exports.default = CramFile;
309
307
  'getDefinition getSectionParsers getSamHeader'.split(' ').forEach(method => {
310
- (0, util_1.tinyMemoize)(CramFile, method);
308
+ (0, util_2.tinyMemoize)(CramFile, method);
311
309
  });
312
310
  //# sourceMappingURL=file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/cramFile/file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/cramFile/file.ts"],"names":[],"mappings":"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"}