@gmod/cram 1.5.9 → 1.6.2

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 (258) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/README.md +182 -172
  3. package/dist/craiIndex.d.ts +37 -0
  4. package/dist/craiIndex.js +196 -301
  5. package/dist/craiIndex.js.map +1 -0
  6. package/dist/cram-bundle.js +6 -15
  7. package/dist/cramFile/codecs/_base.d.ts +6 -0
  8. package/dist/cramFile/codecs/_base.js +44 -53
  9. package/dist/cramFile/codecs/_base.js.map +1 -0
  10. package/dist/cramFile/codecs/beta.d.ts +4 -0
  11. package/dist/cramFile/codecs/beta.js +38 -48
  12. package/dist/cramFile/codecs/beta.js.map +1 -0
  13. package/dist/cramFile/codecs/byteArrayLength.d.ts +8 -0
  14. package/dist/cramFile/codecs/byteArrayLength.js +58 -78
  15. package/dist/cramFile/codecs/byteArrayLength.js.map +1 -0
  16. package/dist/cramFile/codecs/byteArrayStop.d.ts +6 -0
  17. package/dist/cramFile/codecs/byteArrayStop.js +62 -76
  18. package/dist/cramFile/codecs/byteArrayStop.js.map +1 -0
  19. package/dist/cramFile/codecs/external.d.ts +7 -0
  20. package/dist/cramFile/codecs/external.js +63 -81
  21. package/dist/cramFile/codecs/external.js.map +1 -0
  22. package/dist/cramFile/codecs/gamma.d.ts +4 -0
  23. package/dist/cramFile/codecs/gamma.js +43 -56
  24. package/dist/cramFile/codecs/gamma.js.map +1 -0
  25. package/dist/cramFile/codecs/huffman.d.ts +17 -0
  26. package/dist/cramFile/codecs/huffman.js +126 -199
  27. package/dist/cramFile/codecs/huffman.js.map +1 -0
  28. package/dist/cramFile/codecs/index.d.ts +2 -0
  29. package/dist/cramFile/codecs/index.js +31 -38
  30. package/dist/cramFile/codecs/index.js.map +1 -0
  31. package/dist/cramFile/codecs/subexp.d.ts +4 -0
  32. package/dist/cramFile/codecs/subexp.js +51 -64
  33. package/dist/cramFile/codecs/subexp.js.map +1 -0
  34. package/dist/cramFile/constants.d.ts +36 -0
  35. package/dist/cramFile/constants.js +52 -50
  36. package/dist/cramFile/constants.js.map +1 -0
  37. package/dist/cramFile/container/compressionScheme.d.ts +23 -0
  38. package/dist/cramFile/container/compressionScheme.js +115 -153
  39. package/dist/cramFile/container/compressionScheme.js.map +1 -0
  40. package/dist/cramFile/container/index.d.ts +13 -0
  41. package/dist/cramFile/container/index.js +169 -283
  42. package/dist/cramFile/container/index.js.map +1 -0
  43. package/dist/cramFile/file.d.ts +63 -0
  44. package/dist/cramFile/file.js +440 -766
  45. package/dist/cramFile/file.js.map +1 -0
  46. package/dist/cramFile/index.d.ts +2 -0
  47. package/dist/cramFile/index.js +7 -4
  48. package/dist/cramFile/index.js.map +1 -0
  49. package/dist/cramFile/record.d.ts +79 -0
  50. package/dist/cramFile/record.js +253 -308
  51. package/dist/cramFile/record.js.map +1 -0
  52. package/dist/cramFile/sectionParsers.d.ts +18 -0
  53. package/dist/cramFile/sectionParsers.js +324 -362
  54. package/dist/cramFile/sectionParsers.js.map +1 -0
  55. package/dist/cramFile/slice/decodeRecord.d.ts +2 -0
  56. package/dist/cramFile/slice/decodeRecord.js +278 -298
  57. package/dist/cramFile/slice/decodeRecord.js.map +1 -0
  58. package/dist/cramFile/slice/index.d.ts +20 -0
  59. package/dist/cramFile/slice/index.js +488 -789
  60. package/dist/cramFile/slice/index.js.map +1 -0
  61. package/dist/cramFile/util.d.ts +5 -0
  62. package/dist/cramFile/util.js +158 -144
  63. package/dist/cramFile/util.js.map +1 -0
  64. package/dist/errors.d.ts +23 -0
  65. package/dist/errors.js +66 -103
  66. package/dist/errors.js.map +1 -0
  67. package/dist/index.d.ts +4 -0
  68. package/dist/index.js +12 -12
  69. package/dist/index.js.map +1 -0
  70. package/dist/indexedCramFile.d.ts +39 -0
  71. package/dist/indexedCramFile.js +213 -315
  72. package/dist/indexedCramFile.js.map +1 -0
  73. package/dist/io/bufferCache.d.ts +12 -0
  74. package/dist/io/bufferCache.js +108 -128
  75. package/dist/io/bufferCache.js.map +1 -0
  76. package/dist/io/index.d.ts +5 -0
  77. package/dist/io/index.js +29 -27
  78. package/dist/io/index.js.map +1 -0
  79. package/dist/io/localFile.d.ts +10 -0
  80. package/dist/io/localFile.js +105 -162
  81. package/dist/io/localFile.js.map +1 -0
  82. package/dist/io/remoteFile.d.ts +16 -0
  83. package/dist/io/remoteFile.js +137 -206
  84. package/dist/io/remoteFile.js.map +1 -0
  85. package/dist/rans/constants.d.ts +3 -0
  86. package/dist/rans/constants.js +6 -6
  87. package/dist/rans/constants.js.map +1 -0
  88. package/dist/rans/d04.d.ts +1 -0
  89. package/dist/rans/d04.js +70 -99
  90. package/dist/rans/d04.js.map +1 -0
  91. package/dist/rans/d14.d.ts +1 -0
  92. package/dist/rans/d14.js +55 -93
  93. package/dist/rans/d14.js.map +1 -0
  94. package/dist/rans/decoding.d.ts +30 -0
  95. package/dist/rans/decoding.js +112 -159
  96. package/dist/rans/decoding.js.map +1 -0
  97. package/dist/rans/frequencies.d.ts +2 -0
  98. package/dist/rans/frequencies.js +110 -119
  99. package/dist/rans/frequencies.js.map +1 -0
  100. package/dist/rans/index.d.ts +1 -0
  101. package/dist/rans/index.js +111 -174
  102. package/dist/rans/index.js.map +1 -0
  103. package/dist/sam.d.ts +1 -0
  104. package/dist/sam.js +16 -41
  105. package/dist/sam.js.map +1 -0
  106. package/dist/unzip-pako.d.ts +2 -0
  107. package/dist/unzip-pako.js +9 -0
  108. package/dist/unzip-pako.js.map +1 -0
  109. package/dist/unzip.d.ts +2 -0
  110. package/dist/unzip.js +6 -0
  111. package/dist/unzip.js.map +1 -0
  112. package/errors.js +66 -103
  113. package/esm/craiIndex.d.ts +37 -0
  114. package/esm/craiIndex.js +158 -0
  115. package/esm/craiIndex.js.map +1 -0
  116. package/esm/cramFile/codecs/_base.d.ts +6 -0
  117. package/esm/cramFile/codecs/_base.js +42 -0
  118. package/esm/cramFile/codecs/_base.js.map +1 -0
  119. package/esm/cramFile/codecs/beta.d.ts +4 -0
  120. package/esm/cramFile/codecs/beta.js +15 -0
  121. package/esm/cramFile/codecs/beta.js.map +1 -0
  122. package/esm/cramFile/codecs/byteArrayLength.d.ts +8 -0
  123. package/esm/cramFile/codecs/byteArrayLength.js +35 -0
  124. package/esm/cramFile/codecs/byteArrayLength.js.map +1 -0
  125. package/esm/cramFile/codecs/byteArrayStop.d.ts +6 -0
  126. package/esm/cramFile/codecs/byteArrayStop.js +40 -0
  127. package/esm/cramFile/codecs/byteArrayStop.js.map +1 -0
  128. package/esm/cramFile/codecs/external.d.ts +7 -0
  129. package/esm/cramFile/codecs/external.js +40 -0
  130. package/esm/cramFile/codecs/external.js.map +1 -0
  131. package/esm/cramFile/codecs/gamma.d.ts +4 -0
  132. package/esm/cramFile/codecs/gamma.js +20 -0
  133. package/esm/cramFile/codecs/gamma.js.map +1 -0
  134. package/esm/cramFile/codecs/huffman.d.ts +17 -0
  135. package/esm/cramFile/codecs/huffman.js +107 -0
  136. package/esm/cramFile/codecs/huffman.js.map +1 -0
  137. package/esm/cramFile/codecs/index.d.ts +2 -0
  138. package/esm/cramFile/codecs/index.js +30 -0
  139. package/esm/cramFile/codecs/index.js.map +1 -0
  140. package/esm/cramFile/codecs/subexp.d.ts +4 -0
  141. package/esm/cramFile/codecs/subexp.js +28 -0
  142. package/esm/cramFile/codecs/subexp.js.map +1 -0
  143. package/esm/cramFile/constants.d.ts +36 -0
  144. package/esm/cramFile/constants.js +51 -0
  145. package/esm/cramFile/constants.js.map +1 -0
  146. package/esm/cramFile/container/compressionScheme.d.ts +23 -0
  147. package/esm/cramFile/container/compressionScheme.js +123 -0
  148. package/esm/cramFile/container/compressionScheme.js.map +1 -0
  149. package/esm/cramFile/container/index.d.ts +13 -0
  150. package/esm/cramFile/container/index.js +84 -0
  151. package/esm/cramFile/container/index.js.map +1 -0
  152. package/esm/cramFile/file.d.ts +63 -0
  153. package/esm/cramFile/file.js +281 -0
  154. package/esm/cramFile/file.js.map +1 -0
  155. package/esm/cramFile/index.d.ts +2 -0
  156. package/esm/cramFile/index.js +3 -0
  157. package/esm/cramFile/index.js.map +1 -0
  158. package/esm/cramFile/record.d.ts +79 -0
  159. package/esm/cramFile/record.js +297 -0
  160. package/esm/cramFile/record.js.map +1 -0
  161. package/esm/cramFile/sectionParsers.d.ts +18 -0
  162. package/esm/cramFile/sectionParsers.js +347 -0
  163. package/esm/cramFile/sectionParsers.js.map +1 -0
  164. package/esm/cramFile/slice/decodeRecord.d.ts +2 -0
  165. package/esm/cramFile/slice/decodeRecord.js +299 -0
  166. package/esm/cramFile/slice/decodeRecord.js.map +1 -0
  167. package/esm/cramFile/slice/index.d.ts +20 -0
  168. package/esm/cramFile/slice/index.js +364 -0
  169. package/esm/cramFile/slice/index.js.map +1 -0
  170. package/esm/cramFile/util.d.ts +5 -0
  171. package/esm/cramFile/util.js +161 -0
  172. package/esm/cramFile/util.js.map +1 -0
  173. package/esm/errors.d.ts +23 -0
  174. package/esm/errors.js +24 -0
  175. package/esm/errors.js.map +1 -0
  176. package/esm/index.d.ts +4 -0
  177. package/esm/index.js +5 -0
  178. package/esm/index.js.map +1 -0
  179. package/esm/indexedCramFile.d.ts +39 -0
  180. package/esm/indexedCramFile.js +155 -0
  181. package/esm/indexedCramFile.js.map +1 -0
  182. package/esm/io/bufferCache.d.ts +12 -0
  183. package/esm/io/bufferCache.js +54 -0
  184. package/esm/io/bufferCache.js.map +1 -0
  185. package/esm/io/index.d.ts +5 -0
  186. package/esm/io/index.js +24 -0
  187. package/esm/io/index.js.map +1 -0
  188. package/esm/io/localFile.d.ts +10 -0
  189. package/esm/io/localFile.js +31 -0
  190. package/esm/io/localFile.js.map +1 -0
  191. package/esm/io/remoteFile.d.ts +16 -0
  192. package/esm/io/remoteFile.js +64 -0
  193. package/esm/io/remoteFile.js.map +1 -0
  194. package/esm/rans/constants.d.ts +3 -0
  195. package/esm/rans/constants.js +5 -0
  196. package/esm/rans/constants.js.map +1 -0
  197. package/esm/rans/d04.d.ts +1 -0
  198. package/esm/rans/d04.js +67 -0
  199. package/esm/rans/d04.js.map +1 -0
  200. package/esm/rans/d14.d.ts +1 -0
  201. package/esm/rans/d14.js +52 -0
  202. package/esm/rans/d14.js.map +1 -0
  203. package/esm/rans/decoding.d.ts +30 -0
  204. package/esm/rans/decoding.js +118 -0
  205. package/esm/rans/decoding.js.map +1 -0
  206. package/esm/rans/frequencies.d.ts +2 -0
  207. package/esm/rans/frequencies.js +110 -0
  208. package/esm/rans/frequencies.js.map +1 -0
  209. package/esm/rans/index.d.ts +1 -0
  210. package/esm/rans/index.js +195 -0
  211. package/esm/rans/index.js.map +1 -0
  212. package/esm/sam.d.ts +1 -0
  213. package/esm/sam.js +16 -0
  214. package/esm/sam.js.map +1 -0
  215. package/esm/unzip-pako.d.ts +2 -0
  216. package/esm/unzip-pako.js +5 -0
  217. package/esm/unzip-pako.js.map +1 -0
  218. package/esm/unzip.d.ts +2 -0
  219. package/esm/unzip.js +3 -0
  220. package/esm/unzip.js.map +1 -0
  221. package/package.json +38 -35
  222. package/src/craiIndex.js +180 -0
  223. package/src/cramFile/codecs/_base.js +49 -0
  224. package/src/cramFile/codecs/beta.js +23 -0
  225. package/src/cramFile/codecs/byteArrayLength.js +55 -0
  226. package/src/cramFile/codecs/byteArrayStop.js +50 -0
  227. package/src/cramFile/codecs/external.js +54 -0
  228. package/src/cramFile/codecs/gamma.js +30 -0
  229. package/src/cramFile/codecs/huffman.js +137 -0
  230. package/src/cramFile/codecs/index.js +38 -0
  231. package/src/cramFile/codecs/subexp.js +32 -0
  232. package/src/cramFile/constants.js +55 -0
  233. package/src/cramFile/container/compressionScheme.js +144 -0
  234. package/src/cramFile/container/index.js +119 -0
  235. package/src/cramFile/file.js +347 -0
  236. package/src/cramFile/index.js +3 -0
  237. package/src/cramFile/record.js +337 -0
  238. package/src/cramFile/sectionParsers.js +379 -0
  239. package/src/cramFile/slice/decodeRecord.js +362 -0
  240. package/src/cramFile/slice/index.js +497 -0
  241. package/src/cramFile/util.js +169 -0
  242. package/src/errors.js +22 -0
  243. package/src/index.js +5 -0
  244. package/src/indexedCramFile.js +191 -0
  245. package/src/io/bufferCache.js +66 -0
  246. package/src/io/index.js +26 -0
  247. package/src/io/localFile.js +35 -0
  248. package/src/io/remoteFile.js +71 -0
  249. package/src/rans/README.md +1 -0
  250. package/src/rans/constants.js +5 -0
  251. package/src/rans/d04.js +83 -0
  252. package/src/rans/d14.js +59 -0
  253. package/src/rans/decoding.js +141 -0
  254. package/src/rans/frequencies.js +121 -0
  255. package/src/rans/index.js +249 -0
  256. package/src/sam.js +15 -0
  257. package/src/unzip-pako.ts +5 -0
  258. package/src/unzip.ts +2 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sectionParsers.js","sourceRoot":"","sources":["../../src/cramFile/sectionParsers.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export default function decodeRecord(slice: any, decodeDataSeries: any, compressionScheme: any, sliceHeader: any, coreDataBlock: any, blocksByContentId: any, cursors: any, majorVersion: any, recordNumber: any): CramRecord;
