@maplibre/mlt 1.1.6 → 1.1.8

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 (221) 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 +2 -2
  5. package/dist/decoding/decodingTestUtils.js +20 -21
  6. package/dist/decoding/decodingTestUtils.js.map +1 -1
  7. package/dist/decoding/decodingUtils.js +4 -2
  8. package/dist/decoding/decodingUtils.js.map +1 -1
  9. package/dist/decoding/fastPforDecoder.d.ts +47 -0
  10. package/dist/decoding/fastPforDecoder.js +482 -0
  11. package/dist/decoding/fastPforDecoder.js.map +1 -0
  12. package/dist/decoding/fastPforShared.d.ts +7 -0
  13. package/dist/decoding/fastPforShared.js +29 -0
  14. package/dist/decoding/fastPforShared.js.map +1 -0
  15. package/dist/decoding/fastPforUnpack.d.ts +23 -0
  16. package/dist/decoding/fastPforUnpack.js +910 -0
  17. package/dist/decoding/fastPforUnpack.js.map +1 -0
  18. package/dist/decoding/geometryDecoder.d.ts +2 -2
  19. package/dist/decoding/geometryDecoder.js +52 -49
  20. package/dist/decoding/geometryDecoder.js.map +1 -1
  21. package/dist/decoding/intWrapper.js +0 -1
  22. package/dist/decoding/intWrapper.js.map +1 -1
  23. package/dist/decoding/integerDecodingUtils.d.ts +33 -25
  24. package/dist/decoding/integerDecodingUtils.js +115 -52
  25. package/dist/decoding/integerDecodingUtils.js.map +1 -1
  26. package/dist/decoding/integerStreamDecoder.d.ts +15 -11
  27. package/dist/decoding/integerStreamDecoder.js +159 -65
  28. package/dist/decoding/integerStreamDecoder.js.map +1 -1
  29. package/dist/decoding/propertyDecoder.js +38 -36
  30. package/dist/decoding/propertyDecoder.js.map +1 -1
  31. package/dist/decoding/stringDecoder.js +19 -23
  32. package/dist/decoding/stringDecoder.js.map +1 -1
  33. package/dist/decoding/unpackNullableUtils.d.ts +2 -2
  34. package/dist/decoding/unpackNullableUtils.js.map +1 -1
  35. package/dist/encoding/bigEndianEncode.d.ts +7 -0
  36. package/dist/encoding/bigEndianEncode.js +16 -0
  37. package/dist/encoding/bigEndianEncode.js.map +1 -0
  38. package/dist/encoding/constGeometryVectorEncoder.d.ts +19 -0
  39. package/dist/encoding/constGeometryVectorEncoder.js +248 -0
  40. package/dist/encoding/constGeometryVectorEncoder.js.map +1 -0
  41. package/dist/encoding/encodingUtils.d.ts +2 -2
  42. package/dist/encoding/encodingUtils.js +3 -3
  43. package/dist/encoding/encodingUtils.js.map +1 -1
  44. package/dist/encoding/fastPforEncoder.d.ts +18 -0
  45. package/dist/encoding/fastPforEncoder.js +310 -0
  46. package/dist/encoding/fastPforEncoder.js.map +1 -0
  47. package/dist/encoding/integerEncodingUtils.d.ts +20 -20
  48. package/dist/encoding/integerEncodingUtils.js +64 -48
  49. package/dist/encoding/integerEncodingUtils.js.map +1 -1
  50. package/dist/encoding/integerStreamEncoder.d.ts +3 -2
  51. package/dist/encoding/integerStreamEncoder.js +57 -23
  52. package/dist/encoding/integerStreamEncoder.js.map +1 -1
  53. package/dist/encoding/packNullableUtils.d.ts +1 -1
  54. package/dist/encoding/packNullableUtils.js.map +1 -1
  55. package/dist/encoding/propertyEncoder.d.ts +1 -1
  56. package/dist/encoding/propertyEncoder.js +17 -24
  57. package/dist/encoding/propertyEncoder.js.map +1 -1
  58. package/dist/encoding/stringEncoder.js +9 -42
  59. package/dist/encoding/stringEncoder.js.map +1 -1
  60. package/dist/encoding/zOrderCurveEncoder.js +1 -1
  61. package/dist/encoding/zOrderCurveEncoder.js.map +1 -1
  62. package/dist/metadata/tile/logicalStreamType.d.ts +8 -12
  63. package/dist/metadata/tile/logicalStreamType.js +1 -19
  64. package/dist/metadata/tile/logicalStreamType.js.map +1 -1
  65. package/dist/metadata/tile/streamMetadataDecoder.d.ts +1 -1
  66. package/dist/metadata/tile/streamMetadataDecoder.js +9 -4
  67. package/dist/metadata/tile/streamMetadataDecoder.js.map +1 -1
  68. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.d.ts +1 -1
  69. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -1
  70. package/dist/metadata/tileset/typeMap.d.ts +10 -2
  71. package/dist/metadata/tileset/typeMap.js +25 -15
  72. package/dist/metadata/tileset/typeMap.js.map +1 -1
  73. package/dist/mltDecoder.js +46 -47
  74. package/dist/mltDecoder.js.map +1 -1
  75. package/dist/mltMetadata.js.map +1 -1
  76. package/dist/vector/constant/int32ConstVector.d.ts +6 -0
  77. package/dist/vector/constant/int32ConstVector.js +10 -0
  78. package/dist/vector/constant/int32ConstVector.js.map +1 -0
  79. package/dist/vector/constant/int64ConstVector.d.ts +6 -0
  80. package/dist/vector/constant/int64ConstVector.js +10 -0
  81. package/dist/vector/constant/int64ConstVector.js.map +1 -0
  82. package/dist/vector/dictionary/stringDictionaryVector.d.ts +1 -2
  83. package/dist/vector/dictionary/stringDictionaryVector.js +0 -3
  84. package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
  85. package/dist/vector/featureTable.d.ts +7 -8
  86. package/dist/vector/featureTable.js +10 -42
  87. package/dist/vector/featureTable.js.map +1 -1
  88. package/dist/vector/filter/flatSelectionVector.d.ts +1 -1
  89. package/dist/vector/filter/flatSelectionVector.js +0 -2
  90. package/dist/vector/filter/flatSelectionVector.js.map +1 -1
  91. package/dist/vector/filter/selectionVectorUtils.d.ts +1 -1
  92. package/dist/vector/filter/selectionVectorUtils.js.map +1 -1
  93. package/dist/vector/filter/sequenceSelectionVector.d.ts +1 -1
  94. package/dist/vector/filter/sequenceSelectionVector.js +1 -5
  95. package/dist/vector/filter/sequenceSelectionVector.js.map +1 -1
  96. package/dist/vector/flat/bitVector.js +0 -2
  97. package/dist/vector/flat/bitVector.js.map +1 -1
  98. package/dist/vector/flat/booleanFlatVector.js +0 -1
  99. package/dist/vector/flat/booleanFlatVector.js.map +1 -1
  100. package/dist/vector/flat/{intFlatVector.d.ts → int32FlatVector.d.ts} +1 -1
  101. package/dist/vector/flat/{intFlatVector.js → int32FlatVector.js} +2 -2
  102. package/dist/vector/flat/int32FlatVector.js.map +1 -0
  103. package/dist/vector/flat/{longFlatVector.d.ts → int64FlatVector.d.ts} +1 -1
  104. package/dist/vector/flat/{longFlatVector.js → int64FlatVector.js} +2 -2
  105. package/dist/vector/flat/int64FlatVector.js.map +1 -0
  106. package/dist/vector/flat/stringFlatVector.d.ts +0 -1
  107. package/dist/vector/flat/stringFlatVector.js +0 -2
  108. package/dist/vector/flat/stringFlatVector.js.map +1 -1
  109. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +1 -3
  110. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js +0 -42
  111. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
  112. package/dist/vector/geometry/constGeometryVector.d.ts +5 -5
  113. package/dist/vector/geometry/constGeometryVector.js +1 -3
  114. package/dist/vector/geometry/constGeometryVector.js.map +1 -1
  115. package/dist/vector/geometry/constGpuVector.d.ts +4 -4
  116. package/dist/vector/geometry/constGpuVector.js +1 -3
  117. package/dist/vector/geometry/constGpuVector.js.map +1 -1
  118. package/dist/vector/geometry/flatGeometryVector.d.ts +4 -4
  119. package/dist/vector/geometry/flatGeometryVector.js +1 -5
  120. package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
  121. package/dist/vector/geometry/flatGpuVector.d.ts +3 -3
  122. package/dist/vector/geometry/flatGpuVector.js +0 -1
  123. package/dist/vector/geometry/flatGpuVector.js.map +1 -1
  124. package/dist/vector/geometry/geometryType.js.map +1 -1
  125. package/dist/vector/geometry/geometryVector.d.ts +7 -8
  126. package/dist/vector/geometry/geometryVector.js +0 -13
  127. package/dist/vector/geometry/geometryVector.js.map +1 -1
  128. package/dist/vector/geometry/geometryVectorConverter.d.ts +1 -1
  129. package/dist/vector/geometry/geometryVectorConverter.js +167 -211
  130. package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
  131. package/dist/vector/geometry/gpuVector.d.ts +6 -6
  132. package/dist/vector/geometry/gpuVector.js +0 -4
  133. package/dist/vector/geometry/gpuVector.js.map +1 -1
  134. package/dist/vector/geometry/topologyVector.d.ts +5 -9
  135. package/dist/vector/geometry/topologyVector.js +1 -19
  136. package/dist/vector/geometry/topologyVector.js.map +1 -1
  137. package/dist/vector/geometry/vertexBufferType.js.map +1 -1
  138. package/dist/vector/idVector.d.ts +8 -0
  139. package/dist/vector/idVector.js +2 -0
  140. package/dist/vector/idVector.js.map +1 -0
  141. package/dist/vector/sequence/{intSequenceVector.d.ts → int32SequenceVector.d.ts} +1 -1
  142. package/dist/vector/sequence/{intSequenceVector.js → int32SequenceVector.js} +2 -2
  143. package/dist/vector/sequence/int32SequenceVector.js.map +1 -0
  144. package/dist/vector/sequence/{longSequenceVector.d.ts → int64SequenceVector.d.ts} +1 -1
  145. package/dist/vector/sequence/{longSequenceVector.js → int64SequenceVector.js} +2 -2
  146. package/dist/vector/sequence/int64SequenceVector.js.map +1 -0
  147. package/dist/vector/sequence/sequenceVector.js +0 -1
  148. package/dist/vector/sequence/sequenceVector.js.map +1 -1
  149. package/dist/vector/variableSizeVector.js +0 -1
  150. package/dist/vector/variableSizeVector.js.map +1 -1
  151. package/dist/vector/vector.js +1 -5
  152. package/dist/vector/vector.js.map +1 -1
  153. package/dist/vector/vectorType.js.map +1 -1
  154. package/package.json +9 -10
  155. package/dist/decoding/decodingUtils.spec.d.ts +0 -1
  156. package/dist/decoding/decodingUtils.spec.js +0 -141
  157. package/dist/decoding/decodingUtils.spec.js.map +0 -1
  158. package/dist/decoding/fsstDecoder.spec.d.ts +0 -1
  159. package/dist/decoding/fsstDecoder.spec.js +0 -57
  160. package/dist/decoding/fsstDecoder.spec.js.map +0 -1
  161. package/dist/decoding/integerDecodingUtils.spec.d.ts +0 -1
  162. package/dist/decoding/integerDecodingUtils.spec.js +0 -300
  163. package/dist/decoding/integerDecodingUtils.spec.js.map +0 -1
  164. package/dist/decoding/integerStreamDecoder.spec.d.ts +0 -1
  165. package/dist/decoding/integerStreamDecoder.spec.js +0 -402
  166. package/dist/decoding/integerStreamDecoder.spec.js.map +0 -1
  167. package/dist/decoding/propertyDecoder.spec.d.ts +0 -1
  168. package/dist/decoding/propertyDecoder.spec.js +0 -448
  169. package/dist/decoding/propertyDecoder.spec.js.map +0 -1
  170. package/dist/decoding/stringDecoder.spec.d.ts +0 -1
  171. package/dist/decoding/stringDecoder.spec.js +0 -387
  172. package/dist/decoding/stringDecoder.spec.js.map +0 -1
  173. package/dist/decoding/unpackNullableUtils.spec.d.ts +0 -1
  174. package/dist/decoding/unpackNullableUtils.spec.js +0 -71
  175. package/dist/decoding/unpackNullableUtils.spec.js.map +0 -1
  176. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.d.ts +0 -1
  177. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js +0 -142
  178. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js.map +0 -1
  179. package/dist/mltDecoder.spec.d.ts +0 -1
  180. package/dist/mltDecoder.spec.js +0 -152
  181. package/dist/mltDecoder.spec.js.map +0 -1
  182. package/dist/vector/constant/intConstVector.d.ts +0 -6
  183. package/dist/vector/constant/intConstVector.js +0 -10
  184. package/dist/vector/constant/intConstVector.js.map +0 -1
  185. package/dist/vector/constant/longConstVector.d.ts +0 -6
  186. package/dist/vector/constant/longConstVector.js +0 -10
  187. package/dist/vector/constant/longConstVector.js.map +0 -1
  188. package/dist/vector/filter/flatSelectionVector.spec.d.ts +0 -1
  189. package/dist/vector/filter/flatSelectionVector.spec.js +0 -51
  190. package/dist/vector/filter/flatSelectionVector.spec.js.map +0 -1
  191. package/dist/vector/filter/selectionVectorUtil.spec.d.ts +0 -1
  192. package/dist/vector/filter/selectionVectorUtil.spec.js +0 -154
  193. package/dist/vector/filter/selectionVectorUtil.spec.js.map +0 -1
  194. package/dist/vector/filter/sequenceSelectionVector.spec.d.ts +0 -1
  195. package/dist/vector/filter/sequenceSelectionVector.spec.js +0 -115
  196. package/dist/vector/filter/sequenceSelectionVector.spec.js.map +0 -1
  197. package/dist/vector/flat/floatFlatVector.spec.d.ts +0 -1
  198. package/dist/vector/flat/floatFlatVector.spec.js +0 -14
  199. package/dist/vector/flat/floatFlatVector.spec.js.map +0 -1
  200. package/dist/vector/flat/intFlatVector.js.map +0 -1
  201. package/dist/vector/flat/intFlatVector.spec.d.ts +0 -1
  202. package/dist/vector/flat/intFlatVector.spec.js +0 -15
  203. package/dist/vector/flat/intFlatVector.spec.js.map +0 -1
  204. package/dist/vector/flat/longFlatVector.js.map +0 -1
  205. package/dist/vector/flat/longFlatVector.spec.d.ts +0 -1
  206. package/dist/vector/flat/longFlatVector.spec.js +0 -14
  207. package/dist/vector/flat/longFlatVector.spec.js.map +0 -1
  208. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.d.ts +0 -1
  209. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js +0 -28
  210. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js.map +0 -1
  211. package/dist/vector/geometry/zOrderCurve.spec.d.ts +0 -1
  212. package/dist/vector/geometry/zOrderCurve.spec.js +0 -25
  213. package/dist/vector/geometry/zOrderCurve.spec.js.map +0 -1
  214. package/dist/vector/intVector.d.ts +0 -8
  215. package/dist/vector/intVector.js +0 -2
  216. package/dist/vector/intVector.js.map +0 -1
  217. package/dist/vector/sequence/intSequenceVector.js.map +0 -1
  218. package/dist/vector/sequence/longSequenceVector.js.map +0 -1
  219. package/dist/vector/sequence/longSequenceVektor.spec.d.ts +0 -1
  220. package/dist/vector/sequence/longSequenceVektor.spec.js +0 -11
  221. package/dist/vector/sequence/longSequenceVektor.spec.js.map +0 -1
