@maplibre/mlt 0.0.1-alpha.9 → 1.1.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 (253) hide show
  1. package/dist/{encodings → decoding}/decodingUtils.js +18 -33
  2. package/dist/decoding/decodingUtils.js.map +1 -0
  3. package/dist/decoding/decodingUtils.spec.d.ts +1 -0
  4. package/dist/decoding/decodingUtils.spec.js +125 -0
  5. package/dist/decoding/decodingUtils.spec.js.map +1 -0
  6. package/dist/{encodings → decoding}/fsstDecoder.js +1 -4
  7. package/dist/decoding/fsstDecoder.js.map +1 -0
  8. package/dist/decoding/fsstDecoder.spec.d.ts +1 -0
  9. package/dist/decoding/fsstDecoder.spec.js +36 -0
  10. package/dist/decoding/fsstDecoder.spec.js.map +1 -0
  11. package/dist/{encodings → decoding}/geometryDecoder.js +65 -71
  12. package/dist/decoding/geometryDecoder.js.map +1 -0
  13. package/dist/decoding/geometryDecoder.spec.d.ts +1 -0
  14. package/dist/decoding/geometryDecoder.spec.js +5 -0
  15. package/dist/decoding/geometryDecoder.spec.js.map +1 -0
  16. package/dist/decoding/geometryScaling.js +2 -0
  17. package/dist/decoding/geometryScaling.js.map +1 -0
  18. package/dist/{encodings → decoding}/intWrapper.js +2 -4
  19. package/dist/decoding/intWrapper.js.map +1 -0
  20. package/dist/{encodings → decoding}/integerDecodingUtils.d.ts +13 -0
  21. package/dist/{encodings → decoding}/integerDecodingUtils.js +89 -88
  22. package/dist/decoding/integerDecodingUtils.js.map +1 -0
  23. package/dist/decoding/integerDecodingUtils.spec.d.ts +1 -0
  24. package/dist/decoding/integerDecodingUtils.spec.js +194 -0
  25. package/dist/decoding/integerDecodingUtils.spec.js.map +1 -0
  26. package/dist/{encodings → decoding}/integerStreamDecoder.d.ts +1 -1
  27. package/dist/decoding/integerStreamDecoder.js +266 -0
  28. package/dist/decoding/integerStreamDecoder.js.map +1 -0
  29. package/dist/decoding/integerStreamDecoder.spec.d.ts +1 -0
  30. package/dist/decoding/integerStreamDecoder.spec.js +125 -0
  31. package/dist/decoding/integerStreamDecoder.spec.js.map +1 -0
  32. package/dist/{encodings → decoding}/propertyDecoder.d.ts +1 -1
  33. package/dist/decoding/propertyDecoder.js +140 -0
  34. package/dist/decoding/propertyDecoder.js.map +1 -0
  35. package/dist/decoding/propertyDecoder.spec.d.ts +1 -0
  36. package/dist/decoding/propertyDecoder.spec.js +682 -0
  37. package/dist/decoding/propertyDecoder.spec.js.map +1 -0
  38. package/dist/{encodings → decoding}/stringDecoder.d.ts +4 -1
  39. package/dist/decoding/stringDecoder.js +191 -0
  40. package/dist/decoding/stringDecoder.js.map +1 -0
  41. package/dist/decoding/stringDecoder.spec.d.ts +1 -0
  42. package/dist/decoding/stringDecoder.spec.js +356 -0
  43. package/dist/decoding/stringDecoder.spec.js.map +1 -0
  44. package/dist/index.d.ts +2 -4
  45. package/dist/index.js +5 -20
  46. package/dist/index.js.map +1 -1
  47. package/dist/metadata/tile/dictionaryType.js +2 -5
  48. package/dist/metadata/tile/dictionaryType.js.map +1 -1
  49. package/dist/metadata/tile/lengthType.js +2 -5
  50. package/dist/metadata/tile/lengthType.js.map +1 -1
  51. package/dist/metadata/tile/logicalLevelTechnique.js +2 -5
  52. package/dist/metadata/tile/logicalLevelTechnique.js.map +1 -1
  53. package/dist/metadata/tile/logicalStreamType.js +4 -5
  54. package/dist/metadata/tile/logicalStreamType.js.map +1 -1
  55. package/dist/metadata/tile/mortonEncodedStreamMetadata.d.ts +1 -1
  56. package/dist/metadata/tile/mortonEncodedStreamMetadata.js +8 -10
  57. package/dist/metadata/tile/mortonEncodedStreamMetadata.js.map +1 -1
  58. package/dist/metadata/tile/offsetType.js +2 -5
  59. package/dist/metadata/tile/offsetType.js.map +1 -1
  60. package/dist/metadata/tile/physicalLevelTechnique.js +2 -5
  61. package/dist/metadata/tile/physicalLevelTechnique.js.map +1 -1
  62. package/dist/metadata/tile/physicalStreamType.js +2 -5
  63. package/dist/metadata/tile/physicalStreamType.js.map +1 -1
  64. package/dist/metadata/tile/rleEncodedStreamMetadata.d.ts +5 -1
  65. package/dist/metadata/tile/rleEncodedStreamMetadata.js +14 -10
  66. package/dist/metadata/tile/rleEncodedStreamMetadata.js.map +1 -1
  67. package/dist/metadata/tile/scalarType.js +2 -5
  68. package/dist/metadata/tile/scalarType.js.map +1 -1
  69. package/dist/metadata/tile/streamMetadata.d.ts +7 -1
  70. package/dist/metadata/tile/streamMetadata.js +35 -24
  71. package/dist/metadata/tile/streamMetadata.js.map +1 -1
  72. package/dist/metadata/tile/streamMetadataDecoder.d.ts +1 -1
  73. package/dist/metadata/tile/streamMetadataDecoder.js +13 -17
  74. package/dist/metadata/tile/streamMetadataDecoder.js.map +1 -1
  75. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.d.ts +2 -2
  76. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js +40 -32
  77. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -1
  78. package/dist/metadata/tileset/tilesetMetadata.d.ts +80 -0
  79. package/dist/metadata/tileset/tilesetMetadata.js +29 -0
  80. package/dist/metadata/tileset/tilesetMetadata.js.map +1 -0
  81. package/dist/metadata/tileset/typeMap.d.ts +1 -1
  82. package/dist/metadata/tileset/typeMap.js +63 -59
  83. package/dist/metadata/tileset/typeMap.js.map +1 -1
  84. package/dist/mltDecoder.d.ts +2 -2
  85. package/dist/mltDecoder.js +69 -65
  86. package/dist/mltDecoder.js.map +1 -1
  87. package/dist/mltDecoder.spec.d.ts +1 -0
  88. package/dist/mltDecoder.spec.js +152 -0
  89. package/dist/mltDecoder.spec.js.map +1 -0
  90. package/dist/mltMetadata.js +4 -7
  91. package/dist/mltMetadata.js.map +1 -1
  92. package/dist/vector/constant/intConstVector.d.ts +0 -13
  93. package/dist/vector/constant/intConstVector.js +2 -82
  94. package/dist/vector/constant/intConstVector.js.map +1 -1
  95. package/dist/vector/constant/longConstVector.d.ts +0 -13
  96. package/dist/vector/constant/longConstVector.js +2 -80
  97. package/dist/vector/constant/longConstVector.js.map +1 -1
  98. package/dist/vector/dictionary/stringDictionaryVector.d.ts +0 -14
  99. package/dist/vector/dictionary/stringDictionaryVector.js +6 -178
  100. package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
  101. package/dist/vector/featureTable.d.ts +7 -2
  102. package/dist/vector/featureTable.js +45 -11
  103. package/dist/vector/featureTable.js.map +1 -1
  104. package/dist/vector/fixedSizeVector.js +2 -9
  105. package/dist/vector/fixedSizeVector.js.map +1 -1
  106. package/dist/vector/flat/bitVector.js +3 -4
  107. package/dist/vector/flat/bitVector.js.map +1 -1
  108. package/dist/vector/flat/booleanFlatVector.d.ts +0 -13
  109. package/dist/vector/flat/booleanFlatVector.js +3 -45
  110. package/dist/vector/flat/booleanFlatVector.js.map +1 -1
  111. package/dist/vector/flat/doubleFlatVector.d.ts +0 -13
  112. package/dist/vector/flat/doubleFlatVector.js +2 -104
  113. package/dist/vector/flat/doubleFlatVector.js.map +1 -1
  114. package/dist/vector/flat/floatFlatVector.d.ts +0 -13
  115. package/dist/vector/flat/floatFlatVector.js +2 -104
  116. package/dist/vector/flat/floatFlatVector.js.map +1 -1
  117. package/dist/vector/flat/floatFlatVector.spec.d.ts +1 -0
  118. package/dist/vector/flat/floatFlatVector.spec.js +14 -0
  119. package/dist/vector/flat/floatFlatVector.spec.js.map +1 -0
  120. package/dist/vector/flat/intFlatVector.d.ts +0 -13
  121. package/dist/vector/flat/intFlatVector.js +2 -117
  122. package/dist/vector/flat/intFlatVector.js.map +1 -1
  123. package/dist/vector/flat/intFlatVector.spec.d.ts +1 -0
  124. package/dist/vector/flat/intFlatVector.spec.js +15 -0
  125. package/dist/vector/flat/intFlatVector.spec.js.map +1 -0
  126. package/dist/vector/flat/longFlatVector.d.ts +0 -13
  127. package/dist/vector/flat/longFlatVector.js +2 -118
  128. package/dist/vector/flat/longFlatVector.js.map +1 -1
  129. package/dist/vector/flat/longFlatVector.spec.d.ts +1 -0
  130. package/dist/vector/flat/longFlatVector.spec.js +14 -0
  131. package/dist/vector/flat/longFlatVector.spec.js.map +1 -0
  132. package/dist/vector/flat/stringFlatVector.d.ts +0 -13
  133. package/dist/vector/flat/stringFlatVector.js +5 -166
  134. package/dist/vector/flat/stringFlatVector.js.map +1 -1
  135. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +0 -13
  136. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js +14 -51
  137. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
  138. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.d.ts +1 -0
  139. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js +28 -0
  140. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js.map +1 -0
  141. package/dist/vector/geometry/constGeometryVector.d.ts +0 -4
  142. package/dist/vector/geometry/constGeometryVector.js +9 -30
  143. package/dist/vector/geometry/constGeometryVector.js.map +1 -1
  144. package/dist/vector/geometry/constGpuVector.d.ts +0 -4
  145. package/dist/vector/geometry/constGpuVector.js +4 -25
  146. package/dist/vector/geometry/constGpuVector.js.map +1 -1
  147. package/dist/vector/geometry/flatGeometryVector.d.ts +0 -4
  148. package/dist/vector/geometry/flatGeometryVector.js +8 -35
  149. package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
  150. package/dist/vector/geometry/flatGpuVector.d.ts +0 -4
  151. package/dist/vector/geometry/flatGpuVector.js +3 -29
  152. package/dist/vector/geometry/flatGpuVector.js.map +1 -1
  153. package/dist/vector/geometry/geometryType.js +4 -7
  154. package/dist/vector/geometry/geometryType.js.map +1 -1
  155. package/dist/vector/geometry/geometryVector.d.ts +2 -5
  156. package/dist/vector/geometry/geometryVector.js +11 -13
  157. package/dist/vector/geometry/geometryVector.js.map +1 -1
  158. package/dist/vector/geometry/geometryVectorConverter.js +28 -34
  159. package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
  160. package/dist/vector/geometry/gpuVector.d.ts +5 -4
  161. package/dist/vector/geometry/gpuVector.js +89 -5
  162. package/dist/vector/geometry/gpuVector.js.map +1 -1
  163. package/dist/vector/geometry/spaceFillingCurve.js +6 -4
  164. package/dist/vector/geometry/spaceFillingCurve.js.map +1 -1
  165. package/dist/vector/geometry/topologyVector.js +4 -4
  166. package/dist/vector/geometry/topologyVector.js.map +1 -1
  167. package/dist/vector/geometry/vertexBufferType.js +2 -5
  168. package/dist/vector/geometry/vertexBufferType.js.map +1 -1
  169. package/dist/vector/geometry/zOrderCurve.js +2 -8
  170. package/dist/vector/geometry/zOrderCurve.js.map +1 -1
  171. package/dist/vector/geometry/zOrderCurve.spec.d.ts +1 -0
  172. package/dist/vector/geometry/zOrderCurve.spec.js +14 -0
  173. package/dist/vector/geometry/zOrderCurve.spec.js.map +1 -0
  174. package/dist/vector/intVector.js +1 -2
  175. package/dist/vector/sequence/intSequenceVector.d.ts +0 -13
  176. package/dist/vector/sequence/intSequenceVector.js +2 -64
  177. package/dist/vector/sequence/intSequenceVector.js.map +1 -1
  178. package/dist/vector/sequence/longSequenceVector.d.ts +0 -13
  179. package/dist/vector/sequence/longSequenceVector.js +2 -49
  180. package/dist/vector/sequence/longSequenceVector.js.map +1 -1
  181. package/dist/vector/sequence/longSequenceVektor.spec.d.ts +1 -0
  182. package/dist/vector/sequence/longSequenceVektor.spec.js +11 -0
  183. package/dist/vector/sequence/longSequenceVektor.spec.js.map +1 -0
  184. package/dist/vector/sequence/sequenceVector.js +3 -9
  185. package/dist/vector/sequence/sequenceVector.js.map +1 -1
  186. package/dist/vector/variableSizeVector.js +3 -9
  187. package/dist/vector/variableSizeVector.js.map +1 -1
  188. package/dist/vector/vector.d.ts +0 -17
  189. package/dist/vector/vector.js +5 -47
  190. package/dist/vector/vector.js.map +1 -1
  191. package/dist/vector/vectorType.js +2 -5
  192. package/dist/vector/vectorType.js.map +1 -1
  193. package/package.json +12 -33
  194. package/dist/encodings/decodingUtils.js.map +0 -1
  195. package/dist/encodings/doubleDecoder.d.ts +0 -4
  196. package/dist/encodings/doubleDecoder.js +0 -22
  197. package/dist/encodings/doubleDecoder.js.map +0 -1
  198. package/dist/encodings/fastpfor/bitpacking.d.ts +0 -51
  199. package/dist/encodings/fastpfor/bitpacking.js +0 -3930
  200. package/dist/encodings/fastpfor/bitpacking.js.map +0 -1
  201. package/dist/encodings/fastpfor/codec.d.ts +0 -19
  202. package/dist/encodings/fastpfor/codec.js +0 -3
  203. package/dist/encodings/fastpfor/codec.js.map +0 -1
  204. package/dist/encodings/fastpfor/fastpfor.d.ts +0 -38
  205. package/dist/encodings/fastpfor/fastpfor.js +0 -146
  206. package/dist/encodings/fastpfor/fastpfor.js.map +0 -1
  207. package/dist/encodings/fastpfor/index.d.ts +0 -20
  208. package/dist/encodings/fastpfor/index.js +0 -47
  209. package/dist/encodings/fastpfor/index.js.map +0 -1
  210. package/dist/encodings/fastpfor/util.d.ts +0 -2
  211. package/dist/encodings/fastpfor/util.js +0 -16
  212. package/dist/encodings/fastpfor/util.js.map +0 -1
  213. package/dist/encodings/fastpfor/varint.d.ts +0 -18
  214. package/dist/encodings/fastpfor/varint.js +0 -125
  215. package/dist/encodings/fastpfor/varint.js.map +0 -1
  216. package/dist/encodings/fsstDecoder.js.map +0 -1
  217. package/dist/encodings/geometryDecoder.js.map +0 -1
  218. package/dist/encodings/geometryScaling.js +0 -3
  219. package/dist/encodings/geometryScaling.js.map +0 -1
  220. package/dist/encodings/intWrapper.js.map +0 -1
  221. package/dist/encodings/integerDecodingUtils.js.map +0 -1
  222. package/dist/encodings/integerStreamDecoder.js +0 -249
  223. package/dist/encodings/integerStreamDecoder.js.map +0 -1
  224. package/dist/encodings/propertyDecoder.js +0 -146
  225. package/dist/encodings/propertyDecoder.js.map +0 -1
  226. package/dist/encodings/stringDecoder.js +0 -149
  227. package/dist/encodings/stringDecoder.js.map +0 -1
  228. package/dist/metadata/tileset/tilesetMetadata.g.d.ts +0 -418
  229. package/dist/metadata/tileset/tilesetMetadata.g.js +0 -476
  230. package/dist/metadata/tileset/tilesetMetadata.g.js.map +0 -1
  231. package/dist/vector/filter/constSelectionVector.d.ts +0 -0
  232. package/dist/vector/filter/constSelectionVector.js +0 -1
  233. package/dist/vector/filter/constSelectionVector.js.map +0 -1
  234. package/dist/vector/filter/flatSelectionVector.d.ts +0 -16
  235. package/dist/vector/filter/flatSelectionVector.js +0 -42
  236. package/dist/vector/filter/flatSelectionVector.js.map +0 -1
  237. package/dist/vector/filter/selectionVector.d.ts +0 -8
  238. package/dist/vector/filter/selectionVector.js +0 -3
  239. package/dist/vector/filter/selectionVector.js.map +0 -1
  240. package/dist/vector/filter/selectionVectorUtils.d.ts +0 -7
  241. package/dist/vector/filter/selectionVectorUtils.js +0 -44
  242. package/dist/vector/filter/selectionVectorUtils.js.map +0 -1
  243. package/dist/vector/filter/sequenceSelectionVector.d.ts +0 -0
  244. package/dist/vector/filter/sequenceSelectionVector.js +0 -1
  245. package/dist/vector/filter/sequenceSelectionVector.js.map +0 -1
  246. package/dist/vector/geometry/point.d.ts +0 -195
  247. package/dist/vector/geometry/point.js +0 -308
  248. package/dist/vector/geometry/point.js.map +0 -1
  249. /package/dist/{encodings → decoding}/decodingUtils.d.ts +0 -0
  250. /package/dist/{encodings → decoding}/fsstDecoder.d.ts +0 -0
  251. /package/dist/{encodings → decoding}/geometryDecoder.d.ts +0 -0
  252. /package/dist/{encodings → decoding}/geometryScaling.d.ts +0 -0
  253. /package/dist/{encodings → decoding}/intWrapper.d.ts +0 -0
