@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,3 +1,6 @@
1
+ /* eslint-disable no-var */
2
+ // @ts-nocheck
3
+
1
4
  /*
2
5
  * Copyright (c) 2019,2020 Genome Research Ltd.
3
6
  * Author(s): James Bonfield
@@ -31,9 +34,9 @@
31
34
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
35
  */
33
36
 
34
- const IOStream = require('./iostream')
37
+ import IOStream from './iostream'
35
38
 
36
- //----------------------------------------------------------------------
39
+ // ----------------------------------------------------------------------
37
40
  // rANS primitives itself
38
41
  //
39
42
  // RansGet* is decoder side
@@ -46,20 +49,24 @@ function RansGetSymbolFromFreq(C, f) {
46
49
  // NOTE: Inefficient.
47
50
  // In practice we would implement this via a precomputed
48
51
  // lookup table C2S[f]; see RansBuildC2S below.
49
- var s = 0
50
- while (f >= C[s + 1]) s++
52
+ let s = 0
53
+ while (f >= C[s + 1]) {
54
+ s++
55
+ }
51
56
 
52
- //console.error(f, C, s)
57
+ // console.error(f, C, s)
53
58
 
54
59
  return s
55
60
  }
56
61
 
57
62
  function RansBuildC2S(C, bits) {
58
- var max = 1 << bits
59
- var C2S = new Array(max)
60
- var s = 0
61
- for (var f = 0; f < max; f++) {
62
- while (f >= C[s + 1]) s++
63
+ const max = 1 << bits
64
+ const C2S = new Array(max)
65
+ let s = 0
66
+ for (let f = 0; f < max; f++) {
67
+ while (f >= C[s + 1]) {
68
+ s++
69
+ }
63
70
  C2S[f] = s
64
71
  }
65
72
  return C2S
@@ -70,46 +77,54 @@ function RansAdvanceStep(R, c, f, bits) {
70
77
  }
71
78
 
72
79
  function RansRenorm(src, R) {
73
- if (R < 1 << 15) R = (R << 16) + src.ReadUint16()
80
+ if (R < 1 << 15) {
81
+ R = (R << 16) + src.ReadUint16()
82
+ }
74
83
 
75
84
  return R
76
85
  }
77
86
 
78
87
  function DecodeRLEMeta(src, N) {
79
- var u_meta_len = src.ReadUint7()
80
- var rle_len = src.ReadUint7()
88
+ const u_meta_len = src.ReadUint7()
89
+ const rle_len = src.ReadUint7()
81
90
 
82
91
  // Decode RLE lengths
83
92
  if (u_meta_len & 1) {
84
93
  var rle_meta = src.ReadData((u_meta_len - 1) / 2)
85
94
  } else {
86
- var comp_meta_len = src.ReadUint7()
95
+ const comp_meta_len = src.ReadUint7()
87
96
  var rle_meta = src.ReadData(comp_meta_len)
88
97
  rle_meta = RansDecode0(new IOStream(rle_meta), u_meta_len / 2, N)
89
98
  }
90
99
 
91
100
  // Decode list of symbols for which RLE lengths are applied
92
101
  var rle_meta = new IOStream(rle_meta)
93
- var L = new Array(256)
94
- var n = rle_meta.ReadByte()
95
- if (n == 0) n = 256
96
- for (var i = 0; i < n; i++) L[rle_meta.ReadByte()] = 1
102
+ const L = new Array(256)
103
+ let n = rle_meta.ReadByte()
104
+ if (n == 0) {
105
+ n = 256
106
+ }
107
+ for (let i = 0; i < n; i++) {
108
+ L[rle_meta.ReadByte()] = 1
109
+ }
97
110
 
98
111
  return [L, rle_meta, rle_len]
99
112
  }
100
113
 
101
114
  function DecodeRLE(buf, L, rle_meta, len) {
102
- var src = new IOStream(buf)
115
+ const src = new IOStream(buf)
103
116
 
104
- var out = new Uint8Array(len)
117
+ const out = new Uint8Array(len)
105
118
 
106
119
  // Expand up buf+meta to out; i = buf index, j = out index
107
- var j = 0
108
- for (var i = 0; j < len; i++) {
109
- var sym = buf[i]
120
+ let j = 0
121
+ for (let i = 0; j < len; i++) {
122
+ const sym = buf[i]
110
123
  if (L[sym]) {
111
- var run = rle_meta.ReadUint7()
112
- for (var r = 0; r <= run; r++) out[j++] = sym
124
+ const run = rle_meta.ReadUint7()
125
+ for (let r = 0; r <= run; r++) {
126
+ out[j++] = sym
127
+ }
113
128
  } else {
114
129
  out[j++] = sym
115
130
  }
@@ -121,12 +136,14 @@ function DecodeRLE(buf, L, rle_meta, len) {
121
136
  // Pack meta data is the number and value of distinct symbols plus
122
137
  // the length of the packed byte stream.
123
138
  function DecodePackMeta(src) {
124
- var nsym = src.ReadByte()
125
- var P = new Array(nsym)
139
+ const nsym = src.ReadByte()
140
+ const P = new Array(nsym)
126
141
 
127
- for (var i = 0; i < nsym; i++) P[i] = src.ReadByte()
142
+ for (let i = 0; i < nsym; i++) {
143
+ P[i] = src.ReadByte()
144
+ }
128
145
 
129
- var len = src.ReadUint7()
146
+ const len = src.ReadUint7()
130
147
 
131
148
  return [P, nsym, len]
132
149
  }
@@ -134,18 +151,22 @@ function DecodePackMeta(src) {
134
151
  // Extract bits from src producing output of length len.
135
152
  // Nsym is number of distinct symbols used.
136
153
  function DecodePack(data, P, nsym, len) {
137
- var out = new Uint8Array(len)
138
- var j = 0
154
+ const out = new Uint8Array(len)
155
+ let j = 0
139
156
 
140
157
  // Constant value
141
158
  if (nsym <= 1) {
142
- for (var i = 0; i < len; i++) out[i] = P[0]
159
+ for (var i = 0; i < len; i++) {
160
+ out[i] = P[0]
161
+ }
143
162
  }
144
163
 
145
164
  // 1 bit per value
146
165
  else if (nsym <= 2) {
147
166
  for (i = 0; i < len; i++) {
148
- if (i % 8 == 0) var v = data[j++]
167
+ if (i % 8 == 0) {
168
+ var v = data[j++]
169
+ }
149
170
 
150
171
  out[i] = P[v & 1]
151
172
  v >>= 1
@@ -155,7 +176,9 @@ function DecodePack(data, P, nsym, len) {
155
176
  // 2 bits per value
156
177
  else if (nsym <= 4) {
157
178
  for (i = 0; i < len; i++) {
158
- if (i % 4 == 0) var v = data[j++]
179
+ if (i % 4 == 0) {
180
+ var v = data[j++]
181
+ }
159
182
 
160
183
  out[i] = P[v & 3]
161
184
  v >>= 2
@@ -165,7 +188,9 @@ function DecodePack(data, P, nsym, len) {
165
188
  // 4 bits per value
166
189
  else if (nsym <= 16) {
167
190
  for (i = 0; i < len; i++) {
168
- if (i % 2 == 0) var v = data[j++]
191
+ if (i % 2 == 0) {
192
+ var v = data[j++]
193
+ }
169
194
 
170
195
  out[i] = P[v & 15]
171
196
  v >>= 4
@@ -176,24 +201,26 @@ function DecodePack(data, P, nsym, len) {
176
201
  }
177
202
 
178
203
  function RansDecodeStripe(src, len) {
179
- var N = src.ReadByte()
204
+ const N = src.ReadByte()
180
205
 
181
206
  // Retrieve lengths
182
- var clen = new Array(N)
183
- var ulen = new Array(N)
184
- for (var j = 0; j < N; j++) clen[j] = src.ReadUint7()
207
+ const clen = new Array(N)
208
+ const ulen = new Array(N)
209
+ for (var j = 0; j < N; j++) {
210
+ clen[j] = src.ReadUint7()
211
+ }
185
212
 
186
213
  // Decode streams
187
- var T = new Array(N)
214
+ const T = new Array(N)
188
215
  for (var j = 0; j < N; j++) {
189
216
  ulen[j] = Math.floor(len / N) + (len % N > j)
190
217
  T[j] = RansDecodeStream(src, ulen[j])
191
218
  }
192
219
 
193
220
  // Transpose
194
- var out = new Uint8Array(len)
221
+ const out = new Uint8Array(len)
195
222
  for (var j = 0; j < N; j++) {
196
- for (var i = 0; i < ulen[j]; i++) {
223
+ for (let i = 0; i < ulen[j]; i++) {
197
224
  out[i * N + j] = T[j][i]
198
225
  }
199
226
  }
@@ -201,30 +228,34 @@ function RansDecodeStripe(src, len) {
201
228
  return out
202
229
  }
203
230
 
204
- //----------------------------------------------------------------------
231
+ // ----------------------------------------------------------------------
205
232
  // Main rANS entry function: decodes a compressed src and
206
233
  // returns the uncompressed buffer.
207
- function decode(src) {
208
- var stream = new IOStream(src)
234
+ export function decode(src) {
235
+ const stream = new IOStream(src)
209
236
  return RansDecodeStream(stream, 0)
210
237
  }
211
238
 
212
239
  function RansDecodeStream(stream, n_out) {
213
- var format = stream.ReadByte()
214
- var order = format & 1
215
- var x32 = format & 4
216
- var stripe = format & 8
217
- var nosz = format & 16
218
- var cat = format & 32
219
- var rle = format & 64
220
- var pack = format & 128
221
-
222
- var Nway = x32 ? 32 : 4
223
-
224
- if (!nosz) n_out = stream.ReadUint7()
240
+ const format = stream.ReadByte()
241
+ const order = format & 1
242
+ const x32 = format & 4
243
+ const stripe = format & 8
244
+ const nosz = format & 16
245
+ const cat = format & 32
246
+ const rle = format & 64
247
+ const pack = format & 128
248
+
249
+ const Nway = x32 ? 32 : 4
250
+
251
+ if (!nosz) {
252
+ n_out = stream.ReadUint7()
253
+ }
225
254
 
226
255
  // N-way interleaving
227
- if (stripe) return RansDecodeStripe(stream, n_out)
256
+ if (stripe) {
257
+ return RansDecodeStripe(stream, n_out)
258
+ }
228
259
 
229
260
  // Bit packing
230
261
  if (pack) {
@@ -239,28 +270,38 @@ function RansDecodeStream(stream, n_out) {
239
270
  }
240
271
 
241
272
  // Uncompress data (all, packed or run literals)
242
- if (cat) var buf = stream.ReadData(n_out)
243
- else if (order == 0) var buf = RansDecode0(stream, n_out, Nway)
244
- else var buf = RansDecode1(stream, n_out, Nway)
273
+ if (cat) {
274
+ var buf = stream.ReadData(n_out)
275
+ } else if (order == 0) {
276
+ var buf = RansDecode0(stream, n_out, Nway)
277
+ } else {
278
+ var buf = RansDecode1(stream, n_out, Nway)
279
+ }
245
280
 
246
281
  // Apply expansion transforms
247
- if (rle) buf = DecodeRLE(buf, L, rle_meta, rle_len)
282
+ if (rle) {
283
+ buf = DecodeRLE(buf, L, rle_meta, rle_len)
284
+ }
248
285
 
249
- if (pack) buf = DecodePack(buf, P, nsym, pack_len)
286
+ if (pack) {
287
+ buf = DecodePack(buf, P, nsym, pack_len)
288
+ }
250
289
 
251
290
  return buf
252
291
  }
253
292
 
254
- //----------------------------------------------------------------------
293
+ // ----------------------------------------------------------------------
255
294
  // Order-0 decoder
256
295
 
257
296
  function ReadAlphabet(src) {
258
- var A = new Array(256)
259
- for (var i = 0; i < 256; i++) A[i] = 0
297
+ const A = new Array(256)
298
+ for (let i = 0; i < 256; i++) {
299
+ A[i] = 0
300
+ }
260
301
 
261
- var rle = 0
262
- var sym = src.ReadByte()
263
- var last_sym = sym
302
+ let rle = 0
303
+ let sym = src.ReadByte()
304
+ let last_sym = sym
264
305
 
265
306
  do {
266
307
  A[sym] = 1
@@ -269,7 +310,9 @@ function ReadAlphabet(src) {
269
310
  sym++
270
311
  } else {
271
312
  sym = src.ReadByte()
272
- if (sym == last_sym + 1) rle = src.ReadByte()
313
+ if (sym == last_sym + 1) {
314
+ rle = src.ReadByte()
315
+ }
273
316
  }
274
317
  last_sym = sym
275
318
  } while (sym != 0)
@@ -281,42 +324,50 @@ function ReadAlphabet(src) {
281
324
  // filling out the F and C arrays.
282
325
  function ReadFrequencies0(src, F, C) {
283
326
  // Initialise; not in the specification - implicit?
284
- for (var i = 0; i < 256; i++) F[i] = 0
327
+ for (var i = 0; i < 256; i++) {
328
+ F[i] = 0
329
+ }
285
330
 
286
331
  // Fetch alphabet
287
- var A = ReadAlphabet(src)
332
+ const A = ReadAlphabet(src)
288
333
 
289
334
  // Fetch frequencies for the symbols listed in our alphabet
290
335
  for (var i = 0; i < 256; i++) {
291
- if (A[i] > 0) F[i] = src.ReadUint7()
336
+ if (A[i] > 0) {
337
+ F[i] = src.ReadUint7()
338
+ }
292
339
  }
293
340
 
294
341
  NormaliseFrequencies0_Shift(F, 12)
295
342
 
296
343
  // Compute C[] from F[]
297
344
  C[0] = 0
298
- for (var i = 0; i <= 255; i++) C[i + 1] = C[i] + F[i]
345
+ for (var i = 0; i <= 255; i++) {
346
+ C[i + 1] = C[i] + F[i]
347
+ }
299
348
  }
300
349
 
301
350
  function RansDecode0(src, nbytes, N) {
302
351
  // Decode frequencies
303
- var F = new Array(256)
304
- var C = new Array(256)
352
+ const F = new Array(256)
353
+ const C = new Array(256)
305
354
  ReadFrequencies0(src, F, C)
306
355
 
307
356
  // Fast lookup to avoid slow RansGetSymbolFromFreq
308
- var C2S = RansBuildC2S(C, 12)
357
+ const C2S = RansBuildC2S(C, 12)
309
358
 
310
359
  // Initialise rANS state
311
- var R = new Array(N)
312
- for (var i = 0; i < N; i++) R[i] = src.ReadUint32()
360
+ const R = new Array(N)
361
+ for (var i = 0; i < N; i++) {
362
+ R[i] = src.ReadUint32()
363
+ }
313
364
 
314
365
  // Main decode loop
315
- var output = new Uint8Array(nbytes)
366
+ const output = new Uint8Array(nbytes)
316
367
  for (var i = 0; i < nbytes; i++) {
317
- var ix = i & (N - 1) // equiv to i%N as N is power of 2
318
- var f = RansGetCumulativeFreq(R[ix], 12)
319
- var s = C2S[f] // Equiv to RansGetSymbolFromFreq(C, f);
368
+ const ix = i & (N - 1) // equiv to i%N as N is power of 2
369
+ const f = RansGetCumulativeFreq(R[ix], 12)
370
+ const s = C2S[f] // Equiv to RansGetSymbolFromFreq(C, f);
320
371
 
321
372
  output[i] = s
322
373
  R[ix] = RansAdvanceStep(R[ix], C[s], F[s], 12)
@@ -329,21 +380,27 @@ function RansDecode0(src, nbytes, N) {
329
380
 
330
381
  function NormaliseFrequencies0_Shift(F, bits) {
331
382
  // Compute total and number of bits to shift by
332
- var tot = 0
333
- for (var i = 0; i < 256; i++) tot += F[i]
383
+ let tot = 0
384
+ for (var i = 0; i < 256; i++) {
385
+ tot += F[i]
386
+ }
334
387
 
335
- if (tot == 0 || tot == 1 << bits) return
388
+ if (tot == 0 || tot == 1 << bits) {
389
+ return
390
+ }
336
391
 
337
- var shift = 0
392
+ let shift = 0
338
393
  while (tot < 1 << bits) {
339
394
  tot *= 2
340
395
  shift++
341
396
  }
342
397
 
343
398
  // Scale total of frequencies to (1<<bits)
344
- for (var i = 0; i < 256; i++) F[i] <<= shift
399
+ for (var i = 0; i < 256; i++) {
400
+ F[i] <<= shift
401
+ }
345
402
  }
346
- //----------------------------------------------------------------------
403
+ // ----------------------------------------------------------------------
347
404
  // Order-1 decoder
348
405
 
349
406
  // Decode a table of order-1 frequences,
@@ -353,25 +410,33 @@ function ReadFrequencies1(src, F, C, shift) {
353
410
  for (var i = 0; i < 256; i++) {
354
411
  F[i] = new Array(256)
355
412
  C[i] = new Array(256)
356
- for (var j = 0; j < 256; j++) F[i][j] = 0
413
+ for (var j = 0; j < 256; j++) {
414
+ F[i][j] = 0
415
+ }
357
416
  }
358
417
 
359
418
  // Fetch alphabet
360
- var A = ReadAlphabet(src)
419
+ const A = ReadAlphabet(src)
361
420
 
362
421
  // Read F[]
363
422
  for (var i = 0; i < 256; i++) {
364
- if (!A[i]) continue
423
+ if (!A[i]) {
424
+ continue
425
+ }
365
426
 
366
- var run = 0
427
+ let run = 0
367
428
  for (var j = 0; j < 256; j++) {
368
- if (!A[j]) continue
429
+ if (!A[j]) {
430
+ continue
431
+ }
369
432
 
370
433
  if (run > 0) {
371
434
  run--
372
435
  } else {
373
436
  F[i][j] = src.ReadUint7()
374
- if (F[i][j] == 0) run = src.ReadByte()
437
+ if (F[i][j] == 0) {
438
+ run = src.ReadByte()
439
+ }
375
440
  }
376
441
  }
377
442
 
@@ -379,7 +444,9 @@ function ReadFrequencies1(src, F, C, shift) {
379
444
 
380
445
  // Compute C[] from F[]
381
446
  C[i][0] = 0
382
- for (var j = 0; j < 256; j++) C[i][j + 1] = C[i][j] + F[i][j]
447
+ for (var j = 0; j < 256; j++) {
448
+ C[i][j + 1] = C[i][j] + F[i][j]
449
+ }
383
450
  }
384
451
  }
385
452
 
@@ -387,43 +454,47 @@ function RansDecode1(src, nbytes, N) {
387
454
  // FIXME: this bit is missing from the RansDecode0 pseudocode.
388
455
 
389
456
  var comp = src.ReadByte()
390
- var shift = comp >> 4
457
+ const shift = comp >> 4
391
458
 
392
459
  var freq_src = src
393
460
  if (comp & 1) {
394
- var ulen = src.ReadUint7()
395
- var clen = src.ReadUint7()
461
+ const ulen = src.ReadUint7()
462
+ const clen = src.ReadUint7()
396
463
  var comp = new IOStream(src.ReadData(clen))
397
464
  var freq_src = new IOStream(RansDecode0(comp, ulen, 4))
398
465
  }
399
466
 
400
467
  // Decode frequencies
401
- var F = new Array(256)
402
- var C = new Array(256)
468
+ const F = new Array(256)
469
+ const C = new Array(256)
403
470
  ReadFrequencies1(freq_src, F, C, shift)
404
471
 
405
472
  // Fast lookup to avoid slow RansGetSymbolFromFreq
406
- var C2S = new Array(256)
407
- for (var i = 0; i < 256; i++)
408
- // Could do only for symbols in alphabet?
473
+ const C2S = new Array(256)
474
+ for (
475
+ var i = 0;
476
+ i < 256;
477
+ i++ // Could do only for symbols in alphabet?
478
+ ) {
409
479
  C2S[i] = RansBuildC2S(C[i], shift)
480
+ }
410
481
 
411
482
  // Initialise rANS state
412
- var R = new Array(N)
413
- var L = new Array(N)
483
+ const R = new Array(N)
484
+ const L = new Array(N)
414
485
  for (var j = 0; j < N; j++) {
415
486
  R[j] = src.ReadUint32()
416
487
  L[j] = 0
417
488
  }
418
489
 
419
490
  // Main decode loop
420
- var output = new Uint8Array(nbytes)
421
- var nbytesx = Math.floor(nbytes / N)
491
+ const output = new Uint8Array(nbytes)
492
+ const nbytesx = Math.floor(nbytes / N)
422
493
  for (var i = 0; i < nbytesx; i++) {
423
494
  for (var j = 0; j < N; j++) {
424
495
  var f = RansGetCumulativeFreq(R[j], shift)
425
496
 
426
- //var s = RansGetSymbolFromFreq(C[L[j]], f);
497
+ // var s = RansGetSymbolFromFreq(C[L[j]], f);
427
498
  var s = C2S[L[j]][f] // Precomputed version of above
428
499
 
429
500
  output[i + j * nbytesx] = s
@@ -448,5 +519,3 @@ function RansDecode1(src, nbytes, N) {
448
519
 
449
520
  return output
450
521
  }
451
-
452
- module.exports = { decode }