@gmod/cram 3.0.7 → 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 (268) 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 -247
  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 +9 -17
  53. package/dist/htscodecs/arith_gen.js +32 -272
  54. package/dist/htscodecs/arith_gen.js.map +1 -1
  55. package/dist/htscodecs/fqzcomp.d.ts +1 -2
  56. package/dist/htscodecs/fqzcomp.js +2 -421
  57. package/dist/htscodecs/fqzcomp.js.map +1 -1
  58. package/dist/htscodecs/index.d.ts +5 -5
  59. package/dist/htscodecs/index.js +10 -10
  60. package/dist/htscodecs/index.js.map +1 -1
  61. package/dist/htscodecs/iostream.d.ts +2 -1
  62. package/dist/htscodecs/iostream.js +3 -2
  63. package/dist/htscodecs/iostream.js.map +1 -1
  64. package/dist/htscodecs/rans.d.ts +1 -2
  65. package/dist/htscodecs/rans.js +3 -270
  66. package/dist/htscodecs/rans.js.map +1 -1
  67. package/dist/htscodecs/rans4x16.d.ts +0 -1
  68. package/dist/htscodecs/rans4x16.js +6 -497
  69. package/dist/htscodecs/rans4x16.js.map +1 -1
  70. package/dist/htscodecs/tok3.js +17 -1
  71. package/dist/htscodecs/tok3.js.map +1 -1
  72. package/dist/index.d.ts +1 -1
  73. package/dist/index.js +2 -2
  74. package/dist/index.js.map +1 -1
  75. package/dist/indexedCramFile.d.ts +4 -4
  76. package/dist/indexedCramFile.js +97 -108
  77. package/dist/indexedCramFile.js.map +1 -1
  78. package/dist/io/index.d.ts +2 -2
  79. package/dist/io/index.js +6 -6
  80. package/dist/io/index.js.map +1 -1
  81. package/dist/rans/constants.d.ts +1 -1
  82. package/dist/rans/constants.js +1 -1
  83. package/dist/rans/constants.js.map +1 -1
  84. package/dist/rans/d04.js.map +1 -1
  85. package/dist/rans/decoding.js.map +1 -1
  86. package/dist/rans/frequencies.js.map +1 -1
  87. package/dist/rans/index.js +5 -5
  88. package/dist/rans/index.js.map +1 -1
  89. package/dist/unzip.d.ts +1 -1
  90. package/dist/unzip.js +5 -3
  91. package/dist/unzip.js.map +1 -1
  92. package/esm/craiIndex.js +10 -12
  93. package/esm/craiIndex.js.map +1 -1
  94. package/esm/cramFile/codecs/_base.d.ts +1 -1
  95. package/esm/cramFile/codecs/beta.d.ts +2 -2
  96. package/esm/cramFile/codecs/beta.js +1 -1
  97. package/esm/cramFile/codecs/beta.js.map +1 -1
  98. package/esm/cramFile/codecs/byteArrayLength.d.ts +2 -2
  99. package/esm/cramFile/codecs/byteArrayStop.d.ts +4 -4
  100. package/esm/cramFile/codecs/byteArrayStop.js +1 -1
  101. package/esm/cramFile/codecs/byteArrayStop.js.map +1 -1
  102. package/esm/cramFile/codecs/external.d.ts +1 -1
  103. package/esm/cramFile/codecs/external.js +1 -1
  104. package/esm/cramFile/codecs/external.js.map +1 -1
  105. package/esm/cramFile/codecs/gamma.d.ts +1 -1
  106. package/esm/cramFile/codecs/gamma.js +1 -1
  107. package/esm/cramFile/codecs/gamma.js.map +1 -1
  108. package/esm/cramFile/codecs/getBits.d.ts +1 -1
  109. package/esm/cramFile/codecs/getBits.js.map +1 -1
  110. package/esm/cramFile/codecs/huffman.d.ts +1 -1
  111. package/esm/cramFile/codecs/huffman.js +1 -1
  112. package/esm/cramFile/codecs/huffman.js.map +1 -1
  113. package/esm/cramFile/codecs/index.d.ts +1 -1
  114. package/esm/cramFile/codecs/index.js +5 -5
  115. package/esm/cramFile/codecs/index.js.map +1 -1
  116. package/esm/cramFile/codecs/subexp.d.ts +2 -2
  117. package/esm/cramFile/codecs/subexp.js +1 -1
  118. package/esm/cramFile/codecs/subexp.js.map +1 -1
  119. package/esm/cramFile/container/compressionScheme.d.ts +2 -2
  120. package/esm/cramFile/container/compressionScheme.js +1 -1
  121. package/esm/cramFile/container/compressionScheme.js.map +1 -1
  122. package/esm/cramFile/container/index.d.ts +1 -2
  123. package/esm/cramFile/container/index.js +4 -7
  124. package/esm/cramFile/container/index.js.map +1 -1
  125. package/esm/cramFile/file.d.ts +9 -13
  126. package/esm/cramFile/file.js +47 -52
  127. package/esm/cramFile/file.js.map +1 -1
  128. package/esm/cramFile/record.js +2 -2
  129. package/esm/cramFile/record.js.map +1 -1
  130. package/esm/cramFile/sectionParsers.d.ts +16 -16
  131. package/esm/cramFile/sectionParsers.js +7 -7
  132. package/esm/cramFile/sectionParsers.js.map +1 -1
  133. package/esm/cramFile/slice/decodeRecord.d.ts +3 -3
  134. package/esm/cramFile/slice/decodeRecord.js +11 -11
  135. package/esm/cramFile/slice/decodeRecord.js.map +1 -1
  136. package/esm/cramFile/slice/index.d.ts +2 -2
  137. package/esm/cramFile/slice/index.js +7 -6
  138. package/esm/cramFile/slice/index.js.map +1 -1
  139. package/esm/cramFile/util.d.ts +4 -2
  140. package/esm/cramFile/util.js +19 -2
  141. package/esm/cramFile/util.js.map +1 -1
  142. package/esm/htscodecs/arith_gen.d.ts +9 -17
  143. package/esm/htscodecs/arith_gen.js +32 -272
  144. package/esm/htscodecs/arith_gen.js.map +1 -1
  145. package/esm/htscodecs/fqzcomp.d.ts +1 -2
  146. package/esm/htscodecs/fqzcomp.js +2 -421
  147. package/esm/htscodecs/fqzcomp.js.map +1 -1
  148. package/esm/htscodecs/index.d.ts +5 -5
  149. package/esm/htscodecs/index.js +10 -10
  150. package/esm/htscodecs/index.js.map +1 -1
  151. package/esm/htscodecs/iostream.d.ts +2 -1
  152. package/esm/htscodecs/iostream.js +3 -2
  153. package/esm/htscodecs/iostream.js.map +1 -1
  154. package/esm/htscodecs/rans.d.ts +1 -2
  155. package/esm/htscodecs/rans.js +3 -270
  156. package/esm/htscodecs/rans.js.map +1 -1
  157. package/esm/htscodecs/rans4x16.d.ts +0 -1
  158. package/esm/htscodecs/rans4x16.js +6 -497
  159. package/esm/htscodecs/rans4x16.js.map +1 -1
  160. package/esm/htscodecs/tok3.js +17 -1
  161. package/esm/htscodecs/tok3.js.map +1 -1
  162. package/esm/index.d.ts +1 -1
  163. package/esm/index.js +1 -1
  164. package/esm/index.js.map +1 -1
  165. package/esm/indexedCramFile.d.ts +4 -4
  166. package/esm/indexedCramFile.js +10 -10
  167. package/esm/indexedCramFile.js.map +1 -1
  168. package/esm/io/index.d.ts +2 -2
  169. package/esm/io/index.js +1 -1
  170. package/esm/io/index.js.map +1 -1
  171. package/esm/rans/constants.d.ts +1 -1
  172. package/esm/rans/constants.js +1 -1
  173. package/esm/rans/constants.js.map +1 -1
  174. package/esm/rans/d04.js.map +1 -1
  175. package/esm/rans/decoding.js.map +1 -1
  176. package/esm/rans/frequencies.js.map +1 -1
  177. package/esm/rans/index.js +5 -5
  178. package/esm/rans/index.js.map +1 -1
  179. package/esm/unzip.d.ts +1 -1
  180. package/esm/unzip.js +4 -1
  181. package/esm/unzip.js.map +1 -1
  182. package/package.json +7 -9
  183. package/src/craiIndex.ts +17 -16
  184. package/src/cramFile/codecs/_base.ts +1 -1
  185. package/src/cramFile/codecs/beta.ts +3 -3
  186. package/src/cramFile/codecs/byteArrayLength.ts +1 -1
  187. package/src/cramFile/codecs/byteArrayStop.ts +3 -4
  188. package/src/cramFile/codecs/external.ts +3 -3
  189. package/src/cramFile/codecs/gamma.ts +2 -2
  190. package/src/cramFile/codecs/getBits.ts +1 -1
  191. package/src/cramFile/codecs/huffman.ts +2 -3
  192. package/src/cramFile/codecs/index.ts +7 -8
  193. package/src/cramFile/codecs/subexp.ts +3 -3
  194. package/src/cramFile/container/compressionScheme.ts +3 -3
  195. package/src/cramFile/container/index.ts +7 -10
  196. package/src/cramFile/file.ts +71 -77
  197. package/src/cramFile/record.ts +3 -3
  198. package/src/cramFile/sectionParsers.ts +27 -22
  199. package/src/cramFile/slice/decodeRecord.ts +17 -17
  200. package/src/cramFile/slice/index.ts +8 -9
  201. package/src/cramFile/util.ts +24 -5
  202. package/src/htscodecs/arith_gen.js +33 -296
  203. package/src/htscodecs/fqzcomp.js +2 -476
  204. package/src/htscodecs/index.js +9 -11
  205. package/src/htscodecs/iostream.js +3 -2
  206. package/src/htscodecs/rans.js +3 -315
  207. package/src/htscodecs/rans4x16.js +6 -557
  208. package/src/htscodecs/tok3.js +18 -1
  209. package/src/index.ts +1 -1
  210. package/src/indexedCramFile.ts +6 -5
  211. package/src/io/index.ts +5 -4
  212. package/src/rans/constants.ts +1 -1
  213. package/src/rans/d04.ts +0 -1
  214. package/src/rans/decoding.ts +0 -1
  215. package/src/rans/frequencies.ts +0 -1
  216. package/src/rans/index.ts +5 -7
  217. package/src/unzip.ts +5 -1
  218. package/dist/cramFile/filehandle.d.ts +0 -1
  219. package/dist/cramFile/filehandle.js +0 -3
  220. package/dist/cramFile/filehandle.js.map +0 -1
  221. package/dist/htscodecs/main_arith_gen.d.ts +0 -1
  222. package/dist/htscodecs/main_arith_gen.js +0 -86
  223. package/dist/htscodecs/main_arith_gen.js.map +0 -1
  224. package/dist/htscodecs/main_fqzcomp.d.ts +0 -1
  225. package/dist/htscodecs/main_fqzcomp.js +0 -112
  226. package/dist/htscodecs/main_fqzcomp.js.map +0 -1
  227. package/dist/htscodecs/main_rans.d.ts +0 -1
  228. package/dist/htscodecs/main_rans.js +0 -83
  229. package/dist/htscodecs/main_rans.js.map +0 -1
  230. package/dist/htscodecs/main_rans4x16.d.ts +0 -1
  231. package/dist/htscodecs/main_rans4x16.js +0 -82
  232. package/dist/htscodecs/main_rans4x16.js.map +0 -1
  233. package/dist/htscodecs/main_tok3.d.ts +0 -1
  234. package/dist/htscodecs/main_tok3.js +0 -84
  235. package/dist/htscodecs/main_tok3.js.map +0 -1
  236. package/dist/unzip-pako.d.ts +0 -2
  237. package/dist/unzip-pako.js +0 -9
  238. package/dist/unzip-pako.js.map +0 -1
  239. package/esm/cramFile/filehandle.d.ts +0 -1
  240. package/esm/cramFile/filehandle.js +0 -2
  241. package/esm/cramFile/filehandle.js.map +0 -1
  242. package/esm/htscodecs/main_arith_gen.d.ts +0 -1
  243. package/esm/htscodecs/main_arith_gen.js +0 -86
  244. package/esm/htscodecs/main_arith_gen.js.map +0 -1
  245. package/esm/htscodecs/main_fqzcomp.d.ts +0 -1
  246. package/esm/htscodecs/main_fqzcomp.js +0 -112
  247. package/esm/htscodecs/main_fqzcomp.js.map +0 -1
  248. package/esm/htscodecs/main_rans.d.ts +0 -1
  249. package/esm/htscodecs/main_rans.js +0 -83
  250. package/esm/htscodecs/main_rans.js.map +0 -1
  251. package/esm/htscodecs/main_rans4x16.d.ts +0 -1
  252. package/esm/htscodecs/main_rans4x16.js +0 -82
  253. package/esm/htscodecs/main_rans4x16.js.map +0 -1
  254. package/esm/htscodecs/main_tok3.d.ts +0 -1
  255. package/esm/htscodecs/main_tok3.js +0 -84
  256. package/esm/htscodecs/main_tok3.js.map +0 -1
  257. package/esm/unzip-pako.d.ts +0 -2
  258. package/esm/unzip-pako.js +0 -6
  259. package/esm/unzip-pako.js.map +0 -1
  260. package/src/cramFile/filehandle.ts +0 -1
  261. package/src/htscodecs/Makefile +0 -142
  262. package/src/htscodecs/README.md +0 -64
  263. package/src/htscodecs/main_arith_gen.js +0 -96
  264. package/src/htscodecs/main_fqzcomp.js +0 -113
  265. package/src/htscodecs/main_rans.js +0 -88
  266. package/src/htscodecs/main_rans4x16.js +0 -87
  267. package/src/htscodecs/main_tok3.js +0 -86
  268. package/src/unzip-pako.ts +0 -6