@@ -0,0 +1,194 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import varint from "varint";
3
+ import { decodeVarintInt64, decodeVarintFloat64, decodeZigZag, decodeZigZagInt64, decodeZigZagFloat64, decodeZigZagValue, decodeZigZagValueInt64, decodeUnsignedRle, decodeUnsignedRleInt64, decodeUnsignedRleFloat64, decodeZigZagDeltaInt64, fastInverseDelta, decodeNullableZigZagDeltaInt64, padWithZerosInt64, padZigZagWithZerosInt64, decodeDeltaRleInt64, decodeUnsignedConstRleInt64, decodeZigZagConstRleInt64, decodeZigZagSequenceRleInt64, decodeZigZagRle, decodeZigZagRleInt64, decodeZigZagRleFloat64, zigZagRleDeltaDecoding, } from "./integerDecodingUtils";
4
+ import IntWrapper from "./intWrapper";
5
+ import BitVector from "../vector/flat/bitVector";
6
+ describe("IntegerDecodingUtils", () => {
7
+ describe("decodeVarintInt64", () => {
8
+ it("should decode BigInt values", () => {
9
+ const value = 2n ** 50n;
10
+ const encoded = varintEncodeBigInt(value);
11
+ const decoded = decodeVarintInt64(encoded, new IntWrapper(0), 1);
12
+ expect(decoded[0]).toEqual(value);
13
+ });
14
+ });
15
+ describe("decodeVarintLongToFloat64", () => {
16
+ it("should return valid decoded values", () => {
17
+ const value = 2 ** 40;
18
+ const varintEncoded = varintEncodeNum(value);
19
+ const actualValues = decodeVarintFloat64(varintEncoded, 1, new IntWrapper(0));
20
+ expect(actualValues[0]).toEqual(value);
21
+ });
22
+ });
23
+ describe("decodeZigZag", () => {
24
+ it("should decode zigzag Int32Array", () => {
25
+ const encoded = new Int32Array([0, 1, 2, 3]);
26
+ decodeZigZag(encoded);
27
+ expect(Array.from(encoded)).toEqual([0, -1, 1, -2]);
28
+ });
29
+ });
30
+ describe("decodeZigZagInt64", () => {
31
+ it("should decode zigzag BigInt64Array", () => {
32
+ const encoded = new BigInt64Array([0n, 1n, 2n, 3n]);
33
+ decodeZigZagInt64(encoded);
34
+ expect(Array.from(encoded)).toEqual([0n, -1n, 1n, -2n]);
35
+ });
36
+ });
37
+ describe("decodeZigZagFloat64", () => {
38
+ it("should return valid decoded values for zigZag Varint decoding", () => {
39
+ const value = 2 ** 35;
40
+ const zigZagValue = value * 2;
41
+ const varintEncoded = varintEncodeNum(zigZagValue);
42
+ const actualValues = decodeVarintFloat64(varintEncoded, 1, new IntWrapper(0));
43
+ decodeZigZagFloat64(actualValues);
44
+ expect(actualValues[0]).toEqual(value);
45
+ });
46
+ it("should return valid decoded values for zigZag Varint decoding", () => {
47
+ const value = 3298190;
48
+ const zigZagValue = value << 1;
49
+ const varintEncoded = varintEncodeNum(zigZagValue);
50
+ const actualValues = decodeVarintFloat64(varintEncoded, 1, new IntWrapper(0));
51
+ decodeZigZagFloat64(actualValues);
52
+ expect(actualValues[0]).toEqual(value);
53
+ });
54
+ });
55
+ describe("decodeZigZagValue", () => {
56
+ it("should decode single zigzag values", () => {
57
+ expect(decodeZigZagValue(0)).toBe(0);
58
+ expect(decodeZigZagValue(1)).toBe(-1);
59
+ expect(decodeZigZagValue(2)).toBe(1);
60
+ });
61
+ });
62
+ describe("decodeZigZagValueInt64", () => {
63
+ it("should decode single BigInt zigzag values", () => {
64
+ expect(decodeZigZagValueInt64(0n)).toBe(0n);
65
+ expect(decodeZigZagValueInt64(1n)).toBe(-1n);
66
+ });
67
+ });
68
+ describe("RLE Decoding", () => {
69
+ it("should decode unsigned RLE", () => {
70
+ const encoded = new Int32Array([2, 3, 10, 20]);
71
+ const decoded = decodeUnsignedRle(encoded, 2, 5); //starts hanging on this test
72
+ expect(Array.from(decoded)).toEqual([10, 10, 20, 20, 20]);
73
+ });
74
+ it("should decode unsigned RLE Int64", () => {
75
+ const encoded = new BigInt64Array([2n, 3n, 10n, 20n]);
76
+ const decoded = decodeUnsignedRleInt64(encoded, 2, 5);
77
+ expect(Array.from(decoded)).toEqual([10n, 10n, 20n, 20n, 20n]);
78
+ });
79
+ it("should decode unsigned RLE Float64", () => {
80
+ const encoded = new Float64Array([2, 3, 10.5, 20.5]);
81
+ const decoded = decodeUnsignedRleFloat64(encoded, 2, 5);
82
+ expect(Array.from(decoded)).toEqual([10.5, 10.5, 20.5, 20.5, 20.5]);
83
+ });
84
+ });
85
+ describe("Delta Decoding", () => {
86
+ it("should decode zigzag delta Int64", () => {
87
+ const data = new BigInt64Array([2n, 2n, 2n]);
88
+ decodeZigZagDeltaInt64(data);
89
+ expect(Array.from(data)).toEqual([1n, 2n, 3n]);
90
+ });
91
+ it("should apply fast inverse delta", () => {
92
+ const data = new Int32Array([10, 5, 3, 2]);
93
+ fastInverseDelta(data);
94
+ expect(Array.from(data)).toEqual([10, 15, 18, 20]);
95
+ });
96
+ });
97
+ describe("Nullable Decoding", () => {
98
+ it("should decode nullable zigzag delta Int64", () => {
99
+ const bitVectorData = new Uint8Array([0b00000011]);
100
+ const bitVector = new BitVector(bitVectorData, 2);
101
+ const data = new BigInt64Array([2n, 2n]);
102
+ const decoded = decodeNullableZigZagDeltaInt64(bitVector, data);
103
+ expect(Array.from(decoded)).toEqual([1n, 2n]);
104
+ });
105
+ it("should pad Int64 with zeros", () => {
106
+ const bitVectorData = new Uint8Array([0b00000011]);
107
+ const bitVector = new BitVector(bitVectorData, 3);
108
+ const data = new BigInt64Array([10n, 20n]);
109
+ const decoded = padWithZerosInt64(bitVector, data);
110
+ expect(Array.from(decoded)).toEqual([10n, 20n, 0n]);
111
+ });
112
+ it("should pad zigzag Int64 with zeros", () => {
113
+ const bitVectorData = new Uint8Array([0b00000101]);
114
+ const bitVector = new BitVector(bitVectorData, 3);
115
+ const data = new BigInt64Array([2n, 4n]);
116
+ const decoded = padZigZagWithZerosInt64(bitVector, data);
117
+ expect(Array.from(decoded)).toEqual([1n, 0n, 2n]);
118
+ });
119
+ });
120
+ describe("Delta RLE", () => {
121
+ it("should decode delta RLE Int64", () => {
122
+ const data = new BigInt64Array([3n, 2n]);
123
+ const decoded = decodeDeltaRleInt64(data, 1, 3);
124
+ expect(Array.from(decoded)).toEqual([1n, 2n, 3n]);
125
+ });
126
+ });
127
+ describe("Const and Sequence RLE", () => {
128
+ it("should decode unsigned const RLE Int64", () => {
129
+ const data = new BigInt64Array([5n, 42n]);
130
+ expect(decodeUnsignedConstRleInt64(data)).toBe(42n);
131
+ });
132
+ it("should decode zigzag const RLE Int64", () => {
133
+ const data = new BigInt64Array([5n, 4n]);
134
+ expect(decodeZigZagConstRleInt64(data)).toBe(2n);
135
+ });
136
+ it("should decode zigzag sequence RLE Int64", () => {
137
+ const data = new BigInt64Array([5n, 2n]);
138
+ const [base, delta] = decodeZigZagSequenceRleInt64(data);
139
+ expect(base).toBe(1n);
140
+ expect(delta).toBe(1n);
141
+ });
142
+ });
143
+ describe("decode RLE", () => {
144
+ it("should decode RLE Int64", () => {
145
+ const encoded = new BigInt64Array([2n, 3n, 10n, 20n]);
146
+ const decoded = decodeUnsignedRleInt64(encoded, 2, 5);
147
+ expect(Array.from(decoded)).toEqual([10n, 10n, 20n, 20n, 20n]);
148
+ });
149
+ it("should decode RLE Float64", () => {
150
+ const encoded = new Float64Array([2, 3, 10.5, 20.5]);
151
+ const decoded = decodeUnsignedRleFloat64(encoded, 2, 5);
152
+ expect(Array.from(decoded)).toEqual([10.5, 10.5, 20.5, 20.5, 20.5]);
153
+ });
154
+ it("should decode ZigZag RLE Int32", () => {
155
+ const encoded = new Int32Array([2, 3, 4, 6]);
156
+ const decoded = decodeZigZagRle(encoded, 2, 5);
157
+ expect(Array.from(decoded)).toEqual([2, 2, 3, 3, 3]);
158
+ });
159
+ it("should decode ZigZag RLE Int64", () => {
160
+ const encoded = new BigInt64Array([2n, 3n, 4n, 6n]);
161
+ const decoded = decodeZigZagRleInt64(encoded, 2, 5);
162
+ expect(Array.from(decoded)).toEqual([2n, 2n, 3n, 3n, 3n]);
163
+ });
164
+ it("should decode ZigZag RLE Float64", () => {
165
+ const encoded = new Float64Array([2, 3, 4, 6]);
166
+ const decoded = decodeZigZagRleFloat64(encoded, 2, 5);
167
+ expect(Array.from(decoded)).toEqual([2, 2, 3, 3, 3]);
168
+ });
169
+ });
170
+ describe("ZigZag RLE Delta", () => {
171
+ it("should decode zigzag RLE delta", () => {
172
+ const data = new Int32Array([2, 2, 2, 2]);
173
+ const decoded = zigZagRleDeltaDecoding(data, 2, 4);
174
+ expect(decoded.length).toBe(5);
175
+ });
176
+ });
177
+ });
178
+ function varintEncodeNum(value) {
179
+ const v = varint.encode(value);
180
+ return new Uint8Array(v);
181
+ }
182
+ function varintEncodeBigInt(value) {
183
+ const result = [];
184
+ let num = value;
185
+ while (num > 0n) {
186
+ let byte = Number(num & 0x7fn);
187
+ num >>= 7n;
188
+ if (num > 0n)
189
+ byte |= 0x80;
190
+ result.push(byte);
191
+ }
192
+ return new Uint8Array(result.length > 0 ? result : [0]);
193
+ }
194
+ //# sourceMappingURL=integerDecodingUtils.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integerDecodingUtils.spec.js","sourceRoot":"","sources":["../../src/decoding/integerDecodingUtils.spec.ts"],"names":[],"mappings":"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"}
@@ -22,5 +22,5 @@ export default class IntegerStreamDecoder {
22
22
  static decodeNullableLongStream(data: Uint8Array, offset: IntWrapper, streamMetadata: StreamMetadata, isSigned: boolean, bitVector: BitVector): BigInt64Array;
23
23
  private static decodeNullableIntBuffer;
24
24
  private static decodeNullableLongBuffer;
25
- static getVectorType(streamMetadata: StreamMetadata, sizeOrNullabilityBuffer: number | BitVector): VectorType;
25
+ static getVectorType(streamMetadata: StreamMetadata, sizeOrNullabilityBuffer: number | BitVector, data: Uint8Array, offset: IntWrapper): VectorType;
26
26
  }
