@gmod/cram 3.0.6 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/dist/craiIndex.js +70 -87
  2. package/dist/craiIndex.js.map +1 -1
  3. package/dist/cram-bundle.js +1 -1
  4. package/dist/cramFile/codecs/_base.d.ts +1 -1
  5. package/dist/cramFile/codecs/beta.d.ts +2 -2
  6. package/dist/cramFile/codecs/beta.js +1 -1
  7. package/dist/cramFile/codecs/beta.js.map +1 -1
  8. package/dist/cramFile/codecs/byteArrayLength.d.ts +2 -2
  9. package/dist/cramFile/codecs/byteArrayStop.d.ts +4 -4
  10. package/dist/cramFile/codecs/byteArrayStop.js +1 -1
  11. package/dist/cramFile/codecs/byteArrayStop.js.map +1 -1
  12. package/dist/cramFile/codecs/external.d.ts +1 -1
  13. package/dist/cramFile/codecs/external.js +1 -1
  14. package/dist/cramFile/codecs/external.js.map +1 -1
  15. package/dist/cramFile/codecs/gamma.d.ts +1 -1
  16. package/dist/cramFile/codecs/gamma.js +1 -1
  17. package/dist/cramFile/codecs/gamma.js.map +1 -1
  18. package/dist/cramFile/codecs/getBits.d.ts +1 -1
  19. package/dist/cramFile/codecs/getBits.js.map +1 -1
  20. package/dist/cramFile/codecs/huffman.d.ts +1 -1
  21. package/dist/cramFile/codecs/huffman.js +1 -1
  22. package/dist/cramFile/codecs/huffman.js.map +1 -1
  23. package/dist/cramFile/codecs/index.d.ts +1 -1
  24. package/dist/cramFile/codecs/index.js +5 -5
  25. package/dist/cramFile/codecs/index.js.map +1 -1
  26. package/dist/cramFile/codecs/subexp.d.ts +2 -2
  27. package/dist/cramFile/codecs/subexp.js +1 -1
  28. package/dist/cramFile/codecs/subexp.js.map +1 -1
  29. package/dist/cramFile/container/compressionScheme.d.ts +2 -2
  30. package/dist/cramFile/container/compressionScheme.js +1 -1
  31. package/dist/cramFile/container/compressionScheme.js.map +1 -1
  32. package/dist/cramFile/container/index.d.ts +1 -2
  33. package/dist/cramFile/container/index.js +62 -79
  34. package/dist/cramFile/container/index.js.map +1 -1
  35. package/dist/cramFile/file.d.ts +9 -13
  36. package/dist/cramFile/file.js +218 -249
  37. package/dist/cramFile/file.js.map +1 -1
  38. package/dist/cramFile/record.js +2 -2
  39. package/dist/cramFile/record.js.map +1 -1
  40. package/dist/cramFile/sectionParsers.d.ts +16 -16
  41. package/dist/cramFile/sectionParsers.js +12 -9
  42. package/dist/cramFile/sectionParsers.js.map +1 -1
  43. package/dist/cramFile/slice/decodeRecord.d.ts +3 -3
  44. package/dist/cramFile/slice/decodeRecord.js +11 -11
  45. package/dist/cramFile/slice/decodeRecord.js.map +1 -1
  46. package/dist/cramFile/slice/index.d.ts +2 -2
  47. package/dist/cramFile/slice/index.js +241 -262
  48. package/dist/cramFile/slice/index.js.map +1 -1
  49. package/dist/cramFile/util.d.ts +4 -2
  50. package/dist/cramFile/util.js +29 -6
  51. package/dist/cramFile/util.js.map +1 -1
  52. package/dist/htscodecs/arith_gen.d.ts +18 -0
  53. package/dist/htscodecs/arith_gen.js +318 -0
  54. package/dist/htscodecs/arith_gen.js.map +1 -0
  55. package/dist/htscodecs/arith_sh.d.ts +16 -0
  56. package/dist/htscodecs/arith_sh.js +128 -0
  57. package/dist/htscodecs/arith_sh.js.map +1 -0
  58. package/dist/htscodecs/byte_model.d.ts +11 -0
  59. package/dist/htscodecs/byte_model.js +113 -0
  60. package/dist/htscodecs/byte_model.js.map +1 -0
  61. package/dist/htscodecs/fqzcomp.d.ts +1 -0
  62. package/dist/htscodecs/fqzcomp.js +325 -0
  63. package/dist/htscodecs/fqzcomp.js.map +1 -0
  64. package/dist/htscodecs/index.d.ts +5 -0
  65. package/dist/htscodecs/index.js +70 -0
  66. package/dist/htscodecs/index.js.map +1 -0
  67. package/dist/htscodecs/iostream.d.ts +27 -0
  68. package/dist/htscodecs/iostream.js +243 -0
  69. package/dist/htscodecs/iostream.js.map +1 -0
  70. package/dist/htscodecs/rans.d.ts +1 -0
  71. package/dist/htscodecs/rans.js +213 -0
  72. package/dist/htscodecs/rans.js.map +1 -0
  73. package/dist/htscodecs/rans4x16.d.ts +1 -0
  74. package/dist/htscodecs/rans4x16.js +405 -0
  75. package/dist/htscodecs/rans4x16.js.map +1 -0
  76. package/dist/htscodecs/tok3.d.ts +2 -0
  77. package/dist/htscodecs/tok3.js +363 -0
  78. package/dist/htscodecs/tok3.js.map +1 -0
  79. package/dist/index.d.ts +1 -1
  80. package/dist/index.js +2 -2
  81. package/dist/index.js.map +1 -1
  82. package/dist/indexedCramFile.d.ts +4 -4
  83. package/dist/indexedCramFile.js +97 -108
  84. package/dist/indexedCramFile.js.map +1 -1
  85. package/dist/io/index.d.ts +2 -2
  86. package/dist/io/index.js +6 -6
  87. package/dist/io/index.js.map +1 -1
  88. package/dist/rans/constants.d.ts +1 -1
  89. package/dist/rans/constants.js +1 -1
  90. package/dist/rans/constants.js.map +1 -1
  91. package/dist/rans/d04.js.map +1 -1
  92. package/dist/rans/decoding.js.map +1 -1
  93. package/dist/rans/frequencies.js.map +1 -1
  94. package/dist/rans/index.js +5 -5
  95. package/dist/rans/index.js.map +1 -1
  96. package/dist/unzip.d.ts +1 -1
  97. package/dist/unzip.js +5 -3
  98. package/dist/unzip.js.map +1 -1
  99. package/esm/craiIndex.js +10 -12
  100. package/esm/craiIndex.js.map +1 -1
  101. package/esm/cramFile/codecs/_base.d.ts +1 -1
  102. package/esm/cramFile/codecs/beta.d.ts +2 -2
  103. package/esm/cramFile/codecs/beta.js +1 -1
  104. package/esm/cramFile/codecs/beta.js.map +1 -1
  105. package/esm/cramFile/codecs/byteArrayLength.d.ts +2 -2
  106. package/esm/cramFile/codecs/byteArrayStop.d.ts +4 -4
  107. package/esm/cramFile/codecs/byteArrayStop.js +1 -1
  108. package/esm/cramFile/codecs/byteArrayStop.js.map +1 -1
  109. package/esm/cramFile/codecs/external.d.ts +1 -1
  110. package/esm/cramFile/codecs/external.js +1 -1
  111. package/esm/cramFile/codecs/external.js.map +1 -1
  112. package/esm/cramFile/codecs/gamma.d.ts +1 -1
  113. package/esm/cramFile/codecs/gamma.js +1 -1
  114. package/esm/cramFile/codecs/gamma.js.map +1 -1
  115. package/esm/cramFile/codecs/getBits.d.ts +1 -1
  116. package/esm/cramFile/codecs/getBits.js.map +1 -1
  117. package/esm/cramFile/codecs/huffman.d.ts +1 -1
  118. package/esm/cramFile/codecs/huffman.js +1 -1
  119. package/esm/cramFile/codecs/huffman.js.map +1 -1
  120. package/esm/cramFile/codecs/index.d.ts +1 -1
  121. package/esm/cramFile/codecs/index.js +5 -5
  122. package/esm/cramFile/codecs/index.js.map +1 -1
  123. package/esm/cramFile/codecs/subexp.d.ts +2 -2
  124. package/esm/cramFile/codecs/subexp.js +1 -1
  125. package/esm/cramFile/codecs/subexp.js.map +1 -1
  126. package/esm/cramFile/container/compressionScheme.d.ts +2 -2
  127. package/esm/cramFile/container/compressionScheme.js +1 -1
  128. package/esm/cramFile/container/compressionScheme.js.map +1 -1
  129. package/esm/cramFile/container/index.d.ts +1 -2
  130. package/esm/cramFile/container/index.js +4 -7
  131. package/esm/cramFile/container/index.js.map +1 -1
  132. package/esm/cramFile/file.d.ts +9 -13
  133. package/esm/cramFile/file.js +54 -61
  134. package/esm/cramFile/file.js.map +1 -1
  135. package/esm/cramFile/record.js +2 -2
  136. package/esm/cramFile/record.js.map +1 -1
  137. package/esm/cramFile/sectionParsers.d.ts +16 -16
  138. package/esm/cramFile/sectionParsers.js +7 -7
  139. package/esm/cramFile/sectionParsers.js.map +1 -1
  140. package/esm/cramFile/slice/decodeRecord.d.ts +3 -3
  141. package/esm/cramFile/slice/decodeRecord.js +11 -11
  142. package/esm/cramFile/slice/decodeRecord.js.map +1 -1
  143. package/esm/cramFile/slice/index.d.ts +2 -2
  144. package/esm/cramFile/slice/index.js +7 -6
  145. package/esm/cramFile/slice/index.js.map +1 -1
  146. package/esm/cramFile/util.d.ts +4 -2
  147. package/esm/cramFile/util.js +19 -2
  148. package/esm/cramFile/util.js.map +1 -1
  149. package/esm/htscodecs/arith_gen.d.ts +18 -0
  150. package/esm/htscodecs/arith_gen.js +318 -0
  151. package/esm/htscodecs/arith_gen.js.map +1 -0
  152. package/esm/htscodecs/arith_sh.d.ts +16 -0
  153. package/esm/htscodecs/arith_sh.js +128 -0
  154. package/esm/htscodecs/arith_sh.js.map +1 -0
  155. package/esm/htscodecs/byte_model.d.ts +11 -0
  156. package/esm/htscodecs/byte_model.js +113 -0
  157. package/esm/htscodecs/byte_model.js.map +1 -0
  158. package/esm/htscodecs/fqzcomp.d.ts +1 -0
  159. package/esm/htscodecs/fqzcomp.js +325 -0
  160. package/esm/htscodecs/fqzcomp.js.map +1 -0
  161. package/esm/htscodecs/index.d.ts +5 -0
  162. package/esm/htscodecs/index.js +70 -0
  163. package/esm/htscodecs/index.js.map +1 -0
  164. package/esm/htscodecs/iostream.d.ts +27 -0
  165. package/esm/htscodecs/iostream.js +243 -0
  166. package/esm/htscodecs/iostream.js.map +1 -0
  167. package/esm/htscodecs/rans.d.ts +1 -0
  168. package/esm/htscodecs/rans.js +213 -0
  169. package/esm/htscodecs/rans.js.map +1 -0
  170. package/esm/htscodecs/rans4x16.d.ts +1 -0
  171. package/esm/htscodecs/rans4x16.js +405 -0
  172. package/esm/htscodecs/rans4x16.js.map +1 -0
  173. package/esm/htscodecs/tok3.d.ts +2 -0
  174. package/esm/htscodecs/tok3.js +363 -0
  175. package/esm/htscodecs/tok3.js.map +1 -0
  176. package/esm/index.d.ts +1 -1
  177. package/esm/index.js +1 -1
  178. package/esm/index.js.map +1 -1
  179. package/esm/indexedCramFile.d.ts +4 -4
  180. package/esm/indexedCramFile.js +10 -10
  181. package/esm/indexedCramFile.js.map +1 -1
  182. package/esm/io/index.d.ts +2 -2
  183. package/esm/io/index.js +1 -1
  184. package/esm/io/index.js.map +1 -1
  185. package/esm/rans/constants.d.ts +1 -1
  186. package/esm/rans/constants.js +1 -1
  187. package/esm/rans/constants.js.map +1 -1
  188. package/esm/rans/d04.js.map +1 -1
  189. package/esm/rans/decoding.js.map +1 -1
  190. package/esm/rans/frequencies.js.map +1 -1
  191. package/esm/rans/index.js +5 -5
  192. package/esm/rans/index.js.map +1 -1
  193. package/esm/unzip.d.ts +1 -1
  194. package/esm/unzip.js +4 -1
  195. package/esm/unzip.js.map +1 -1
  196. package/package.json +7 -10
  197. package/src/craiIndex.ts +17 -16
  198. package/src/cramFile/codecs/_base.ts +1 -1
  199. package/src/cramFile/codecs/beta.ts +3 -3
  200. package/src/cramFile/codecs/byteArrayLength.ts +1 -1
  201. package/src/cramFile/codecs/byteArrayStop.ts +3 -4
  202. package/src/cramFile/codecs/external.ts +3 -3
  203. package/src/cramFile/codecs/gamma.ts +2 -2
  204. package/src/cramFile/codecs/getBits.ts +1 -1
  205. package/src/cramFile/codecs/huffman.ts +2 -3
  206. package/src/cramFile/codecs/index.ts +7 -8
  207. package/src/cramFile/codecs/subexp.ts +3 -3
  208. package/src/cramFile/container/compressionScheme.ts +3 -3
  209. package/src/cramFile/container/index.ts +7 -10
  210. package/src/cramFile/file.ts +78 -86
  211. package/src/cramFile/record.ts +3 -3
  212. package/src/cramFile/sectionParsers.ts +27 -22
  213. package/src/cramFile/slice/decodeRecord.ts +17 -17
  214. package/src/cramFile/slice/index.ts +8 -9
  215. package/src/cramFile/util.ts +24 -6
  216. package/src/htscodecs/arith_gen.js +344 -0
  217. package/src/htscodecs/arith_sh.js +138 -0
  218. package/src/htscodecs/byte_model.js +126 -0
  219. package/src/htscodecs/fqzcomp.js +360 -0
  220. package/src/htscodecs/index.js +77 -0
  221. package/src/htscodecs/iostream.js +257 -0
  222. package/src/htscodecs/rans.js +233 -0
  223. package/src/htscodecs/rans4x16.js +452 -0
  224. package/src/htscodecs/tok3.js +413 -0
  225. package/src/index.ts +1 -1
  226. package/src/indexedCramFile.ts +6 -5
  227. package/src/io/index.ts +5 -4
  228. package/src/rans/constants.ts +1 -1
  229. package/src/rans/d04.ts +0 -1
  230. package/src/rans/decoding.ts +0 -1
  231. package/src/rans/frequencies.ts +0 -1
  232. package/src/rans/index.ts +5 -7
  233. package/src/unzip.ts +5 -1
  234. package/dist/cramFile/filehandle.d.ts +0 -1
  235. package/dist/cramFile/filehandle.js +0 -3
  236. package/dist/cramFile/filehandle.js.map +0 -1
  237. package/dist/unzip-pako.d.ts +0 -2
  238. package/dist/unzip-pako.js +0 -9
  239. package/dist/unzip-pako.js.map +0 -1
  240. package/esm/cramFile/filehandle.d.ts +0 -1
  241. package/esm/cramFile/filehandle.js +0 -2
  242. package/esm/cramFile/filehandle.js.map +0 -1
  243. package/esm/unzip-pako.d.ts +0 -2
  244. package/esm/unzip-pako.js +0 -6
  245. package/esm/unzip-pako.js.map +0 -1
  246. package/src/cramFile/filehandle.ts +0 -1
  247. package/src/typings/htscodecs.d.ts +0 -6
  248. package/src/unzip-pako.ts +0 -6