@@ -71,41 +71,6 @@ function RansRenorm(src, R) {
71
71
 
72
72
  return R
73
73
  }
74
-
75
- // RanEnc* is for encoder
76
- function RansEncInit() {
77
- return 1 << 23
78
- }
79
-
80
- function RansEncFlush(R, dst) {
81
- dst.WriteByteNeg((R >> 24) & 0xff)
82
- dst.WriteByteNeg((R >> 16) & 0xff)
83
- dst.WriteByteNeg((R >> 8) & 0xff)
84
- dst.WriteByteNeg((R >> 0) & 0xff)
85
- }
86
-
87
- function RansEncRenorm(R, dst, freq, scale_bits) {
88
- var R_max = (((1 << 23) >> scale_bits) << 8) * freq
89
-
90
- while (R >= R_max) {
91
- dst.WriteByteNeg(R & 0xff)
92
- R >>= 8
93
- }
94
- return R
95
- }
96
-
97
- // Puts a symbol with frequency freq, cumulative freq start
98
- // and total freq 1<<scale_bits.
99
- //
100
- // Note with static probabilities, /freq and %freq could be
101
- // precomputed via multiplies and shifts.
102
- function RansEncPut(R, dst, start, freq, scale_bits) {
103
- var scale = 1 << scale_bits
104
- R = RansEncRenorm(R, dst, freq, scale_bits)
105
- R = (Math.floor(R / freq) << scale_bits) + (R % freq) + start
106
- return R
107
- }
108
-
109
74
  //----------------------------------------------------------------------