@@ -0,0 +1,266 @@
1
+ import { PhysicalLevelTechnique } from "../metadata/tile/physicalLevelTechnique";
2
+ import { decodeComponentwiseDeltaVec2, decodeComponentwiseDeltaVec2Scaled, decodeDeltaRle, decodeDeltaRleInt64, decodeFastPfor, decodeNullableRle, decodeNullableRleInt64, decodeNullableZigZagDelta, decodeNullableZigZagDeltaInt64, decodeRle, decodeRleFloat64, decodeRleInt64, decodeUnsignedConstRle, decodeUnsignedConstRleInt64, decodeUnsignedRle, decodeUnsignedRleFloat64, decodeUnsignedRleInt64, decodeVarintInt32, decodeVarintInt64, decodeVarintFloat64, decodeZigZag, decodeZigZagConstRle, decodeZigZagConstRleInt64, decodeZigZagDelta, decodeZigZagDeltaFloat64, decodeZigZagDeltaInt64, decodeZigZagFloat64, decodeZigZagInt64, decodeZigZagSequenceRle, decodeZigZagSequenceRleInt64, decodeZigZagValue, decodeZigZagValueInt64, fastInverseDelta, inverseDelta, padWithZeros, padWithZerosInt64, padZigZagWithZeros, padZigZagWithZerosInt64, rleDeltaDecoding, zigZagDeltaOfDeltaDecoding, zigZagRleDeltaDecoding, } from "./integerDecodingUtils";
3
+ import { LogicalLevelTechnique } from "../metadata/tile/logicalLevelTechnique";
4
+ import BitVector from "../vector/flat/bitVector";
5
+ import { VectorType } from "../vector/vectorType";
6
+ export default class IntegerStreamDecoder {
7
+ constructor() { }
8
+ static decodeIntStream(data, offset, streamMetadata, isSigned, scalingData) {
9
+ const values = IntegerStreamDecoder.decodePhysicalLevelTechnique(data, offset, streamMetadata);
10
+ return this.decodeIntBuffer(values, streamMetadata, isSigned, scalingData);
11
+ }
12
+ static decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata) {
13
+ const values = IntegerStreamDecoder.decodePhysicalLevelTechnique(data, offset, streamMetadata);
14
+ return this.decodeLengthToOffsetBuffer(values, streamMetadata);
15
+ }
16
+ static decodePhysicalLevelTechnique(data, offset, streamMetadata) {
17
+ const physicalLevelTechnique = streamMetadata.physicalLevelTechnique;
18
+ if (physicalLevelTechnique === PhysicalLevelTechnique.FAST_PFOR) {
19
+ return decodeFastPfor(data, streamMetadata.numValues, streamMetadata.byteLength, offset);
20
+ }
21
+ if (physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {
22
+ return decodeVarintInt32(data, offset, streamMetadata.numValues);
23
+ }
24
+ if (physicalLevelTechnique === PhysicalLevelTechnique.NONE) {
25
+ const dataOffset = offset.get();
26
+ const byteLength = streamMetadata.byteLength;
27
+ offset.add(byteLength);
28
+ //TODO: use Byte Rle for geometry type encoding
29
+ const slice = data.subarray(dataOffset, offset.get());
30
+ return new Int32Array(slice);
31
+ }
32
+ throw new Error("Specified physicalLevelTechnique is not supported (yet).");
33
+ }
34
+ static decodeConstIntStream(data, offset, streamMetadata, isSigned) {
35
+ const values = IntegerStreamDecoder.decodePhysicalLevelTechnique(data, offset, streamMetadata);
36
+ if (values.length === 1) {
37
+ const value = values[0];
38
+ return isSigned ? decodeZigZagValue(value) : value;
39
+ }
40
+ return isSigned ? decodeZigZagConstRle(values) : decodeUnsignedConstRle(values);
41
+ }
42
+ static decodeSequenceIntStream(data, offset, streamMetadata) {
43
+ const values = IntegerStreamDecoder.decodePhysicalLevelTechnique(data, offset, streamMetadata);
44
+ return decodeZigZagSequenceRle(values);
45
+ }
46
+ static decodeSequenceLongStream(data, offset, streamMetadata) {
47
+ const values = decodeVarintInt64(data, offset, streamMetadata.numValues);
48
+ return decodeZigZagSequenceRleInt64(values);
49
+ }
50
+ static decodeLongStream(data, offset, streamMetadata, isSigned) {
51
+ const values = decodeVarintInt64(data, offset, streamMetadata.numValues);
52
+ return this.decodeLongBuffer(values, streamMetadata, isSigned);
53
+ }
54
+ static decodeLongFloat64Stream(data, offset, streamMetadata, isSigned) {
55
+ const values = decodeVarintFloat64(data, streamMetadata.numValues, offset);
56
+ return this.decodeFloat64Buffer(values, streamMetadata, isSigned);
57
+ }
58
+ static decodeConstLongStream(data, offset, streamMetadata, isSigned) {
59
+ const values = decodeVarintInt64(data, offset, streamMetadata.numValues);
60
+ if (values.length === 1) {
61
+ const value = values[0];
62
+ return isSigned ? decodeZigZagValueInt64(value) : value;
63
+ }
64
+ return isSigned ? decodeZigZagConstRleInt64(values) : decodeUnsignedConstRleInt64(values);
65
+ }
66
+ static decodeIntBuffer(values, streamMetadata, isSigned, scalingData) {
67
+ /*
68
+ * Currently the encoder uses only fixed combinations of encodings.
69
+ * For performance reasons it is also used a fixed combination of the encodings on the decoding side.
70
+ * The following encodings and combinations are used:
71
+ * - Morton Delta -> always sorted so not ZigZag encoding needed
72
+ * - Delta -> currently always in combination with ZigZag encoding
73
+ * - Rle -> in combination with ZigZag encoding if data type is signed
74
+ * - Delta Rle
75
+ * - Componentwise Delta -> always ZigZag encoding is used
76
+ * */
77
+ switch (streamMetadata.logicalLevelTechnique1) {
78
+ case LogicalLevelTechnique.DELTA:
79
+ if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
80
+ const rleMetadata = streamMetadata;
81
+ return decodeDeltaRle(values, rleMetadata.runs, rleMetadata.numRleValues);
82
+ }
83
+ decodeZigZagDelta(values);
84
+ return values;
85
+ case LogicalLevelTechnique.RLE:
86
+ return decodeRle(values, streamMetadata, isSigned);
87
+ case LogicalLevelTechnique.MORTON:
88
+ fastInverseDelta(values);
89
+ return values;
90
+ case LogicalLevelTechnique.COMPONENTWISE_DELTA:
91
+ if (scalingData) {
92
+ decodeComponentwiseDeltaVec2Scaled(values, scalingData.scale, scalingData.min, scalingData.max);
93
+ return values;
94
+ }
95
+ decodeComponentwiseDeltaVec2(values);
96
+ return values;
97
+ case LogicalLevelTechnique.NONE:
98
+ if (isSigned) {
99
+ decodeZigZag(values);
100
+ }
101
+ return values;
102
+ default:
103
+ throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
104
+ }
105
+ }
106
+ static decodeLongBuffer(values, streamMetadata, isSigned) {
107
+ switch (streamMetadata.logicalLevelTechnique1) {
108
+ case LogicalLevelTechnique.DELTA:
109
+ if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
110
+ const rleMetadata = streamMetadata;
111
+ return decodeDeltaRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);
112
+ }
113
+ decodeZigZagDeltaInt64(values);
114
+ return values;
115
+ case LogicalLevelTechnique.RLE:
116
+ return decodeRleInt64(values, streamMetadata, isSigned);
117
+ case LogicalLevelTechnique.NONE:
118
+ if (isSigned) {
119
+ decodeZigZagInt64(values);
120
+ }
121
+ return values;
122
+ default:
123
+ throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
124
+ }
125
+ }
126
+ static decodeFloat64Buffer(values, streamMetadata, isSigned) {
127
+ switch (streamMetadata.logicalLevelTechnique1) {
128
+ case LogicalLevelTechnique.DELTA:
129
+ if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
130
+ const rleMetadata = streamMetadata;
131
+ values = decodeUnsignedRleFloat64(values, rleMetadata.runs, rleMetadata.numRleValues);
132
+ }
133
+ decodeZigZagDeltaFloat64(values);
134
+ return values;
135
+ case LogicalLevelTechnique.RLE:
136
+ return decodeRleFloat64(values, streamMetadata, isSigned);
137
+ case LogicalLevelTechnique.NONE:
138
+ if (isSigned) {
139
+ decodeZigZagFloat64(values);
140
+ }
141
+ return values;
142
+ default:
143
+ throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
144
+ }
145
+ }
146
+ static decodeLengthToOffsetBuffer(values, streamMetadata) {
147
+ if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&
148
+ streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE) {
149
+ const decodedValues = zigZagDeltaOfDeltaDecoding(values);
150
+ return decodedValues;
151
+ }
152
+ if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.RLE &&
153
+ streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE) {
154
+ const rleMetadata = streamMetadata;
155
+ const decodedValues = rleDeltaDecoding(values, rleMetadata.runs, rleMetadata.numRleValues);
156
+ return decodedValues;
157
+ }
158
+ if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.NONE &&
159
+ streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE) {
160
+ //TODO: use fastInverseDelta again and check what are the performance problems in zoom 14
161
+ //fastInverseDelta(values);
162
+ inverseDelta(values);
163
+ const offsets = new Int32Array(streamMetadata.numValues + 1);
164
+ offsets[0] = 0;
165
+ offsets.set(values, 1);
166
+ return offsets;
167
+ }
168
+ if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&
169
+ streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
170
+ const rleMetadata = streamMetadata;
171
+ const decodedValues = zigZagRleDeltaDecoding(values, rleMetadata.runs, rleMetadata.numRleValues);
172
+ fastInverseDelta(decodedValues);
173
+ return decodedValues;
174
+ }
175
+ throw new Error("Only delta encoding is supported for transforming length to offset streams yet.");
176
+ }
177
+ static decodeNullableIntStream(data, offset, streamMetadata, isSigned, bitVector) {
178
+ const values = streamMetadata.physicalLevelTechnique === PhysicalLevelTechnique.FAST_PFOR
179
+ ? decodeFastPfor(data, streamMetadata.numValues, streamMetadata.byteLength, offset)
180
+ : decodeVarintInt32(data, offset, streamMetadata.numValues);
181
+ return this.decodeNullableIntBuffer(values, streamMetadata, isSigned, bitVector);
182
+ }
183
+ static decodeNullableLongStream(data, offset, streamMetadata, isSigned, bitVector) {
184
+ const values = decodeVarintInt64(data, offset, streamMetadata.numValues);
185
+ return this.decodeNullableLongBuffer(values, streamMetadata, isSigned, bitVector);
186
+ }
187
+ static decodeNullableIntBuffer(values, streamMetadata, isSigned, bitVector) {
188
+ switch (streamMetadata.logicalLevelTechnique1) {
189
+ case LogicalLevelTechnique.DELTA:
190
+ if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
191
+ const rleMetadata = streamMetadata;
192
+ values = decodeUnsignedRle(values, rleMetadata.runs, rleMetadata.numRleValues);
193
+ }
194
+ return decodeNullableZigZagDelta(bitVector, values);
195
+ case LogicalLevelTechnique.RLE:
196
+ return decodeNullableRle(values, streamMetadata, isSigned, bitVector);
197
+ case LogicalLevelTechnique.MORTON:
198
+ fastInverseDelta(values);
199
+ return values;
200
+ case LogicalLevelTechnique.COMPONENTWISE_DELTA:
201
+ decodeComponentwiseDeltaVec2(values);
202
+ return values;
203
+ case LogicalLevelTechnique.NONE:
204
+ values = isSigned ? padZigZagWithZeros(bitVector, values) : padWithZeros(bitVector, values);
205
+ return values;
206
+ default:
207
+ throw new Error("The specified Logical level technique is not supported");
208
+ }
209
+ }
210
+ static decodeNullableLongBuffer(values, streamMetadata, isSigned, bitVector) {
211
+ switch (streamMetadata.logicalLevelTechnique1) {
212
+ case LogicalLevelTechnique.DELTA:
213
+ if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
214
+ const rleMetadata = streamMetadata;
215
+ values = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);
216
+ }
217
+ return decodeNullableZigZagDeltaInt64(bitVector, values);
218
+ case LogicalLevelTechnique.RLE:
219
+ return decodeNullableRleInt64(values, streamMetadata, isSigned, bitVector);
220
+ case LogicalLevelTechnique.NONE:
221
+ values = isSigned ? padZigZagWithZerosInt64(bitVector, values) : padWithZerosInt64(bitVector, values);
222
+ return values;
223
+ default:
224
+ throw new Error("The specified Logical level technique is not supported");
225
+ }
226
+ }
227
+ static getVectorType(streamMetadata, sizeOrNullabilityBuffer, data, offset) {
228
+ const logicalLevelTechnique1 = streamMetadata.logicalLevelTechnique1;
229
+ if (logicalLevelTechnique1 === LogicalLevelTechnique.RLE) {
230
+ return streamMetadata.runs === 1 ? VectorType.CONST : VectorType.FLAT;
231
+ }
232
+ const numFeatures = sizeOrNullabilityBuffer instanceof BitVector ? sizeOrNullabilityBuffer.size() : sizeOrNullabilityBuffer;
233
+ if (logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&
234
+ streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
235
+ const rleMetadata = streamMetadata;
236
+ const runs = rleMetadata.runs;
237
+ const zigZagOne = 2;
238
+ if (rleMetadata.numRleValues !== numFeatures) {
239
+ return VectorType.FLAT;
240
+ }
241
+ // Single run is always a sequence
242
+ if (runs === 1) {
243
+ return VectorType.SEQUENCE;
244
+ }
245
+ // Two runs can be a sequence if both deltas are equal to 1
246
+ if (runs === 2) {
247
+ const savedOffset = offset.get();
248
+ let values;
249
+ if (streamMetadata.physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {
250
+ values = decodeVarintInt32(data, offset, 4);
251
+ }
252
+ else {
253
+ const byteOffset = offset.get();
254
+ values = new Int32Array(data.buffer, data.byteOffset + byteOffset, 4);
255
+ }
256
+ offset.set(savedOffset);
257
+ // Check if both deltas are encoded 1
258
+ if (values[2] === zigZagOne && values[3] === zigZagOne) {
259
+ return VectorType.SEQUENCE;
260
+ }
261
+ }
262
+ }
263
+ return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;
264
+ }
265
+ }
266
+ //# sourceMappingURL=integerStreamDecoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integerStreamDecoder.js","sourceRoot":"","sources":["../../src/decoding/integerStreamDecoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,125 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import IntegerStreamDecoder from "./integerStreamDecoder";
3
+ import { RleEncodedStreamMetadata } from "../metadata/tile/rleEncodedStreamMetadata";
4
+ import { PhysicalStreamType } from "../metadata/tile/physicalStreamType";
5
+ import { LogicalStreamType } from "../metadata/tile/logicalStreamType";
6
+ import { LogicalLevelTechnique } from "../metadata/tile/logicalLevelTechnique";
7
+ import { PhysicalLevelTechnique } from "../metadata/tile/physicalLevelTechnique";
8
+ import { VectorType } from "../vector/vectorType";
9
+ import { DictionaryType } from "../metadata/tile/dictionaryType";
10
+ import IntWrapper from "./intWrapper";
11
+ import BitVector from "../vector/flat/bitVector";
12
+ import { StreamMetadata } from "../metadata/tile/streamMetadata";
13
+ /**
14
+ * Helper function to create StreamMetadata
15
+ */
16
+ function createStreamMetadata(logicalTechnique1, logicalTechnique2 = LogicalLevelTechnique.NONE, numValues = 3) {
17
+ return new StreamMetadata(PhysicalStreamType.DATA, new LogicalStreamType(DictionaryType.NONE), logicalTechnique1, logicalTechnique2, PhysicalLevelTechnique.VARINT, numValues, 10);
18
+ }
19
+ /**
20
+ * Helper function to create RleEncodedStreamMetadata
21
+ */
22
+ function createRleMetadata(logicalTechnique1, logicalTechnique2, runs, numRleValues) {
23
+ return new RleEncodedStreamMetadata(PhysicalStreamType.DATA, new LogicalStreamType(DictionaryType.NONE), logicalTechnique1, logicalTechnique2, PhysicalLevelTechnique.VARINT, runs * 2, 10, runs, numRleValues);
24
+ }
25
+ describe("IntegerStreamDecoder.getVectorType", () => {
26
+ describe("Delta-RLE with single run", () => {
27
+ it("should return SEQUENCE for 1 run", () => {
28
+ const metadata = createRleMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.RLE, 1, 5);
29
+ const data = new Uint8Array([5, 2]);
30
+ const offset = new IntWrapper(0);
31
+ const result = IntegerStreamDecoder.getVectorType(metadata, 5, data, offset);
32
+ expect(result).toBe(VectorType.SEQUENCE);
33
+ });
34
+ });
35
+ describe("Delta-RLE with 2 runs", () => {
36
+ it("should return SEQUENCE when both deltas equal 1 (zigzag=2)", () => {
37
+ const metadata = createRleMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.RLE, 2, 5);
38
+ const data = new Uint8Array([1, 4, 2, 2]);
39
+ const offset = new IntWrapper(0);
40
+ const result = IntegerStreamDecoder.getVectorType(metadata, 5, data, offset);
41
+ expect(result).toBe(VectorType.SEQUENCE);
42
+ });
43
+ });
44
+ });
45
+ describe("IntegerStreamDecoder.decodeLongBuffer", () => {
46
+ it("should decode DELTA with RLE", () => {
47
+ const metadata = createRleMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.RLE, 2, 5);
48
+ const values = new BigInt64Array([3n, 2n, 0n, 2n]);
49
+ const result = IntegerStreamDecoder["decodeLongBuffer"](values, metadata, true);
50
+ expect(result).toBeInstanceOf(BigInt64Array);
51
+ });
52
+ it("should decode DELTA without RLE", () => {
53
+ const metadata = createStreamMetadata(LogicalLevelTechnique.DELTA);
54
+ const values = new BigInt64Array([2n, 4n, 6n]);
55
+ const result = IntegerStreamDecoder["decodeLongBuffer"](values, metadata, true);
56
+ expect(result).toBe(values);
57
+ });
58
+ it("should decode RLE", () => {
59
+ const metadata = createRleMetadata(LogicalLevelTechnique.RLE, LogicalLevelTechnique.NONE, 2, 5);
60
+ const values = new BigInt64Array([3n, 2n, 2n, 4n]);
61
+ const result = IntegerStreamDecoder["decodeLongBuffer"](values, metadata, true);
62
+ expect(result).toBeInstanceOf(BigInt64Array);
63
+ });
64
+ it("should decode NONE signed", () => {
65
+ const metadata = createStreamMetadata(LogicalLevelTechnique.NONE);
66
+ const values = new BigInt64Array([2n, 4n, 6n]);
67
+ const result = IntegerStreamDecoder["decodeLongBuffer"](values, metadata, true);
68
+ expect(result).toBe(values);
69
+ });
70
+ it("should decode NONE unsigned", () => {
71
+ const metadata = createStreamMetadata(LogicalLevelTechnique.NONE);
72
+ const values = new BigInt64Array([1n, 2n, 3n]);
73
+ const result = IntegerStreamDecoder["decodeLongBuffer"](values, metadata, false);
74
+ expect(result).toBe(values);
75
+ });
76
+ it("should throw for unsupported technique", () => {
77
+ const metadata = createStreamMetadata(LogicalLevelTechnique.MORTON);
78
+ const values = new BigInt64Array([1n, 2n, 3n]);
79
+ expect(() => IntegerStreamDecoder["decodeLongBuffer"](values, metadata, true)).toThrow();
80
+ });
81
+ });
82
+ describe("IntegerStreamDecoder.decodeNullableLongBuffer", () => {
83
+ it("should decode DELTA with RLE", () => {
84
+ const metadata = createRleMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.RLE, 2, 3);
85
+ const values = new BigInt64Array([2n, 1n, 0n, 2n]);
86
+ const bitVector = new BitVector(new Uint8Array([0b00000111]), 5);
87
+ const result = IntegerStreamDecoder["decodeNullableLongBuffer"](values, metadata, true, bitVector);
88
+ expect(result).toBeInstanceOf(BigInt64Array);
89
+ });
90
+ it("should decode DELTA without RLE", () => {
91
+ const metadata = createStreamMetadata(LogicalLevelTechnique.DELTA);
92
+ const values = new BigInt64Array([2n, 4n, 6n]);
93
+ const bitVector = new BitVector(new Uint8Array([0b00000111]), 3);
94
+ const result = IntegerStreamDecoder["decodeNullableLongBuffer"](values, metadata, true, bitVector);
95
+ expect(result).toBeInstanceOf(BigInt64Array);
96
+ });
97
+ it("should decode RLE", () => {
98
+ const metadata = createRleMetadata(LogicalLevelTechnique.RLE, LogicalLevelTechnique.NONE, 2, 3);
99
+ const values = new BigInt64Array([2n, 1n, 2n, 4n]);
100
+ const bitVector = new BitVector(new Uint8Array([0b00000111]), 5);
101
+ const result = IntegerStreamDecoder["decodeNullableLongBuffer"](values, metadata, true, bitVector);
102
+ expect(result).toBeInstanceOf(BigInt64Array);
103
+ });
104
+ it("should decode NONE signed", () => {
105
+ const metadata = createStreamMetadata(LogicalLevelTechnique.NONE);
106
+ const values = new BigInt64Array([2n, 4n, 6n]);
107
+ const bitVector = new BitVector(new Uint8Array([0b00000111]), 3);
108
+ const result = IntegerStreamDecoder["decodeNullableLongBuffer"](values, metadata, true, bitVector);
109
+ expect(result).toBeInstanceOf(BigInt64Array);
110
+ });
111
+ it("should decode NONE unsigned", () => {
112
+ const metadata = createStreamMetadata(LogicalLevelTechnique.NONE);
113
+ const values = new BigInt64Array([1n, 2n, 3n]);
114
+ const bitVector = new BitVector(new Uint8Array([0b00000111]), 3);
115
+ const result = IntegerStreamDecoder["decodeNullableLongBuffer"](values, metadata, false, bitVector);
116
+ expect(result).toBeInstanceOf(BigInt64Array);
117
+ });
118
+ it("should throw for unsupported technique", () => {
119
+ const metadata = createStreamMetadata(LogicalLevelTechnique.COMPONENTWISE_DELTA);
120
+ const values = new BigInt64Array([1n, 2n, 3n]);
121
+ const bitVector = new BitVector(new Uint8Array([0b00000111]), 3);
122
+ expect(() => IntegerStreamDecoder["decodeNullableLongBuffer"](values, metadata, true, bitVector)).toThrow();
123
+ });
124
+ });
125
+ //# sourceMappingURL=integerStreamDecoder.spec.js.map