2
+ import CramRecord from "../record";
@@ -1,327 +1,307 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
-
5
- var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
6
-
7
- var _isNan = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/number/is-nan"));
8
-
9
- var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
10
-
11
- var _flags = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/flags"));
12
-
13
- var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
14
-
15
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
16
-
17
- var _parseInt = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/number/parse-int"));
18
-
19
- var _minSafeInteger = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/number/min-safe-integer"));
20
-
21
- var _maxSafeInteger = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/number/max-safe-integer"));
22
-
23
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
24
-
25
- var _indexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/index-of"));
26
-
27
- var Long = require('long');
28
-
29
- var _require = require('../../errors'),
30
- CramMalformedError = _require.CramMalformedError,
31
- CramUnimplementedError = _require.CramUnimplementedError;
32
-
33
- var CramRecord = require('../record');
34
-
35
- var Constants = require('../constants');
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var long_1 = __importDefault(require("long"));
7
+ var errors_1 = require("../../errors");
8
+ var record_1 = __importDefault(require("../record"));
9
+ var constants_1 = __importDefault(require("../constants"));
36
10
  /**
37
11
  * given a Buffer, read a string up to the first null character
38
12
  * @private
39
13
  */
40
-
41
-
42
14
  function readNullTerminatedStringFromBuffer(buffer) {
43
- var zeroOffset = (0, _indexOf.default)(buffer).call(buffer, 0);
44
- if (zeroOffset === -1) return buffer.toString('utf8');
45
- return buffer.toString('utf8', 0, zeroOffset);
15
+ var zeroOffset = buffer.indexOf(0);
16
+ if (zeroOffset === -1) {
17
+ return buffer.toString('utf8');
18
+ }
19
+ return buffer.toString('utf8', 0, zeroOffset);
46
20
  }