@@ -1,32 +1,21 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
14
5
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const buffer_1 = require("buffer");
16
- const crc32_1 = __importDefault(require("crc/crc32"));
17
- const quick_lru_1 = __importDefault(require("quick-lru"));
18
- const htscodecs_1 = __importDefault(require("@jkbonfield/htscodecs"));
19
6
  const bzip2_1 = __importDefault(require("bzip2"));
7
+ const crc32_1 = __importDefault(require("crc/calculators/crc32"));
8
+ const quick_lru_1 = __importDefault(require("quick-lru"));
20
9
  const xz_decompress_1 = require("xz-decompress");
21
10
  const errors_1 = require("../errors");
22
- // locals
23
- const unzip_1 = require("../unzip");
11
+ const htscodecs_1 = __importDefault(require("../htscodecs"));
12
+ const io_1 = require("../io");
24
13
  const rans_1 = __importDefault(require("../rans"));
25
- const sectionParsers_1 = require("./sectionParsers");
14
+ const sam_1 = require("../sam");
15
+ const unzip_1 = require("../unzip");
26
16
  const container_1 = __importDefault(require("./container"));
27
- const io_1 = require("../io");
17
+ const sectionParsers_1 = require("./sectionParsers");
28
18
  const util_1 = require("./util");
29
- const sam_1 = require("../sam");
30
19
  function bufferToStream(buf) {
31
20
  return new ReadableStream({
32
21
  start(controller) {
@@ -51,13 +40,12 @@ function getEndianness() {
51
40
  }
52
41
  class CramFile {
53
42
  constructor(args) {
54
- var _a;
55
43
  this.file = (0, io_1.open)(args.url, args.path, args.filehandle);
56
44
  this.validateChecksums = true;
57
45
  this.fetchReferenceSequenceCallback = args.seqFetch;
58
46
  this.options = {
59
47
  checkSequenceMD5: args.checkSequenceMD5,
60
- cacheSize: (_a = args.cacheSize) !== null && _a !== void 0 ? _a : 20000,
48
+ cacheSize: args.cacheSize ?? 20000,
61
49
  };
62
50
  // cache of features in a slice, keyed by the slice offset. caches all of
63
51
  // the features in a slice, or none. the cache is actually used by the
@@ -69,271 +57,252 @@ class CramFile {
69
57
  throw new Error('Detected big-endian machine, may be unable to run');
70
58
  }
71
59
  }
72
- // can just read this object like a filehandle
73
- read(buffer, offset, length, position) {
74
- return this.file.read(buffer, offset, length, position);
75
- }
76
60
  // can just stat this object like a filehandle
77
61
  stat() {
78
62
  return this.file.stat();
79
63
  }
64
+ // can just stat this object like a filehandle
65
+ read(length, position) {
66
+ return this.file.read(length, position);
67
+ }
80
68
  // memoized
81
- getDefinition() {
82
- return __awaiter(this, void 0, void 0, function* () {
83
- const { maxLength, parser } = (0, sectionParsers_1.cramFileDefinition)();
84
- const headbytes = buffer_1.Buffer.allocUnsafe(maxLength);
85
- yield this.file.read(headbytes, 0, maxLength, 0);
86
- const definition = parser(headbytes).value;
87
- if (definition.majorVersion !== 2 && definition.majorVersion !== 3) {
88
- throw new errors_1.CramUnimplementedError(`CRAM version ${definition.majorVersion} not supported`);
89
- }
90
- return definition;
91
- });
69
+ async getDefinition() {
70
+ const { maxLength, parser } = (0, sectionParsers_1.cramFileDefinition)();
71
+ const headbytes = await this.file.read(maxLength, 0);
72
+ const definition = parser(headbytes).value;
73
+ if (definition.majorVersion !== 2 && definition.majorVersion !== 3) {
74
+ throw new errors_1.CramUnimplementedError(`CRAM version ${definition.majorVersion} not supported`);
75
+ }
76
+ return definition;
92
77
  }
93
78
  // memoize
94
- getSamHeader() {
95
- return __awaiter(this, void 0, void 0, function* () {
96
- const firstContainer = yield this.getContainerById(0);
97
- if (!firstContainer) {
98
- throw new errors_1.CramMalformedError('file contains no containers');
99
- }
100
- const firstBlock = yield firstContainer.getFirstBlock();
101
- if (firstBlock === undefined) {
102
- return (0, sam_1.parseHeaderText)('');
103
- }
79
+ async getSamHeader() {
80
+ const firstContainer = await this.getContainerById(0);
81
+ if (!firstContainer) {
82
+ throw new errors_1.CramMalformedError('file contains no containers');
83
+ }
84
+ const firstBlock = await firstContainer.getFirstBlock();
85
+ if (firstBlock === undefined) {
86
+ return (0, sam_1.parseHeaderText)('');
87
+ }
88
+ else {
104
89
  const content = firstBlock.content;
105
- // find the end of the trailing zeros in the header text
106
- const headerLength = content.readInt32LE(0);
90
+ const dataView = new DataView(content.buffer);
91
+ const headerLength = dataView.getInt32(0, true);
107
92
  const textStart = 4;
108
- // let textEnd = content.length - 1
109
- // while (textEnd >= textStart && !content[textEnd]) textEnd -= 1
110
- // trim off the trailing zeros
111
- const text = content.toString('utf8', textStart, textStart + headerLength);
93
+ const decoder = new TextDecoder('utf8');
94
+ const text = decoder.decode(content.subarray(textStart, textStart + headerLength));
112
95
  this.header = text;
113
96
  return (0, sam_1.parseHeaderText)(text);
114
- });
97
+ }
115
98
  }
116
- getHeaderText() {
117
- return __awaiter(this, void 0, void 0, function* () {
118
- yield this.getSamHeader();
119
- return this.header;
120
- });
99
+ async getHeaderText() {
100
+ await this.getSamHeader();
101
+ return this.header;
121
102
  }
122
- getContainerById(containerNumber) {
123
- return __awaiter(this, void 0, void 0, function* () {
124
- const { majorVersion } = yield this.getDefinition();
125
- const sectionParsers = (0, sectionParsers_1.getSectionParsers)(majorVersion);
126
- let position = sectionParsers.cramFileDefinition.maxLength;
127
- const { size: fileSize } = yield this.file.stat();
128
- const { cramContainerHeader1 } = sectionParsers;
129
- // skip with a series of reads to the proper container
130
- let currentContainer;
131
- for (let i = 0; i <= containerNumber; i++) {
132
- // if we are about to go off the end of the file
133
- // and have not found that container, it does not exist
134
- if (position + cramContainerHeader1.maxLength + 8 >= fileSize) {
135
- return undefined;
136
- }
137
- currentContainer = this.getContainerAtPosition(position);
138
- const currentHeader = yield currentContainer.getHeader();
139
- if (!currentHeader) {
140
- throw new errors_1.CramMalformedError(`container ${containerNumber} not found in file`);
141
- }
142
- // if this is the first container, read all the blocks in the container
143
- // to determine its length, because we cannot trust the container
144
- // header's given length due to a bug somewhere in htslib
145
- if (i === 0) {
146
- position = currentHeader._endPosition;
147
- for (let j = 0; j < currentHeader.numBlocks; j++) {
148
- const block = yield this.readBlock(position);
149
- if (block === undefined) {
150
- return undefined;
151
- }
152
- position = block._endPosition;
103
+ async getContainerById(containerNumber) {
104
+ const { majorVersion } = await this.getDefinition();
105
+ const sectionParsers = (0, sectionParsers_1.getSectionParsers)(majorVersion);
106
+ let position = sectionParsers.cramFileDefinition.maxLength;
107
+ const { size: fileSize } = await this.file.stat();
108
+ const { cramContainerHeader1 } = sectionParsers;
109
+ // skip with a series of reads to the proper container
110
+ let currentContainer;
111
+ for (let i = 0; i <= containerNumber; i++) {
112
+ // if we are about to go off the end of the file
113
+ // and have not found that container, it does not exist
114
+ if (position + cramContainerHeader1.maxLength + 8 >= fileSize) {
115
+ return undefined;
116
+ }
117
+ currentContainer = this.getContainerAtPosition(position);
118
+ const currentHeader = await currentContainer.getHeader();
119
+ if (!currentHeader) {
120
+ throw new errors_1.CramMalformedError(`container ${containerNumber} not found in file`);
121
+ }
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
125
+ if (i === 0) {
126
+ position = currentHeader._endPosition;
127
+ for (let j = 0; j < currentHeader.numBlocks; j++) {
128
+ const block = await this.readBlock(position);
129
+ if (block === undefined) {
130
+ return undefined;
153
131
  }
154
- }
155
- else {
156
- // otherwise, just traverse to the next container using the container's length
157
- position += currentHeader._size + currentHeader.length;
132
+ position = block._endPosition;
158
133
  }
159
134
  }
160
- return currentContainer;
161
- });
162
- }
163
- checkCrc32(position, length, recordedCrc32, description) {
164
- return __awaiter(this, void 0, void 0, function* () {
165
- const b = buffer_1.Buffer.allocUnsafe(length);
166
- yield this.file.read(b, 0, length, position);
167
- const calculatedCrc32 = crc32_1.default.unsigned(b);
168
- if (calculatedCrc32 !== recordedCrc32) {
169
- throw new errors_1.CramMalformedError(`crc mismatch in ${description}: recorded CRC32 = ${recordedCrc32}, but calculated CRC32 = ${calculatedCrc32}`);
135
+ else {
136
+ // otherwise, just traverse to the next container using the container's
137
+ // length
138
+ position += currentHeader._size + currentHeader.length;
170
139
  }
171
- });
140
+ }
141
+ return currentContainer;
142
+ }
143
+ async checkCrc32(position, length, recordedCrc32, description) {
144
+ const b = await this.file.read(length, position);
145
+ // this shift >>> 0 is equivalent to crc32(b).unsigned but uses the
146
+ // internal calculator of crc32 to avoid accidentally importing buffer
147
+ // https://github.com/alexgorbatchev/crc/blob/31fc3853e417b5fb5ec83335428805842575f699/src/define_crc.ts#L5
148
+ const calculatedCrc32 = (0, crc32_1.default)(b) >>> 0;
149
+ if (calculatedCrc32 !== recordedCrc32) {
150
+ throw new errors_1.CramMalformedError(`crc mismatch in ${description}: recorded CRC32 = ${recordedCrc32}, but calculated CRC32 = ${calculatedCrc32}`);
151
+ }
172
152
  }
173
153
  /**
174
154
  * @returns {Promise[number]} the number of containers in the file
175
155
  */
176
- containerCount() {
177
- return __awaiter(this, void 0, void 0, function* () {
178
- const { majorVersion } = yield this.getDefinition();
179
- const sectionParsers = (0, sectionParsers_1.getSectionParsers)(majorVersion);
180
- const { size: fileSize } = yield this.file.stat();
181
- const { cramContainerHeader1 } = sectionParsers;
182
- let containerCount = 0;
183
- let position = sectionParsers.cramFileDefinition.maxLength;
184
- while (position + cramContainerHeader1.maxLength + 8 < fileSize) {
185
- const currentHeader = yield this.getContainerAtPosition(position).getHeader();
186
- if (!currentHeader) {
187
- break;
188
- }
189
- // if this is the first container, read all the blocks in the
190
- // container, because we cannot trust the container
191
- // header's given length due to a bug somewhere in htslib
192
- if (containerCount === 0) {
193
- position = currentHeader._endPosition;
194
- for (let j = 0; j < currentHeader.numBlocks; j++) {
195
- const block = yield this.readBlock(position);
196
- if (block === undefined) {
197
- return undefined;
198
- }
199
- position = block._endPosition;
156
+ async containerCount() {
157
+ const { majorVersion } = await this.getDefinition();
158
+ const sectionParsers = (0, sectionParsers_1.getSectionParsers)(majorVersion);
159
+ const { size: fileSize } = await this.file.stat();
160
+ const { cramContainerHeader1 } = sectionParsers;
161
+ let containerCount = 0;
162
+ 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;
200
177
  }
178
+ position = block._endPosition;
201
179
  }
202
- else {
203
- // otherwise, just traverse to the next container using the container's length
204
- position += currentHeader._size + currentHeader.length;
205
- }
206
- containerCount += 1;
207
180
  }
208
- return containerCount;
209
- });
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;
187
+ }
188
+ return containerCount;
210
189
  }
211
190
  getContainerAtPosition(position) {
212
191
  return new container_1.default(this, position);
213
192
  }
214
- readBlockHeader(position) {
215
- return __awaiter(this, void 0, void 0, function* () {
216
- const { majorVersion } = yield this.getDefinition();
217
- const sectionParsers = (0, sectionParsers_1.getSectionParsers)(majorVersion);
218
- const { cramBlockHeader } = sectionParsers;
219
- const { size: fileSize } = yield this.file.stat();
220
- if (position + cramBlockHeader.maxLength >= fileSize) {
193
+ async readBlockHeader(position) {
194
+ const { majorVersion } = await this.getDefinition();
195
+ const sectionParsers = (0, sectionParsers_1.getSectionParsers)(majorVersion);
196
+ const { cramBlockHeader } = sectionParsers;
197
+ const { size: fileSize } = await this.file.stat();
198
+ if (position + cramBlockHeader.maxLength >= fileSize) {
199
+ return undefined;
200
+ }
201
+ const buffer = await this.file.read(cramBlockHeader.maxLength, position);
202
+ return (0, util_1.parseItem)(buffer, cramBlockHeader.parser, 0, position);
203
+ }
204
+ 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) {
221
212
  return undefined;
222
213
  }
223
- const buffer = buffer_1.Buffer.allocUnsafe(cramBlockHeader.maxLength);
224
- yield this.file.read(buffer, 0, cramBlockHeader.maxLength, position);
225
- return (0, util_1.parseItem)(buffer, cramBlockHeader.parser, 0, position);
226
- });
214
+ buffer = await this.file.read(size, position);
215
+ }
216
+ const data = (0, util_1.parseItem)(buffer, section.parser, 0, position);
217
+ if (data._size !== size) {
218
+ throw new errors_1.CramMalformedError(`section read error: requested size ${size} does not equal parsed size ${data._size}`);
219
+ }
220
+ return data;
227
221
  }
228
- _parseSection(section_1, position_1) {
229
- return __awaiter(this, arguments, void 0, function* (section, position, size = section.maxLength, preReadBuffer) {
230
- let buffer;
231
- if (preReadBuffer) {
232
- buffer = preReadBuffer;
233
- }
234
- else {
235
- const { size: fileSize } = yield this.file.stat();
236
- if (position + size >= fileSize) {
237
- return undefined;
222
+ async _uncompress(compressionMethod, inputBuffer, uncompressedSize) {
223
+ if (compressionMethod === 'gzip') {
224
+ return (0, unzip_1.unzip)(inputBuffer);
225
+ }
226
+ else if (compressionMethod === 'bzip2') {
227
+ const bits = bzip2_1.default.array(inputBuffer);
228
+ let size = bzip2_1.default.header(bits);
229
+ let chunk;
230
+ const chunks = [];
231
+ do {
232
+ chunk = bzip2_1.default.decompress(bits, size);
233
+ if (chunk !== -1) {
234
+ chunks.push(chunk);
235
+ size -= chunk.length;
238
236
  }
239
- buffer = buffer_1.Buffer.allocUnsafe(size);
240
- yield this.file.read(buffer, 0, size, position);
241
- }
242
- const data = (0, util_1.parseItem)(buffer, section.parser, 0, position);
243
- if (data._size !== size) {
244
- throw new errors_1.CramMalformedError(`section read error: requested size ${size} does not equal parsed size ${data._size}`);
245
- }
246
- return data;
247
- });
248
- }
249
- _uncompress(compressionMethod, inputBuffer, outputBuffer) {
250
- return __awaiter(this, void 0, void 0, function* () {
251
- if (compressionMethod === 'gzip') {
252
- const result = (0, unzip_1.unzip)(inputBuffer);
253
- result.copy(outputBuffer);
254
- }
255
- else if (compressionMethod === 'bzip2') {
256
- const bits = bzip2_1.default.array(inputBuffer);
257
- let size = bzip2_1.default.header(bits);
258
- let j = 0;
259
- let chunk;
260
- do {
261
- chunk = bzip2_1.default.decompress(bits, size);
262
- if (chunk !== -1) {
263
- buffer_1.Buffer.from(chunk).copy(outputBuffer, j);
264
- j += chunk.length;
265
- size -= chunk.length;
266
- }
267
- } while (chunk !== -1);
268
- }
269
- else if (compressionMethod === 'lzma') {
270
- const decompressedResponse = new Response(new xz_decompress_1.XzReadableStream(bufferToStream(inputBuffer)));
271
- const ret = buffer_1.Buffer.from(yield decompressedResponse.arrayBuffer());
272
- ret.copy(outputBuffer);
273
- }
274
- else if (compressionMethod === 'rans') {
275
- (0, rans_1.default)(inputBuffer, outputBuffer);
276
- // htscodecs r4x8 is slower, but compatible.
277
- // htscodecs.r4x8_uncompress(inputBuffer, outputBuffer);
278
- }
279
- else if (compressionMethod === 'rans4x16') {
280
- htscodecs_1.default.r4x16_uncompress(inputBuffer, outputBuffer);
281
- }
282
- else if (compressionMethod === 'arith') {
283
- htscodecs_1.default.arith_uncompress(inputBuffer, outputBuffer);
284
- }
285
- else if (compressionMethod === 'fqzcomp') {
286
- htscodecs_1.default.fqzcomp_uncompress(inputBuffer, outputBuffer);
287
- }
288
- else if (compressionMethod === 'tok3') {
289
- htscodecs_1.default.tok3_uncompress(inputBuffer, outputBuffer);
290
- }
291
- else {
292
- throw new errors_1.CramUnimplementedError(`${compressionMethod} decompression not yet implemented`);
293
- }
294
- });
237
+ } while (chunk !== -1);
238
+ return (0, util_1.concatUint8Array)(chunks);
239
+ }
240
+ else if (compressionMethod === 'lzma') {
241
+ const decompressedResponse = new Response(new xz_decompress_1.XzReadableStream(bufferToStream(inputBuffer)));
242
+ return new Uint8Array(await decompressedResponse.arrayBuffer());
243
+ }
244
+ else if (compressionMethod === 'rans') {
245
+ const outputBuffer = new Uint8Array(uncompressedSize);
246
+ (0, rans_1.default)(inputBuffer, outputBuffer);
247
+ return outputBuffer;
248
+ // htscodecs r4x8 is slower, but compatible.
249
+ // htscodecs.r4x8_uncompress(inputBuffer, outputBuffer);
250
+ }
251
+ else if (compressionMethod === 'rans4x16') {
252
+ return htscodecs_1.default.r4x16_uncompress(inputBuffer);
253
+ }
254
+ else if (compressionMethod === 'arith') {
255
+ return htscodecs_1.default.arith_uncompress(inputBuffer);
256
+ }
257
+ else if (compressionMethod === 'fqzcomp') {
258
+ return htscodecs_1.default.fqzcomp_uncompress(inputBuffer);
259
+ }
260
+ else if (compressionMethod === 'tok3') {
261
+ return htscodecs_1.default.tok3_uncompress(inputBuffer);
262
+ }
263
+ else {
264
+ throw new errors_1.CramUnimplementedError(`${compressionMethod} decompression not yet implemented`);
265
+ }
295
266
  }
296
- readBlock(position) {
297
- return __awaiter(this, void 0, void 0, function* () {
298
- const { majorVersion } = yield this.getDefinition();
299
- const sectionParsers = (0, sectionParsers_1.getSectionParsers)(majorVersion);
300
- const blockHeader = yield this.readBlockHeader(position);
301
- if (blockHeader === undefined) {
267
+ async readBlock(position) {
268
+ const { majorVersion } = await this.getDefinition();
269
+ const sectionParsers = (0, sectionParsers_1.getSectionParsers)(majorVersion);
270
+ const blockHeader = await this.readBlockHeader(position);
271
+ if (blockHeader === undefined) {
272
+ return undefined;
273
+ }
274
+ const blockContentPosition = blockHeader._endPosition;
275
+ const d = await this.file.read(blockHeader.compressedSize, blockContentPosition);
276
+ const uncompressedData = blockHeader.compressionMethod !== 'raw'
277
+ ? await this._uncompress(blockHeader.compressionMethod, d, blockHeader.uncompressedSize)
278
+ : d;
279
+ const block = {
280
+ ...blockHeader,
281
+ _endPosition: blockContentPosition,
282
+ contentPosition: blockContentPosition,
283
+ content: uncompressedData,
284
+ };
285
+ if (majorVersion >= 3) {
286
+ // parse the crc32
287
+ const crc = await this._parseSection(sectionParsers.cramBlockCrc32, blockContentPosition + blockHeader.compressedSize);
288
+ if (crc === undefined) {
302
289
  return undefined;
303
290
  }
304
- const blockContentPosition = blockHeader._endPosition;
305
- const uncompressedData = buffer_1.Buffer.allocUnsafe(blockHeader.uncompressedSize);
306
- const block = Object.assign(Object.assign({}, blockHeader), { _endPosition: blockContentPosition, contentPosition: blockContentPosition, content: uncompressedData });
307
- if (blockHeader.compressionMethod !== 'raw') {
308
- const compressedData = buffer_1.Buffer.allocUnsafe(blockHeader.compressedSize);
309
- yield this.read(compressedData, 0, blockHeader.compressedSize, blockContentPosition);
310
- yield this._uncompress(blockHeader.compressionMethod, compressedData, uncompressedData);
311
- }
312
- else {
313
- yield this.read(uncompressedData, 0, blockHeader.uncompressedSize, blockContentPosition);
314
- }
315
- if (majorVersion >= 3) {
316
- // parse the crc32
317
- const crc = yield this._parseSection(sectionParsers.cramBlockCrc32, blockContentPosition + blockHeader.compressedSize);
318
- if (crc === undefined) {
319
- return undefined;
320
- }
321
- block.crc32 = crc.crc32;
322
- // check the block data crc32
323
- if (this.validateChecksums) {
324
- yield this.checkCrc32(position, blockHeader._size + blockHeader.compressedSize, crc.crc32, 'block data');
325
- }
326
- // make the endposition and size reflect the whole block
327
- block._endPosition = crc._endPosition;
328
- block._size =
329
- block.compressedSize + sectionParsers.cramBlockCrc32.maxLength;
291
+ block.crc32 = crc.crc32;
292
+ // check the block data crc32
293
+ if (this.validateChecksums) {
294
+ await this.checkCrc32(position, blockHeader._size + blockHeader.compressedSize, crc.crc32, 'block data');
330
295
  }
331
- else {
332
- block._endPosition = blockContentPosition + block.compressedSize;
333
- block._size = block.compressedSize;
334
- }
335
- return block;
336
- });
296
+ // make the endposition and size reflect the whole block
297
+ block._endPosition = crc._endPosition;
298
+ block._size =
299
+ block.compressedSize + sectionParsers.cramBlockCrc32.maxLength;
300
+ }
301
+ else {
302
+ block._endPosition = blockContentPosition + block.compressedSize;
303
+ block._size = block.compressedSize;
304
+ }
305
+ return block;
337
306
  }
338
307
  }
339
308
  exports.default = CramFile;
@@ -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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"}
@@ -345,8 +345,8 @@ class CramRecord {
345
345
  */
346
346
  addReferenceSequence(refRegion, compressionScheme) {
347
347
  if (this.readFeatures) {
348
- // use the reference bases to decode the bases
349
- // substituted in each base substitution
348
+ // use the reference bases to decode the bases substituted in each base
349
+ // substitution
350
350
  this.readFeatures.forEach(readFeature => {
351
351
  if (readFeature.code === 'X') {
352
352
  decodeBaseSubstitution(this, refRegion, compressionScheme, readFeature);