@maplibre/mlt 1.1.6 → 1.1.7

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 (173) hide show
  1. package/dist/decoding/bigEndianDecode.d.ts +13 -0
  2. package/dist/decoding/bigEndianDecode.js +50 -0
  3. package/dist/decoding/bigEndianDecode.js.map +1 -0
  4. package/dist/decoding/decodingTestUtils.d.ts +1 -1
  5. package/dist/decoding/decodingTestUtils.js.map +1 -1
  6. package/dist/decoding/decodingUtils.js +4 -2
  7. package/dist/decoding/decodingUtils.js.map +1 -1
  8. package/dist/decoding/fastPforDecoder.d.ts +48 -0
  9. package/dist/decoding/fastPforDecoder.js +482 -0
  10. package/dist/decoding/fastPforDecoder.js.map +1 -0
  11. package/dist/decoding/fastPforShared.d.ts +9 -0
  12. package/dist/decoding/fastPforShared.js +29 -0
  13. package/dist/decoding/fastPforShared.js.map +1 -0
  14. package/dist/decoding/fastPforUnpack.d.ts +23 -0
  15. package/dist/decoding/fastPforUnpack.js +910 -0
  16. package/dist/decoding/fastPforUnpack.js.map +1 -0
  17. package/dist/decoding/geometryDecoder.d.ts +2 -2
  18. package/dist/decoding/geometryDecoder.js +11 -8
  19. package/dist/decoding/geometryDecoder.js.map +1 -1
  20. package/dist/decoding/integerDecodingUtils.d.ts +14 -10
  21. package/dist/decoding/integerDecodingUtils.js +44 -22
  22. package/dist/decoding/integerDecodingUtils.js.map +1 -1
  23. package/dist/decoding/integerStreamDecoder.d.ts +1 -1
  24. package/dist/decoding/integerStreamDecoder.js +13 -6
  25. package/dist/decoding/integerStreamDecoder.js.map +1 -1
  26. package/dist/decoding/propertyDecoder.js +10 -14
  27. package/dist/decoding/propertyDecoder.js.map +1 -1
  28. package/dist/decoding/stringDecoder.js +1 -4
  29. package/dist/decoding/stringDecoder.js.map +1 -1
  30. package/dist/encoding/bigEndianEncode.d.ts +7 -0
  31. package/dist/encoding/bigEndianEncode.js +16 -0
  32. package/dist/encoding/bigEndianEncode.js.map +1 -0
  33. package/dist/encoding/constGeometryVectorEncoder.d.ts +19 -0
  34. package/dist/encoding/constGeometryVectorEncoder.js +248 -0
  35. package/dist/encoding/constGeometryVectorEncoder.js.map +1 -0
  36. package/dist/encoding/encodingUtils.d.ts +1 -1
  37. package/dist/encoding/encodingUtils.js +2 -2
  38. package/dist/encoding/encodingUtils.js.map +1 -1
  39. package/dist/encoding/fastPforEncoder.d.ts +19 -0
  40. package/dist/encoding/fastPforEncoder.js +310 -0
  41. package/dist/encoding/fastPforEncoder.js.map +1 -0
  42. package/dist/encoding/integerEncodingUtils.d.ts +7 -7
  43. package/dist/encoding/integerEncodingUtils.js +25 -17
  44. package/dist/encoding/integerEncodingUtils.js.map +1 -1
  45. package/dist/encoding/integerStreamEncoder.d.ts +1 -1
  46. package/dist/encoding/integerStreamEncoder.js +5 -5
  47. package/dist/encoding/integerStreamEncoder.js.map +1 -1
  48. package/dist/encoding/packNullableUtils.d.ts +1 -1
  49. package/dist/encoding/packNullableUtils.js.map +1 -1
  50. package/dist/encoding/propertyEncoder.d.ts +1 -1
  51. package/dist/encoding/propertyEncoder.js +8 -8
  52. package/dist/encoding/propertyEncoder.js.map +1 -1
  53. package/dist/encoding/stringEncoder.js +3 -3
  54. package/dist/encoding/stringEncoder.js.map +1 -1
  55. package/dist/encoding/zOrderCurveEncoder.js +1 -1
  56. package/dist/encoding/zOrderCurveEncoder.js.map +1 -1
  57. package/dist/metadata/tile/logicalStreamType.d.ts +3 -3
  58. package/dist/metadata/tile/logicalStreamType.js.map +1 -1
  59. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.d.ts +1 -1
  60. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -1
  61. package/dist/metadata/tileset/typeMap.d.ts +10 -2
  62. package/dist/metadata/tileset/typeMap.js +25 -15
  63. package/dist/metadata/tileset/typeMap.js.map +1 -1
  64. package/dist/mltDecoder.js +29 -26
  65. package/dist/mltDecoder.js.map +1 -1
  66. package/dist/mltMetadata.js.map +1 -1
  67. package/dist/vector/constant/intConstVector.d.ts +1 -1
  68. package/dist/vector/constant/intConstVector.js +1 -1
  69. package/dist/vector/constant/intConstVector.js.map +1 -1
  70. package/dist/vector/constant/longConstVector.d.ts +1 -1
  71. package/dist/vector/constant/longConstVector.js +1 -1
  72. package/dist/vector/constant/longConstVector.js.map +1 -1
  73. package/dist/vector/dictionary/stringDictionaryVector.d.ts +0 -1
  74. package/dist/vector/dictionary/stringDictionaryVector.js +0 -2
  75. package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
  76. package/dist/vector/featureTable.d.ts +4 -5
  77. package/dist/vector/featureTable.js +2 -29
  78. package/dist/vector/featureTable.js.map +1 -1
  79. package/dist/vector/filter/flatSelectionVector.d.ts +1 -1
  80. package/dist/vector/filter/flatSelectionVector.js.map +1 -1
  81. package/dist/vector/filter/selectionVectorUtils.d.ts +1 -1
  82. package/dist/vector/filter/selectionVectorUtils.js.map +1 -1
  83. package/dist/vector/filter/sequenceSelectionVector.d.ts +1 -1
  84. package/dist/vector/filter/sequenceSelectionVector.js.map +1 -1
  85. package/dist/vector/flat/stringFlatVector.d.ts +0 -1
  86. package/dist/vector/flat/stringFlatVector.js +0 -2
  87. package/dist/vector/flat/stringFlatVector.js.map +1 -1
  88. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +0 -2
  89. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js +0 -36
  90. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
  91. package/dist/vector/geometry/constGeometryVector.d.ts +2 -2
  92. package/dist/vector/geometry/constGeometryVector.js +1 -1
  93. package/dist/vector/geometry/constGeometryVector.js.map +1 -1
  94. package/dist/vector/geometry/constGpuVector.d.ts +2 -2
  95. package/dist/vector/geometry/constGpuVector.js +1 -1
  96. package/dist/vector/geometry/constGpuVector.js.map +1 -1
  97. package/dist/vector/geometry/flatGeometryVector.d.ts +1 -1
  98. package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
  99. package/dist/vector/geometry/flatGpuVector.d.ts +1 -1
  100. package/dist/vector/geometry/flatGpuVector.js.map +1 -1
  101. package/dist/vector/geometry/geometryType.js.map +1 -1
  102. package/dist/vector/geometry/geometryVector.d.ts +4 -5
  103. package/dist/vector/geometry/geometryVector.js +0 -8
  104. package/dist/vector/geometry/geometryVector.js.map +1 -1
  105. package/dist/vector/geometry/geometryVectorConverter.d.ts +1 -1
  106. package/dist/vector/geometry/geometryVectorConverter.js +167 -211
  107. package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
  108. package/dist/vector/geometry/gpuVector.d.ts +2 -2
  109. package/dist/vector/geometry/gpuVector.js.map +1 -1
  110. package/dist/vector/geometry/topologyVector.d.ts +5 -9
  111. package/dist/vector/geometry/topologyVector.js +1 -19
  112. package/dist/vector/geometry/topologyVector.js.map +1 -1
  113. package/dist/vector/geometry/vertexBufferType.js.map +1 -1
  114. package/dist/vector/intVector.d.ts +7 -7
  115. package/dist/vector/intVector.js.map +1 -1
  116. package/dist/vector/vector.js +1 -1
  117. package/dist/vector/vector.js.map +1 -1
  118. package/dist/vector/vectorType.js.map +1 -1
  119. package/package.json +9 -10
  120. package/dist/decoding/decodingUtils.spec.d.ts +0 -1
  121. package/dist/decoding/decodingUtils.spec.js +0 -141
  122. package/dist/decoding/decodingUtils.spec.js.map +0 -1
  123. package/dist/decoding/fsstDecoder.spec.d.ts +0 -1
  124. package/dist/decoding/fsstDecoder.spec.js +0 -57
  125. package/dist/decoding/fsstDecoder.spec.js.map +0 -1
  126. package/dist/decoding/integerDecodingUtils.spec.d.ts +0 -1
  127. package/dist/decoding/integerDecodingUtils.spec.js +0 -300
  128. package/dist/decoding/integerDecodingUtils.spec.js.map +0 -1
  129. package/dist/decoding/integerStreamDecoder.spec.d.ts +0 -1
  130. package/dist/decoding/integerStreamDecoder.spec.js +0 -402
  131. package/dist/decoding/integerStreamDecoder.spec.js.map +0 -1
  132. package/dist/decoding/propertyDecoder.spec.d.ts +0 -1
  133. package/dist/decoding/propertyDecoder.spec.js +0 -448
  134. package/dist/decoding/propertyDecoder.spec.js.map +0 -1
  135. package/dist/decoding/stringDecoder.spec.d.ts +0 -1
  136. package/dist/decoding/stringDecoder.spec.js +0 -387
  137. package/dist/decoding/stringDecoder.spec.js.map +0 -1
  138. package/dist/decoding/unpackNullableUtils.spec.d.ts +0 -1
  139. package/dist/decoding/unpackNullableUtils.spec.js +0 -71
  140. package/dist/decoding/unpackNullableUtils.spec.js.map +0 -1
  141. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.d.ts +0 -1
  142. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js +0 -142
  143. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js.map +0 -1
  144. package/dist/mltDecoder.spec.d.ts +0 -1
  145. package/dist/mltDecoder.spec.js +0 -152
  146. package/dist/mltDecoder.spec.js.map +0 -1
  147. package/dist/vector/filter/flatSelectionVector.spec.d.ts +0 -1
  148. package/dist/vector/filter/flatSelectionVector.spec.js +0 -51
  149. package/dist/vector/filter/flatSelectionVector.spec.js.map +0 -1
  150. package/dist/vector/filter/selectionVectorUtil.spec.d.ts +0 -1
  151. package/dist/vector/filter/selectionVectorUtil.spec.js +0 -154
  152. package/dist/vector/filter/selectionVectorUtil.spec.js.map +0 -1
  153. package/dist/vector/filter/sequenceSelectionVector.spec.d.ts +0 -1
  154. package/dist/vector/filter/sequenceSelectionVector.spec.js +0 -115
  155. package/dist/vector/filter/sequenceSelectionVector.spec.js.map +0 -1
  156. package/dist/vector/flat/floatFlatVector.spec.d.ts +0 -1
  157. package/dist/vector/flat/floatFlatVector.spec.js +0 -14
  158. package/dist/vector/flat/floatFlatVector.spec.js.map +0 -1
  159. package/dist/vector/flat/intFlatVector.spec.d.ts +0 -1
  160. package/dist/vector/flat/intFlatVector.spec.js +0 -15
  161. package/dist/vector/flat/intFlatVector.spec.js.map +0 -1
  162. package/dist/vector/flat/longFlatVector.spec.d.ts +0 -1
  163. package/dist/vector/flat/longFlatVector.spec.js +0 -14
  164. package/dist/vector/flat/longFlatVector.spec.js.map +0 -1
  165. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.d.ts +0 -1
  166. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js +0 -28
  167. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js.map +0 -1
  168. package/dist/vector/geometry/zOrderCurve.spec.d.ts +0 -1
  169. package/dist/vector/geometry/zOrderCurve.spec.js +0 -25
  170. package/dist/vector/geometry/zOrderCurve.spec.js.map +0 -1
  171. package/dist/vector/sequence/longSequenceVektor.spec.d.ts +0 -1
  172. package/dist/vector/sequence/longSequenceVektor.spec.js +0 -11
  173. package/dist/vector/sequence/longSequenceVektor.spec.js.map +0 -1