47
21
  /**
48
22
  * parse a BAM tag's array value from a binary buffer
49
23
  * @private
50
24
  */
51
-
52
-
53
25
  function parseTagValueArray(buffer) {
54
- var arrayType = String.fromCharCode(buffer[0]);
55
- var length = buffer.readInt32LE(1);
56
- var schema = {
57
- c: ['readInt8', 1],
58
- C: ['readUInt8', 1],
59
- s: ['readInt16LE', 2],
60
- S: ['readUInt16LE', 2],
61
- i: ['readInt32LE', 4],
62
- I: ['readUInt32LE', 4],
63
- f: ['readFloatLE', 4]
64
- }[arrayType];
65
- if (!schema) throw new CramMalformedError("invalid tag value array type '".concat(arrayType, "'"));
66
-
67
- var _schema = (0, _slicedToArray2.default)(schema, 2),
68
- getMethod = _schema[0],
69
- itemSize = _schema[1];
70
-
71
- var array = new Array(length);
72
- var offset = 5;
73
-
74
- for (var i = 0; i < length; i += 1) {
75
- array[i] = buffer[getMethod](offset);
76
- offset += itemSize;
77
- }
78
-
79
- return array;
26
+ var arrayType = String.fromCharCode(buffer[0]);
27
+ var length = buffer.readInt32LE(1);
28
+ var schema = {
29
+ c: ['readInt8', 1],
30
+ C: ['readUInt8', 1],
31
+ s: ['readInt16LE', 2],
32
+ S: ['readUInt16LE', 2],
33
+ i: ['readInt32LE', 4],
34
+ I: ['readUInt32LE', 4],
35
+ f: ['readFloatLE', 4],
36
+ }[arrayType];
37
+ if (!schema) {
38
+ throw new errors_1.CramMalformedError("invalid tag value array type '".concat(arrayType, "'"));
39
+ }
40
+ var getMethod = schema[0], itemSize = schema[1];
41
+ var array = new Array(length);
42
+ var offset = 5;
43
+ for (var i = 0; i < length; i += 1) {
44
+ array[i] = buffer[getMethod](offset);
45
+ offset += itemSize;
46
+ }
47
+ return array;
80
48
  }
