@gmod/cram 4.0.3 → 4.0.4

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 (91) hide show
  1. package/dist/cram-bundle.js +1 -1
  2. package/dist/cramFile/file.js +43 -9
  3. package/dist/cramFile/file.js.map +1 -1
  4. package/dist/cramFile/slice/decodeRecord.js +3 -3
  5. package/dist/cramFile/slice/decodeRecord.js.map +1 -1
  6. package/dist/cramFile/util.d.ts +0 -2
  7. package/dist/cramFile/util.js +3 -31
  8. package/dist/cramFile/util.js.map +1 -1
  9. package/dist/htscodecs/arith_gen.d.ts +5 -7
  10. package/dist/htscodecs/arith_gen.js +122 -105
  11. package/dist/htscodecs/arith_gen.js.map +1 -1
  12. package/dist/htscodecs/arith_sh.d.ts +1 -8
  13. package/dist/htscodecs/arith_sh.js +16 -10
  14. package/dist/htscodecs/arith_sh.js.map +1 -1
  15. package/dist/htscodecs/byte_model.d.ts +1 -6
  16. package/dist/htscodecs/byte_model.js +25 -17
  17. package/dist/htscodecs/byte_model.js.map +1 -1
  18. package/dist/htscodecs/fqzcomp.d.ts +1 -1
  19. package/dist/htscodecs/fqzcomp.js +98 -77
  20. package/dist/htscodecs/fqzcomp.js.map +1 -1
  21. package/dist/htscodecs/index.d.ts +5 -5
  22. package/dist/htscodecs/index.js +53 -16
  23. package/dist/htscodecs/index.js.map +1 -1
  24. package/dist/htscodecs/iostream.d.ts +9 -20
  25. package/dist/htscodecs/iostream.js +21 -116
  26. package/dist/htscodecs/iostream.js.map +1 -1
  27. package/dist/htscodecs/rans.d.ts +1 -1
  28. package/dist/htscodecs/rans.js +65 -54
  29. package/dist/htscodecs/rans.js.map +1 -1
  30. package/dist/htscodecs/rans4x16.d.ts +1 -1
  31. package/dist/htscodecs/rans4x16.js +151 -111
  32. package/dist/htscodecs/rans4x16.js.map +1 -1
  33. package/dist/htscodecs/tok3.d.ts +1 -2
  34. package/dist/htscodecs/tok3.js +82 -239
  35. package/dist/htscodecs/tok3.js.map +1 -1
  36. package/dist/util.d.ts +1 -0
  37. package/dist/util.js +20 -0
  38. package/dist/util.js.map +1 -0
  39. package/esm/cramFile/file.js +3 -2
  40. package/esm/cramFile/file.js.map +1 -1
  41. package/esm/cramFile/slice/decodeRecord.js +3 -3
  42. package/esm/cramFile/slice/decodeRecord.js.map +1 -1
  43. package/esm/cramFile/util.d.ts +0 -2
  44. package/esm/cramFile/util.js +3 -29
  45. package/esm/cramFile/util.js.map +1 -1
  46. package/esm/htscodecs/arith_gen.d.ts +5 -7
  47. package/esm/htscodecs/arith_gen.js +108 -97
  48. package/esm/htscodecs/arith_gen.js.map +1 -1
  49. package/esm/htscodecs/arith_sh.d.ts +1 -8
  50. package/esm/htscodecs/arith_sh.js +14 -11
  51. package/esm/htscodecs/arith_sh.js.map +1 -1
  52. package/esm/htscodecs/byte_model.d.ts +1 -6
  53. package/esm/htscodecs/byte_model.js +23 -18
  54. package/esm/htscodecs/byte_model.js.map +1 -1
  55. package/esm/htscodecs/fqzcomp.d.ts +1 -1
  56. package/esm/htscodecs/fqzcomp.js +91 -76
  57. package/esm/htscodecs/fqzcomp.js.map +1 -1
  58. package/esm/htscodecs/index.d.ts +5 -5
  59. package/esm/htscodecs/index.js +14 -20
  60. package/esm/htscodecs/index.js.map +1 -1
  61. package/esm/htscodecs/iostream.d.ts +9 -20
  62. package/esm/htscodecs/iostream.js +19 -117
  63. package/esm/htscodecs/iostream.js.map +1 -1
  64. package/esm/htscodecs/rans.d.ts +1 -1
  65. package/esm/htscodecs/rans.js +61 -56
  66. package/esm/htscodecs/rans.js.map +1 -1
  67. package/esm/htscodecs/rans4x16.d.ts +1 -1
  68. package/esm/htscodecs/rans4x16.js +143 -109
  69. package/esm/htscodecs/rans4x16.js.map +1 -1
  70. package/esm/htscodecs/tok3.d.ts +1 -2
  71. package/esm/htscodecs/tok3.js +41 -237
  72. package/esm/htscodecs/tok3.js.map +1 -1
  73. package/esm/util.d.ts +1 -0
  74. package/esm/util.js +17 -0
  75. package/esm/util.js.map +1 -0
  76. package/package.json +2 -3
  77. package/src/cramFile/file.ts +3 -2
  78. package/src/cramFile/slice/decodeRecord.ts +3 -5
  79. package/src/cramFile/util.ts +6 -39
  80. package/src/htscodecs/{arith_gen.js → arith_gen.ts} +133 -95
  81. package/src/htscodecs/{arith_sh.js → arith_sh.ts} +17 -9
  82. package/src/htscodecs/{byte_model.js → byte_model.ts} +26 -16
  83. package/src/htscodecs/{fqzcomp.js → fqzcomp.ts} +108 -74
  84. package/src/htscodecs/{index.js → index.ts} +14 -20
  85. package/src/htscodecs/iostream.ts +159 -0
  86. package/src/htscodecs/{rans.js → rans.ts} +73 -56
  87. package/src/htscodecs/{rans4x16.js → rans4x16.ts} +180 -111
  88. package/src/htscodecs/tok3.ts +197 -0
  89. package/src/util.ts +16 -0
  90. package/src/htscodecs/iostream.js +0 -257
  91. package/src/htscodecs/tok3.js +0 -413