110
75
  // Main rANS entry function: decodes a compressed src and
111
76
  // returns the uncompressed buffer.
@@ -122,18 +87,6 @@ function decode(src) {
122
87
  }
123
88
  }
124
89
 
125
- function encode(src, order) {
126
- //var stream = new IOStream(src);
127
- //var n_in = stream.ReadUint32();
128
- //var n_out = stream.ReadUint32();
129
-
130
- if (order == 0) {
131
- return RansEncode0(src)
132
- } else {
133
- return RansEncode1(src)
134
- }
135
- }
136
-
137
90
  //----------------------------------------------------------------------
138
91
  // Order-0 decoder
139
92
 
@@ -180,7 +133,7 @@ function RansDecode0(src, nbytes) {
180
133
  for (var i = 0; i < 4; i++) R[i] = src.ReadUint32()
181
134
 
182
135
  // Main decode loop
183
- var output = new Buffer.allocUnsafe(nbytes)
136
+ var output = new Uint8Array(nbytes)
184
137
  for (var i = 0; i < nbytes; i++) {
185
138
  var i4 = i % 4
186
139
  var f = RansGetCumulativeFreq(R[i4])
@@ -194,129 +147,6 @@ function RansDecode0(src, nbytes) {
194
147
  return output
195
148
  }
196
149
 
197
- //----------------------------------------------------------------------
198
- // Order-0 encoder
199
-
200
- function BuildFrequencies0(src, F) {
201
- for (var i = 0; i < 256; i++) F[i] = 0
202
-
203
- for (var i = 0; i < src.length; i++) F[src[i]]++
204
- }
205
-
206
- function NormaliseFrequencies0(F) {
207
- // Compute total
208
- var tot = 0
209
- for (var i = 0; i < 256; i++) tot += F[i]
210
-
211
- // Scale total of frequencies to max
212
- const max = 1 << 12
213
- var scale = max / tot
214
- do {
215
- var max_val = 0
216
- var max_idx = 0
217
- var renorm = 0
218
- tot = 0
219
- for (var i = 0; i < 256; i++) {
220
- if (F[i] == 0) continue
221
-
222
- if (max_val < F[i]) {
223
- max_val = F[i]
224
- max_idx = i
225
- }
226
-
227
- F[i] = Math.floor(F[i] * scale)
228
- if (F[i] == 0) F[i] = 1
229
-
230
- tot += F[i]
231
- }
232
-
233
- // Adjust new tot to ensure it matches.
234
- if (tot < max) {
235
- // Too low, boost the most common symbol
236
- F[max_idx] += max - tot
237
- } else if (tot - max < F[max_idx] / 2 && F[max_idx] > 2) {
238
- // Too high, reduce the common symbol
239
- F[max_idx] -= tot - max
240
- } else if (tot != max) {
241
- // Much too high, fudge scale and try again.
242
- scale = scale * 0.99
243
- renorm = 1
244
- }
245
- } while (renorm)
246
- }
247
-
248
- function WriteFrequencies0(out, F) {
249
- var rle = 0
250
- for (var i = 0; i < 256; i++) {
251
- if (!F[i]) continue
252
-
253
- // Output Symbol if needed and Frequency
254
- if (rle > 0) rle--
255
- else {
256
- out.WriteByte(i)
257
-
258
- if (i > 0 && F[i - 1] > 0) {
259
- // We've encoded two symbol frequencies in a row.
260
- // How many more are there? Store that count so
261
- // we can avoid writing consecutive symbols.
262
- for (rle = i + 1; rle < 256 && F[rle]; rle++);
263
- rle -= i + 1
264
-
265
- out.WriteByte(rle)
266
- }
267
- }
268
-
269
- out.WriteITF8(F[i])
270
- }
271
- out.WriteByte(0)
272
- }
273
-
274
- function RansEncode0(src) {
275
- const nbytes = src.length
276
- var output = new IOStream('', 0, 257 * 3 + 9)
277
-
278
- output.WriteByte(0) // Order 0
279
- output.WriteUint32(0) // compressed size: correct later
280
- output.WriteUint32(0) // uncompressed size: correct later
281
-
282
- // Compute frequencies
283
- var F = new Array(256)
284
- BuildFrequencies0(src, F)
285
- NormaliseFrequencies0(F)
286
- WriteFrequencies0(output, F)
287
-
288
- // Compute cumulative frequencies
289
- var C = new Array(256)
290
- C[0] = 0
291
- for (var i = 1; i < 256; i++) C[i] = C[i - 1] + F[i - 1]
292
-
293
- // Initialise rANS state
294
- var R = new Array(4)
295
- for (var i = 0; i < 4; i++) R[i] = RansEncInit()
296
-
297
- var alloc = Math.floor(nbytes * 1.05 + 100)
298
- var rans_out = new IOStream('', alloc, alloc)
299
-
300
- // Main encode loop
301
- for (var i = nbytes - 1; i >= 0; i--)
302
- R[i % 4] = RansEncPut(R[i % 4], rans_out, C[src[i]], F[src[i]], 12)
303
-
304
- for (var i = 3; i >= 0; i--) RansEncFlush(R[i], rans_out)
305
-
306
- // Stitch blocks together into final output buffer
307
- var freq_tab = output.pos
308
- output.buf.writeInt32LE(freq_tab - 9 + (rans_out.length - rans_out.pos), 1)
309
- output.buf.writeInt32LE(nbytes, 5)
310
-
311
- return Buffer.concat(
312
- [
313
- output.buf.slice(0, output.pos),
314
- rans_out.buf.slice(rans_out.pos, rans_out.length),
315
- ],
316
- output.pos + rans_out.length - rans_out.pos,
317
- )
318
- }
319
-
320
150
  //----------------------------------------------------------------------
321
151
  // Order-1 decoder
322
152
 
@@ -368,7 +198,7 @@ function RansDecode1(src, nbytes) {
368
198
  }
369
199
 
370
200
  // Main decode loop
371
- var output = new Buffer.allocUnsafe(nbytes)
201
+ var output = new Uint8Array(nbytes)
372
202
  var nbytes4 = Math.floor(nbytes / 4)
373
203
  for (var i = 0; i < nbytes4; i++) {
374
204
  for (var j = 0; j < 4; j++) {
@@ -400,146 +230,4 @@ function RansDecode1(src, nbytes) {
400
230
  return output
401
231
  }
402
232
 
403
- //----------------------------------------------------------------------
404
- // Order-1 encoder
405
-
406
- function BuildFrequencies1(src, F, F0) {
407
- for (var i = 0; i < 256; i++) {
408
- F0[i] = 0
409
- for (var j = 0; j < 256; j++) F[i][j] = 0
410
- }
411
-
412
- var last = 0
413
- for (var i = 0; i < src.length; i++) {
414
- F0[src[i]]++
415
- F[last][src[i]]++
416
- //F[last][src[i]]++;
417
- last = src[i]
418
- }
419
-
420
- // Also accept we'll be starting at 4 points, not just byte 0
421
- F[0][src[1 * (src.length >> 2)]]++
422
- F[0][src[2 * (src.length >> 2)]]++
423
- F[0][src[3 * (src.length >> 2)]]++
424
- F0[0] += 3
425
- }
426
-
427
- function NormaliseFrequencies1(F, F0) {
428
- for (var i = 0; i < 256; i++) if (F0[i]) NormaliseFrequencies0(F[i])
429
- }
430
-
431
- function WriteFrequencies1(out, F, F0) {
432
- var rle = 0
433
- var last_sym = 0
434
-
435
- for (var i = 0; i < 256; i++) {
436
- if (!F0[i]) continue
437
-
438
- // Output Symbol if needed and Frequency
439
- if (rle > 0) rle--
440
- else {
441
- out.WriteByte(i)
442
-
443
- if (i > 0 && F0[i - 1] > 0) {
444
- for (rle = i + 1; rle < 256 && F0[rle]; rle++);
445
- rle -= i + 1
446
- out.WriteByte(rle)
447
- }
448
- }
449
-
450
- WriteFrequencies0(out, F[i])
451
- }
452
- out.WriteByte(0)
453
- }
454
-
455
- function RansEncode1(src) {
456
- const nbytes = src.length
457
- var output = new IOStream('', 0, 257 * 257 * 3 + 9)
458
-
459
- output.WriteByte(1) // Order 0
460
- output.WriteUint32(0) // compressed size: correct later
461
- output.WriteUint32(0) // uncompressed size: correct later
462
-
463
- // Compute frequencies
464
- var F0 = new Array(256)
465
- var F = new Array(256)
466
- var C = new Array(256)
467
- for (var i = 0; i < 256; i++) {
468
- F[i] = new Array(256)
469
- C[i] = new Array(256)
470
- }
471
-
472
- BuildFrequencies1(src, F, F0)
473
- NormaliseFrequencies1(F, F0)
474
- WriteFrequencies1(output, F, F0)
475
-
476
- // Compute cumulative frequencies
477
- for (var i = 0; i < 256; i++) {
478
- if (!F0[i]) continue
479
-
480
- C[i][0] = 0
481
- for (var j = 1; j < 256; j++) C[i][j] = C[i][j - 1] + F[i][j - 1]
482
- }
483
-
484
- // Initialise rANS state
485
- var R = new Array(4)
486
- var L = new Array(4)
487
- for (var j = 0; j < 4; j++) {
488
- R[j] = RansEncInit()
489
- L[j] = 0
490
- }
491
- var rans_out = new IOStream('', nbytes, nbytes)
492
-
493
- // We have 4 rans codecs running in parallel on its own 1/4tr of buffer
494
- var nbytes4 = Math.floor(nbytes / 4)
495
- var idx = new Array(4)
496
- var last = new Array(4)
497
- for (var j = 0; j < 4; j++) {
498
- idx[j] = (j + 1) * nbytes4 - 2
499
- last[j] = src[idx[j] + 1]
500
- }
501
-
502
- // Deal with the remainder if not a multiple of 4
503
- last[3] = src[nbytes - 1]
504
- for (var i = nbytes - 2; i > 4 * nbytes4 - 2; i--) {
505
- R[3] = RansEncPut(
506
- R[3],
507
- rans_out,
508
- C[src[i]][last[3]],
509
- F[src[i]][last[3]],
510
- 12,
511
- )
512
- last[3] = src[i]
513
- }
514
-
515
- // Main encode loop
516
- while (idx[0] >= 0) {
517
- for (var j = 3; j >= 0; j--) {
518
- var s = src[idx[j]]
519
- R[j] = RansEncPut(R[j], rans_out, C[s][last[j]], F[s][last[j]], 12)
520
- last[j] = s
521
- idx[j]--
522
- }
523
- }
524
-
525
- for (var j = 3; j >= 0; j--) {
526
- R[j] = RansEncPut(R[j], rans_out, C[0][last[j]], F[0][last[j]], 12)
527
- }
528
-
529
- for (var i = 3; i >= 0; i--) RansEncFlush(R[i], rans_out)
530
-
531
- // Stitch blocks together into final output buffer
532
- var freq_tab = output.pos
533
- output.buf.writeInt32LE(freq_tab - 9 + (rans_out.length - rans_out.pos), 1)
534
- output.buf.writeInt32LE(nbytes, 5)
535
-
536
- return Buffer.concat(
537
- [
538
- output.buf.slice(0, output.pos),
539
- rans_out.buf.slice(rans_out.pos, rans_out.length),
540
- ],
541
- output.pos + rans_out.length - rans_out.pos,
542
- )
543
- }
544
-
545
- module.exports = { decode, encode }
233
+ module.exports = { decode }