81
-
82
49
  function parseTagData(tagType, buffer) {
83
- if (!buffer.readInt32LE) buffer = Buffer.from(buffer);
84
- if (tagType === 'Z') return readNullTerminatedStringFromBuffer(buffer);
85
- if (tagType === 'A') return String.fromCharCode(buffer[0]);
86
-
87
- if (tagType === 'I') {
88
- var val = Long.fromBytesLE(buffer);
89
- if (val.greaterThan(_maxSafeInteger.default) || val.lessThan(_minSafeInteger.default)) throw new CramUnimplementedError('integer overflow');
90
- return val.toNumber();
91
- }
92
-
93
- if (tagType === 'i') return buffer.readInt32LE(0);
94
- if (tagType === 's') return buffer.readInt16LE(0);
95
- if (tagType === 'S') return buffer.readUInt16LE(0);
96
- if (tagType === 'c') return buffer.readInt8(0);
97
- if (tagType === 'C') return buffer.readUInt8(0);
98
- if (tagType === 'f') return buffer.readFloatLE(0);
99
-
100
- if (tagType === 'H') {
101
- var hex = readNullTerminatedStringFromBuffer(buffer);
102
- return (0, _parseInt.default)(hex.replace(/^0x/, ''), 16);
103
- }
104
-
105
- if (tagType === 'B') return parseTagValueArray(buffer);
106
- throw new CramMalformedError("Unrecognized tag type ".concat(tagType));
50
+ if (!buffer.readInt32LE) {
51
+ buffer = Buffer.from(buffer);
52
+ }
53
+ if (tagType === 'Z') {
54
+ return readNullTerminatedStringFromBuffer(buffer);
55
+ }
56
+ if (tagType === 'A') {
57
+ return String.fromCharCode(buffer[0]);
58
+ }
59
+ if (tagType === 'I') {
60
+ var val = long_1.default.fromBytesLE(buffer);
61
+ if (val.greaterThan(Number.MAX_SAFE_INTEGER) ||
62
+ val.lessThan(Number.MIN_SAFE_INTEGER)) {
63
+ throw new errors_1.CramUnimplementedError('integer overflow');
64
+ }
65
+ return val.toNumber();
66
+ }
67
+ if (tagType === 'i') {
68
+ return buffer.readInt32LE(0);
69
+ }
70
+ if (tagType === 's') {
71
+ return buffer.readInt16LE(0);
72
+ }
73
+ if (tagType === 'S') {
74
+ return buffer.readUInt16LE(0);
75
+ }
76
+ if (tagType === 'c') {
77
+ return buffer.readInt8(0);
78
+ }
79
+ if (tagType === 'C') {
80
+ return buffer.readUInt8(0);
81
+ }
82
+ if (tagType === 'f') {
83
+ return buffer.readFloatLE(0);
84
+ }
85
+ if (tagType === 'H') {
86
+ var hex = readNullTerminatedStringFromBuffer(buffer);
87
+ return Number.parseInt(hex.replace(/^0x/, ''), 16);
88
+ }
89
+ if (tagType === 'B') {
90
+ return parseTagValueArray(buffer);
91
+ }
92
+ throw new errors_1.CramMalformedError("Unrecognized tag type ".concat(tagType));
107
93
  }