@@ -1,4 +1,5 @@
1
- "use strict";
1
+ /* eslint-disable no-var */
2
+ // @ts-nocheck
2
3
  /*
3
4
  * Copyright (c) 2019 Genome Research Ltd.
4
5
  * Author(s): James Bonfield
@@ -36,26 +37,11 @@
36
37
  // This is a reference implementation designed to match the
37
38
  // written specification as closely as possible. It is *NOT*
38
39
  // an efficient implementation, but see comments below.
39
- const IOStream = require('./iostream');
40
- const rans = require('./rans4x16');
41
- const arith_gen = require('./arith_gen');
42
- function sum(array) {
43
- let sum = 0;
44
- for (const entry of array) {
45
- sum += entry.length;
46
- }
47
- return sum;
48
- }
49
- function concatUint8Array(args) {
50
- const mergedArray = new Uint8Array(sum(args));
51
- let offset = 0;
52
- for (const entry of args) {
53
- mergedArray.set(entry, offset);
54
- offset += entry.length;
55
- }
56
- return mergedArray;
57
- }
58
- var arith = new arith_gen();
40
+ import { concatUint8Array } from '../util';
41
+ import arith_gen from './arith_gen';
42
+ import IOStream from './iostream';
43
+ import * as rans from './rans4x16';
44
+ const arith = new arith_gen();
59
45
  const TOK_TYPE = 0;
60
46
  const TOK_STRING = 1;
61
47
  const TOK_CHAR = 2;
@@ -69,59 +55,57 @@ const TOK_DELTA0 = 9;
69
55
  const TOK_MATCH = 10;
70
56
  const TOK_NOP = 11;
71
57
  const TOK_END = 12;
72
- //----------------------------------------------------------------------
58
+ // ----------------------------------------------------------------------
73
59
  // Token byte streams
74
60
  function DecodeTokenByteStreams(src, in_size, use_arith, nnames) {
75
- var t = -1;
76
- var B = new Array(256);
61
+ let t = -1;
62
+ const B = new Array(256);
77
63
  while (!src.EOF()) {
78
- var ttype = src.ReadByte();
79
- var tok_new = ttype & 128;
80
- var tok_dup = ttype & 64;
81
- var type = ttype & 63;
64
+ const ttype = src.ReadByte();
65
+ const tok_new = ttype & 128;
66
+ const tok_dup = ttype & 64;
67
+ const type = ttype & 63;
82
68
  if (tok_new) {
83
69
  t++;
84
70
  B[t] = new Array(13);
85
71
  }
86
72
  if (type != TOK_TYPE && tok_new) {
87
- var M = new Array(nnames - 1).fill(TOK_MATCH);
73
+ const M = new Array(nnames - 1).fill(TOK_MATCH);
88
74
  B[t][TOK_TYPE] = new IOStream(concatUint8Array([new Uint8Array(type), M]));
89
75
  }
90
76
  if (tok_dup) {
91
- var dup_pos = src.ReadByte();
92
- var dup_type = src.ReadByte();
77
+ const dup_pos = src.ReadByte();
78
+ const dup_type = src.ReadByte();
93
79
  B[t][type] = new IOStream(B[dup_pos][dup_type].buf);
94
80
  }
95
81
  else {
96
- var clen = src.ReadUint7();
97
- var data = src.ReadData(clen);
98
- if (use_arith)
99
- B[t][type] = arith.decode(data);
100
- else
101
- B[t][type] = rans.decode(data);
82
+ const clen = src.ReadUint7();
83
+ const data = src.ReadData(clen);
84
+ B[t][type] = use_arith ? arith.decode(data) : rans.decode(data);
102
85
  B[t][type] = new IOStream(B[t][type]);
103
86
  }
104
87
  }
105
88
  return B;
106
89
  }
107
- //----------------------------------------------------------------------
90
+ // ----------------------------------------------------------------------
108
91
  // Token decode
109
92
  function LeftPadNumber(val, len) {
110
- var str = val + '';
111
- while (str.length < len)
93
+ let str = val + '';
94
+ while (str.length < len) {
112
95
  str = '0' + str;
96
+ }
113
97
  return str;
114
98
  }
115
99
  function DecodeSingleName(B, N, T, n) {
116
- var type = B[0][TOK_TYPE].ReadByte();
117
- var dist = B[0][type].ReadUint32();
118
- var m = n - dist;
100
+ let type = B[0][TOK_TYPE].ReadByte();
101
+ const dist = B[0][type].ReadUint32();
102
+ const m = n - dist;
119
103
  if (type == TOK_DUP) {
120
104
  N[n] = N[m];
121
105
  T[n] = T[m];
122
106
  return N[n];
123
107
  }
124
- var t = 1;
108
+ let t = 1;
125
109
  N[n] = '';
126
110
  T[n] = new Array(256);
127
111
  do {
@@ -160,204 +144,24 @@ function DecodeSingleName(B, N, T, n) {
160
144
  } while (type != TOK_END);
161
145
  return N[n];
162
146
  }
163
- //----------------------------------------------------------------------
147
+ // ----------------------------------------------------------------------
164
148
  // Main tokeniser decode entry function: decodes a compressed src and
165
149
  // returns the uncompressed buffer.
166
- function decode(src, len, separator) {
150
+ export function decode(src, len, separator) {
167
151
  var src = new IOStream(src);
168
- var ulen = src.ReadUint32();
169
- var nnames = src.ReadUint32();
170
- var use_arith = src.ReadByte();
171
- var B = DecodeTokenByteStreams(src, len, use_arith, nnames);
172
- var N = new Array(nnames);
173
- var T = new Array(nnames);
174
- var str = '';
175
- if (typeof separator === 'undefined')
152
+ const ulen = src.ReadUint32();
153
+ const nnames = src.ReadUint32();
154
+ const use_arith = src.ReadByte();
155
+ const B = DecodeTokenByteStreams(src, len, use_arith, nnames);
156
+ const N = new Array(nnames);
157
+ const T = new Array(nnames);
158
+ let str = '';
159
+ if (separator === undefined) {
176
160
  separator = '\n';
177
- for (var i = 0; i < nnames; i++)
178
- str += DecodeSingleName(B, N, T, i) + separator;
179
- return str;
180
- }
181
- //----------------------------------------------------------------------
182
- // Main tokeniser encode function
183
- // Encoder is trickier than decode as we have a lot of decisions to make.
184
- // However here we just make a simple guess without anything complex,
185
- // to demonstrate the basic idea. See the C implementation for further
186
- // expansion on this.
187
- function encode(src, use_arith) {
188
- // Convert buffer to array of names
189
- var str = src.toString();
190
- if (str[str.length - 1] == '\n')
191
- str = str.substring(0, str.length - 1);
192
- var names = str.split('\n');
193
- var out = new IOStream('', 0, str.length * 2 + 10000); // guess max size
194
- out.WriteUint32(str.length);
195
- out.WriteUint32(names.length);
196
- out.WriteByte(use_arith);
197
- // Tokenise names
198
- var T = new Array(names.length);
199
- var H = {};
200
- var F = new Array(256).fill(0); // DELTA vs DIGIT frequency
201
- var max_tok = 0;
202
- var max_len = 0;
203
- for (var i = 0; i < names.length; i++) {
204
- var [ntok, len] = TokeniseName(T, H, F, names[i], i);
205
- if (max_tok < ntok)
206
- max_tok = ntok;
207
- if (max_len < len)
208
- max_len = len;
209
- }
210
- // Convert tokens to byte streams and serialise
211
- for (var tnum = 0; tnum < max_tok; tnum++) {
212
- var B = new Array(TOK_END + 1);
213
- for (var type = 0; type <= TOK_END; type++)
214
- B[type] = new IOStream('', 0, names.length * max_len);
215
- FillByteStreams(B, T, tnum, names, max_tok, max_len);
216
- SerialiseByteStreams(B, tnum, use_arith, out);
217
- }
218
- return out.buf.slice(0, out.pos);
219
- }
220
- function FillByteStreams(B, T, tnum, names, max_tok, max_len) {
221
- // Create byte streams B[]
222
- for (var n = 0; n < names.length; n++) {
223
- if (tnum > 0 && T[n][0].type == TOK_DUP)
224
- continue;
225
- if (!T[n][tnum])
226
- continue;
227
- B[TOK_TYPE].WriteByte(T[n][tnum].type);
228
- switch (T[n][tnum].type) {
229
- case TOK_DIFF:
230
- B[TOK_DIFF].WriteUint32(T[n][tnum].val);
231
- break;
232
- case TOK_DUP:
233
- B[TOK_DUP].WriteUint32(T[n][tnum].val);
234
- break;
235
- case TOK_STRING:
236
- B[TOK_STRING].WriteString(T[n][tnum].val);
237
- break;
238
- case TOK_CHAR:
239
- B[TOK_CHAR].WriteChar(T[n][tnum].val);
240
- break;
241
- case TOK_DIGITS:
242
- B[TOK_DIGITS].WriteUint32(T[n][tnum].val);
243
- break;
244
- case TOK_DIGITS0:
245
- B[TOK_DIGITS0].WriteUint32(T[n][tnum].val);
246
- B[TOK_DZLEN].WriteByte(T[n][tnum].val.length);
247
- break;
248
- case TOK_DELTA:
249
- B[T[n][tnum].type].WriteByte(T[n][tnum].val);
250
- break;
251
- case TOK_DELTA0:
252
- B[T[n][tnum].type].WriteByte(T[n][tnum].val);
253
- break;
254
- }
255
- }
256
- }
257
- function SerialiseByteStreams(B, tnum, use_arith, out) {
258
- // Compress and serialise byte streams B[]
259
- for (var type = 0; type <= TOK_END; type++) {
260
- if (B[type].pos <= 0)
261
- continue;
262
- out.WriteByte(type + (type == 0 ? 128 : 0));
263
- // IOStream to sized buffer
264
- B[type] = B[type].buf.slice(0, B[type].pos);
265
- var comp = try_compress(B[type], use_arith);
266
- out.WriteUint7(comp.length);
267
- out.WriteData(comp, comp.length);
268
- }
269
- }
270
- function try_compress(src, use_arith) {
271
- var best = 1 << 30;
272
- var comp;
273
- var methods = [0, 1, 64, 65, 128, 129, 193 + 8];
274
- for (var i in methods) {
275
- var lvl = methods[i];
276
- if (lvl & 1 && src.length < 100)
277
- continue;
278
- if (lvl & 8 && src.length % 4 != 0)
279
- continue;
280
- try {
281
- var tmp = use_arith ? arith.encode(src, lvl) : rans.encode(src, lvl);
282
- }
283
- catch (e) {
284
- var tmp = 0;
285
- }
286
- if (tmp && best > tmp.length) {
287
- best = tmp.length;
288
- comp = tmp;
289
- }
290
- }
291
- return comp;
292
- }
293
- function TokeniseName(T, H, F, name, n) {
294
- var max_len = 0;
295
- // Always compare against last name only
296
- var p = n - 1;
297
- T[n] = new Array(256);
298
- if (H[name]) {
299
- //console.error(name,H[name],n)
300
- T[n][0] = {
301
- type: TOK_DUP,
302
- val: n - H[name],
303
- };
304
- }
305
- else {
306
- T[n][0] = {
307
- type: TOK_DIFF,
308
- val: n == 0 ? 0 : 1,
309
- };
310
161
  }
311
- H[name] = n;
312
- // Splits on alphanumerics, punctuation
313
- var tok = name.match(/([a-zA-Z0-9]{1,9})|([^a-zA-Z0-9]+)/g);
314
- for (var i = 0; i < tok.length; i++) {
315
- var t = i + 1; // token 0 = DIFF vs DUP
316
- var type = TOK_STRING;
317
- var val = tok[i];
318
- if (tok[i].match(/^0+[0-9]*$/g))
319
- type = TOK_DIGITS0;
320
- else if (tok[i].match(/^[0-9]+$/g))
321
- type = TOK_DIGITS;
322
- else if (tok[i].length == 1)
323
- type = TOK_CHAR;
324
- if (p >= 0 && T[p][t]) {
325
- if (T[p][t].str == tok[i]) {
326
- type = TOK_MATCH;
327
- val = '';
328
- }
329
- else if (T[p][t].type == TOK_DIGITS || T[p][t].type == TOK_DELTA) {
330
- var d = val - T[p][t].str;
331
- F[t]++;
332
- if (d >= 0 && d < 256 && F[t] > n / 2) {
333
- type = TOK_DELTA;
334
- val = d;
335
- }
336
- }
337
- else if ((T[p][t].type == TOK_DIGITS0 || T[p][t].type == TOK_DELTA0) &&
338
- T[p][t].str.length == val.length) {
339
- var d = val - T[p][t].str;
340
- F[t]++;
341
- if (d >= 0 && d < 256 && F[t] > n / 2) {
342
- type = TOK_DELTA0;
343
- val = d;
344
- }
345
- }
346
- }
347
- T[n][t] = {
348
- str: tok[i],
349
- val: val,
350
- type: type,
351
- };
352
- if (max_len < T[n][t].val.length + 3)
353
- // +3 for integers; 5 -> (Uint32)5
354
- max_len = T[n][t].val.length + 3;
355
- //console.error(t,T[n][t])
162
+ for (let i = 0; i < nnames; i++) {
163
+ str += DecodeSingleName(B, N, T, i) + separator;
356
164
  }
357
- T[n][++t] = {
358
- type: TOK_END,
359
- };
360
- return [t + 1, max_len];
165
+ return str;
361
166
  }
362
- module.exports = { encode, decode };
363
167
  //# sourceMappingURL=tok3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tok3.js","sourceRoot":"","sources":["../../src/htscodecs/tok3.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tok3.js","sourceRoot":"","sources":["../../src/htscodecs/tok3.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,cAAc;AAEd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,iBAAiB;AACjB,EAAE;AACF,2DAA2D;AAC3D,6DAA6D;AAC7D,uDAAuD;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,SAAS,MAAM,aAAa,CAAA;AACnC,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AAElC,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAA;AAE7B,MAAM,QAAQ,GAAG,CAAC,CAAA;AAClB,MAAM,UAAU,GAAG,CAAC,CAAA;AACpB,MAAM,QAAQ,GAAG,CAAC,CAAA;AAClB,MAAM,WAAW,GAAG,CAAC,CAAA;AACrB,MAAM,SAAS,GAAG,CAAC,CAAA;AACnB,MAAM,OAAO,GAAG,CAAC,CAAA;AACjB,MAAM,QAAQ,GAAG,CAAC,CAAA;AAClB,MAAM,UAAU,GAAG,CAAC,CAAA;AACpB,MAAM,SAAS,GAAG,CAAC,CAAA;AACnB,MAAM,UAAU,GAAG,CAAC,CAAA;AACpB,MAAM,SAAS,GAAG,EAAE,CAAA;AACpB,MAAM,OAAO,GAAG,EAAE,CAAA;AAClB,MAAM,OAAO,GAAG,EAAE,CAAA;AAElB,yEAAyE;AACzE,qBAAqB;AACrB,SAAS,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM;IAC7D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAEV,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;IAExB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;QAC5B,MAAM,OAAO,GAAG,KAAK,GAAG,GAAG,CAAA;QAC3B,MAAM,OAAO,GAAG,KAAK,GAAG,EAAE,CAAA;QAC1B,MAAM,IAAI,GAAG,KAAK,GAAG,EAAE,CAAA;QAEvB,IAAI,OAAO,EAAE,CAAC;YACZ,CAAC,EAAE,CAAA;YACH,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAA;QACtB,CAAC;QAED,IAAI,IAAI,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC/C,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5E,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;YAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;YAC/B,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAA;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,EAAE,CAAA;YAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAE/B,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC/D,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAA;AACV,CAAC;AAED,yEAAyE;AACzE,eAAe;AACf,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG;IAC7B,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,CAAA;IAClB,OAAO,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACxB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;IACjB,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAClC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;IACpC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAA;IACpC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IAElB,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACX,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACX,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACb,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;IACT,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;IACrB,GAAG,CAAC;QACF,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;QAEhC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;gBACnC,MAAK;YAEP,KAAK,UAAU;gBACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAA;gBACvC,MAAK;YAEP,KAAK,UAAU;gBACb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAA;gBACvC,MAAK;YAEP,KAAK,WAAW;gBACd,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAA;gBACtC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAA;gBAClC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC7B,MAAK;YAEP,KAAK,SAAS;gBACZ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAA;gBACrD,MAAK;YAEP,KAAK,UAAU;gBACb,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAA;gBACpD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;gBACtB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC7B,MAAK;YAEP,KAAK,SAAS;gBACZ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACjB,MAAK;YAEP;gBACE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;gBACZ,MAAK;QACT,CAAC;QAED,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACnB,CAAC,QAAQ,IAAI,IAAI,OAAO,EAAC;IAEzB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AACb,CAAC;AAED,yEAAyE;AACzE,qEAAqE;AACrE,mCAAmC;AACnC,MAAM,UAAU,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS;IACxC,IAAI,GAAG,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;IAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;IAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;IAEhC,MAAM,CAAC,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAC7D,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA;IAC3B,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA;IAE3B,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,SAAS,GAAG,IAAI,CAAA;IAClB,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,GAAG,IAAI,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAA;IACjD,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
package/esm/util.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare function concatUint8Array(args: Uint8Array[]): Uint8Array<ArrayBuffer>;
package/esm/util.js ADDED
@@ -0,0 +1,17 @@
1
+ function sum(array) {
2
+ let sum = 0;
3
+ for (const entry of array) {
4
+ sum += entry.length;
5
+ }
6
+ return sum;
7
+ }
8
+ export function concatUint8Array(args) {
9
+ const mergedArray = new Uint8Array(sum(args));
10
+ let offset = 0;
11
+ for (const entry of args) {
12
+ mergedArray.set(entry, offset);
13
+ offset += entry.length;
14
+ }
15
+ return mergedArray;
16
+ }
17
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,SAAS,GAAG,CAAC,KAAmB;IAC9B,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,GAAG,IAAI,KAAK,CAAC,MAAM,CAAA;IACrB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,IAAkB;IACjD,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7C,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC9B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;IACxB,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gmod/cram",
3
- "version": "4.0.3",
3
+ "version": "4.0.4",
4
4
  "description": "read CRAM files with pure Javascript",
5
5
  "license": "MIT",
6
6
  "repository": "GMOD/cram-js",
@@ -45,7 +45,7 @@
45
45
  "bzip2": "^0.1.1",
46
46
  "crc": "^4.3.2",
47
47
  "generic-filehandle2": "^1.0.0",
48
- "long": "^4.0.0",
48
+ "longfn": "^1.3.1",
49
49
  "md5": "^2.2.1",
50
50
  "pako": "^1.0.4",
51
51
  "quick-lru": "^4.0.1",
@@ -53,7 +53,6 @@
53
53
  },
54
54
  "devDependencies": {
55
55
  "@gmod/indexedfasta": "^3.0.0",
56
- "@types/long": "^4.0.0",
57
56
  "@types/md5": "^2.3.2",
58
57
  "@types/pako": "^1.0.3",
59
58
  "@typescript-eslint/eslint-plugin": "^8.0.0",
@@ -4,11 +4,12 @@ import QuickLRU from 'quick-lru'
4
4
  import { XzReadableStream } from 'xz-decompress'
5
5
 
6
6
  import { CramMalformedError, CramUnimplementedError } from '../errors'
7
- import htscodecs from '../htscodecs'
7
+ import * as htscodecs from '../htscodecs'
8
8
  import { open } from '../io'
9
9
  import ransuncompress from '../rans'
10
10
  import { parseHeaderText } from '../sam'
11
11
  import { unzip } from '../unzip'
12
+ import { concatUint8Array } from '../util'
12
13
  import CramContainer from './container'
13
14
  import CramRecord from './record'
14
15
  import {
@@ -17,7 +18,7 @@ import {
17
18
  cramFileDefinition,
18
19
  getSectionParsers,
19
20
  } from './sectionParsers'
20
- import { concatUint8Array, parseItem, tinyMemoize } from './util'
21
+ import { parseItem, tinyMemoize } from './util'
21
22
 
22
23
  import type { GenericFilehandle } from 'generic-filehandle2'
23
24
 
@@ -141,16 +141,14 @@ function decodeReadFeatures(
141
141
  const data = decodeDataSeries(dataSeriesName)
142
142
  if (type === 'character') {
143
143
  return String.fromCharCode(data)
144
- }
145
- if (type === 'string') {
144
+ } else if (type === 'string') {
146
145
  let r = ''
147
146
  for (let i = 0; i < data.byteLength; i++) {
148
147
  r += String.fromCharCode(data[i])
149
148
  }
150
149
  return r
151
- }
152
- if (type === 'numArray') {
153
- return data.toArray()
150
+ } else if (type === 'numArray') {
151
+ return Array.from(data)
154
152
  }
155
153
  // else if (type === 'number') {
156
154
  // return data[0]
@@ -1,4 +1,4 @@
1
- import Long from 'long'
1
+ import { fromBytesBE, toNumber } from 'longfn'
2
2
  import md5 from 'md5'
3
3
 
4
4
  import { CramBufferOverrunError } from './codecs/getBits'
@@ -65,7 +65,7 @@ export function parseLtf8(buffer: Uint8Array, initialOffset: number) {
65
65
  const dataView = new DataView(buffer.buffer)
66
66
  let offset = initialOffset
67
67
  const countFlags = buffer[offset]!
68
- let n: number | Long
68
+ let n: number
69
69
  if (countFlags < 0x80) {
70
70
  n = countFlags
71
71
  offset += 1
@@ -116,28 +116,12 @@ export function parseLtf8(buffer: Uint8Array, initialOffset: number) {
116
116
  buffer[offset + 6]!)
117
117
  offset += 7
118
118
  } else if (countFlags < 0xff) {
119
- n = Long.fromBytesBE(
120
- buffer.slice(offset + 1, offset + 8) as unknown as number[],
121
- )
122
- if (
123
- n.greaterThan(Number.MAX_SAFE_INTEGER) ||
124
- n.lessThan(Number.MIN_SAFE_INTEGER)
125
- ) {
126
- throw new Error('integer overflow')
127
- }
128
- n = n.toNumber()
119
+ n = toNumber(fromBytesBE(buffer.slice(offset + 1, offset + 8), false))
120
+
129
121
  offset += 8
130
122
  } else {
131
- n = Long.fromBytesBE(
132
- buffer.slice(offset + 1, offset + 9) as unknown as number[],
133
- )
134
- if (
135
- n.greaterThan(Number.MAX_SAFE_INTEGER) ||
136
- n.lessThan(Number.MIN_SAFE_INTEGER)
137
- ) {
138
- throw new Error('integer overflow')
139
- }
140
- n = n.toNumber()
123
+ n = toNumber(fromBytesBE(buffer.subarray(offset + 1, offset + 9), false))
124
+
141
125
  offset += 9
142
126
  }
143
127
  return [n, offset - initialOffset] as const
@@ -179,20 +163,3 @@ export function tinyMemoize(_class: any, methodName: any) {
179
163
  export function sequenceMD5(seq: string) {
180
164
  return md5(seq.toUpperCase().replaceAll(/[^\u0021-\u007e]/g, ''))
181
165
  }
182
-
183
- export function sum(array: Uint8Array[]) {
184
- let sum = 0
185
- for (const entry of array) {
186
- sum += entry.length
187
- }
188
- return sum
189
- }
190
- export function concatUint8Array(args: Uint8Array[]) {
191
- const mergedArray = new Uint8Array(sum(args))
192
- let offset = 0
193
- for (const entry of args) {
194
- mergedArray.set(entry, offset)
195
- offset += entry.length
196
- }
197
- return mergedArray
198
- }