@@ -1,3 +1,6 @@
1
+ import { createFastPforWireDecodeWorkspace, decodeFastPforInt32, ensureFastPforWireEncodedWordsCapacity, } from "./fastPforDecoder";
2
+ import { decodeBigEndianInt32sInto } from "./bigEndianDecode";
3
+ export { createFastPforWireDecodeWorkspace } from "./fastPforDecoder";
1
4
  //based on https://github.com/mapbox/pbf/blob/main/index.js
2
5
  export function decodeVarintInt32(buf, bufferOffset, numValues) {
3
6
  const dst = new Int32Array(numValues);
@@ -36,7 +39,7 @@ export function decodeVarintInt32(buf, bufferOffset, numValues) {
36
39
  return dst;
37
40
  }
38
41
  export function decodeVarintInt64(src, offset, numValues) {
39
- const dst = new BigInt64Array(numValues);
42
+ const dst = new BigUint64Array(numValues);
40
43
  for (let i = 0; i < dst.length; i++) {
41
44
  dst[i] = decodeVarintInt64Value(src, offset);
42
45
  }
@@ -74,7 +77,8 @@ export function decodeVarintFloat64(src, offset, numValues) {
74
77
  }
75
78
  //based on https://github.com/mapbox/pbf/blob/main/index.js
76
79
  function decodeVarintFloat64Value(buf, offset) {
77
- let val, b;
80
+ let val;
81
+ let b;
78
82
  b = buf[offset.get()];
79
83
  offset.increment();
80
84
  val = b & 0x7f;
@@ -100,7 +104,8 @@ function decodeVarintFloat64Value(buf, offset) {
100
104
  return decodeVarintRemainder(val, buf, offset);
101
105
  }
102
106
  function decodeVarintRemainder(l, buf, offset) {
103
- let h, b;
107
+ let h;
108
+ let b;
104
109
  b = buf[offset.get()];
105
110
  offset.increment();
106
111
  h = (b & 0x70) >> 4;
@@ -133,8 +138,21 @@ function decodeVarintRemainder(l, buf, offset) {
133
138
  return h * 0x100000000 + (l >>> 0);
134
139
  throw new Error("Expected varint not more than 10 bytes");
135
140
  }
136
- export function decodeFastPfor(data, numValues, byteLength, offset) {
137
- throw new Error("FastPFor is not implemented yet.");
141
+ export function decodeFastPfor(encodedBytes, expectedValueCount, encodedByteLength, offset) {
142
+ const workspace = createFastPforWireDecodeWorkspace(encodedByteLength >>> 2);
143
+ return decodeFastPforWithWorkspace(encodedBytes, expectedValueCount, encodedByteLength, offset, workspace);
144
+ }
145
+ export function decodeFastPforWithWorkspace(encodedBytes, expectedValueCount, encodedByteLength, offset, workspace) {
146
+ const inputByteOffset = offset.get();
147
+ if ((encodedByteLength & 3) !== 0) {
148
+ throw new Error(`FastPFOR: invalid encodedByteLength=${encodedByteLength} at offset=${inputByteOffset} (encodedBytes.length=${encodedBytes.length}; expected a multiple of 4 bytes for an int32 big-endian word stream)`);
149
+ }
150
+ const encodedWordCount = encodedByteLength >>> 2;
151
+ const encodedWordBuffer = ensureFastPforWireEncodedWordsCapacity(workspace, encodedWordCount);
152
+ decodeBigEndianInt32sInto(encodedBytes, inputByteOffset, encodedByteLength, encodedWordBuffer);
153
+ const decodedValues = decodeFastPforInt32(encodedWordBuffer.subarray(0, encodedWordCount), expectedValueCount, workspace.decoderWorkspace);
154
+ offset.add(encodedByteLength);
155
+ return decodedValues;
138
156
  }
139
157
  export function decodeZigZagInt32Value(encoded) {
140
158
  return (encoded >>> 1) ^ -(encoded & 1);
@@ -151,9 +169,11 @@ export function decodeZigZagInt32(encodedData) {
151
169
  }
152
170
  }
153
171
  export function decodeZigZagInt64(encodedData) {
172
+ const decodedValues = new BigInt64Array(encodedData.length);
154
173
  for (let i = 0; i < encodedData.length; i++) {
155
- encodedData[i] = decodeZigZagInt64Value(encodedData[i]);
174
+ decodedValues[i] = decodeZigZagInt64Value(encodedData[i]);
156
175
  }
176
+ return decodedValues;
157
177
  }
158
178
  export function decodeZigZagFloat64(encodedData) {
159
179
  for (let i = 0; i < encodedData.length; i++) {
@@ -186,7 +206,7 @@ export function decodeUnsignedRleInt64(encodedData, numRuns, numTotalValues) {
186
206
  numTotalValues += Number(encodedData[i]);
187
207
  }
188
208
  }
189
- const decodedValues = new BigInt64Array(numTotalValues);
209
+ const decodedValues = new BigUint64Array(numTotalValues);
190
210
  let offset = 0;
191
211
  for (let i = 0; i < numRuns; i++) {
192
212
  const runLength = Number(encodedData[i]);
@@ -227,12 +247,13 @@ export function decodeZigZagDeltaInt32(data) {
227
247
  data[i + 3] = decodeZigZagInt32Value(data4) + data[i + 2];
228
248
  }
229
249
  }
230
- for (; i != data.length; ++i) {
250
+ for (; i !== data.length; ++i) {
231
251
  data[i] = decodeZigZagInt32Value(data[i]) + data[i - 1];
232
252
  }
233
253
  }
234
254
  export function decodeZigZagDeltaInt64(data) {
235
- data[0] = decodeZigZagInt64Value(data[0]);
255
+ const decodedValues = new BigInt64Array(data.length);
256
+ decodedValues[0] = decodeZigZagInt64Value(data[0]);
236
257
  const sz0 = (data.length / 4) * 4;
237
258
  let i = 1;
238
259
  if (sz0 >= 4) {
@@ -241,15 +262,16 @@ export function decodeZigZagDeltaInt64(data) {
241
262
  const data2 = data[i + 1];
242
263
  const data3 = data[i + 2];
243
264
  const data4 = data[i + 3];
244
- data[i] = decodeZigZagInt64Value(data1) + data[i - 1];
245
- data[i + 1] = decodeZigZagInt64Value(data2) + data[i];
246
- data[i + 2] = decodeZigZagInt64Value(data3) + data[i + 1];
247
- data[i + 3] = decodeZigZagInt64Value(data4) + data[i + 2];
265
+ decodedValues[i] = decodeZigZagInt64Value(data1) + decodedValues[i - 1];
266
+ decodedValues[i + 1] = decodeZigZagInt64Value(data2) + decodedValues[i];
267
+ decodedValues[i + 2] = decodeZigZagInt64Value(data3) + decodedValues[i + 1];
268
+ decodedValues[i + 3] = decodeZigZagInt64Value(data4) + decodedValues[i + 2];
248
269
  }
249
270
  }
250
- for (; i != data.length; ++i) {
251
- data[i] = decodeZigZagInt64Value(data[i]) + data[i - 1];
271
+ for (; i !== decodedValues.length; ++i) {
272
+ decodedValues[i] = decodeZigZagInt64Value(data[i]) + decodedValues[i - 1];
252
273
  }
274
+ return decodedValues;
253
275
  }
254
276
  export function decodeZigZagDeltaFloat64(data) {
255
277
  data[0] = decodeZigZagFloat64Value(data[0]);
@@ -267,7 +289,7 @@ export function decodeZigZagDeltaFloat64(data) {
267
289
  data[i + 3] = decodeZigZagFloat64Value(data4) + data[i + 2];
268
290
  }
269
291
  }
270
- for (; i != data.length; ++i) {
292
+ for (; i !== data.length; ++i) {
271
293
  data[i] = decodeZigZagFloat64Value(data[i]) + data[i - 1];
272
294
  }
273
295
  }
@@ -335,7 +357,7 @@ export function fastInverseDelta(data) {
335
357
  a = data[i + 3] += a;
336
358
  }
337
359
  }
338
- while (i != data.length) {
360
+ while (i !== data.length) {
339
361
  data[i] += data[i - 1];
340
362
  ++i;
341
363
  }
@@ -370,7 +392,7 @@ export function decodeComponentwiseDeltaVec2(data) {
370
392
  data[i + 3] = decodeZigZagInt32Value(y2) + data[i + 1];
371
393
  }
372
394
  }
373
- for (; i != data.length; i += 2) {
395
+ for (; i !== data.length; i += 2) {
374
396
  data[i] = decodeZigZagInt32Value(data[i]) + data[i - 2];
375
397
  data[i + 1] = decodeZigZagInt32Value(data[i + 1]) + data[i - 1];
376
398
  }
@@ -400,7 +422,7 @@ export function decodeComponentwiseDeltaVec2Scaled(data, scale, min, max) {
400
422
  data[i + 3] = clamp(Math.round(previousVertexY * scale), min, max);
401
423
  }
402
424
  }
403
- for (; i != data.length; i += 2) {
425
+ for (; i !== data.length; i += 2) {
404
426
  previousVertexX += decodeZigZagInt32Value(data[i]);
405
427
  previousVertexY += decodeZigZagInt32Value(data[i + 1]);
406
428
  data[i] = clamp(Math.round(previousVertexX * scale), min, max);
@@ -416,7 +438,7 @@ export function decodeZigZagDeltaOfDeltaInt32(data) {
416
438
  decodedData[0] = 0;
417
439
  decodedData[1] = decodeZigZagInt32Value(data[0]);
418
440
  let deltaSum = decodedData[1];
419
- for (let i = 2; i != decodedData.length; ++i) {
441
+ for (let i = 2; i !== decodedData.length; ++i) {
420
442
  const zigZagValue = data[i - 1];
421
443
  const delta = decodeZigZagInt32Value(zigZagValue);
422
444
  deltaSum += delta;
@@ -506,7 +528,7 @@ export function decodeZigZagConstRleInt32(data) {
506
528
  }
507
529
  export function decodeZigZagSequenceRleInt32(data) {
508
530
  /* base value and delta value are equal */
509
- if (data.length == 2) {
531
+ if (data.length === 2) {
510
532
  const value = decodeZigZagInt32Value(data[1]);
511
533
  return [value, value];
512
534
  }
@@ -523,7 +545,7 @@ export function decodeZigZagConstRleInt64(data) {
523
545
  }
524
546
  export function decodeZigZagSequenceRleInt64(data) {
525
547
  /* base value and delta value are equal */
526
- if (data.length == 2) {
548
+ if (data.length === 2) {
527
549
  const value = decodeZigZagInt64Value(data[1]);
528
550
  return [value, value];
529
551
  }
@@ -1 +1 @@
1
- {"version":3,"file":"integerDecodingUtils.js","sourceRoot":"","sources":["../../src/decoding/integerDecodingUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import type IntWrapper from \"./intWrapper\";\nimport type BitVector from \"../vector/flat/bitVector\";\n\n//based on https://github.com/mapbox/pbf/blob/main/index.js\nexport function decodeVarintInt32(buf: Uint8Array, bufferOffset: IntWrapper, numValues: number): Int32Array {\n const dst = new Int32Array(numValues);\n let dstOffset = 0;\n let offset = bufferOffset.get();\n for (let i = 0; i < dst.length; i++) {\n let b = buf[offset++];\n let val = b & 0x7f;\n if (b < 0x80) {\n dst[dstOffset++] = val;\n continue;\n }\n\n b = buf[offset++];\n val |= (b & 0x7f) << 7;\n if (b < 0x80) {\n dst[dstOffset++] = val;\n continue;\n }\n\n b = buf[offset++];\n val |= (b & 0x7f) << 14;\n if (b < 0x80) {\n dst[dstOffset++] = val;\n continue;\n }\n\n b = buf[offset++];\n val |= (b & 0x7f) << 21;\n if (b < 0x80) {\n dst[dstOffset++] = val;\n continue;\n }\n\n b = buf[offset++];\n val |= (b & 0x0f) << 28;\n dst[dstOffset++] = val;\n }\n\n bufferOffset.set(offset);\n return dst;\n}\n\nexport function decodeVarintInt64(src: Uint8Array, offset: IntWrapper, numValues: number): BigInt64Array {\n const dst = new BigInt64Array(numValues);\n for (let i = 0; i < dst.length; i++) {\n dst[i] = decodeVarintInt64Value(src, offset);\n }\n return dst;\n}\n\n// Source: https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/util/VarInt.java\nfunction decodeVarintInt64Value(bytes: Uint8Array, pos: IntWrapper): bigint {\n let value = 0n;\n let shift = 0;\n let index = pos.get();\n while (index < bytes.length) {\n const b = bytes[index++];\n value |= BigInt(b & 0x7f) << BigInt(shift);\n if ((b & 0x80) === 0) {\n break;\n }\n shift += 7;\n if (shift >= 64) {\n throw new Error(\"Varint too long\");\n }\n }\n pos.set(index);\n return value;\n}\n\n/*\n * Since decoding Int64 values to BigInt is more than an order of magnitude slower in the tests then using a Float64,\n * this decoding method limits the max size of a Long value to 53 bits\n */\nexport function decodeVarintFloat64(src: Uint8Array, offset: IntWrapper, numValues: number): Float64Array {\n const dst = new Float64Array(numValues);\n for (let i = 0; i < numValues; i++) {\n dst[i] = decodeVarintFloat64Value(src, offset);\n }\n return dst;\n}\n\n//based on https://github.com/mapbox/pbf/blob/main/index.js\nfunction decodeVarintFloat64Value(buf: Uint8Array, offset: IntWrapper): number {\n let val, b;\n b = buf[offset.get()];\n offset.increment();\n val = b & 0x7f;\n if (b < 0x80) return val;\n b = buf[offset.get()];\n offset.increment();\n val |= (b & 0x7f) << 7;\n if (b < 0x80) return val;\n b = buf[offset.get()];\n offset.increment();\n val |= (b & 0x7f) << 14;\n if (b < 0x80) return val;\n b = buf[offset.get()];\n offset.increment();\n val |= (b & 0x7f) << 21;\n if (b < 0x80) return val;\n b = buf[offset.get()];\n val |= (b & 0x0f) << 28;\n\n return decodeVarintRemainder(val, buf, offset);\n}\n\nfunction decodeVarintRemainder(l, buf, offset) {\n let h, b;\n b = buf[offset.get()];\n offset.increment();\n h = (b & 0x70) >> 4;\n if (b < 0x80) return h * 0x100000000 + (l >>> 0);\n b = buf[offset.get()];\n offset.increment();\n h |= (b & 0x7f) << 3;\n if (b < 0x80) return h * 0x100000000 + (l >>> 0);\n b = buf[offset.get()];\n offset.increment();\n h |= (b & 0x7f) << 10;\n if (b < 0x80) return h * 0x100000000 + (l >>> 0);\n b = buf[offset.get()];\n offset.increment();\n h |= (b & 0x7f) << 17;\n if (b < 0x80) return h * 0x100000000 + (l >>> 0);\n b = buf[offset.get()];\n offset.increment();\n h |= (b & 0x7f) << 24;\n if (b < 0x80) return h * 0x100000000 + (l >>> 0);\n b = buf[offset.get()];\n offset.increment();\n h |= (b & 0x01) << 31;\n if (b < 0x80) return h * 0x100000000 + (l >>> 0);\n\n throw new Error(\"Expected varint not more than 10 bytes\");\n}\n\nexport function decodeFastPfor(\n data: Uint8Array,\n numValues: number,\n byteLength: number,\n offset: IntWrapper,\n): Int32Array {\n throw new Error(\"FastPFor is not implemented yet.\");\n}\n\nexport function decodeZigZagInt32Value(encoded: number): number {\n return (encoded >>> 1) ^ -(encoded & 1);\n}\n\nexport function decodeZigZagInt64Value(encoded: bigint): bigint {\n return (encoded >> 1n) ^ -(encoded & 1n);\n}\n\nexport function decodeZigZagFloat64Value(encoded: number): number {\n return encoded % 2 === 1 ? (encoded + 1) / -2 : encoded / 2;\n}\n\nexport function decodeZigZagInt32(encodedData: Int32Array): void {\n for (let i = 0; i < encodedData.length; i++) {\n encodedData[i] = decodeZigZagInt32Value(encodedData[i]);\n }\n}\n\nexport function decodeZigZagInt64(encodedData: BigInt64Array): void {\n for (let i = 0; i < encodedData.length; i++) {\n encodedData[i] = decodeZigZagInt64Value(encodedData[i]);\n }\n}\n\nexport function decodeZigZagFloat64(encodedData: Float64Array): void {\n for (let i = 0; i < encodedData.length; i++) {\n encodedData[i] = decodeZigZagFloat64Value(encodedData[i]);\n }\n}\n\nexport function decodeUnsignedRleInt32(encodedData: Int32Array, numRuns: number, numTotalValues?: number): Int32Array {\n // If numTotalValues not provided, calculate from runs (nullable case)\n if (numTotalValues === undefined) {\n numTotalValues = 0;\n for (let i = 0; i < numRuns; i++) {\n numTotalValues += encodedData[i];\n }\n }\n\n const decodedValues = new Int32Array(numTotalValues);\n let offset = 0;\n for (let i = 0; i < numRuns; i++) {\n const runLength = encodedData[i];\n const value = encodedData[i + numRuns];\n decodedValues.fill(value, offset, offset + runLength);\n offset += runLength;\n }\n return decodedValues;\n}\n\nexport function decodeUnsignedRleInt64(\n encodedData: BigInt64Array,\n numRuns: number,\n numTotalValues?: number,\n): BigInt64Array {\n // If numTotalValues not provided, calculate from runs (nullable case)\n if (numTotalValues === undefined) {\n numTotalValues = 0;\n for (let i = 0; i < numRuns; i++) {\n numTotalValues += Number(encodedData[i]);\n }\n }\n\n const decodedValues = new BigInt64Array(numTotalValues);\n let offset = 0;\n for (let i = 0; i < numRuns; i++) {\n const runLength = Number(encodedData[i]);\n const value = encodedData[i + numRuns];\n decodedValues.fill(value, offset, offset + runLength);\n offset += runLength;\n }\n return decodedValues;\n}\n\nexport function decodeUnsignedRleFloat64(\n encodedData: Float64Array,\n numRuns: number,\n numTotalValues: number,\n): Float64Array {\n const decodedValues = new Float64Array(numTotalValues);\n let offset = 0;\n for (let i = 0; i < numRuns; i++) {\n const runLength = encodedData[i];\n const value = encodedData[i + numRuns];\n decodedValues.fill(value, offset, offset + runLength);\n offset += runLength;\n }\n return decodedValues;\n}\n\n/*\n * In place decoding of the zigzag encoded delta values.\n * Inspired by https://github.com/lemire/JavaFastPFOR/blob/master/src/main/java/me/lemire/integercompression/differential/Delta.java\n */\nexport function decodeZigZagDeltaInt32(data: Int32Array) {\n data[0] = decodeZigZagInt32Value(data[0]);\n const sz0 = (data.length / 4) * 4;\n let i = 1;\n if (sz0 >= 4) {\n for (; i < sz0 - 4; i += 4) {\n const data1 = data[i];\n const data2 = data[i + 1];\n const data3 = data[i + 2];\n const data4 = data[i + 3];\n\n data[i] = decodeZigZagInt32Value(data1) + data[i - 1];\n data[i + 1] = decodeZigZagInt32Value(data2) + data[i];\n data[i + 2] = decodeZigZagInt32Value(data3) + data[i + 1];\n data[i + 3] = decodeZigZagInt32Value(data4) + data[i + 2];\n }\n }\n\n for (; i != data.length; ++i) {\n data[i] = decodeZigZagInt32Value(data[i]) + data[i - 1];\n }\n}\n\nexport function decodeZigZagDeltaInt64(data: BigInt64Array) {\n data[0] = decodeZigZagInt64Value(data[0]);\n const sz0 = (data.length / 4) * 4;\n let i = 1;\n if (sz0 >= 4) {\n for (; i < sz0 - 4; i += 4) {\n const data1 = data[i];\n const data2 = data[i + 1];\n const data3 = data[i + 2];\n const data4 = data[i + 3];\n\n data[i] = decodeZigZagInt64Value(data1) + data[i - 1];\n data[i + 1] = decodeZigZagInt64Value(data2) + data[i];\n data[i + 2] = decodeZigZagInt64Value(data3) + data[i + 1];\n data[i + 3] = decodeZigZagInt64Value(data4) + data[i + 2];\n }\n }\n\n for (; i != data.length; ++i) {\n data[i] = decodeZigZagInt64Value(data[i]) + data[i - 1];\n }\n}\n\nexport function decodeZigZagDeltaFloat64(data: Float64Array) {\n data[0] = decodeZigZagFloat64Value(data[0]);\n const sz0 = (data.length / 4) * 4;\n let i = 1;\n if (sz0 >= 4) {\n for (; i < sz0 - 4; i += 4) {\n const data1 = data[i];\n const data2 = data[i + 1];\n const data3 = data[i + 2];\n const data4 = data[i + 3];\n\n data[i] = decodeZigZagFloat64Value(data1) + data[i - 1];\n data[i + 1] = decodeZigZagFloat64Value(data2) + data[i];\n data[i + 2] = decodeZigZagFloat64Value(data3) + data[i + 1];\n data[i + 3] = decodeZigZagFloat64Value(data4) + data[i + 2];\n }\n }\n\n for (; i != data.length; ++i) {\n data[i] = decodeZigZagFloat64Value(data[i]) + data[i - 1];\n }\n}\n\nexport function decodeZigZagRleInt32(data: Int32Array, numRuns: number, numTotalValues?: number): Int32Array {\n // If numTotalValues not provided, calculate from runs (nullable case)\n if (numTotalValues === undefined) {\n numTotalValues = 0;\n for (let i = 0; i < numRuns; i++) {\n numTotalValues += data[i];\n }\n }\n\n const decodedValues = new Int32Array(numTotalValues);\n let offset = 0;\n for (let i = 0; i < numRuns; i++) {\n const runLength = data[i];\n let value = data[i + numRuns];\n value = decodeZigZagInt32Value(value);\n decodedValues.fill(value, offset, offset + runLength);\n offset += runLength;\n }\n return decodedValues;\n}\n\nexport function decodeZigZagRleInt64(data: BigInt64Array, numRuns: number, numTotalValues?: number): BigInt64Array {\n // If numTotalValues not provided, calculate from runs (nullable case)\n if (numTotalValues === undefined) {\n numTotalValues = 0;\n for (let i = 0; i < numRuns; i++) {\n numTotalValues += Number(data[i]);\n }\n }\n\n const decodedValues = new BigInt64Array(numTotalValues);\n let offset = 0;\n for (let i = 0; i < numRuns; i++) {\n const runLength = Number(data[i]);\n let value = data[i + numRuns];\n value = decodeZigZagInt64Value(value);\n decodedValues.fill(value, offset, offset + runLength);\n offset += runLength;\n }\n return decodedValues;\n}\n\nexport function decodeZigZagRleFloat64(data: Float64Array, numRuns: number, numTotalValues: number): Float64Array {\n const decodedValues = new Float64Array(numTotalValues);\n let offset = 0;\n for (let i = 0; i < numRuns; i++) {\n const runLength = data[i];\n let value = data[i + numRuns];\n value = decodeZigZagFloat64Value(value);\n decodedValues.fill(value, offset, offset + runLength);\n offset += runLength;\n }\n return decodedValues;\n}\n\n/*\n * Inspired by https://github.com/lemire/JavaFastPFOR/blob/master/src/main/java/me/lemire/integercompression/differential/Delta.java\n */\nexport function fastInverseDelta(data: Uint32Array | Int32Array) {\n const sz0 = (data.length / 4) * 4;\n let i = 1;\n if (sz0 >= 4) {\n for (let a = data[0]; i < sz0 - 4; i += 4) {\n a = data[i] += a;\n a = data[i + 1] += a;\n a = data[i + 2] += a;\n a = data[i + 3] += a;\n }\n }\n\n while (i != data.length) {\n data[i] += data[i - 1];\n ++i;\n }\n}\n\nexport function inverseDelta(data: Int32Array) {\n let prevValue = 0;\n for (let i = 0; i < data.length; i++) {\n data[i] += prevValue;\n prevValue = data[i];\n }\n}\n\n/*\n * In place decoding of the zigzag delta encoded Vec2.\n * Inspired by https://github.com/lemire/JavaFastPFOR/blob/master/src/main/java/me/lemire/integercompression/differential/Delta.java\n */\nexport function decodeComponentwiseDeltaVec2(data: Int32Array): void {\n if (data.length < 2) return;\n data[0] = decodeZigZagInt32Value(data[0]);\n data[1] = decodeZigZagInt32Value(data[1]);\n const sz0 = (data.length / 4) * 4;\n let i = 2;\n if (sz0 >= 4) {\n for (; i < sz0 - 4; i += 4) {\n const x1 = data[i];\n const y1 = data[i + 1];\n const x2 = data[i + 2];\n const y2 = data[i + 3];\n\n data[i] = decodeZigZagInt32Value(x1) + data[i - 2];\n data[i + 1] = decodeZigZagInt32Value(y1) + data[i - 1];\n data[i + 2] = decodeZigZagInt32Value(x2) + data[i];\n data[i + 3] = decodeZigZagInt32Value(y2) + data[i + 1];\n }\n }\n\n for (; i != data.length; i += 2) {\n data[i] = decodeZigZagInt32Value(data[i]) + data[i - 2];\n data[i + 1] = decodeZigZagInt32Value(data[i + 1]) + data[i - 1];\n }\n}\n\nexport function decodeComponentwiseDeltaVec2Scaled(data: Int32Array, scale: number, min: number, max: number): void {\n if (data.length < 2) return;\n let previousVertexX = decodeZigZagInt32Value(data[0]);\n let previousVertexY = decodeZigZagInt32Value(data[1]);\n data[0] = clamp(Math.round(previousVertexX * scale), min, max);\n data[1] = clamp(Math.round(previousVertexY * scale), min, max);\n const sz0 = data.length / 16;\n let i = 2;\n if (sz0 >= 4) {\n for (; i < sz0 - 4; i += 4) {\n const x1 = data[i];\n const y1 = data[i + 1];\n const currentVertexX = decodeZigZagInt32Value(x1) + previousVertexX;\n const currentVertexY = decodeZigZagInt32Value(y1) + previousVertexY;\n data[i] = clamp(Math.round(currentVertexX * scale), min, max);\n data[i + 1] = clamp(Math.round(currentVertexY * scale), min, max);\n\n const x2 = data[i + 2];\n const y2 = data[i + 3];\n previousVertexX = decodeZigZagInt32Value(x2) + currentVertexX;\n previousVertexY = decodeZigZagInt32Value(y2) + currentVertexY;\n data[i + 2] = clamp(Math.round(previousVertexX * scale), min, max);\n data[i + 3] = clamp(Math.round(previousVertexY * scale), min, max);\n }\n }\n\n for (; i != data.length; i += 2) {\n previousVertexX += decodeZigZagInt32Value(data[i]);\n previousVertexY += decodeZigZagInt32Value(data[i + 1]);\n data[i] = clamp(Math.round(previousVertexX * scale), min, max);\n data[i + 1] = clamp(Math.round(previousVertexY * scale), min, max);\n }\n}\n\nfunction clamp(n: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, n));\n}\n\n/* Transform data to allow util access ------------------------------------------------------------------------ */\n\nexport function decodeZigZagDeltaOfDeltaInt32(data: Int32Array): Uint32Array {\n const decodedData = new Int32Array(data.length + 1);\n decodedData[0] = 0;\n decodedData[1] = decodeZigZagInt32Value(data[0]);\n let deltaSum = decodedData[1];\n for (let i = 2; i != decodedData.length; ++i) {\n const zigZagValue = data[i - 1];\n const delta = decodeZigZagInt32Value(zigZagValue);\n deltaSum += delta;\n decodedData[i] = decodedData[i - 1] + deltaSum;\n }\n\n return new Uint32Array(decodedData);\n}\n\nexport function decodeZigZagRleDeltaInt32(data: Int32Array, numRuns: number, numTotalValues: number): Uint32Array {\n const decodedValues = new Int32Array(numTotalValues + 1);\n decodedValues[0] = 0;\n let offset = 1;\n let previousValue = decodedValues[0];\n for (let i = 0; i < numRuns; i++) {\n const runLength = data[i];\n let value = data[i + numRuns];\n value = decodeZigZagInt32Value(value);\n for (let j = offset; j < offset + runLength; j++) {\n decodedValues[j] = value + previousValue;\n previousValue = decodedValues[j];\n }\n\n offset += runLength;\n }\n return new Uint32Array(decodedValues);\n}\n\nexport function decodeRleDeltaInt32(data: Int32Array, numRuns: number, numTotalValues: number): Uint32Array {\n const decodedValues = new Int32Array(numTotalValues + 1);\n decodedValues[0] = 0;\n let offset = 1;\n let previousValue = decodedValues[0];\n for (let i = 0; i < numRuns; i++) {\n const runLength = data[i];\n const value = data[i + numRuns];\n for (let j = offset; j < offset + runLength; j++) {\n decodedValues[j] = value + previousValue;\n previousValue = decodedValues[j];\n }\n\n offset += runLength;\n }\n\n return new Uint32Array(decodedValues);\n}\n\n/**\n * Decode Delta-RLE with multiple runs by fully reconstructing values.\n *\n * @param data RLE encoded data: [run1, run2, ..., value1, value2, ...]\n * @param numRuns Number of runs in the RLE encoding\n * @param numValues Total number of values to reconstruct\n * @returns Reconstructed values with deltas applied\n */\nexport function decodeDeltaRleInt32(data: Int32Array, numRuns: number, numValues: number): Int32Array {\n const result = new Int32Array(numValues);\n let outPos = 0;\n let previousValue = 0;\n\n for (let i = 0; i < numRuns; i++) {\n const runLength = data[i];\n const zigZagDelta = data[i + numRuns];\n const delta = decodeZigZagInt32Value(zigZagDelta);\n\n for (let j = 0; j < runLength; j++) {\n previousValue += delta;\n result[outPos++] = previousValue;\n }\n }\n\n return result;\n}\n\n/**\n * Decode Delta-RLE with multiple runs for 64-bit integers.\n */\nexport function decodeDeltaRleInt64(data: BigInt64Array, numRuns: number, numValues: number): BigInt64Array {\n const result = new BigInt64Array(numValues);\n let outPos = 0;\n let previousValue = 0n;\n\n for (let i = 0; i < numRuns; i++) {\n const runLength = Number(data[i]);\n const zigZagDelta = data[i + numRuns];\n const delta = decodeZigZagInt64Value(zigZagDelta);\n\n for (let j = 0; j < runLength; j++) {\n previousValue += delta;\n result[outPos++] = previousValue;\n }\n }\n\n return result;\n}\n\nexport function decodeUnsignedConstRleInt32(data: Int32Array): number {\n return data[1];\n}\n\nexport function decodeZigZagConstRleInt32(data: Int32Array): number {\n return decodeZigZagInt32Value(data[1]);\n}\n\nexport function decodeZigZagSequenceRleInt32(data: Int32Array): [baseValue: number, delta: number] {\n /* base value and delta value are equal */\n if (data.length == 2) {\n const value = decodeZigZagInt32Value(data[1]);\n return [value, value];\n }\n\n /* base value and delta value are not equal -> 2 runs and 2 values*/\n const base = decodeZigZagInt32Value(data[2]);\n const delta = decodeZigZagInt32Value(data[3]);\n return [base, delta];\n}\n\nexport function decodeUnsignedConstRleInt64(data: BigInt64Array): bigint {\n return data[1];\n}\n\nexport function decodeZigZagConstRleInt64(data: BigInt64Array): bigint {\n return decodeZigZagInt64Value(data[1]);\n}\n\nexport function decodeZigZagSequenceRleInt64(data: BigInt64Array): [baseValue: bigint, delta: bigint] {\n /* base value and delta value are equal */\n if (data.length == 2) {\n const value = decodeZigZagInt64Value(data[1]);\n return [value, value];\n }\n\n /* base value and delta value are not equal -> 2 runs and 2 values*/\n const base = decodeZigZagInt64Value(data[2]);\n const delta = decodeZigZagInt64Value(data[3]);\n return [base, delta];\n}\n"]}
1
+ {"version":3,"file":"integerDecodingUtils.js","sourceRoot":"","sources":["../../src/decoding/integerDecodingUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import type IntWrapper from \"./intWrapper\";\nimport {\n createFastPforWireDecodeWorkspace,\n decodeFastPforInt32,\n ensureFastPforWireEncodedWordsCapacity,\n type FastPforWireDecodeWorkspace,\n} from \"./fastPforDecoder\";\nimport { decodeBigEndianInt32sInto } from \"./bigEndianDecode\";\nexport type { FastPforWireDecodeWorkspace } from \"./fastPforDecoder\";\nexport { createFastPforWireDecodeWorkspace } from \"./fastPforDecoder\";\n\n//based on https://github.com/mapbox/pbf/blob/main/index.js\nexport function decodeVarintInt32(buf: Uint8Array, bufferOffset: IntWrapper, numValues: number): Int32Array {\n const dst = new Int32Array(numValues);\n let dstOffset = 0;\n let offset = bufferOffset.get();\n for (let i = 0; i < dst.length; i++) {\n let b = buf[offset++];\n let val = b & 0x7f;\n if (b < 0x80) {\n dst[dstOffset++] = val;\n continue;\n }\n\n b = buf[offset++];\n val |= (b & 0x7f) << 7;\n if (b < 0x80) {\n dst[dstOffset++] = val;\n continue;\n }\n\n b = buf[offset++];\n val |= (b & 0x7f) << 14;\n if (b < 0x80) {\n dst[dstOffset++] = val;\n continue;\n }\n\n b = buf[offset++];\n val |= (b & 0x7f) << 21;\n if (b < 0x80) {\n dst[dstOffset++] = val;\n continue;\n }\n\n b = buf[offset++];\n val |= (b & 0x0f) << 28;\n dst[dstOffset++] = val;\n }\n\n bufferOffset.set(offset);\n return dst;\n}\n\nexport function decodeVarintInt64(src: Uint8Array, offset: IntWrapper, numValues: number): BigUint64Array {\n const dst = new BigUint64Array(numValues);\n for (let i = 0; i < dst.length; i++) {\n dst[i] = decodeVarintInt64Value(src, offset);\n }\n return dst;\n}\n\n// Source: https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/util/VarInt.java\nfunction decodeVarintInt64Value(bytes: Uint8Array, pos: IntWrapper): bigint {\n let value = 0n;\n let shift = 0;\n let index = pos.get();\n while (index < bytes.length) {\n const b = bytes[index++];\n value |= BigInt(b & 0x7f) << BigInt(shift);\n if ((b & 0x80) === 0) {\n break;\n }\n shift += 7;\n if (shift >= 64) {\n throw new Error(\"Varint too long\");\n }\n }\n pos.set(index);\n return value;\n}\n\n/*\n * Since decoding Int64 values to BigInt is more than an order of magnitude slower in the tests then using a Float64,\n * this decoding method limits the max size of a Long value to 53 bits\n */\nexport function decodeVarintFloat64(src: Uint8Array, offset: IntWrapper, numValues: number): Float64Array {\n const dst = new Float64Array(numValues);\n for (let i = 0; i < numValues; i++) {\n dst[i] = decodeVarintFloat64Value(src, offset);\n }\n return dst;\n}\n\n//based on https://github.com/mapbox/pbf/blob/main/index.js\nfunction decodeVarintFloat64Value(buf: Uint8Array, offset: IntWrapper): number {\n let val;\n let b;\n b = buf[offset.get()];\n offset.increment();\n val = b & 0x7f;\n if (b < 0x80) return val;\n b = buf[offset.get()];\n offset.increment();\n val |= (b & 0x7f) << 7;\n if (b < 0x80) return val;\n b = buf[offset.get()];\n offset.increment();\n val |= (b & 0x7f) << 14;\n if (b < 0x80) return val;\n b = buf[offset.get()];\n offset.increment();\n val |= (b & 0x7f) << 21;\n if (b < 0x80) return val;\n b = buf[offset.get()];\n val |= (b & 0x0f) << 28;\n\n return decodeVarintRemainder(val, buf, offset);\n}\n\nfunction decodeVarintRemainder(l, buf, offset) {\n let h;\n let b;\n b = buf[offset.get()];\n offset.increment();\n h = (b & 0x70) >> 4;\n if (b < 0x80) return h * 0x100000000 + (l >>> 0);\n b = buf[offset.get()];\n offset.increment();\n h |= (b & 0x7f) << 3;\n if (b < 0x80) return h * 0x100000000 + (l >>> 0);\n b = buf[offset.get()];\n offset.increment();\n h |= (b & 0x7f) << 10;\n if (b < 0x80) return h * 0x100000000 + (l >>> 0);\n b = buf[offset.get()];\n offset.increment();\n h |= (b & 0x7f) << 17;\n if (b < 0x80) return h * 0x100000000 + (l >>> 0);\n b = buf[offset.get()];\n offset.increment();\n h |= (b & 0x7f) << 24;\n if (b < 0x80) return h * 0x100000000 + (l >>> 0);\n b = buf[offset.get()];\n offset.increment();\n h |= (b & 0x01) << 31;\n if (b < 0x80) return h * 0x100000000 + (l >>> 0);\n\n throw new Error(\"Expected varint not more than 10 bytes\");\n}\n\nexport function decodeFastPfor(\n encodedBytes: Uint8Array,\n expectedValueCount: number,\n encodedByteLength: number,\n offset: IntWrapper,\n): Int32Array {\n const workspace = createFastPforWireDecodeWorkspace(encodedByteLength >>> 2);\n return decodeFastPforWithWorkspace(encodedBytes, expectedValueCount, encodedByteLength, offset, workspace);\n}\n\nexport function decodeFastPforWithWorkspace(\n encodedBytes: Uint8Array,\n expectedValueCount: number,\n encodedByteLength: number,\n offset: IntWrapper,\n workspace: FastPforWireDecodeWorkspace,\n): Int32Array {\n const inputByteOffset = offset.get();\n if ((encodedByteLength & 3) !== 0) {\n throw new Error(\n `FastPFOR: invalid encodedByteLength=${encodedByteLength} at offset=${inputByteOffset} (encodedBytes.length=${encodedBytes.length}; expected a multiple of 4 bytes for an int32 big-endian word stream)`,\n );\n }\n\n const encodedWordCount = encodedByteLength >>> 2;\n const encodedWordBuffer = ensureFastPforWireEncodedWordsCapacity(workspace, encodedWordCount);\n decodeBigEndianInt32sInto(encodedBytes, inputByteOffset, encodedByteLength, encodedWordBuffer);\n\n const decodedValues = decodeFastPforInt32(\n encodedWordBuffer.subarray(0, encodedWordCount),\n expectedValueCount,\n workspace.decoderWorkspace,\n );\n offset.add(encodedByteLength);\n return decodedValues;\n}\n\nexport function decodeZigZagInt32Value(encoded: number): number {\n return (encoded >>> 1) ^ -(encoded & 1);\n}\n\nexport function decodeZigZagInt64Value(encoded: bigint): bigint {\n return (encoded >> 1n) ^ -(encoded & 1n);\n}\n\nexport function decodeZigZagFloat64Value(encoded: number): number {\n return encoded % 2 === 1 ? (encoded + 1) / -2 : encoded / 2;\n}\n\nexport function decodeZigZagInt32(encodedData: Int32Array): void {\n for (let i = 0; i < encodedData.length; i++) {\n encodedData[i] = decodeZigZagInt32Value(encodedData[i]);\n }\n}\n\nexport function decodeZigZagInt64(encodedData: BigUint64Array): BigInt64Array {\n const decodedValues = new BigInt64Array(encodedData.length);\n for (let i = 0; i < encodedData.length; i++) {\n decodedValues[i] = decodeZigZagInt64Value(encodedData[i]);\n }\n return decodedValues;\n}\n\nexport function decodeZigZagFloat64(encodedData: Float64Array): void {\n for (let i = 0; i < encodedData.length; i++) {\n encodedData[i] = decodeZigZagFloat64Value(encodedData[i]);\n }\n}\n\nexport function decodeUnsignedRleInt32(encodedData: Int32Array, numRuns: number, numTotalValues?: number): Int32Array {\n // If numTotalValues not provided, calculate from runs (nullable case)\n if (numTotalValues === undefined) {\n numTotalValues = 0;\n for (let i = 0; i < numRuns; i++) {\n numTotalValues += encodedData[i];\n }\n }\n\n const decodedValues = new Int32Array(numTotalValues);\n let offset = 0;\n for (let i = 0; i < numRuns; i++) {\n const runLength = encodedData[i];\n const value = encodedData[i + numRuns];\n decodedValues.fill(value, offset, offset + runLength);\n offset += runLength;\n }\n return decodedValues;\n}\n\nexport function decodeUnsignedRleInt64(\n encodedData: BigUint64Array,\n numRuns: number,\n numTotalValues?: number,\n): BigUint64Array {\n // If numTotalValues not provided, calculate from runs (nullable case)\n if (numTotalValues === undefined) {\n numTotalValues = 0;\n for (let i = 0; i < numRuns; i++) {\n numTotalValues += Number(encodedData[i]);\n }\n }\n\n const decodedValues = new BigUint64Array(numTotalValues);\n let offset = 0;\n for (let i = 0; i < numRuns; i++) {\n const runLength = Number(encodedData[i]);\n const value = encodedData[i + numRuns];\n decodedValues.fill(value, offset, offset + runLength);\n offset += runLength;\n }\n return decodedValues;\n}\n\nexport function decodeUnsignedRleFloat64(\n encodedData: Float64Array,\n numRuns: number,\n numTotalValues: number,\n): Float64Array {\n const decodedValues = new Float64Array(numTotalValues);\n let offset = 0;\n for (let i = 0; i < numRuns; i++) {\n const runLength = encodedData[i];\n const value = encodedData[i + numRuns];\n decodedValues.fill(value, offset, offset + runLength);\n offset += runLength;\n }\n return decodedValues;\n}\n\n/*\n * In place decoding of the zigzag encoded delta values.\n * Inspired by https://github.com/lemire/JavaFastPFOR/blob/master/src/main/java/me/lemire/integercompression/differential/Delta.java\n */\nexport function decodeZigZagDeltaInt32(data: Int32Array) {\n data[0] = decodeZigZagInt32Value(data[0]);\n const sz0 = (data.length / 4) * 4;\n let i = 1;\n if (sz0 >= 4) {\n for (; i < sz0 - 4; i += 4) {\n const data1 = data[i];\n const data2 = data[i + 1];\n const data3 = data[i + 2];\n const data4 = data[i + 3];\n\n data[i] = decodeZigZagInt32Value(data1) + data[i - 1];\n data[i + 1] = decodeZigZagInt32Value(data2) + data[i];\n data[i + 2] = decodeZigZagInt32Value(data3) + data[i + 1];\n data[i + 3] = decodeZigZagInt32Value(data4) + data[i + 2];\n }\n }\n\n for (; i !== data.length; ++i) {\n data[i] = decodeZigZagInt32Value(data[i]) + data[i - 1];\n }\n}\n\nexport function decodeZigZagDeltaInt64(data: BigInt64Array | BigUint64Array): BigInt64Array {\n const decodedValues = new BigInt64Array(data.length);\n decodedValues[0] = decodeZigZagInt64Value(data[0]);\n const sz0 = (data.length / 4) * 4;\n let i = 1;\n if (sz0 >= 4) {\n for (; i < sz0 - 4; i += 4) {\n const data1 = data[i];\n const data2 = data[i + 1];\n const data3 = data[i + 2];\n const data4 = data[i + 3];\n\n decodedValues[i] = decodeZigZagInt64Value(data1) + decodedValues[i - 1];\n decodedValues[i + 1] = decodeZigZagInt64Value(data2) + decodedValues[i];\n decodedValues[i + 2] = decodeZigZagInt64Value(data3) + decodedValues[i + 1];\n decodedValues[i + 3] = decodeZigZagInt64Value(data4) + decodedValues[i + 2];\n }\n }\n\n for (; i !== decodedValues.length; ++i) {\n decodedValues[i] = decodeZigZagInt64Value(data[i]) + decodedValues[i - 1];\n }\n return decodedValues;\n}\n\nexport function decodeZigZagDeltaFloat64(data: Float64Array) {\n data[0] = decodeZigZagFloat64Value(data[0]);\n const sz0 = (data.length / 4) * 4;\n let i = 1;\n if (sz0 >= 4) {\n for (; i < sz0 - 4; i += 4) {\n const data1 = data[i];\n const data2 = data[i + 1];\n const data3 = data[i + 2];\n const data4 = data[i + 3];\n\n data[i] = decodeZigZagFloat64Value(data1) + data[i - 1];\n data[i + 1] = decodeZigZagFloat64Value(data2) + data[i];\n data[i + 2] = decodeZigZagFloat64Value(data3) + data[i + 1];\n data[i + 3] = decodeZigZagFloat64Value(data4) + data[i + 2];\n }\n }\n\n for (; i !== data.length; ++i) {\n data[i] = decodeZigZagFloat64Value(data[i]) + data[i - 1];\n }\n}\n\nexport function decodeZigZagRleInt32(data: Int32Array, numRuns: number, numTotalValues?: number): Int32Array {\n // If numTotalValues not provided, calculate from runs (nullable case)\n if (numTotalValues === undefined) {\n numTotalValues = 0;\n for (let i = 0; i < numRuns; i++) {\n numTotalValues += data[i];\n }\n }\n\n const decodedValues = new Int32Array(numTotalValues);\n let offset = 0;\n for (let i = 0; i < numRuns; i++) {\n const runLength = data[i];\n let value = data[i + numRuns];\n value = decodeZigZagInt32Value(value);\n decodedValues.fill(value, offset, offset + runLength);\n offset += runLength;\n }\n return decodedValues;\n}\n\nexport function decodeZigZagRleInt64(data: BigUint64Array, numRuns: number, numTotalValues?: number): BigInt64Array {\n // If numTotalValues not provided, calculate from runs (nullable case)\n if (numTotalValues === undefined) {\n numTotalValues = 0;\n for (let i = 0; i < numRuns; i++) {\n numTotalValues += Number(data[i]);\n }\n }\n\n const decodedValues = new BigInt64Array(numTotalValues);\n let offset = 0;\n for (let i = 0; i < numRuns; i++) {\n const runLength = Number(data[i]);\n let value = data[i + numRuns];\n value = decodeZigZagInt64Value(value);\n decodedValues.fill(value, offset, offset + runLength);\n offset += runLength;\n }\n return decodedValues;\n}\n\nexport function decodeZigZagRleFloat64(data: Float64Array, numRuns: number, numTotalValues: number): Float64Array {\n const decodedValues = new Float64Array(numTotalValues);\n let offset = 0;\n for (let i = 0; i < numRuns; i++) {\n const runLength = data[i];\n let value = data[i + numRuns];\n value = decodeZigZagFloat64Value(value);\n decodedValues.fill(value, offset, offset + runLength);\n offset += runLength;\n }\n return decodedValues;\n}\n\n/*\n * Inspired by https://github.com/lemire/JavaFastPFOR/blob/master/src/main/java/me/lemire/integercompression/differential/Delta.java\n */\nexport function fastInverseDelta(data: Uint32Array | Int32Array) {\n const sz0 = (data.length / 4) * 4;\n let i = 1;\n if (sz0 >= 4) {\n for (let a = data[0]; i < sz0 - 4; i += 4) {\n a = data[i] += a;\n a = data[i + 1] += a;\n a = data[i + 2] += a;\n a = data[i + 3] += a;\n }\n }\n\n while (i !== data.length) {\n data[i] += data[i - 1];\n ++i;\n }\n}\n\nexport function inverseDelta(data: Int32Array) {\n let prevValue = 0;\n for (let i = 0; i < data.length; i++) {\n data[i] += prevValue;\n prevValue = data[i];\n }\n}\n\n/*\n * In place decoding of the zigzag delta encoded Vec2.\n * Inspired by https://github.com/lemire/JavaFastPFOR/blob/master/src/main/java/me/lemire/integercompression/differential/Delta.java\n */\nexport function decodeComponentwiseDeltaVec2(data: Int32Array): void {\n if (data.length < 2) return;\n data[0] = decodeZigZagInt32Value(data[0]);\n data[1] = decodeZigZagInt32Value(data[1]);\n const sz0 = (data.length / 4) * 4;\n let i = 2;\n if (sz0 >= 4) {\n for (; i < sz0 - 4; i += 4) {\n const x1 = data[i];\n const y1 = data[i + 1];\n const x2 = data[i + 2];\n const y2 = data[i + 3];\n\n data[i] = decodeZigZagInt32Value(x1) + data[i - 2];\n data[i + 1] = decodeZigZagInt32Value(y1) + data[i - 1];\n data[i + 2] = decodeZigZagInt32Value(x2) + data[i];\n data[i + 3] = decodeZigZagInt32Value(y2) + data[i + 1];\n }\n }\n\n for (; i !== data.length; i += 2) {\n data[i] = decodeZigZagInt32Value(data[i]) + data[i - 2];\n data[i + 1] = decodeZigZagInt32Value(data[i + 1]) + data[i - 1];\n }\n}\n\nexport function decodeComponentwiseDeltaVec2Scaled(data: Int32Array, scale: number, min: number, max: number): void {\n if (data.length < 2) return;\n let previousVertexX = decodeZigZagInt32Value(data[0]);\n let previousVertexY = decodeZigZagInt32Value(data[1]);\n data[0] = clamp(Math.round(previousVertexX * scale), min, max);\n data[1] = clamp(Math.round(previousVertexY * scale), min, max);\n const sz0 = data.length / 16;\n let i = 2;\n if (sz0 >= 4) {\n for (; i < sz0 - 4; i += 4) {\n const x1 = data[i];\n const y1 = data[i + 1];\n const currentVertexX = decodeZigZagInt32Value(x1) + previousVertexX;\n const currentVertexY = decodeZigZagInt32Value(y1) + previousVertexY;\n data[i] = clamp(Math.round(currentVertexX * scale), min, max);\n data[i + 1] = clamp(Math.round(currentVertexY * scale), min, max);\n\n const x2 = data[i + 2];\n const y2 = data[i + 3];\n previousVertexX = decodeZigZagInt32Value(x2) + currentVertexX;\n previousVertexY = decodeZigZagInt32Value(y2) + currentVertexY;\n data[i + 2] = clamp(Math.round(previousVertexX * scale), min, max);\n data[i + 3] = clamp(Math.round(previousVertexY * scale), min, max);\n }\n }\n\n for (; i !== data.length; i += 2) {\n previousVertexX += decodeZigZagInt32Value(data[i]);\n previousVertexY += decodeZigZagInt32Value(data[i + 1]);\n data[i] = clamp(Math.round(previousVertexX * scale), min, max);\n data[i + 1] = clamp(Math.round(previousVertexY * scale), min, max);\n }\n}\n\nfunction clamp(n: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, n));\n}\n\n/* Transform data to allow util access ------------------------------------------------------------------------ */\n\nexport function decodeZigZagDeltaOfDeltaInt32(data: Int32Array): Uint32Array {\n const decodedData = new Int32Array(data.length + 1);\n decodedData[0] = 0;\n decodedData[1] = decodeZigZagInt32Value(data[0]);\n let deltaSum = decodedData[1];\n for (let i = 2; i !== decodedData.length; ++i) {\n const zigZagValue = data[i - 1];\n const delta = decodeZigZagInt32Value(zigZagValue);\n deltaSum += delta;\n decodedData[i] = decodedData[i - 1] + deltaSum;\n }\n\n return new Uint32Array(decodedData);\n}\n\nexport function decodeZigZagRleDeltaInt32(data: Int32Array, numRuns: number, numTotalValues: number): Uint32Array {\n const decodedValues = new Int32Array(numTotalValues + 1);\n decodedValues[0] = 0;\n let offset = 1;\n let previousValue = decodedValues[0];\n for (let i = 0; i < numRuns; i++) {\n const runLength = data[i];\n let value = data[i + numRuns];\n value = decodeZigZagInt32Value(value);\n for (let j = offset; j < offset + runLength; j++) {\n decodedValues[j] = value + previousValue;\n previousValue = decodedValues[j];\n }\n\n offset += runLength;\n }\n return new Uint32Array(decodedValues);\n}\n\nexport function decodeRleDeltaInt32(data: Int32Array, numRuns: number, numTotalValues: number): Uint32Array {\n const decodedValues = new Int32Array(numTotalValues + 1);\n decodedValues[0] = 0;\n let offset = 1;\n let previousValue = decodedValues[0];\n for (let i = 0; i < numRuns; i++) {\n const runLength = data[i];\n const value = data[i + numRuns];\n for (let j = offset; j < offset + runLength; j++) {\n decodedValues[j] = value + previousValue;\n previousValue = decodedValues[j];\n }\n\n offset += runLength;\n }\n\n return new Uint32Array(decodedValues);\n}\n\n/**\n * Decode Delta-RLE with multiple runs by fully reconstructing values.\n *\n * @param data RLE encoded data: [run1, run2, ..., value1, value2, ...]\n * @param numRuns Number of runs in the RLE encoding\n * @param numValues Total number of values to reconstruct\n * @returns Reconstructed values with deltas applied\n */\nexport function decodeDeltaRleInt32(data: Int32Array, numRuns: number, numValues: number): Int32Array {\n const result = new Int32Array(numValues);\n let outPos = 0;\n let previousValue = 0;\n\n for (let i = 0; i < numRuns; i++) {\n const runLength = data[i];\n const zigZagDelta = data[i + numRuns];\n const delta = decodeZigZagInt32Value(zigZagDelta);\n\n for (let j = 0; j < runLength; j++) {\n previousValue += delta;\n result[outPos++] = previousValue;\n }\n }\n\n return result;\n}\n\n/**\n * Decode Delta-RLE with multiple runs for 64-bit integers.\n */\nexport function decodeDeltaRleInt64(data: BigUint64Array, numRuns: number, numValues: number): BigInt64Array {\n const result = new BigInt64Array(numValues);\n let outPos = 0;\n let previousValue = 0n;\n\n for (let i = 0; i < numRuns; i++) {\n const runLength = Number(data[i]);\n const zigZagDelta = data[i + numRuns];\n const delta = decodeZigZagInt64Value(zigZagDelta);\n\n for (let j = 0; j < runLength; j++) {\n previousValue += delta;\n result[outPos++] = previousValue;\n }\n }\n\n return result;\n}\n\nexport function decodeUnsignedConstRleInt32(data: Int32Array): number {\n return data[1];\n}\n\nexport function decodeZigZagConstRleInt32(data: Int32Array): number {\n return decodeZigZagInt32Value(data[1]);\n}\n\nexport function decodeZigZagSequenceRleInt32(data: Int32Array): [baseValue: number, delta: number] {\n /* base value and delta value are equal */\n if (data.length === 2) {\n const value = decodeZigZagInt32Value(data[1]);\n return [value, value];\n }\n\n /* base value and delta value are not equal -> 2 runs and 2 values*/\n const base = decodeZigZagInt32Value(data[2]);\n const delta = decodeZigZagInt32Value(data[3]);\n return [base, delta];\n}\n\nexport function decodeUnsignedConstRleInt64(data: BigInt64Array | BigUint64Array): bigint {\n return data[1];\n}\n\nexport function decodeZigZagConstRleInt64(data: BigInt64Array | BigUint64Array): bigint {\n return decodeZigZagInt64Value(data[1]);\n}\n\nexport function decodeZigZagSequenceRleInt64(data: BigInt64Array | BigUint64Array): [baseValue: bigint, delta: bigint] {\n /* base value and delta value are equal */\n if (data.length === 2) {\n const value = decodeZigZagInt64Value(data[1]);\n return [value, value];\n }\n\n /* base value and delta value are not equal -> 2 runs and 2 values*/\n const base = decodeZigZagInt64Value(data[2]);\n const delta = decodeZigZagInt64Value(data[3]);\n return [base, delta];\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type IntWrapper from "./intWrapper";
2
- import { type StreamMetadata } from "../metadata/tile/streamMetadataDecoder";
2
+ import type { StreamMetadata } from "../metadata/tile/streamMetadataDecoder";
3
3
  import BitVector from "../vector/flat/bitVector";
4
4
  import { VectorType } from "../vector/vectorType";
5
5
  import type GeometryScaling from "./geometryScaling";
@@ -112,6 +112,7 @@ function decodeInt32(values, streamMetadata, isSigned, scalingData, nullabilityB
112
112
  return values;
113
113
  }
114
114
  function decodeInt64(values, streamMetadata, isSigned, nullabilityBuffer) {
115
+ let decodedValues;
115
116
  switch (streamMetadata.logicalLevelTechnique1) {
116
117
  case LogicalLevelTechnique.DELTA:
117
118
  if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
@@ -120,24 +121,30 @@ function decodeInt64(values, streamMetadata, isSigned, nullabilityBuffer) {
120
121
  return decodeDeltaRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);
121
122
  }
122
123
  values = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);
124
+ decodedValues = decodeZigZagDeltaInt64(values);
125
+ }
126
+ else {
127
+ decodedValues = decodeZigZagDeltaInt64(values);
123
128
  }
124
- decodeZigZagDeltaInt64(values);
125
129
  break;
126
130
  case LogicalLevelTechnique.RLE:
127
- values = decodeRleInt64(values, streamMetadata, isSigned);
131
+ decodedValues = decodeRleInt64(values, streamMetadata, isSigned);
128
132
  break;
129
133
  case LogicalLevelTechnique.NONE:
130
134
  if (isSigned) {
131
- decodeZigZagInt64(values);
135
+ decodedValues = decodeZigZagInt64(values);
136
+ }
137
+ else {
138
+ decodedValues = new BigInt64Array(values);
132
139
  }
133
140
  break;
134
141
  default:
135
142
  throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
136
143
  }
137
144
  if (nullabilityBuffer) {
138
- return unpackNullable(values, nullabilityBuffer, 0n);
145
+ return unpackNullable(decodedValues, nullabilityBuffer, 0n);
139
146
  }
140
- return values;
147
+ return decodedValues;
141
148
  }
142
149
  export function decodeFloat64(values, streamMetadata, isSigned) {
143
150
  switch (streamMetadata.logicalLevelTechnique1) {
@@ -235,7 +242,7 @@ function decodeRleInt32(data, streamMetadata, isSigned) {
235
242
  function decodeRleInt64(data, streamMetadata, isSigned) {
236
243
  return isSigned
237
244
  ? decodeZigZagRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues)
238
- : decodeUnsignedRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues);
245
+ : new BigInt64Array(decodeUnsignedRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues));
239
246
  }
240
247
  function decodeRleFloat64(data, streamMetadata, isSigned) {
241
248
  return isSigned
@@ -1 +1 @@
1
- {"version":3,"file":"integerStreamDecoder.js","sourceRoot":"","sources":["../../src/decoding/integerStreamDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport type IntWrapper from \"./intWrapper\";\nimport {\n decodeComponentwiseDeltaVec2,\n decodeComponentwiseDeltaVec2Scaled,\n decodeDeltaRleInt32,\n decodeDeltaRleInt64,\n decodeFastPfor,\n decodeUnsignedConstRleInt32,\n decodeUnsignedConstRleInt64,\n decodeUnsignedRleInt32,\n decodeUnsignedRleInt64,\n decodeUnsignedRleFloat64,\n decodeVarintInt32,\n decodeVarintInt64,\n decodeVarintFloat64,\n decodeZigZagInt32,\n decodeZigZagInt64,\n decodeZigZagFloat64,\n decodeZigZagConstRleInt32,\n decodeZigZagConstRleInt64,\n decodeZigZagDeltaInt32,\n decodeZigZagDeltaInt64,\n decodeZigZagDeltaFloat64,\n decodeZigZagSequenceRleInt32,\n decodeZigZagSequenceRleInt64,\n decodeZigZagInt32Value,\n decodeZigZagInt64Value,\n fastInverseDelta,\n inverseDelta,\n decodeRleDeltaInt32,\n decodeZigZagDeltaOfDeltaInt32,\n decodeZigZagRleDeltaInt32,\n decodeZigZagRleInt32,\n decodeZigZagRleInt64,\n decodeZigZagRleFloat64,\n} from \"./integerDecodingUtils\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport { type StreamMetadata, type RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport { VectorType } from \"../vector/vectorType\";\nimport type GeometryScaling from \"./geometryScaling\";\nimport { unpackNullable } from \"./unpackNullableUtils\";\n\nexport function decodeIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Int32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeInt32(values, streamMetadata, isSigned, scalingData, nullabilityBuffer);\n}\n\nexport function decodeLengthStreamToOffsetBuffer(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Uint32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeLengthToOffsetBuffer(values, streamMetadata);\n}\n\nfunction decodePhysicalLevelTechnique(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Int32Array {\n const physicalLevelTechnique = streamMetadata.physicalLevelTechnique;\n if (physicalLevelTechnique === PhysicalLevelTechnique.FAST_PFOR) {\n return decodeFastPfor(data, streamMetadata.numValues, streamMetadata.byteLength, offset);\n }\n if (physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n return decodeVarintInt32(data, offset, streamMetadata.numValues);\n }\n\n if (physicalLevelTechnique === PhysicalLevelTechnique.NONE) {\n const dataOffset = offset.get();\n const byteLength = streamMetadata.byteLength;\n offset.add(byteLength);\n //TODO: use Byte Rle for geometry type encoding\n const slice = data.subarray(dataOffset, offset.get());\n return new Int32Array(slice);\n }\n\n throw new Error(\"Specified physicalLevelTechnique is not supported (yet).\");\n}\n\nexport function decodeConstIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): number {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n\n if (values.length === 1) {\n const value = values[0];\n return isSigned ? decodeZigZagInt32Value(value) : value;\n }\n\n return isSigned ? decodeZigZagConstRleInt32(values) : decodeUnsignedConstRleInt32(values);\n}\n\nexport function decodeSequenceIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: number, delta: number] {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeZigZagSequenceRleInt32(values);\n}\n\nexport function decodeSequenceLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: bigint, delta: bigint] {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeZigZagSequenceRleInt64(values);\n}\n\nexport function decodeLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n nullabilityBuffer?: BitVector,\n): BigInt64Array {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeInt64(values, streamMetadata, isSigned, nullabilityBuffer);\n}\n\nexport function decodeLongFloat64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): Float64Array {\n const values = decodeVarintFloat64(data, offset, streamMetadata.numValues);\n return decodeFloat64(values, streamMetadata, isSigned);\n}\n\nexport function decodeConstLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): bigint {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n\n if (values.length === 1) {\n const value = values[0];\n return isSigned ? decodeZigZagInt64Value(value) : value;\n }\n\n return isSigned ? decodeZigZagConstRleInt64(values) : decodeUnsignedConstRleInt64(values);\n}\n\n/**\n * This method decodes integer streams.\n * Currently the encoder uses only fixed combinations of encodings.\n * For performance reasons it is also uses a fixed combination of the encodings on the decoding side.\n * The following encodings and combinations are used:\n * - Morton Delta -> always sorted so not ZigZag encoding needed\n * - Delta -> currently always in combination with ZigZag encoding\n * - Rle -> in combination with ZigZag encoding if data type is signed\n * - Delta Rle\n * - Componentwise Delta -> always ZigZag encoding is used\n */\nfunction decodeInt32(\n values: Int32Array,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Int32Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n if (!nullabilityBuffer) {\n return decodeDeltaRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n values = decodeUnsignedRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaInt32(values);\n break;\n case LogicalLevelTechnique.RLE:\n values = decodeRleInt32(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n break;\n case LogicalLevelTechnique.MORTON:\n fastInverseDelta(values);\n break;\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !nullabilityBuffer) {\n decodeComponentwiseDeltaVec2Scaled(values, scalingData.scale, scalingData.min, scalingData.max);\n return values;\n }\n decodeComponentwiseDeltaVec2(values);\n break;\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagInt32(values);\n }\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(values, nullabilityBuffer, 0);\n }\n return values;\n}\n\nfunction decodeInt64(\n values: BigInt64Array,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n nullabilityBuffer?: BitVector,\n): BigInt64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n if (!nullabilityBuffer) {\n return decodeDeltaRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n values = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaInt64(values);\n break;\n case LogicalLevelTechnique.RLE:\n values = decodeRleInt64(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n break;\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagInt64(values);\n }\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(values, nullabilityBuffer, 0n);\n }\n return values;\n}\n\nexport function decodeFloat64(values: Float64Array, streamMetadata: StreamMetadata, isSigned: boolean): Float64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n values = decodeUnsignedRleFloat64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaFloat64(values);\n return values;\n case LogicalLevelTechnique.RLE:\n return decodeRleFloat64(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagFloat64(values);\n }\n return values;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n}\n\nfunction decodeLengthToOffsetBuffer(values: Int32Array, streamMetadata: StreamMetadata): Uint32Array {\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n return decodeZigZagDeltaOfDeltaInt32(values);\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.RLE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n return decodeRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.NONE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n //TODO: use fastInverseDelta again and check what are the performance problems in zoom 14\n //fastInverseDelta(values);\n inverseDelta(values);\n const offsets = new Uint32Array(streamMetadata.numValues + 1);\n offsets[0] = 0;\n offsets.set(values, 1);\n return offsets;\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const decodedValues = decodeZigZagRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n fastInverseDelta(decodedValues);\n return decodedValues;\n }\n\n throw new Error(\"Only delta encoding is supported for transforming length to offset streams yet.\");\n}\n\nexport function getVectorType(\n streamMetadata: StreamMetadata,\n sizeOrNullabilityBuffer: number | BitVector,\n data: Uint8Array,\n offset: IntWrapper,\n): VectorType {\n const logicalLevelTechnique1 = streamMetadata.logicalLevelTechnique1;\n if (logicalLevelTechnique1 === LogicalLevelTechnique.RLE) {\n return (streamMetadata as RleEncodedStreamMetadata).runs === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n\n if (\n logicalLevelTechnique1 !== LogicalLevelTechnique.DELTA ||\n streamMetadata.logicalLevelTechnique2 !== LogicalLevelTechnique.RLE\n ) {\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n const numFeatures =\n sizeOrNullabilityBuffer instanceof BitVector ? sizeOrNullabilityBuffer.size() : sizeOrNullabilityBuffer;\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n\n if (rleMetadata.numRleValues !== numFeatures) {\n return VectorType.FLAT;\n }\n // Single run is always a sequence\n if (rleMetadata.runs === 1) {\n return VectorType.SEQUENCE;\n }\n\n if (rleMetadata.runs !== 2) {\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n // Two runs can be a sequence if both deltas are equal to 1\n const savedOffset = offset.get();\n\n let values: Int32Array;\n if (streamMetadata.physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n values = decodeVarintInt32(data, offset, 4);\n } else {\n const byteOffset = offset.get();\n values = new Int32Array(data.buffer, data.byteOffset + byteOffset, 4);\n }\n offset.set(savedOffset);\n // Check if both deltas are encoded 1\n const zigZagOne = 2;\n if (values[2] === zigZagOne && values[3] === zigZagOne) {\n return VectorType.SEQUENCE;\n }\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n}\n\nfunction decodeRleInt32(data: Int32Array, streamMetadata: RleEncodedStreamMetadata, isSigned: boolean): Int32Array {\n return isSigned\n ? decodeZigZagRleInt32(data, streamMetadata.runs, streamMetadata.numRleValues)\n : decodeUnsignedRleInt32(data, streamMetadata.runs, streamMetadata.numRleValues);\n}\n\nfunction decodeRleInt64(\n data: BigInt64Array,\n streamMetadata: RleEncodedStreamMetadata,\n isSigned: boolean,\n): BigInt64Array {\n return isSigned\n ? decodeZigZagRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues)\n : decodeUnsignedRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues);\n}\n\nfunction decodeRleFloat64(\n data: Float64Array,\n streamMetadata: RleEncodedStreamMetadata,\n isSigned: boolean,\n): Float64Array {\n return isSigned\n ? decodeZigZagRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues)\n : decodeUnsignedRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues);\n}\n"]}
1
+ {"version":3,"file":"integerStreamDecoder.js","sourceRoot":"","sources":["../../src/decoding/integerStreamDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport type IntWrapper from \"./intWrapper\";\nimport {\n decodeComponentwiseDeltaVec2,\n decodeComponentwiseDeltaVec2Scaled,\n decodeDeltaRleInt32,\n decodeDeltaRleInt64,\n decodeFastPfor,\n decodeUnsignedConstRleInt32,\n decodeUnsignedConstRleInt64,\n decodeUnsignedRleInt32,\n decodeUnsignedRleInt64,\n decodeUnsignedRleFloat64,\n decodeVarintInt32,\n decodeVarintInt64,\n decodeVarintFloat64,\n decodeZigZagInt32,\n decodeZigZagInt64,\n decodeZigZagFloat64,\n decodeZigZagConstRleInt32,\n decodeZigZagConstRleInt64,\n decodeZigZagDeltaInt32,\n decodeZigZagDeltaInt64,\n decodeZigZagDeltaFloat64,\n decodeZigZagSequenceRleInt32,\n decodeZigZagSequenceRleInt64,\n decodeZigZagInt32Value,\n decodeZigZagInt64Value,\n fastInverseDelta,\n inverseDelta,\n decodeRleDeltaInt32,\n decodeZigZagDeltaOfDeltaInt32,\n decodeZigZagRleDeltaInt32,\n decodeZigZagRleInt32,\n decodeZigZagRleInt64,\n decodeZigZagRleFloat64,\n} from \"./integerDecodingUtils\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport type { StreamMetadata, RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport { VectorType } from \"../vector/vectorType\";\nimport type GeometryScaling from \"./geometryScaling\";\nimport { unpackNullable } from \"./unpackNullableUtils\";\n\nexport function decodeIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Int32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeInt32(values, streamMetadata, isSigned, scalingData, nullabilityBuffer);\n}\n\nexport function decodeLengthStreamToOffsetBuffer(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Uint32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeLengthToOffsetBuffer(values, streamMetadata);\n}\n\nfunction decodePhysicalLevelTechnique(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Int32Array {\n const physicalLevelTechnique = streamMetadata.physicalLevelTechnique;\n if (physicalLevelTechnique === PhysicalLevelTechnique.FAST_PFOR) {\n return decodeFastPfor(data, streamMetadata.numValues, streamMetadata.byteLength, offset);\n }\n if (physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n return decodeVarintInt32(data, offset, streamMetadata.numValues);\n }\n\n if (physicalLevelTechnique === PhysicalLevelTechnique.NONE) {\n const dataOffset = offset.get();\n const byteLength = streamMetadata.byteLength;\n offset.add(byteLength);\n //TODO: use Byte Rle for geometry type encoding\n const slice = data.subarray(dataOffset, offset.get());\n return new Int32Array(slice);\n }\n\n throw new Error(\"Specified physicalLevelTechnique is not supported (yet).\");\n}\n\nexport function decodeConstIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): number {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n\n if (values.length === 1) {\n const value = values[0];\n return isSigned ? decodeZigZagInt32Value(value) : value;\n }\n\n return isSigned ? decodeZigZagConstRleInt32(values) : decodeUnsignedConstRleInt32(values);\n}\n\nexport function decodeSequenceIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: number, delta: number] {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeZigZagSequenceRleInt32(values);\n}\n\nexport function decodeSequenceLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: bigint, delta: bigint] {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeZigZagSequenceRleInt64(values);\n}\n\nexport function decodeLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n nullabilityBuffer?: BitVector,\n): BigInt64Array {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeInt64(values, streamMetadata, isSigned, nullabilityBuffer);\n}\n\nexport function decodeLongFloat64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): Float64Array {\n const values = decodeVarintFloat64(data, offset, streamMetadata.numValues);\n return decodeFloat64(values, streamMetadata, isSigned);\n}\n\nexport function decodeConstLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): bigint {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n\n if (values.length === 1) {\n const value = values[0];\n return isSigned ? decodeZigZagInt64Value(value) : value;\n }\n\n return isSigned ? decodeZigZagConstRleInt64(values) : decodeUnsignedConstRleInt64(values);\n}\n\n/**\n * This method decodes integer streams.\n * Currently the encoder uses only fixed combinations of encodings.\n * For performance reasons it is also uses a fixed combination of the encodings on the decoding side.\n * The following encodings and combinations are used:\n * - Morton Delta -> always sorted so not ZigZag encoding needed\n * - Delta -> currently always in combination with ZigZag encoding\n * - Rle -> in combination with ZigZag encoding if data type is signed\n * - Delta Rle\n * - Componentwise Delta -> always ZigZag encoding is used\n */\nfunction decodeInt32(\n values: Int32Array,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Int32Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n if (!nullabilityBuffer) {\n return decodeDeltaRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n values = decodeUnsignedRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaInt32(values);\n break;\n case LogicalLevelTechnique.RLE:\n values = decodeRleInt32(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n break;\n case LogicalLevelTechnique.MORTON:\n fastInverseDelta(values);\n break;\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !nullabilityBuffer) {\n decodeComponentwiseDeltaVec2Scaled(values, scalingData.scale, scalingData.min, scalingData.max);\n return values;\n }\n decodeComponentwiseDeltaVec2(values);\n break;\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagInt32(values);\n }\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(values, nullabilityBuffer, 0);\n }\n return values;\n}\n\nfunction decodeInt64(\n values: BigUint64Array,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n nullabilityBuffer?: BitVector,\n): BigInt64Array {\n let decodedValues: BigInt64Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n if (!nullabilityBuffer) {\n return decodeDeltaRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n values = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n decodedValues = decodeZigZagDeltaInt64(values);\n } else {\n decodedValues = decodeZigZagDeltaInt64(values);\n }\n break;\n case LogicalLevelTechnique.RLE:\n decodedValues = decodeRleInt64(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n break;\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodedValues = decodeZigZagInt64(values);\n } else {\n decodedValues = new BigInt64Array(values);\n }\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(decodedValues, nullabilityBuffer, 0n);\n }\n return decodedValues;\n}\n\nexport function decodeFloat64(values: Float64Array, streamMetadata: StreamMetadata, isSigned: boolean): Float64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n values = decodeUnsignedRleFloat64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaFloat64(values);\n return values;\n case LogicalLevelTechnique.RLE:\n return decodeRleFloat64(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagFloat64(values);\n }\n return values;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n}\n\nfunction decodeLengthToOffsetBuffer(values: Int32Array, streamMetadata: StreamMetadata): Uint32Array {\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n return decodeZigZagDeltaOfDeltaInt32(values);\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.RLE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n return decodeRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.NONE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n //TODO: use fastInverseDelta again and check what are the performance problems in zoom 14\n //fastInverseDelta(values);\n inverseDelta(values);\n const offsets = new Uint32Array(streamMetadata.numValues + 1);\n offsets[0] = 0;\n offsets.set(values, 1);\n return offsets;\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const decodedValues = decodeZigZagRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n fastInverseDelta(decodedValues);\n return decodedValues;\n }\n\n throw new Error(\"Only delta encoding is supported for transforming length to offset streams yet.\");\n}\n\nexport function getVectorType(\n streamMetadata: StreamMetadata,\n sizeOrNullabilityBuffer: number | BitVector,\n data: Uint8Array,\n offset: IntWrapper,\n): VectorType {\n const logicalLevelTechnique1 = streamMetadata.logicalLevelTechnique1;\n if (logicalLevelTechnique1 === LogicalLevelTechnique.RLE) {\n return (streamMetadata as RleEncodedStreamMetadata).runs === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n\n if (\n logicalLevelTechnique1 !== LogicalLevelTechnique.DELTA ||\n streamMetadata.logicalLevelTechnique2 !== LogicalLevelTechnique.RLE\n ) {\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n const numFeatures =\n sizeOrNullabilityBuffer instanceof BitVector ? sizeOrNullabilityBuffer.size() : sizeOrNullabilityBuffer;\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n\n if (rleMetadata.numRleValues !== numFeatures) {\n return VectorType.FLAT;\n }\n // Single run is always a sequence\n if (rleMetadata.runs === 1) {\n return VectorType.SEQUENCE;\n }\n\n if (rleMetadata.runs !== 2) {\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n // Two runs can be a sequence if both deltas are equal to 1\n const savedOffset = offset.get();\n\n let values: Int32Array;\n if (streamMetadata.physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n values = decodeVarintInt32(data, offset, 4);\n } else {\n const byteOffset = offset.get();\n values = new Int32Array(data.buffer, data.byteOffset + byteOffset, 4);\n }\n offset.set(savedOffset);\n // Check if both deltas are encoded 1\n const zigZagOne = 2;\n if (values[2] === zigZagOne && values[3] === zigZagOne) {\n return VectorType.SEQUENCE;\n }\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n}\n\nfunction decodeRleInt32(data: Int32Array, streamMetadata: RleEncodedStreamMetadata, isSigned: boolean): Int32Array {\n return isSigned\n ? decodeZigZagRleInt32(data, streamMetadata.runs, streamMetadata.numRleValues)\n : decodeUnsignedRleInt32(data, streamMetadata.runs, streamMetadata.numRleValues);\n}\n\nfunction decodeRleInt64(\n data: BigUint64Array,\n streamMetadata: RleEncodedStreamMetadata,\n isSigned: boolean,\n): BigInt64Array {\n return isSigned\n ? decodeZigZagRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues)\n : new BigInt64Array(decodeUnsignedRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues));\n}\n\nfunction decodeRleFloat64(\n data: Float64Array,\n streamMetadata: RleEncodedStreamMetadata,\n isSigned: boolean,\n): Float64Array {\n return isSigned\n ? decodeZigZagRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues)\n : decodeUnsignedRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues);\n}\n"]}