@@ -1,4 +1,6 @@
1
1
  import IntWrapper from "../decoding/intWrapper";
2
+ import { createFastPforEncoderWorkspace, encodeFastPforInt32WithWorkspace } from "./fastPforEncoder";
3
+ import { encodeBigEndianInt32s } from "./bigEndianEncode";
2
4
  export function encodeVarintInt32Value(value, dst, offset) {
3
5
  let v = value;
4
6
  while (v > 0x7f) {
@@ -84,8 +86,10 @@ function encodeVarintFloat64Value(val, buf, offset) {
84
86
  buf[offset.get()] = val;
85
87
  offset.increment();
86
88
  }
87
- export function encodeFastPfor(data) {
88
- throw new Error("FastPFor is not implemented yet.");
89
+ export function encodeFastPfor(values) {
90
+ const encoderWorkspace = createFastPforEncoderWorkspace();
91
+ const encodedWords = encodeFastPforInt32WithWorkspace(values, encoderWorkspace);
92
+ return encodeBigEndianInt32s(encodedWords);
89
93
  }
90
94
  export function encodeZigZagInt32Value(value) {
91
95
  return (value << 1) ^ (value >> 31);
@@ -97,14 +101,18 @@ export function encodeZigZagFloat64Value(n) {
97
101
  return n >= 0 ? n * 2 : n * -2 - 1;
98
102
  }
99
103
  export function encodeZigZagInt32(data) {
104
+ const result = new Uint32Array(data.length);
100
105
  for (let i = 0; i < data.length; i++) {
101
- data[i] = encodeZigZagInt32Value(data[i]);
106
+ result[i] = encodeZigZagInt32Value(data[i]);
102
107
  }
108
+ return result;
103
109
  }
104
110
  export function encodeZigZagInt64(data) {
111
+ const result = new BigUint64Array(data.length);
105
112
  for (let i = 0; i < data.length; i++) {
106
- data[i] = encodeZigZagInt64Value(data[i]);
113
+ result[i] = encodeZigZagInt64Value(data[i]);
107
114
  }
115
+ return result;
108
116
  }
109
117
  export function encodeZigZagFloat64(data) {
110
118
  for (let i = 0; i < data.length; i++) {
@@ -113,7 +121,7 @@ export function encodeZigZagFloat64(data) {
113
121
  }
114
122
  export function encodeUnsignedRleInt32(input) {
115
123
  if (input.length === 0) {
116
- return { data: new Int32Array(0), runs: 0 };
124
+ return { data: new Uint32Array(0), runs: 0 };
117
125
  }
118
126
  const runLengths = [];
119
127
  const runValues = [];
@@ -138,7 +146,7 @@ export function encodeUnsignedRleInt32(input) {
138
146
  runValues.push(currentValue);
139
147
  // Combine lengths and values into the final structured output array
140
148
  const numRuns = runLengths.length;
141
- const encodedData = new Int32Array(numRuns * 2);
149
+ const encodedData = new Uint32Array(numRuns * 2);
142
150
  // Populate the first half with lengths
143
151
  encodedData.set(runLengths, 0);
144
152
  // Populate the second half with values, offset by the total number of runs
@@ -147,7 +155,7 @@ export function encodeUnsignedRleInt32(input) {
147
155
  }
148
156
  export function encodeUnsignedRleInt64(input) {
149
157
  if (input.length === 0) {
150
- return { data: new BigInt64Array(0), runs: 0 };
158
+ return { data: new BigUint64Array(0), runs: 0 };
151
159
  }
152
160
  const runLengths = [];
153
161
  const runValues = [];
@@ -170,10 +178,10 @@ export function encodeUnsignedRleInt64(input) {
170
178
  // Record the final run after the loop finishes
171
179
  runLengths.push(currentRunLength);
172
180
  runValues.push(currentValue);
173
- // Combine lengths and values into the final structured output array (BigInt64Array)
181
+ // Combine lengths and values into the final structured output array (BigUint64Array)
174
182
  const numRuns = runLengths.length;
175
- const encodedData = new BigInt64Array(numRuns * 2);
176
- // Populate the first half with lengths. We must convert the numbers back to BigInts here.
183
+ const encodedData = new BigUint64Array(numRuns * 2);
184
+ // Populate the first half with lengths, converting the run length numbers to bigint for storage in the BigUint64Array.
177
185
  for (let i = 0; i < numRuns; i++) {
178
186
  encodedData[i] = BigInt(runLengths[i]);
179
187
  }
@@ -218,35 +226,39 @@ export function encodeUnsignedRleFloat64(input) {
218
226
  }
219
227
  export function encodeZigZagDeltaInt32(data) {
220
228
  if (data.length === 0) {
221
- return;
229
+ return new Uint32Array(0);
222
230
  }
231
+ const encodedData = new Uint32Array(data.length);
223
232
  let previousValue = data[0];
224
- data[0] = encodeZigZagInt32Value(previousValue);
233
+ encodedData[0] = encodeZigZagInt32Value(previousValue);
225
234
  for (let i = 1; i < data.length; i++) {
226
235
  const currentValue = data[i];
227
236
  const delta = currentValue - previousValue;
228
237
  const encodedDelta = encodeZigZagInt32Value(delta);
229
238
  // Store the encoded delta back into the array
230
- data[i] = encodedDelta;
239
+ encodedData[i] = encodedDelta;
231
240
  // Update the previous value tracker for the next iteration's delta calculation
232
241
  previousValue = currentValue;
233
242
  }
243
+ return encodedData;
234
244
  }
235
245
  export function encodeZigZagDeltaInt64(data) {
236
246
  if (data.length === 0) {
237
- return;
247
+ return new BigUint64Array(0);
238
248
  }
249
+ const encodedData = new BigUint64Array(data.length);
239
250
  let previousValue = data[0];
240
- data[0] = encodeZigZagInt64Value(previousValue);
251
+ encodedData[0] = encodeZigZagInt64Value(previousValue);
241
252
  for (let i = 1; i < data.length; i++) {
242
253
  const currentValue = data[i];
243
254
  const delta = currentValue - previousValue;
244
255
  const encodedDelta = encodeZigZagInt64Value(delta);
245
256
  // Store the encoded delta back into the array
246
- data[i] = encodedDelta;
257
+ encodedData[i] = encodedDelta;
247
258
  // Update the previous value tracker for the next iteration's delta calculation
248
259
  previousValue = currentValue;
249
260
  }
261
+ return encodedData;
250
262
  }
251
263
  export function encodeZigZagDeltaFloat64(data) {
252
264
  if (data.length === 0) {
@@ -266,7 +278,7 @@ export function encodeZigZagDeltaFloat64(data) {
266
278
  }
267
279
  export function encodeZigZagRleInt32(input) {
268
280
  if (input.length === 0) {
269
- return { data: new Int32Array(0), runs: 0, numTotalValues: 0 };
281
+ return { data: new Uint32Array(0), runs: 0, numTotalValues: 0 };
270
282
  }
271
283
  const zigzagEncodedStream = [];
272
284
  // Step 1: Apply Zigzag Encoding to all values
@@ -296,8 +308,8 @@ export function encodeZigZagRleInt32(input) {
296
308
  runZigZagValues.push(currentValue);
297
309
  // Step 3: Combine lengths and values into the final structured output array
298
310
  const numRuns = runLengths.length;
299
- // The final array uses Int32Array for lengths AND values
300
- const encodedData = new Int32Array(numRuns * 2);
311
+ // The final array uses Uint32Array for lengths AND values
312
+ const encodedData = new Uint32Array(numRuns * 2);
301
313
  // Populate the first half with lengths
302
314
  encodedData.set(runLengths, 0);
303
315
  // Populate the second half with zigzagged values
@@ -310,7 +322,7 @@ export function encodeZigZagRleInt32(input) {
310
322
  }
311
323
  export function encodeZigZagRleInt64(input) {
312
324
  if (input.length === 0) {
313
- return { data: new BigInt64Array(0), runs: 0, numTotalValues: 0 };
325
+ return { data: new BigUint64Array(0), runs: 0, numTotalValues: 0 };
314
326
  }
315
327
  const zigzagEncodedStream = [];
316
328
  // Step 1: Apply Zigzag Encoding to all values
@@ -340,9 +352,9 @@ export function encodeZigZagRleInt64(input) {
340
352
  runZigZagValues.push(currentValue);
341
353
  // Step 3: Combine lengths and values into the final structured output array
342
354
  const numRuns = runLengths.length;
343
- // The final array uses BigInt64Array for lengths AND values
344
- const encodedData = new BigInt64Array(numRuns * 2);
345
- // Populate the first half with lengths (converting numbers back to BigInts)
355
+ // The final array uses BigUint64Array for lengths AND values
356
+ const encodedData = new BigUint64Array(numRuns * 2);
357
+ // Populate the first half with lengths (converting numbers back to BigUint64Array format)
346
358
  for (let i = 0; i < numRuns; i++) {
347
359
  encodedData[i] = BigInt(runLengths[i]);
348
360
  }
@@ -411,42 +423,46 @@ export function encodeDeltaInt32(data) {
411
423
  }
412
424
  export function encodeComponentwiseDeltaVec2(data) {
413
425
  if (data.length < 2)
414
- return;
426
+ return new Uint32Array(data);
427
+ const encoded = new Uint32Array(data.length);
415
428
  // Reverse iterate to avoid overwriting data needed for delta computation
416
429
  for (let i = data.length - 2; i >= 2; i -= 2) {
417
430
  const deltaX = data[i] - data[i - 2];
418
431
  const deltaY = data[i + 1] - data[i - 1];
419
- data[i] = encodeZigZagInt32Value(deltaX);
420
- data[i + 1] = encodeZigZagInt32Value(deltaY);
432
+ encoded[i] = encodeZigZagInt32Value(deltaX);
433
+ encoded[i + 1] = encodeZigZagInt32Value(deltaY);
421
434
  }
422
435
  // Encode first vertex last (after computing all deltas)
423
- data[0] = encodeZigZagInt32Value(data[0]);
424
- data[1] = encodeZigZagInt32Value(data[1]);
436
+ encoded[0] = encodeZigZagInt32Value(data[0]);
437
+ encoded[1] = encodeZigZagInt32Value(data[1]);
438
+ return encoded;
425
439
  }
426
440
  export function encodeComponentwiseDeltaVec2Scaled(data, scale) {
427
441
  if (data.length < 2)
428
- return;
442
+ return new Uint32Array(data);
443
+ const encoded = new Uint32Array(data.length);
429
444
  // First, inverse scale all values (tile space -> original space)
430
445
  for (let i = 0; i < data.length; i++) {
431
- data[i] = Math.round(data[i] / scale);
446
+ encoded[i] = Math.round(data[i] / scale);
432
447
  }
433
448
  // Then apply componentwise delta encoding (same as non-scaled version)
434
449
  // Reverse iterate to avoid overwriting data needed for delta computation
435
- for (let i = data.length - 2; i >= 2; i -= 2) {
436
- const deltaX = data[i] - data[i - 2];
437
- const deltaY = data[i + 1] - data[i - 1];
438
- data[i] = encodeZigZagInt32Value(deltaX);
439
- data[i + 1] = encodeZigZagInt32Value(deltaY);
450
+ for (let i = encoded.length - 2; i >= 2; i -= 2) {
451
+ const deltaX = encoded[i] - encoded[i - 2];
452
+ const deltaY = encoded[i + 1] - encoded[i - 1];
453
+ encoded[i] = encodeZigZagInt32Value(deltaX);
454
+ encoded[i + 1] = encodeZigZagInt32Value(deltaY);
440
455
  }
441
456
  // Encode first vertex last (after computing all deltas)
442
- data[0] = encodeZigZagInt32Value(data[0]);
443
- data[1] = encodeZigZagInt32Value(data[1]);
457
+ encoded[0] = encodeZigZagInt32Value(encoded[0]);
458
+ encoded[1] = encodeZigZagInt32Value(encoded[1]);
459
+ return encoded;
444
460
  }
445
461
  // HM TODO:
446
462
  // zigZagDeltaOfDeltaDecoding
447
463
  export function encodeZigZagRleDeltaInt32(values) {
448
464
  if (values.length === 0) {
449
- return { data: new Int32Array(0), runs: 0, numTotalValues: 0 };
465
+ return { data: new Uint32Array(0), runs: 0, numTotalValues: 0 };
450
466
  }
451
467
  const runLengths = [];
452
468
  const encodedDeltas = [];
@@ -488,7 +504,7 @@ export function encodeZigZagRleDeltaInt32(values) {
488
504
  const numRuns = runLengths.length;
489
505
  // The decoder expects 'data' to be: [RunLength 1, RunLength 2... | Value 1, Value 2...]
490
506
  // Size is numRuns * 2 (First half lengths, second half values)
491
- const data = new Int32Array(numRuns * 2);
507
+ const data = new Uint32Array(numRuns * 2);
492
508
  for (let i = 0; i < numRuns; i++) {
493
509
  data[i] = runLengths[i]; // First half: Run Lengths
494
510
  data[i + numRuns] = encodedDeltas[i]; // Second half: ZigZag Encoded Deltas
@@ -501,7 +517,7 @@ export function encodeZigZagRleDeltaInt32(values) {
501
517
  }
502
518
  export function encodeRleDeltaInt32(values) {
503
519
  if (values.length === 0) {
504
- return { data: new Int32Array(0), runs: 0, numTotalValues: 0 };
520
+ return { data: new Uint32Array(0), runs: 0, numTotalValues: 0 };
505
521
  }
506
522
  const runLengths = [];
507
523
  const deltas = [];
@@ -539,8 +555,8 @@ export function encodeRleDeltaInt32(values) {
539
555
  deltas.push(currentDelta);
540
556
  }
541
557
  const numRuns = runLengths.length;
542
- // Pack into Int32Array: [ RunLength 1...N | Delta 1...N ]
543
- const data = new Int32Array(numRuns * 2);
558
+ // Pack into Uint32Array: [ RunLength 1...N | Delta 1...N ]
559
+ const data = new Uint32Array(numRuns * 2);
544
560
  for (let i = 0; i < numRuns; i++) {
545
561
  data[i] = runLengths[i];
546
562
  data[i + numRuns] = deltas[i];
@@ -553,7 +569,7 @@ export function encodeRleDeltaInt32(values) {
553
569
  }
554
570
  export function encodeDeltaRleInt32(input) {
555
571
  if (input.length === 0) {
556
- return { data: new Int32Array(0), runs: 0, numValues: 0 };
572
+ return { data: new Uint32Array(0), runs: 0, numValues: 0 };
557
573
  }
558
574
  const deltasAndEncoded = [];
559
575
  let previousValue = 0;
@@ -588,13 +604,13 @@ export function encodeDeltaRleInt32(input) {
588
604
  runZigZagDeltas.push(currentRunValue);
589
605
  // Step 4: Combine lengths and values into the final structured output array
590
606
  const numRuns = runLengths.length;
591
- const encodedData = new Int32Array(numRuns * 2);
607
+ const encodedData = new Uint32Array(numRuns * 2);
592
608
  // Populate the first half with lengths
593
609
  for (let i = 0; i < numRuns; i++) {
594
610
  encodedData[i] = runLengths[i];
595
611
  }
596
612
  // Populate the second half with zigzagged deltas
597
- // Int32Array.set() works with standard number arrays
613
+ // Uint32Array.set() works with standard number arrays
598
614
  encodedData.set(runZigZagDeltas, numRuns);
599
615
  return {
600
616
  data: encodedData,
@@ -604,7 +620,7 @@ export function encodeDeltaRleInt32(input) {
604
620
  }
605
621
  export function encodeDeltaRleInt64(input) {
606
622
  if (input.length === 0) {
607
- return { data: new BigInt64Array(0), runs: 0, numValues: 0 };
623
+ return { data: new BigUint64Array(0), runs: 0, numValues: 0 };
608
624
  }
609
625
  const deltasAndEncoded = [];
610
626
  let previousValue = 0n;
@@ -639,8 +655,8 @@ export function encodeDeltaRleInt64(input) {
639
655
  runZigZagDeltas.push(currentValue);
640
656
  // Step 4: Combine lengths and values into the final structured output array
641
657
  const numRuns = runLengths.length;
642
- const encodedData = new BigInt64Array(numRuns * 2);
643
- // Populate the first half with lengths (converting numbers back to BigInts for storage)
658
+ const encodedData = new BigUint64Array(numRuns * 2);
659
+ // Populate the first half with lengths (converting numbers back to BigUint64Array for storage)
644
660
  for (let i = 0; i < numRuns; i++) {
645
661
  encodedData[i] = BigInt(runLengths[i]);
646
662
  }
@@ -1 +1 @@
1
- {"version":3,"file":"integerEncodingUtils.js","sourceRoot":"","sources":["../../src/encoding/integerEncodingUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import IntWrapper from \"../decoding/intWrapper\";\n\nexport function encodeVarintInt32Value(value: number, dst: Uint8Array, offset: IntWrapper): void {\n let v = value;\n while (v > 0x7f) {\n dst[offset.get()] = (v & 0x7f) | 0x80;\n offset.increment();\n v >>>= 7;\n }\n dst[offset.get()] = v & 0x7f;\n offset.increment();\n}\n\nexport function encodeVarintInt32(values: Int32Array): Uint8Array {\n const buffer = new Uint8Array(values.length * 5);\n const offset = new IntWrapper(0);\n\n for (const value of values) {\n encodeVarintInt32Value(value, buffer, offset);\n }\n return buffer.slice(0, offset.get());\n}\n\nexport function encodeVarintInt64(values: BigInt64Array): Uint8Array {\n const buffer = new Uint8Array(values.length * 10);\n const offset = new IntWrapper(0);\n\n for (const value of values) {\n encodeVarintInt64Value(value, buffer, offset);\n }\n return buffer.slice(0, offset.get());\n}\n\nfunction encodeVarintInt64Value(value: bigint, dst: Uint8Array, offset: IntWrapper): void {\n let v = value;\n while (v > 0x7fn) {\n dst[offset.get()] = Number(v & 0x7fn) | 0x80;\n offset.increment();\n v >>= 7n;\n }\n dst[offset.get()] = Number(v & 0x7fn);\n offset.increment();\n}\n\nexport function encodeVarintFloat64(values: Float64Array): Uint8Array {\n // 1. Calculate the exact size required for the buffer\n let size = 0;\n for (let i = 0; i < values.length; i++) {\n let val = values[i];\n // Ensure we handle the value as a positive integer\n val = val < 0 ? 0 : Math.floor(val);\n\n // 0 always takes 1 byte\n if (val === 0) {\n size++;\n continue;\n }\n\n // Calculate bytes needed: ceil(log128(val + 1))\n while (val > 0) {\n size++;\n val = Math.floor(val / 128);\n }\n }\n\n const dst = new Uint8Array(size);\n const offset = new IntWrapper(0);\n\n for (let i = 0; i < values.length; i++) {\n encodeVarintFloat64Value(values[i], dst, offset);\n }\n\n return dst;\n}\n\n/**\n * Encodes a single number into the buffer at the given offset using Varint encoding.\n * Handles numbers up to 2^53 (MAX_SAFE_INTEGER) correctly.\n */\nfunction encodeVarintFloat64Value(val: number, buf: Uint8Array, offset: IntWrapper): void {\n // Ensure integer\n val = Math.floor(val);\n\n // Handle 0 explicitly or ensure loop runs once\n if (val === 0) {\n buf[offset.get()] = 0;\n offset.increment();\n return;\n }\n\n while (val >= 128) {\n // Write 7 bits of data | 0x80 (continuation bit)\n buf[offset.get()] = (val % 128) | 0x80;\n offset.increment();\n // Shift right by 7 bits\n val = Math.floor(val / 128);\n }\n\n // Write the last byte (no continuation bit)\n buf[offset.get()] = val;\n offset.increment();\n}\n\nexport function encodeFastPfor(data: Int32Array): Uint8Array {\n throw new Error(\"FastPFor is not implemented yet.\");\n}\n\nexport function encodeZigZagInt32Value(value: number): number {\n return (value << 1) ^ (value >> 31);\n}\n\nexport function encodeZigZagInt64Value(value: bigint): bigint {\n return (value << 1n) ^ (value >> 63n);\n}\n\nexport function encodeZigZagFloat64Value(n: number): number {\n return n >= 0 ? n * 2 : n * -2 - 1;\n}\nexport function encodeZigZagInt32(data: Int32Array): void {\n for (let i = 0; i < data.length; i++) {\n data[i] = encodeZigZagInt32Value(data[i]);\n }\n}\n\nexport function encodeZigZagInt64(data: BigInt64Array): void {\n for (let i = 0; i < data.length; i++) {\n data[i] = encodeZigZagInt64Value(data[i]);\n }\n}\n\nexport function encodeZigZagFloat64(data: Float64Array): void {\n for (let i = 0; i < data.length; i++) {\n data[i] = encodeZigZagFloat64Value(data[i]);\n }\n}\n\nexport function encodeUnsignedRleInt32(input: Int32Array): { data: Int32Array; runs: number } {\n if (input.length === 0) {\n return { data: new Int32Array(0), runs: 0 };\n }\n\n const runLengths: number[] = [];\n const runValues: number[] = [];\n\n let currentRunLength = 0;\n let currentValue = input[0];\n\n for (let i = 0; i < input.length; i++) {\n const nextValue = input[i];\n\n if (nextValue === currentValue) {\n currentRunLength++;\n } else {\n // End of the current run, record it\n runLengths.push(currentRunLength);\n runValues.push(currentValue);\n\n // Start a new run\n currentValue = nextValue;\n currentRunLength = 1;\n }\n }\n\n // Record the final run after the loop finishes\n runLengths.push(currentRunLength);\n runValues.push(currentValue);\n\n // Combine lengths and values into the final structured output array\n const numRuns = runLengths.length;\n const encodedData = new Int32Array(numRuns * 2);\n\n // Populate the first half with lengths\n encodedData.set(runLengths, 0);\n\n // Populate the second half with values, offset by the total number of runs\n encodedData.set(runValues, numRuns);\n\n return { data: encodedData, runs: numRuns };\n}\n\nexport function encodeUnsignedRleInt64(input: BigInt64Array): { data: BigInt64Array; runs: number } {\n if (input.length === 0) {\n return { data: new BigInt64Array(0), runs: 0 };\n }\n\n const runLengths: number[] = [];\n const runValues: bigint[] = [];\n\n let currentRunLength = 0;\n let currentValue: bigint = input[0];\n\n for (let i = 0; i < input.length; i++) {\n const nextValue = input[i];\n\n if (nextValue === currentValue) {\n currentRunLength++;\n } else {\n // End of the current run, record it\n runLengths.push(currentRunLength);\n runValues.push(currentValue);\n\n // Start a new run\n currentValue = nextValue;\n currentRunLength = 1;\n }\n }\n\n // Record the final run after the loop finishes\n runLengths.push(currentRunLength);\n runValues.push(currentValue);\n\n // Combine lengths and values into the final structured output array (BigInt64Array)\n const numRuns = runLengths.length;\n const encodedData = new BigInt64Array(numRuns * 2);\n\n // Populate the first half with lengths. We must convert the numbers back to BigInts here.\n for (let i = 0; i < numRuns; i++) {\n encodedData[i] = BigInt(runLengths[i]);\n }\n\n // Populate the second half with values, offset by the total number of runs\n encodedData.set(runValues, numRuns);\n\n return { data: encodedData, runs: numRuns };\n}\n\nexport function encodeUnsignedRleFloat64(input: Float64Array): { data: Float64Array; runs: number } {\n if (input.length === 0) {\n return { data: new Float64Array(0), runs: 0 };\n }\n\n const runLengths: number[] = [];\n const runValues: number[] = [];\n\n let currentRunLength = 0;\n let currentValue = input[0];\n\n for (let i = 0; i < input.length; i++) {\n const nextValue = input[i];\n\n if (nextValue === currentValue) {\n currentRunLength++;\n } else {\n // End of the current run, record it\n runLengths.push(currentRunLength);\n runValues.push(currentValue);\n\n // Start a new run\n currentValue = nextValue;\n currentRunLength = 1;\n }\n }\n\n // Record the final run after the loop finishes\n runLengths.push(currentRunLength);\n runValues.push(currentValue);\n\n // Combine lengths and values into the final structured output array (Float64Array)\n const numRuns = runLengths.length;\n // The final array is twice the size of the number of runs\n const encodedData = new Float64Array(numRuns * 2);\n\n // Populate the first half with lengths\n encodedData.set(runLengths, 0);\n\n // Populate the second half with values, offset by the total number of runs\n encodedData.set(runValues, numRuns);\n\n return { data: encodedData, runs: numRuns };\n}\n\nexport function encodeZigZagDeltaInt32(data: Int32Array): void {\n if (data.length === 0) {\n return;\n }\n\n let previousValue = data[0];\n data[0] = encodeZigZagInt32Value(previousValue);\n\n for (let i = 1; i < data.length; i++) {\n const currentValue = data[i];\n const delta = currentValue - previousValue;\n const encodedDelta = encodeZigZagInt32Value(delta);\n\n // Store the encoded delta back into the array\n data[i] = encodedDelta;\n\n // Update the previous value tracker for the next iteration's delta calculation\n previousValue = currentValue;\n }\n}\n\nexport function encodeZigZagDeltaInt64(data: BigInt64Array): void {\n if (data.length === 0) {\n return;\n }\n\n let previousValue = data[0];\n data[0] = encodeZigZagInt64Value(previousValue);\n\n for (let i = 1; i < data.length; i++) {\n const currentValue = data[i];\n const delta = currentValue - previousValue;\n const encodedDelta = encodeZigZagInt64Value(delta);\n\n // Store the encoded delta back into the array\n data[i] = encodedDelta;\n\n // Update the previous value tracker for the next iteration's delta calculation\n previousValue = currentValue;\n }\n}\n\nexport function encodeZigZagDeltaFloat64(data: Float64Array): void {\n if (data.length === 0) {\n return;\n }\n\n let previousValue = data[0];\n data[0] = encodeZigZagFloat64Value(previousValue);\n\n for (let i = 1; i < data.length; i++) {\n const currentValue = data[i];\n const delta = currentValue - previousValue;\n const encodedDelta = encodeZigZagFloat64Value(delta);\n\n // Store the encoded delta back into the array\n data[i] = encodedDelta;\n\n // Update the previous value tracker for the next iteration's delta calculation\n previousValue = currentValue;\n }\n}\n\nexport function encodeZigZagRleInt32(input: Int32Array): {\n data: Int32Array;\n runs: number;\n numTotalValues: number;\n} {\n if (input.length === 0) {\n return { data: new Int32Array(0), runs: 0, numTotalValues: 0 };\n }\n\n const zigzagEncodedStream: number[] = [];\n\n // Step 1: Apply Zigzag Encoding to all values\n for (let i = 0; i < input.length; i++) {\n zigzagEncodedStream.push(encodeZigZagInt32Value(input[i]));\n }\n // zigzagEncodedStream now holds the intermediate stream of zigzag values\n\n // Step 2: Apply RLE to the stream of zigzag-encoded values\n const runLengths: number[] = [];\n const runZigZagValues: number[] = [];\n\n let currentRunLength = 0;\n let currentValue = zigzagEncodedStream[0];\n\n for (let i = 0; i < zigzagEncodedStream.length; i++) {\n const nextValue = zigzagEncodedStream[i];\n\n if (nextValue === currentValue) {\n currentRunLength++;\n } else {\n runLengths.push(currentRunLength);\n runZigZagValues.push(currentValue);\n currentValue = nextValue;\n currentRunLength = 1;\n }\n }\n // Record the final run\n runLengths.push(currentRunLength);\n runZigZagValues.push(currentValue);\n\n // Step 3: Combine lengths and values into the final structured output array\n const numRuns = runLengths.length;\n // The final array uses Int32Array for lengths AND values\n const encodedData = new Int32Array(numRuns * 2);\n\n // Populate the first half with lengths\n encodedData.set(runLengths, 0);\n\n // Populate the second half with zigzagged values\n encodedData.set(runZigZagValues, numRuns);\n\n return {\n data: encodedData,\n runs: numRuns,\n numTotalValues: input.length, // Total original values count\n };\n}\n\nexport function encodeZigZagRleInt64(input: BigInt64Array): {\n data: BigInt64Array;\n runs: number;\n numTotalValues: number;\n} {\n if (input.length === 0) {\n return { data: new BigInt64Array(0), runs: 0, numTotalValues: 0 };\n }\n\n const zigzagEncodedStream: bigint[] = [];\n\n // Step 1: Apply Zigzag Encoding to all values\n for (let i = 0; i < input.length; i++) {\n zigzagEncodedStream.push(encodeZigZagInt64Value(input[i]));\n }\n // zigzagEncodedStream now holds the intermediate stream of zigzag values\n\n // Step 2: Apply RLE to the stream of zigzag-encoded values\n const runLengths: number[] = [];\n const runZigZagValues: bigint[] = [];\n\n let currentRunLength = 0;\n let currentValue: bigint = zigzagEncodedStream[0];\n\n for (let i = 0; i < zigzagEncodedStream.length; i++) {\n const nextValue = zigzagEncodedStream[i];\n\n if (nextValue === currentValue) {\n currentRunLength++;\n } else {\n runLengths.push(currentRunLength);\n runZigZagValues.push(currentValue);\n currentValue = nextValue;\n currentRunLength = 1;\n }\n }\n // Record the final run\n runLengths.push(currentRunLength);\n runZigZagValues.push(currentValue);\n\n // Step 3: Combine lengths and values into the final structured output array\n const numRuns = runLengths.length;\n // The final array uses BigInt64Array for lengths AND values\n const encodedData = new BigInt64Array(numRuns * 2);\n\n // Populate the first half with lengths (converting numbers back to BigInts)\n for (let i = 0; i < numRuns; i++) {\n encodedData[i] = BigInt(runLengths[i]);\n }\n\n // Populate the second half with zigzagged values\n encodedData.set(runZigZagValues, numRuns);\n\n return {\n data: encodedData,\n runs: numRuns,\n numTotalValues: input.length, // Total original values count\n };\n}\n\nexport function encodeZigZagRleFloat64(input: Float64Array): {\n data: Float64Array;\n runs: number;\n numTotalValues: number;\n} {\n if (input.length === 0) {\n return { data: new Float64Array(0), runs: 0, numTotalValues: 0 };\n }\n\n const zigzagEncodedStream: number[] = [];\n\n // Step 1: Apply Float-based Zigzag Encoding to all values\n for (let i = 0; i < input.length; i++) {\n zigzagEncodedStream.push(encodeZigZagFloat64Value(input[i]));\n }\n // zigzagEncodedStream now holds the intermediate stream of zigzag values (as floats acting as integers)\n\n // Step 2: Apply RLE to the stream of zigzag-encoded values\n const runLengths: number[] = [];\n const runZigZagValues: number[] = [];\n\n let currentRunLength = 0;\n let currentValue = zigzagEncodedStream[0];\n\n for (let i = 0; i < zigzagEncodedStream.length; i++) {\n const nextValue = zigzagEncodedStream[i];\n\n if (nextValue === currentValue) {\n currentRunLength++;\n } else {\n runLengths.push(currentRunLength);\n runZigZagValues.push(currentValue);\n currentValue = nextValue;\n currentRunLength = 1;\n }\n }\n // Record the final run\n runLengths.push(currentRunLength);\n runZigZagValues.push(currentValue);\n\n // Step 3: Combine lengths and values into the final structured output array\n const numRuns = runLengths.length;\n // The final array uses Float64Array for lengths AND values\n const encodedData = new Float64Array(numRuns * 2);\n\n // Populate the first half with lengths\n encodedData.set(runLengths, 0);\n\n // Populate the second half with zigzagged values\n encodedData.set(runZigZagValues, numRuns);\n\n return {\n data: encodedData,\n runs: numRuns,\n numTotalValues: input.length, // Total original values count\n };\n}\n\n/**\n * This is not really a encode, but more of a decode method...\n */\nexport function encodeDeltaInt32(data: Int32Array): void {\n if (data.length === 0) {\n return;\n }\n for (let i = data.length - 1; i >= 1; i--) {\n data[i] = data[i] - data[i - 1];\n }\n}\n\nexport function encodeComponentwiseDeltaVec2(data: Int32Array): void {\n if (data.length < 2) return;\n\n // Reverse iterate to avoid overwriting data needed for delta computation\n for (let i = data.length - 2; i >= 2; i -= 2) {\n const deltaX = data[i] - data[i - 2];\n const deltaY = data[i + 1] - data[i - 1];\n data[i] = encodeZigZagInt32Value(deltaX);\n data[i + 1] = encodeZigZagInt32Value(deltaY);\n }\n\n // Encode first vertex last (after computing all deltas)\n data[0] = encodeZigZagInt32Value(data[0]);\n data[1] = encodeZigZagInt32Value(data[1]);\n}\n\nexport function encodeComponentwiseDeltaVec2Scaled(data: Int32Array, scale: number): void {\n if (data.length < 2) return;\n\n // First, inverse scale all values (tile space -> original space)\n for (let i = 0; i < data.length; i++) {\n data[i] = Math.round(data[i] / scale);\n }\n\n // Then apply componentwise delta encoding (same as non-scaled version)\n // Reverse iterate to avoid overwriting data needed for delta computation\n for (let i = data.length - 2; i >= 2; i -= 2) {\n const deltaX = data[i] - data[i - 2];\n const deltaY = data[i + 1] - data[i - 1];\n data[i] = encodeZigZagInt32Value(deltaX);\n data[i + 1] = encodeZigZagInt32Value(deltaY);\n }\n\n // Encode first vertex last (after computing all deltas)\n data[0] = encodeZigZagInt32Value(data[0]);\n data[1] = encodeZigZagInt32Value(data[1]);\n}\n\n// HM TODO:\n// zigZagDeltaOfDeltaDecoding\n\nexport function encodeZigZagRleDeltaInt32(values: Int32Array | number[]): {\n data: Int32Array;\n runs: number;\n numTotalValues: number;\n} {\n if (values.length === 0) {\n return { data: new Int32Array(0), runs: 0, numTotalValues: 0 };\n }\n\n const runLengths: number[] = [];\n const encodedDeltas: number[] = [];\n\n // The decoder explicitly sets decodedValues[0] = 0 and uses previousValue = 0.\n // Therefore, we initialize our 'previous' tracker to 0 to calculate the first delta correctly.\n let previousValue = 0;\n\n // Variables to track the current run\n let currentDelta: number | null = null;\n let currentRunLength = 0;\n\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n const delta = value - previousValue;\n previousValue = value;\n\n if (currentDelta === null) {\n // First element initialization\n currentDelta = delta;\n currentRunLength = 1;\n } else if (delta === currentDelta) {\n // Continuation of the current run\n currentRunLength++;\n } else {\n // The run has broken (delta changed)\n // 1. Push the length of the previous run\n runLengths.push(currentRunLength);\n // 2. ZigZag encode the previous delta and push it\n encodedDeltas.push(encodeZigZagInt32Value(currentDelta));\n\n // Start the new run\n currentDelta = delta;\n currentRunLength = 1;\n }\n }\n\n // Flush the final run remaining after the loop finishes\n if (currentDelta !== null) {\n runLengths.push(currentRunLength);\n encodedDeltas.push(encodeZigZagInt32Value(currentDelta));\n }\n\n const numRuns = runLengths.length;\n\n // The decoder expects 'data' to be: [RunLength 1, RunLength 2... | Value 1, Value 2...]\n // Size is numRuns * 2 (First half lengths, second half values)\n const data = new Int32Array(numRuns * 2);\n\n for (let i = 0; i < numRuns; i++) {\n data[i] = runLengths[i]; // First half: Run Lengths\n data[i + numRuns] = encodedDeltas[i]; // Second half: ZigZag Encoded Deltas\n }\n\n return {\n data: data,\n runs: numRuns,\n numTotalValues: values.length,\n };\n}\n\nexport function encodeRleDeltaInt32(values: Int32Array | number[]): {\n data: Int32Array;\n runs: number;\n numTotalValues: number;\n} {\n if (values.length === 0) {\n return { data: new Int32Array(0), runs: 0, numTotalValues: 0 };\n }\n\n const runLengths: number[] = [];\n const deltas: number[] = [];\n\n // The decoder logic relies on: decodedValues[0] = 0; previousValue = 0;\n // So the encoder must assume the sequence starts relative to 0.\n let previousValue = 0;\n\n // Track the current run of deltas\n let currentDelta: number | null = null;\n let currentRunLength = 0;\n\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n const delta = value - previousValue;\n previousValue = value;\n\n if (currentDelta === null) {\n // Initialize first run\n currentDelta = delta;\n currentRunLength = 1;\n } else if (delta === currentDelta) {\n // Continue current run\n currentRunLength++;\n } else {\n // Delta changed: flush the previous run\n runLengths.push(currentRunLength);\n deltas.push(currentDelta);\n\n // Start new run\n currentDelta = delta;\n currentRunLength = 1;\n }\n }\n\n // Flush the final run\n if (currentDelta !== null) {\n runLengths.push(currentRunLength);\n deltas.push(currentDelta);\n }\n\n const numRuns = runLengths.length;\n\n // Pack into Int32Array: [ RunLength 1...N | Delta 1...N ]\n const data = new Int32Array(numRuns * 2);\n for (let i = 0; i < numRuns; i++) {\n data[i] = runLengths[i];\n data[i + numRuns] = deltas[i];\n }\n\n return {\n data: data,\n runs: numRuns,\n numTotalValues: values.length,\n };\n}\n\nexport function encodeDeltaRleInt32(input: Int32Array): {\n data: Int32Array;\n runs: number;\n numValues: number;\n} {\n if (input.length === 0) {\n return { data: new Int32Array(0), runs: 0, numValues: 0 };\n }\n\n const deltasAndEncoded: number[] = [];\n let previousValue: number = 0;\n\n // Step 1 & 2: Calculate Deltas and Zigzag Encode them\n for (let i = 0; i < input.length; i++) {\n const currentValue = input[i];\n const delta = currentValue - previousValue;\n const encodedDelta = encodeZigZagInt32Value(delta);\n deltasAndEncoded.push(encodedDelta);\n previousValue = currentValue;\n }\n // deltasAndEncoded now holds the intermediate stream of zigzagged deltas\n\n // Step 3: Apply RLE to the stream of zigzag-encoded deltas\n const runLengths: number[] = [];\n const runZigZagDeltas: number[] = [];\n\n let currentRunLength = 0;\n let currentRunValue = deltasAndEncoded[0];\n\n for (let i = 0; i < deltasAndEncoded.length; i++) {\n const nextValue = deltasAndEncoded[i];\n\n if (nextValue === currentRunValue) {\n currentRunLength++;\n } else {\n runLengths.push(currentRunLength);\n runZigZagDeltas.push(currentRunValue);\n currentRunValue = nextValue;\n currentRunLength = 1;\n }\n }\n // Record the final run\n runLengths.push(currentRunLength);\n runZigZagDeltas.push(currentRunValue);\n\n // Step 4: Combine lengths and values into the final structured output array\n const numRuns = runLengths.length;\n const encodedData = new Int32Array(numRuns * 2);\n\n // Populate the first half with lengths\n for (let i = 0; i < numRuns; i++) {\n encodedData[i] = runLengths[i];\n }\n\n // Populate the second half with zigzagged deltas\n // Int32Array.set() works with standard number arrays\n encodedData.set(runZigZagDeltas, numRuns);\n\n return {\n data: encodedData,\n runs: numRuns,\n numValues: input.length, // Total original values count\n };\n}\n\nexport function encodeDeltaRleInt64(input: BigInt64Array): {\n data: BigInt64Array;\n runs: number;\n numValues: number;\n} {\n if (input.length === 0) {\n return { data: new BigInt64Array(0), runs: 0, numValues: 0 };\n }\n\n const deltasAndEncoded: bigint[] = [];\n let previousValue: bigint = 0n;\n\n // Step 1 & 2: Calculate Deltas and Zigzag Encode them\n for (let i = 0; i < input.length; i++) {\n const currentValue = input[i];\n const delta = currentValue - previousValue;\n const encodedDelta = encodeZigZagInt64Value(delta);\n deltasAndEncoded.push(encodedDelta);\n previousValue = currentValue;\n }\n // deltasAndEncoded now holds the intermediate stream of zigzagged deltas\n\n // Step 3: Apply RLE to the stream of zigzag-encoded deltas\n const runLengths: number[] = [];\n const runZigZagDeltas: bigint[] = [];\n\n let currentRunLength = 0;\n let currentValue = deltasAndEncoded[0];\n\n for (let i = 0; i < deltasAndEncoded.length; i++) {\n const nextValue = deltasAndEncoded[i];\n\n if (nextValue === currentValue) {\n currentRunLength++;\n } else {\n runLengths.push(currentRunLength);\n runZigZagDeltas.push(currentValue);\n currentValue = nextValue;\n currentRunLength = 1;\n }\n }\n // Record the final run\n runLengths.push(currentRunLength);\n runZigZagDeltas.push(currentValue);\n\n // Step 4: Combine lengths and values into the final structured output array\n const numRuns = runLengths.length;\n const encodedData = new BigInt64Array(numRuns * 2);\n\n // Populate the first half with lengths (converting numbers back to BigInts for storage)\n for (let i = 0; i < numRuns; i++) {\n encodedData[i] = BigInt(runLengths[i]);\n }\n\n // Populate the second half with zigzagged deltas\n encodedData.set(runZigZagDeltas, numRuns);\n\n return {\n data: encodedData,\n runs: numRuns,\n numValues: input.length, // Total original values count\n };\n}\n"]}
1
+ {"version":3,"file":"integerEncodingUtils.js","sourceRoot":"","sources":["../../src/encoding/integerEncodingUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import IntWrapper from \"../decoding/intWrapper\";\nimport { createFastPforEncoderWorkspace, encodeFastPforInt32WithWorkspace } from \"./fastPforEncoder\";\nimport { encodeBigEndianInt32s } from \"./bigEndianEncode\";\n\nexport function encodeVarintInt32Value(value: number, dst: Uint8Array, offset: IntWrapper): void {\n let v = value;\n while (v > 0x7f) {\n dst[offset.get()] = (v & 0x7f) | 0x80;\n offset.increment();\n v >>>= 7;\n }\n dst[offset.get()] = v & 0x7f;\n offset.increment();\n}\n\nexport function encodeVarintInt32(values: Uint32Array): Uint8Array {\n const buffer = new Uint8Array(values.length * 5);\n const offset = new IntWrapper(0);\n\n for (const value of values) {\n encodeVarintInt32Value(value, buffer, offset);\n }\n return buffer.slice(0, offset.get());\n}\n\nexport function encodeVarintInt64(values: BigUint64Array): Uint8Array {\n const buffer = new Uint8Array(values.length * 10);\n const offset = new IntWrapper(0);\n\n for (const value of values) {\n encodeVarintInt64Value(value, buffer, offset);\n }\n return buffer.slice(0, offset.get());\n}\n\nfunction encodeVarintInt64Value(value: bigint, dst: Uint8Array, offset: IntWrapper): void {\n let v = value;\n while (v > 0x7fn) {\n dst[offset.get()] = Number(v & 0x7fn) | 0x80;\n offset.increment();\n v >>= 7n;\n }\n dst[offset.get()] = Number(v & 0x7fn);\n offset.increment();\n}\n\nexport function encodeVarintFloat64(values: Float64Array): Uint8Array {\n // 1. Calculate the exact size required for the buffer\n let size = 0;\n for (let i = 0; i < values.length; i++) {\n let val = values[i];\n // Ensure we handle the value as a positive integer\n val = val < 0 ? 0 : Math.floor(val);\n\n // 0 always takes 1 byte\n if (val === 0) {\n size++;\n continue;\n }\n\n // Calculate bytes needed: ceil(log128(val + 1))\n while (val > 0) {\n size++;\n val = Math.floor(val / 128);\n }\n }\n\n const dst = new Uint8Array(size);\n const offset = new IntWrapper(0);\n\n for (let i = 0; i < values.length; i++) {\n encodeVarintFloat64Value(values[i], dst, offset);\n }\n\n return dst;\n}\n\n/**\n * Encodes a single number into the buffer at the given offset using Varint encoding.\n * Handles numbers up to 2^53 (MAX_SAFE_INTEGER) correctly.\n */\nfunction encodeVarintFloat64Value(val: number, buf: Uint8Array, offset: IntWrapper): void {\n // Ensure integer\n val = Math.floor(val);\n\n // Handle 0 explicitly or ensure loop runs once\n if (val === 0) {\n buf[offset.get()] = 0;\n offset.increment();\n return;\n }\n\n while (val >= 128) {\n // Write 7 bits of data | 0x80 (continuation bit)\n buf[offset.get()] = (val % 128) | 0x80;\n offset.increment();\n // Shift right by 7 bits\n val = Math.floor(val / 128);\n }\n\n // Write the last byte (no continuation bit)\n buf[offset.get()] = val;\n offset.increment();\n}\n\nexport function encodeFastPfor(values: Uint32Array): Uint8Array {\n const encoderWorkspace = createFastPforEncoderWorkspace();\n const encodedWords = encodeFastPforInt32WithWorkspace(values, encoderWorkspace);\n return encodeBigEndianInt32s(encodedWords);\n}\n\nexport function encodeZigZagInt32Value(value: number): number {\n return (value << 1) ^ (value >> 31);\n}\n\nexport function encodeZigZagInt64Value(value: bigint): bigint {\n return (value << 1n) ^ (value >> 63n);\n}\n\nexport function encodeZigZagFloat64Value(n: number): number {\n return n >= 0 ? n * 2 : n * -2 - 1;\n}\nexport function encodeZigZagInt32(data: Int32Array): Uint32Array {\n const result = new Uint32Array(data.length);\n for (let i = 0; i < data.length; i++) {\n result[i] = encodeZigZagInt32Value(data[i]);\n }\n return result;\n}\n\nexport function encodeZigZagInt64(data: BigInt64Array): BigUint64Array {\n const result = new BigUint64Array(data.length);\n for (let i = 0; i < data.length; i++) {\n result[i] = encodeZigZagInt64Value(data[i]);\n }\n return result;\n}\n\nexport function encodeZigZagFloat64(data: Float64Array): void {\n for (let i = 0; i < data.length; i++) {\n data[i] = encodeZigZagFloat64Value(data[i]);\n }\n}\n\nexport function encodeUnsignedRleInt32(input: Uint32Array): { data: Uint32Array; runs: number } {\n if (input.length === 0) {\n return { data: new Uint32Array(0), runs: 0 };\n }\n\n const runLengths: number[] = [];\n const runValues: number[] = [];\n\n let currentRunLength = 0;\n let currentValue = input[0];\n\n for (let i = 0; i < input.length; i++) {\n const nextValue = input[i];\n\n if (nextValue === currentValue) {\n currentRunLength++;\n } else {\n // End of the current run, record it\n runLengths.push(currentRunLength);\n runValues.push(currentValue);\n\n // Start a new run\n currentValue = nextValue;\n currentRunLength = 1;\n }\n }\n\n // Record the final run after the loop finishes\n runLengths.push(currentRunLength);\n runValues.push(currentValue);\n\n // Combine lengths and values into the final structured output array\n const numRuns = runLengths.length;\n const encodedData = new Uint32Array(numRuns * 2);\n\n // Populate the first half with lengths\n encodedData.set(runLengths, 0);\n\n // Populate the second half with values, offset by the total number of runs\n encodedData.set(runValues, numRuns);\n\n return { data: encodedData, runs: numRuns };\n}\n\nexport function encodeUnsignedRleInt64(input: BigInt64Array): { data: BigUint64Array; runs: number } {\n if (input.length === 0) {\n return { data: new BigUint64Array(0), runs: 0 };\n }\n\n const runLengths: number[] = [];\n const runValues: bigint[] = [];\n\n let currentRunLength = 0;\n let currentValue: bigint = input[0];\n\n for (let i = 0; i < input.length; i++) {\n const nextValue = input[i];\n\n if (nextValue === currentValue) {\n currentRunLength++;\n } else {\n // End of the current run, record it\n runLengths.push(currentRunLength);\n runValues.push(currentValue);\n\n // Start a new run\n currentValue = nextValue;\n currentRunLength = 1;\n }\n }\n\n // Record the final run after the loop finishes\n runLengths.push(currentRunLength);\n runValues.push(currentValue);\n\n // Combine lengths and values into the final structured output array (BigUint64Array)\n const numRuns = runLengths.length;\n const encodedData = new BigUint64Array(numRuns * 2);\n\n // Populate the first half with lengths, converting the run length numbers to bigint for storage in the BigUint64Array.\n for (let i = 0; i < numRuns; i++) {\n encodedData[i] = BigInt(runLengths[i]);\n }\n\n // Populate the second half with values, offset by the total number of runs\n encodedData.set(runValues, numRuns);\n\n return { data: encodedData, runs: numRuns };\n}\n\nexport function encodeUnsignedRleFloat64(input: Float64Array): { data: Float64Array; runs: number } {\n if (input.length === 0) {\n return { data: new Float64Array(0), runs: 0 };\n }\n\n const runLengths: number[] = [];\n const runValues: number[] = [];\n\n let currentRunLength = 0;\n let currentValue = input[0];\n\n for (let i = 0; i < input.length; i++) {\n const nextValue = input[i];\n\n if (nextValue === currentValue) {\n currentRunLength++;\n } else {\n // End of the current run, record it\n runLengths.push(currentRunLength);\n runValues.push(currentValue);\n\n // Start a new run\n currentValue = nextValue;\n currentRunLength = 1;\n }\n }\n\n // Record the final run after the loop finishes\n runLengths.push(currentRunLength);\n runValues.push(currentValue);\n\n // Combine lengths and values into the final structured output array (Float64Array)\n const numRuns = runLengths.length;\n // The final array is twice the size of the number of runs\n const encodedData = new Float64Array(numRuns * 2);\n\n // Populate the first half with lengths\n encodedData.set(runLengths, 0);\n\n // Populate the second half with values, offset by the total number of runs\n encodedData.set(runValues, numRuns);\n\n return { data: encodedData, runs: numRuns };\n}\n\nexport function encodeZigZagDeltaInt32(data: Int32Array): Uint32Array {\n if (data.length === 0) {\n return new Uint32Array(0);\n }\n\n const encodedData = new Uint32Array(data.length);\n let previousValue = data[0];\n encodedData[0] = encodeZigZagInt32Value(previousValue);\n\n for (let i = 1; i < data.length; i++) {\n const currentValue = data[i];\n const delta = currentValue - previousValue;\n const encodedDelta = encodeZigZagInt32Value(delta);\n\n // Store the encoded delta back into the array\n encodedData[i] = encodedDelta;\n\n // Update the previous value tracker for the next iteration's delta calculation\n previousValue = currentValue;\n }\n return encodedData;\n}\n\nexport function encodeZigZagDeltaInt64(data: BigInt64Array): BigUint64Array {\n if (data.length === 0) {\n return new BigUint64Array(0);\n }\n\n const encodedData = new BigUint64Array(data.length);\n let previousValue = data[0];\n encodedData[0] = encodeZigZagInt64Value(previousValue);\n\n for (let i = 1; i < data.length; i++) {\n const currentValue = data[i];\n const delta = currentValue - previousValue;\n const encodedDelta = encodeZigZagInt64Value(delta);\n\n // Store the encoded delta back into the array\n encodedData[i] = encodedDelta;\n\n // Update the previous value tracker for the next iteration's delta calculation\n previousValue = currentValue;\n }\n return encodedData;\n}\n\nexport function encodeZigZagDeltaFloat64(data: Float64Array): void {\n if (data.length === 0) {\n return;\n }\n\n let previousValue = data[0];\n data[0] = encodeZigZagFloat64Value(previousValue);\n\n for (let i = 1; i < data.length; i++) {\n const currentValue = data[i];\n const delta = currentValue - previousValue;\n const encodedDelta = encodeZigZagFloat64Value(delta);\n\n // Store the encoded delta back into the array\n data[i] = encodedDelta;\n\n // Update the previous value tracker for the next iteration's delta calculation\n previousValue = currentValue;\n }\n}\n\nexport function encodeZigZagRleInt32(input: Int32Array): {\n data: Uint32Array;\n runs: number;\n numTotalValues: number;\n} {\n if (input.length === 0) {\n return { data: new Uint32Array(0), runs: 0, numTotalValues: 0 };\n }\n\n const zigzagEncodedStream: number[] = [];\n\n // Step 1: Apply Zigzag Encoding to all values\n for (let i = 0; i < input.length; i++) {\n zigzagEncodedStream.push(encodeZigZagInt32Value(input[i]));\n }\n // zigzagEncodedStream now holds the intermediate stream of zigzag values\n\n // Step 2: Apply RLE to the stream of zigzag-encoded values\n const runLengths: number[] = [];\n const runZigZagValues: number[] = [];\n\n let currentRunLength = 0;\n let currentValue = zigzagEncodedStream[0];\n\n for (let i = 0; i < zigzagEncodedStream.length; i++) {\n const nextValue = zigzagEncodedStream[i];\n\n if (nextValue === currentValue) {\n currentRunLength++;\n } else {\n runLengths.push(currentRunLength);\n runZigZagValues.push(currentValue);\n currentValue = nextValue;\n currentRunLength = 1;\n }\n }\n // Record the final run\n runLengths.push(currentRunLength);\n runZigZagValues.push(currentValue);\n\n // Step 3: Combine lengths and values into the final structured output array\n const numRuns = runLengths.length;\n // The final array uses Uint32Array for lengths AND values\n const encodedData = new Uint32Array(numRuns * 2);\n\n // Populate the first half with lengths\n encodedData.set(runLengths, 0);\n\n // Populate the second half with zigzagged values\n encodedData.set(runZigZagValues, numRuns);\n\n return {\n data: encodedData,\n runs: numRuns,\n numTotalValues: input.length, // Total original values count\n };\n}\n\nexport function encodeZigZagRleInt64(input: BigInt64Array): {\n data: BigUint64Array;\n runs: number;\n numTotalValues: number;\n} {\n if (input.length === 0) {\n return { data: new BigUint64Array(0), runs: 0, numTotalValues: 0 };\n }\n\n const zigzagEncodedStream: bigint[] = [];\n\n // Step 1: Apply Zigzag Encoding to all values\n for (let i = 0; i < input.length; i++) {\n zigzagEncodedStream.push(encodeZigZagInt64Value(input[i]));\n }\n // zigzagEncodedStream now holds the intermediate stream of zigzag values\n\n // Step 2: Apply RLE to the stream of zigzag-encoded values\n const runLengths: number[] = [];\n const runZigZagValues: bigint[] = [];\n\n let currentRunLength = 0;\n let currentValue: bigint = zigzagEncodedStream[0];\n\n for (let i = 0; i < zigzagEncodedStream.length; i++) {\n const nextValue = zigzagEncodedStream[i];\n\n if (nextValue === currentValue) {\n currentRunLength++;\n } else {\n runLengths.push(currentRunLength);\n runZigZagValues.push(currentValue);\n currentValue = nextValue;\n currentRunLength = 1;\n }\n }\n // Record the final run\n runLengths.push(currentRunLength);\n runZigZagValues.push(currentValue);\n\n // Step 3: Combine lengths and values into the final structured output array\n const numRuns = runLengths.length;\n // The final array uses BigUint64Array for lengths AND values\n const encodedData = new BigUint64Array(numRuns * 2);\n\n // Populate the first half with lengths (converting numbers back to BigUint64Array format)\n for (let i = 0; i < numRuns; i++) {\n encodedData[i] = BigInt(runLengths[i]);\n }\n\n // Populate the second half with zigzagged values\n encodedData.set(runZigZagValues, numRuns);\n\n return {\n data: encodedData,\n runs: numRuns,\n numTotalValues: input.length, // Total original values count\n };\n}\n\nexport function encodeZigZagRleFloat64(input: Float64Array): {\n data: Float64Array;\n runs: number;\n numTotalValues: number;\n} {\n if (input.length === 0) {\n return { data: new Float64Array(0), runs: 0, numTotalValues: 0 };\n }\n\n const zigzagEncodedStream: number[] = [];\n\n // Step 1: Apply Float-based Zigzag Encoding to all values\n for (let i = 0; i < input.length; i++) {\n zigzagEncodedStream.push(encodeZigZagFloat64Value(input[i]));\n }\n // zigzagEncodedStream now holds the intermediate stream of zigzag values (as floats acting as integers)\n\n // Step 2: Apply RLE to the stream of zigzag-encoded values\n const runLengths: number[] = [];\n const runZigZagValues: number[] = [];\n\n let currentRunLength = 0;\n let currentValue = zigzagEncodedStream[0];\n\n for (let i = 0; i < zigzagEncodedStream.length; i++) {\n const nextValue = zigzagEncodedStream[i];\n\n if (nextValue === currentValue) {\n currentRunLength++;\n } else {\n runLengths.push(currentRunLength);\n runZigZagValues.push(currentValue);\n currentValue = nextValue;\n currentRunLength = 1;\n }\n }\n // Record the final run\n runLengths.push(currentRunLength);\n runZigZagValues.push(currentValue);\n\n // Step 3: Combine lengths and values into the final structured output array\n const numRuns = runLengths.length;\n // The final array uses Float64Array for lengths AND values\n const encodedData = new Float64Array(numRuns * 2);\n\n // Populate the first half with lengths\n encodedData.set(runLengths, 0);\n\n // Populate the second half with zigzagged values\n encodedData.set(runZigZagValues, numRuns);\n\n return {\n data: encodedData,\n runs: numRuns,\n numTotalValues: input.length, // Total original values count\n };\n}\n\n/**\n * This is not really a encode, but more of a decode method...\n */\nexport function encodeDeltaInt32(data: Int32Array | Uint32Array): void {\n if (data.length === 0) {\n return;\n }\n for (let i = data.length - 1; i >= 1; i--) {\n data[i] = data[i] - data[i - 1];\n }\n}\n\nexport function encodeComponentwiseDeltaVec2(data: Int32Array): Uint32Array {\n if (data.length < 2) return new Uint32Array(data);\n\n const encoded = new Uint32Array(data.length);\n\n // Reverse iterate to avoid overwriting data needed for delta computation\n for (let i = data.length - 2; i >= 2; i -= 2) {\n const deltaX = data[i] - data[i - 2];\n const deltaY = data[i + 1] - data[i - 1];\n encoded[i] = encodeZigZagInt32Value(deltaX);\n encoded[i + 1] = encodeZigZagInt32Value(deltaY);\n }\n\n // Encode first vertex last (after computing all deltas)\n encoded[0] = encodeZigZagInt32Value(data[0]);\n encoded[1] = encodeZigZagInt32Value(data[1]);\n return encoded;\n}\n\nexport function encodeComponentwiseDeltaVec2Scaled(data: Int32Array, scale: number): Uint32Array {\n if (data.length < 2) return new Uint32Array(data);\n const encoded = new Uint32Array(data.length);\n\n // First, inverse scale all values (tile space -> original space)\n for (let i = 0; i < data.length; i++) {\n encoded[i] = Math.round(data[i] / scale);\n }\n\n // Then apply componentwise delta encoding (same as non-scaled version)\n // Reverse iterate to avoid overwriting data needed for delta computation\n for (let i = encoded.length - 2; i >= 2; i -= 2) {\n const deltaX = encoded[i] - encoded[i - 2];\n const deltaY = encoded[i + 1] - encoded[i - 1];\n encoded[i] = encodeZigZagInt32Value(deltaX);\n encoded[i + 1] = encodeZigZagInt32Value(deltaY);\n }\n\n // Encode first vertex last (after computing all deltas)\n encoded[0] = encodeZigZagInt32Value(encoded[0]);\n encoded[1] = encodeZigZagInt32Value(encoded[1]);\n return encoded;\n}\n\n// HM TODO:\n// zigZagDeltaOfDeltaDecoding\n\nexport function encodeZigZagRleDeltaInt32(values: Int32Array | number[]): {\n data: Uint32Array;\n runs: number;\n numTotalValues: number;\n} {\n if (values.length === 0) {\n return { data: new Uint32Array(0), runs: 0, numTotalValues: 0 };\n }\n\n const runLengths: number[] = [];\n const encodedDeltas: number[] = [];\n\n // The decoder explicitly sets decodedValues[0] = 0 and uses previousValue = 0.\n // Therefore, we initialize our 'previous' tracker to 0 to calculate the first delta correctly.\n let previousValue = 0;\n\n // Variables to track the current run\n let currentDelta: number | null = null;\n let currentRunLength = 0;\n\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n const delta = value - previousValue;\n previousValue = value;\n\n if (currentDelta === null) {\n // First element initialization\n currentDelta = delta;\n currentRunLength = 1;\n } else if (delta === currentDelta) {\n // Continuation of the current run\n currentRunLength++;\n } else {\n // The run has broken (delta changed)\n // 1. Push the length of the previous run\n runLengths.push(currentRunLength);\n // 2. ZigZag encode the previous delta and push it\n encodedDeltas.push(encodeZigZagInt32Value(currentDelta));\n\n // Start the new run\n currentDelta = delta;\n currentRunLength = 1;\n }\n }\n\n // Flush the final run remaining after the loop finishes\n if (currentDelta !== null) {\n runLengths.push(currentRunLength);\n encodedDeltas.push(encodeZigZagInt32Value(currentDelta));\n }\n\n const numRuns = runLengths.length;\n\n // The decoder expects 'data' to be: [RunLength 1, RunLength 2... | Value 1, Value 2...]\n // Size is numRuns * 2 (First half lengths, second half values)\n const data = new Uint32Array(numRuns * 2);\n\n for (let i = 0; i < numRuns; i++) {\n data[i] = runLengths[i]; // First half: Run Lengths\n data[i + numRuns] = encodedDeltas[i]; // Second half: ZigZag Encoded Deltas\n }\n\n return {\n data: data,\n runs: numRuns,\n numTotalValues: values.length,\n };\n}\n\nexport function encodeRleDeltaInt32(values: Uint32Array | number[]): {\n data: Uint32Array;\n runs: number;\n numTotalValues: number;\n} {\n if (values.length === 0) {\n return { data: new Uint32Array(0), runs: 0, numTotalValues: 0 };\n }\n\n const runLengths: number[] = [];\n const deltas: number[] = [];\n\n // The decoder logic relies on: decodedValues[0] = 0; previousValue = 0;\n // So the encoder must assume the sequence starts relative to 0.\n let previousValue = 0;\n\n // Track the current run of deltas\n let currentDelta: number | null = null;\n let currentRunLength = 0;\n\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n const delta = value - previousValue;\n previousValue = value;\n\n if (currentDelta === null) {\n // Initialize first run\n currentDelta = delta;\n currentRunLength = 1;\n } else if (delta === currentDelta) {\n // Continue current run\n currentRunLength++;\n } else {\n // Delta changed: flush the previous run\n runLengths.push(currentRunLength);\n deltas.push(currentDelta);\n\n // Start new run\n currentDelta = delta;\n currentRunLength = 1;\n }\n }\n\n // Flush the final run\n if (currentDelta !== null) {\n runLengths.push(currentRunLength);\n deltas.push(currentDelta);\n }\n\n const numRuns = runLengths.length;\n\n // Pack into Uint32Array: [ RunLength 1...N | Delta 1...N ]\n const data = new Uint32Array(numRuns * 2);\n for (let i = 0; i < numRuns; i++) {\n data[i] = runLengths[i];\n data[i + numRuns] = deltas[i];\n }\n\n return {\n data: data,\n runs: numRuns,\n numTotalValues: values.length,\n };\n}\n\nexport function encodeDeltaRleInt32(input: Int32Array): {\n data: Uint32Array;\n runs: number;\n numValues: number;\n} {\n if (input.length === 0) {\n return { data: new Uint32Array(0), runs: 0, numValues: 0 };\n }\n\n const deltasAndEncoded: number[] = [];\n let previousValue = 0;\n\n // Step 1 & 2: Calculate Deltas and Zigzag Encode them\n for (let i = 0; i < input.length; i++) {\n const currentValue = input[i];\n const delta = currentValue - previousValue;\n const encodedDelta = encodeZigZagInt32Value(delta);\n deltasAndEncoded.push(encodedDelta);\n previousValue = currentValue;\n }\n // deltasAndEncoded now holds the intermediate stream of zigzagged deltas\n\n // Step 3: Apply RLE to the stream of zigzag-encoded deltas\n const runLengths: number[] = [];\n const runZigZagDeltas: number[] = [];\n\n let currentRunLength = 0;\n let currentRunValue = deltasAndEncoded[0];\n\n for (let i = 0; i < deltasAndEncoded.length; i++) {\n const nextValue = deltasAndEncoded[i];\n\n if (nextValue === currentRunValue) {\n currentRunLength++;\n } else {\n runLengths.push(currentRunLength);\n runZigZagDeltas.push(currentRunValue);\n currentRunValue = nextValue;\n currentRunLength = 1;\n }\n }\n // Record the final run\n runLengths.push(currentRunLength);\n runZigZagDeltas.push(currentRunValue);\n\n // Step 4: Combine lengths and values into the final structured output array\n const numRuns = runLengths.length;\n const encodedData = new Uint32Array(numRuns * 2);\n\n // Populate the first half with lengths\n for (let i = 0; i < numRuns; i++) {\n encodedData[i] = runLengths[i];\n }\n\n // Populate the second half with zigzagged deltas\n // Uint32Array.set() works with standard number arrays\n encodedData.set(runZigZagDeltas, numRuns);\n\n return {\n data: encodedData,\n runs: numRuns,\n numValues: input.length, // Total original values count\n };\n}\n\nexport function encodeDeltaRleInt64(input: BigInt64Array): {\n data: BigUint64Array;\n runs: number;\n numValues: number;\n} {\n if (input.length === 0) {\n return { data: new BigUint64Array(0), runs: 0, numValues: 0 };\n }\n\n const deltasAndEncoded: bigint[] = [];\n let previousValue = 0n;\n\n // Step 1 & 2: Calculate Deltas and Zigzag Encode them\n for (let i = 0; i < input.length; i++) {\n const currentValue = input[i];\n const delta = currentValue - previousValue;\n const encodedDelta = encodeZigZagInt64Value(delta);\n deltasAndEncoded.push(encodedDelta);\n previousValue = currentValue;\n }\n // deltasAndEncoded now holds the intermediate stream of zigzagged deltas\n\n // Step 3: Apply RLE to the stream of zigzag-encoded deltas\n const runLengths: number[] = [];\n const runZigZagDeltas: bigint[] = [];\n\n let currentRunLength = 0;\n let currentValue = deltasAndEncoded[0];\n\n for (let i = 0; i < deltasAndEncoded.length; i++) {\n const nextValue = deltasAndEncoded[i];\n\n if (nextValue === currentValue) {\n currentRunLength++;\n } else {\n runLengths.push(currentRunLength);\n runZigZagDeltas.push(currentValue);\n currentValue = nextValue;\n currentRunLength = 1;\n }\n }\n // Record the final run\n runLengths.push(currentRunLength);\n runZigZagDeltas.push(currentValue);\n\n // Step 4: Combine lengths and values into the final structured output array\n const numRuns = runLengths.length;\n const encodedData = new BigUint64Array(numRuns * 2);\n\n // Populate the first half with lengths (converting numbers back to BigUint64Array for storage)\n for (let i = 0; i < numRuns; i++) {\n encodedData[i] = BigInt(runLengths[i]);\n }\n\n // Populate the second half with zigzagged deltas\n encodedData.set(runZigZagDeltas, numRuns);\n\n return {\n data: encodedData,\n runs: numRuns,\n numValues: input.length, // Total original values count\n };\n}\n"]}
@@ -1,7 +1,8 @@
1
- import { type StreamMetadata } from "../metadata/tile/streamMetadataDecoder";
1
+ import type { StreamMetadata } from "../metadata/tile/streamMetadataDecoder";
2
2
  import type BitVector from "../vector/flat/bitVector";
3
3
  import type GeometryScaling from "../decoding/geometryScaling";
4
- export declare function encodeIntStream(values: Int32Array, metadata: StreamMetadata, isSigned: boolean, bitVector?: BitVector, scalingData?: GeometryScaling): Uint8Array;
4
+ export declare function encodeSignedInt32Stream(values: Int32Array, metadata: StreamMetadata, bitVector?: BitVector, scalingData?: GeometryScaling): Uint8Array;
5
+ export declare function encodeUnsignedInt32Stream(values: Uint32Array, metadata: StreamMetadata, bitVector?: BitVector, scalingData?: GeometryScaling): Uint8Array;
5
6
  export declare function encodeFloat64(values: Float64Array, streamMetadata: StreamMetadata, isSigned: boolean): Float64Array;
6
7
  /**
7
8
  * Encodes BigInt64 values with zigzag encoding and varint compression