108
-
109
94
  function decodeReadFeatures(cramRecord, readFeatureCount, decodeDataSeries, compressionScheme, majorVersion) {
110
- var currentReadPos = 0;
111
- var currentRefPos = cramRecord.alignmentStart - 1;
112
- var readFeatures = new Array(readFeatureCount);
113
-
114
- function decodeRFData(_ref) {
115
- var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
116
- type = _ref2[0],
117
- dataSeriesName = _ref2[1];
118
-
119
- var data = decodeDataSeries(dataSeriesName);
120
-
121
- if (type === 'character') {
122
- return String.fromCharCode(data);
95
+ var currentReadPos = 0;
96
+ var currentRefPos = cramRecord.alignmentStart - 1;
97
+ var readFeatures = new Array(readFeatureCount);
98
+ function decodeRFData(_a) {
99
+ var type = _a[0], dataSeriesName = _a[1];
100
+ var data = decodeDataSeries(dataSeriesName);
101
+ if (type === 'character') {
102
+ return String.fromCharCode(data);
103
+ }
104
+ if (type === 'string') {
105
+ return data.toString('utf8');
106
+ }
107
+ if (type === 'numArray') {
108
+ return data.toArray();
109
+ }
110
+ // else if (type === 'number') {
111
+ // return data[0]
112
+ // }
113
+ return data;
123
114
  }
124
-
125
- if (type === 'string') {
126
- return data.toString('utf8');
115
+ for (var i = 0; i < readFeatureCount; i += 1) {
116
+ var code = String.fromCharCode(decodeDataSeries('FC'));
117
+ var readPosDelta = decodeDataSeries('FP');
118
+ var readFeature = { code: code };
119
+ // map of operator name -> data series name
120
+ var data1Schema = {
121
+ B: ['character', 'BA'],
122
+ S: ['string', majorVersion > 1 ? 'SC' : 'IN'],
123
+ X: ['number', 'BS'],
124
+ D: ['number', 'DL'],
125
+ I: ['string', 'IN'],
126
+ i: ['character', 'BA'],
127
+ b: ['string', 'BB'],
128
+ q: ['numArray', 'QQ'],
129
+ Q: ['number', 'QS'],
130
+ H: ['number', 'HC'],
131
+ P: ['number', 'PD'],
132
+ N: ['number', 'RS'],
133
+ }[code];
134
+ if (!data1Schema) {
135
+ throw new errors_1.CramMalformedError("invalid read feature code \"".concat(code, "\""));
136
+ }
137
+ readFeature.data = decodeRFData(data1Schema);
138
+ // if this is a tag with two data items, make the data an array and add the second item
139
+ var data2Schema = { B: ['number', 'QS'] }[code];
140
+ if (data2Schema) {
141
+ readFeature.data = [readFeature.data, decodeRFData(data2Schema)];
142
+ }
143
+ currentReadPos += readPosDelta;
144
+ readFeature.pos = currentReadPos;
145
+ currentRefPos += readPosDelta;
146
+ readFeature.refPos = currentRefPos;
147
+ // for gapping features, adjust the reference position for read features that follow
148
+ if (code === 'D' || code === 'N') {
149
+ currentRefPos += readFeature.data;
150
+ }
151
+ else if (code === 'I' || code === 'S') {
152
+ currentRefPos -= readFeature.data.length;
153
+ }
154
+ else if (code === 'i') {
155
+ currentRefPos -= 1;
156
+ }
157
+ readFeatures[i] = readFeature;
127
158
  }
128
-
129
- if (type === 'numArray') {
130
- return data.toArray();
131
- } // else if (type === 'number') {
132
- // return data[0]
133
- // }
134
-
135
-
136
- return data;
137
- }
138
-
139
- for (var i = 0; i < readFeatureCount; i += 1) {
140
- var code = String.fromCharCode(decodeDataSeries('FC'));
141
- var readPosDelta = decodeDataSeries('FP');
142
- var readFeature = {
143
- code: code
144
- }; // map of operator name -> data series name
145
-
146
- var data1Schema = {
147
- B: ['character', 'BA'],
148
- S: ['string', majorVersion > 1 ? 'SC' : 'IN'],
149
- // IN if cram v1, SC otherwise
150
- X: ['number', 'BS'],
151
- D: ['number', 'DL'],
152
- I: ['string', 'IN'],
153
- i: ['character', 'BA'],
154
- b: ['string', 'BB'],
155
- q: ['numArray', 'QQ'],
156
- Q: ['number', 'QS'],
157
- H: ['number', 'HC'],
158
- P: ['number', 'PD'],
159
- N: ['number', 'RS']
160
- }[code];
161
- if (!data1Schema) throw new CramMalformedError("invalid read feature code \"".concat(code, "\""));
162
- readFeature.data = decodeRFData(data1Schema); // if this is a tag with two data items, make the data an array and add the second item
163
-
164
- var data2Schema = {
165
- B: ['number', 'QS']
166
- }[code];
167
- if (data2Schema) readFeature.data = [readFeature.data, decodeRFData(data2Schema)];
168
- currentReadPos += readPosDelta;
169
- readFeature.pos = currentReadPos;
170
- currentRefPos += readPosDelta;
171
- readFeature.refPos = currentRefPos; // for gapping features, adjust the reference position for read features that follow
172
-
173
- if (code === 'D' || code === 'N') currentRefPos += readFeature.data;else if (code === 'I' || code === 'S') currentRefPos -= readFeature.data.length;else if (code === 'i') currentRefPos -= 1;
174
- readFeatures[i] = readFeature;
175
- }
176
-
177
- return readFeatures;
159
+ return readFeatures;
178
160
  }
179
-
180
161
  function thingToString(thing) {
181
- if (thing instanceof Buffer) {
182
- return readNullTerminatedStringFromBuffer(thing);
183
- }
184
-
185
- if (thing.length && (0, _indexOf.default)(thing)) {
186
- // array-like
187
- if (!thing[thing.length - 1]) {
188
- // trim zeroes off the end if necessary
189
- var termIndex = (0, _indexOf.default)(thing).call(thing, 0);
190
- return String.fromCharCode.apply(String, (0, _toConsumableArray2.default)((0, _slice.default)(thing).call(thing, 0, termIndex)));
162
+ if (thing instanceof Buffer) {
163
+ return readNullTerminatedStringFromBuffer(thing);
164
+ }
165
+ if (thing.length && thing.indexOf) {
166
+ // array-like
167
+ if (!thing[thing.length - 1]) {
168
+ // trim zeroes off the end if necessary
169
+ var termIndex = thing.indexOf(0);
170
+ return String.fromCharCode.apply(String, thing.slice(0, termIndex));
171
+ }
172
+ return String.fromCharCode.apply(String, thing);
191
173
  }
192
-
193
- return String.fromCharCode.apply(String, (0, _toConsumableArray2.default)(thing));
194
- }
195
-
196
- return String(thing);
174
+ return String(thing);
197
175
  }
198
-
199
176
  function decodeRecord(slice, decodeDataSeries, compressionScheme, sliceHeader, coreDataBlock, blocksByContentId, cursors, majorVersion, recordNumber) {
200
- var cramRecord = new CramRecord();
201
- cramRecord.flags = decodeDataSeries('BF'); // note: the C data type of compressionFlags is byte in cram v1
202
- // and int32 in cram v2+, but that does not matter for us here
203
- // in javascript land.
204
-
205
- cramRecord.cramFlags = decodeDataSeries('CF');
206
- if (majorVersion > 1 && sliceHeader.content.refSeqId === -2) cramRecord.sequenceId = decodeDataSeries('RI');else cramRecord.sequenceId = sliceHeader.content.refSeqId;
207
- cramRecord.readLength = decodeDataSeries('RL'); // if APDelta, will calculate the true start in a second pass
208
-
209
- cramRecord.alignmentStart = decodeDataSeries('AP');
210
- if (compressionScheme.APdelta) cramRecord.alignmentStart += cursors.lastAlignmentStart;
211
- cursors.lastAlignmentStart = cramRecord.alignmentStart;
212
- cramRecord.readGroupId = decodeDataSeries('RG');
213
- if (compressionScheme.readNamesIncluded) cramRecord.readName = thingToString(decodeDataSeries('RN')); // mate record
214
-
215
- if (cramRecord.isDetached()) {
216
- // note: the MF is a byte in 1.0, int32 in 2+, but once again this doesn't matter for javascript
217
- var mate = {};
218
- mate.flags = decodeDataSeries('MF');
219
-
220
- if (!compressionScheme.readNamesIncluded) {
221
- mate.readName = thingToString(decodeDataSeries('RN'));
222
- cramRecord.readName = mate.readName;
177
+ var cramRecord = new record_1.default();
178
+ cramRecord.flags = decodeDataSeries('BF');
179
+ // note: the C data type of compressionFlags is byte in cram v1
180
+ // and int32 in cram v2+, but that does not matter for us here
181
+ // in javascript land.
182
+ cramRecord.cramFlags = decodeDataSeries('CF');
183
+ if (majorVersion > 1 && sliceHeader.content.refSeqId === -2) {
184
+ cramRecord.sequenceId = decodeDataSeries('RI');
185
+ }
186
+ else {
187
+ cramRecord.sequenceId = sliceHeader.content.refSeqId;
188
+ }
189
+ cramRecord.readLength = decodeDataSeries('RL');
190
+ // if APDelta, will calculate the true start in a second pass
191
+ cramRecord.alignmentStart = decodeDataSeries('AP');
192
+ if (compressionScheme.APdelta) {
193
+ cramRecord.alignmentStart += cursors.lastAlignmentStart;
194
+ }
195
+ cursors.lastAlignmentStart = cramRecord.alignmentStart;
196
+ cramRecord.readGroupId = decodeDataSeries('RG');
197
+ if (compressionScheme.readNamesIncluded) {
198
+ cramRecord.readName = thingToString(decodeDataSeries('RN'));
199
+ }
200
+ // mate record
201
+ if (cramRecord.isDetached()) {
202
+ // note: the MF is a byte in 1.0, int32 in 2+, but once again this doesn't matter for javascript
203
+ var mate = {};
204
+ mate.flags = decodeDataSeries('MF');
205
+ if (!compressionScheme.readNamesIncluded) {
206
+ mate.readName = thingToString(decodeDataSeries('RN'));
207
+ cramRecord.readName = mate.readName;
208
+ }
209
+ mate.sequenceId = decodeDataSeries('NS');
210
+ mate.alignmentStart = decodeDataSeries('NP');
211
+ if (mate.flags || mate.sequenceId > -1) {
212
+ cramRecord.mate = mate;
213
+ }
214
+ cramRecord.templateSize = decodeDataSeries('TS');
215
+ // set mate unmapped if needed
216
+ if (mate.flags & constants_1.default.CRAM_M_UNMAP) {
217
+ cramRecord.flags |= constants_1.default.BAM_FMUNMAP;
218
+ }
219
+ // set mate reversed if needed
220
+ if (mate.flags & constants_1.default.CRAM_M_REVERSE) {
221
+ cramRecord.flags |= constants_1.default.BAM_FMREVERSE;
222
+ }
223
+ // detachedCount++
224
+ }
225
+ else if (cramRecord.hasMateDownStream()) {
226
+ cramRecord.mateRecordNumber = decodeDataSeries('NF') + recordNumber + 1;
227
+ }
228
+ // TODO: the aux tag parsing will have to be refactored if we want to support
229
+ // cram v1
230
+ var TLindex = decodeDataSeries('TL');
231
+ if (TLindex < 0) {
232
+ /* TODO: check nTL: TLindex >= compressionHeader.tagEncoding.size */
233
+ throw new errors_1.CramMalformedError('invalid TL index');
223
234
  }
224
-
225
- mate.sequenceId = decodeDataSeries('NS');
226
- mate.alignmentStart = decodeDataSeries('NP');
227
- if ((0, _flags.default)(mate) || mate.sequenceId > -1) cramRecord.mate = mate;
228
- cramRecord.templateSize = decodeDataSeries('TS'); // set mate unmapped if needed
229
-
230
- if ((0, _flags.default)(mate) & Constants.CRAM_M_UNMAP) {
231
- cramRecord.flags |= Constants.BAM_FMUNMAP;
232
- } // set mate reversed if needed
233
-
234
-
235
- if ((0, _flags.default)(mate) & Constants.CRAM_M_REVERSE) {
236
- cramRecord.flags |= Constants.BAM_FMREVERSE;
237
- } // detachedCount++
238
-
239
- } else if (cramRecord.hasMateDownStream()) {
240
- cramRecord.mateRecordNumber = decodeDataSeries('NF') + recordNumber + 1;
241
- } // TODO: the aux tag parsing will have to be refactored if we want to support
242
- // cram v1
243
-
244
-
245
- var TLindex = decodeDataSeries('TL');
246
- if (TLindex < 0)
247
- /* TODO: check nTL: TLindex >= compressionHeader.tagEncoding.size */
248
- throw new CramMalformedError('invalid TL index'); // TN = tag names
249
-
250
- var TN = compressionScheme.getTagNames(TLindex);
251
- var ntags = TN.length;
252
-
253
- for (var i = 0; i < ntags; i += 1) {
254
- var tagId = TN[i];
255
- var tagName = tagId.substr(0, 2);
256
- var tagType = tagId.substr(2, 1);
257
- var tagCodec = compressionScheme.getCodecForTag(tagId);
258
- if (!tagCodec) throw new CramMalformedError("no codec defined for auxiliary tag ".concat(tagId));
259
- var tagData = tagCodec.decode(slice, coreDataBlock, blocksByContentId, cursors);
260
- cramRecord.tags[tagName] = parseTagData(tagType, tagData);
261
- }
262
-
263
- if (!cramRecord.isSegmentUnmapped()) {
264
- var _context;
265
-
266
- // reading read features
267
- var
268
- /* int */
269
- readFeatureCount = decodeDataSeries('FN');
270
-
271
- if (readFeatureCount) {
272
- cramRecord.readFeatures = decodeReadFeatures(cramRecord, readFeatureCount, decodeDataSeries, compressionScheme, majorVersion);
273
- } // compute the read's true span on the reference sequence, and the end coordinate of the alignment on the reference
274
-
275
-
276
- var lengthOnRef = cramRecord.readLength;
277
- if (cramRecord.readFeatures) (0, _forEach.default)(_context = cramRecord.readFeatures).call(_context, function (_ref3) {
278
- var code = _ref3.code,
279
- data = _ref3.data;
280
- if (code === 'D' || code === 'N') lengthOnRef += data;else if (code === 'I' || code === 'S') lengthOnRef -= data.length;else if (code === 'i') lengthOnRef -= 1;
281
- });
282
-
283
- if ((0, _isNan.default)(lengthOnRef)) {
284
- var _context2;
285
-
286
- console.warn("".concat(cramRecord.readName || (0, _concat.default)(_context2 = "".concat(cramRecord.sequenceId, ":")).call(_context2, cramRecord.alignmentStart), " record has invalid read features"));
287
- lengthOnRef = cramRecord.readLength;
235
+ // TN = tag names
236
+ var TN = compressionScheme.getTagNames(TLindex);
237
+ var ntags = TN.length;
238
+ for (var i = 0; i < ntags; i += 1) {
239
+ var tagId = TN[i];
240
+ var tagName = tagId.substr(0, 2);
241
+ var tagType = tagId.substr(2, 1);
242
+ var tagCodec = compressionScheme.getCodecForTag(tagId);
243
+ if (!tagCodec) {
244
+ throw new errors_1.CramMalformedError("no codec defined for auxiliary tag ".concat(tagId));
245
+ }
246
+ var tagData = tagCodec.decode(slice, coreDataBlock, blocksByContentId, cursors);
247
+ cramRecord.tags[tagName] = parseTagData(tagType, tagData);
288
248
  }
289
-
290
- cramRecord.lengthOnRef = lengthOnRef; // mapping quality
291
-
292
- cramRecord.mappingQuality = decodeDataSeries('MQ');
293
-
294
- if (cramRecord.isPreservingQualityScores()) {
295
- var bases = new Array(cramRecord.readLength);
296
-
297
- for (var _i = 0; _i < bases.length; _i += 1) {
298
- bases[_i] = decodeDataSeries('QS');
299
- }
300
-
301
- cramRecord.qualityScores = bases;
249
+ if (!cramRecord.isSegmentUnmapped()) {
250
+ // reading read features
251
+ var /* int */ readFeatureCount = decodeDataSeries('FN');
252
+ if (readFeatureCount) {
253
+ cramRecord.readFeatures = decodeReadFeatures(cramRecord, readFeatureCount, decodeDataSeries, compressionScheme, majorVersion);
254
+ }
255
+ // compute the read's true span on the reference sequence, and the end coordinate of the alignment on the reference
256
+ var lengthOnRef_1 = cramRecord.readLength;
257
+ if (cramRecord.readFeatures) {
258
+ cramRecord.readFeatures.forEach(function (_a) {
259
+ var code = _a.code, data = _a.data;
260
+ if (code === 'D' || code === 'N') {
261
+ lengthOnRef_1 += data;
262
+ }
263
+ else if (code === 'I' || code === 'S') {
264
+ lengthOnRef_1 -= data.length;
265
+ }
266
+ else if (code === 'i') {
267
+ lengthOnRef_1 -= 1;
268
+ }
269
+ });
270
+ }
271
+ if (Number.isNaN(lengthOnRef_1)) {
272
+ console.warn("".concat(cramRecord.readName ||
273
+ "".concat(cramRecord.sequenceId, ":").concat(cramRecord.alignmentStart), " record has invalid read features"));
274
+ lengthOnRef_1 = cramRecord.readLength;
275
+ }
276
+ cramRecord.lengthOnRef = lengthOnRef_1;
277
+ // mapping quality
278
+ cramRecord.mappingQuality = decodeDataSeries('MQ');
279
+ if (cramRecord.isPreservingQualityScores()) {
280
+ var bases = new Array(cramRecord.readLength);
281
+ for (var i = 0; i < bases.length; i += 1) {
282
+ bases[i] = decodeDataSeries('QS');
283
+ }
284
+ cramRecord.qualityScores = bases;
285
+ }
302
286
  }
303
- } else if (cramRecord.isUnknownBases()) {
304
- cramRecord.readBases = null;
305
- cramRecord.qualityScores = null;
306
- } else {
307
- var _bases = new Array(cramRecord.readLength);
308
-
309
- for (var _i2 = 0; _i2 < _bases.length; _i2 += 1) {
310
- _bases[_i2] = decodeDataSeries('BA');
287
+ else if (cramRecord.isUnknownBases()) {
288
+ cramRecord.readBases = null;
289
+ cramRecord.qualityScores = null;
311
290
  }
312
-
313
- cramRecord.readBases = String.fromCharCode.apply(String, _bases);
314
-
315
- if (cramRecord.isPreservingQualityScores()) {
316
- for (var _i3 = 0; _i3 < _bases.length; _i3 += 1) {
317
- _bases[_i3] = decodeDataSeries('QS');
318
- }
319
-
320
- cramRecord.qualityScores = _bases;
291
+ else {
292
+ var bases = new Array(cramRecord.readLength);
293
+ for (var i = 0; i < bases.length; i += 1) {
294
+ bases[i] = decodeDataSeries('BA');
295
+ }
296
+ cramRecord.readBases = String.fromCharCode.apply(String, bases);
297
+ if (cramRecord.isPreservingQualityScores()) {
298
+ for (var i = 0; i < bases.length; i += 1) {
299
+ bases[i] = decodeDataSeries('QS');
300
+ }
301
+ cramRecord.qualityScores = bases;
302
+ }
321
303
  }
322
- }
323
-
324
- return cramRecord;
304
+ return cramRecord;
325
305
  }
326
-
327
- module.exports = decodeRecord;
306
+ exports.default = decodeRecord;
307
+ //# sourceMappingURL=decodeRecord.js.map