@maplibre/mlt 1.1.7 → 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.
- package/dist/decoding/bigEndianDecode.d.ts +1 -1
- package/dist/decoding/bigEndianDecode.js.map +1 -1
- package/dist/decoding/decodingTestUtils.d.ts +2 -2
- package/dist/decoding/decodingTestUtils.js +20 -21
- package/dist/decoding/decodingTestUtils.js.map +1 -1
- package/dist/decoding/fastPforDecoder.d.ts +5 -6
- package/dist/decoding/fastPforDecoder.js +6 -6
- package/dist/decoding/fastPforDecoder.js.map +1 -1
- package/dist/decoding/fastPforShared.d.ts +0 -2
- package/dist/decoding/fastPforShared.js.map +1 -1
- package/dist/decoding/fastPforUnpack.d.ts +23 -23
- package/dist/decoding/fastPforUnpack.js.map +1 -1
- package/dist/decoding/geometryDecoder.js +41 -41
- package/dist/decoding/geometryDecoder.js.map +1 -1
- package/dist/decoding/intWrapper.js +0 -1
- package/dist/decoding/intWrapper.js.map +1 -1
- package/dist/decoding/integerDecodingUtils.d.ts +21 -17
- package/dist/decoding/integerDecodingUtils.js +71 -30
- package/dist/decoding/integerDecodingUtils.js.map +1 -1
- package/dist/decoding/integerStreamDecoder.d.ts +14 -10
- package/dist/decoding/integerStreamDecoder.js +150 -63
- package/dist/decoding/integerStreamDecoder.js.map +1 -1
- package/dist/decoding/propertyDecoder.js +32 -26
- package/dist/decoding/propertyDecoder.js.map +1 -1
- package/dist/decoding/stringDecoder.js +18 -19
- package/dist/decoding/stringDecoder.js.map +1 -1
- package/dist/decoding/unpackNullableUtils.d.ts +2 -2
- package/dist/decoding/unpackNullableUtils.js.map +1 -1
- package/dist/encoding/bigEndianEncode.d.ts +1 -1
- package/dist/encoding/bigEndianEncode.js.map +1 -1
- package/dist/encoding/constGeometryVectorEncoder.js +9 -9
- package/dist/encoding/constGeometryVectorEncoder.js.map +1 -1
- package/dist/encoding/encodingUtils.d.ts +1 -1
- package/dist/encoding/encodingUtils.js +1 -1
- package/dist/encoding/encodingUtils.js.map +1 -1
- package/dist/encoding/fastPforEncoder.d.ts +4 -5
- package/dist/encoding/fastPforEncoder.js +4 -4
- package/dist/encoding/fastPforEncoder.js.map +1 -1
- package/dist/encoding/integerEncodingUtils.d.ts +14 -14
- package/dist/encoding/integerEncodingUtils.js +39 -31
- package/dist/encoding/integerEncodingUtils.js.map +1 -1
- package/dist/encoding/integerStreamEncoder.d.ts +2 -1
- package/dist/encoding/integerStreamEncoder.js +52 -18
- package/dist/encoding/integerStreamEncoder.js.map +1 -1
- package/dist/encoding/propertyEncoder.js +9 -16
- package/dist/encoding/propertyEncoder.js.map +1 -1
- package/dist/encoding/stringEncoder.js +9 -42
- package/dist/encoding/stringEncoder.js.map +1 -1
- package/dist/metadata/tile/logicalStreamType.d.ts +5 -9
- package/dist/metadata/tile/logicalStreamType.js +1 -19
- package/dist/metadata/tile/logicalStreamType.js.map +1 -1
- package/dist/metadata/tile/streamMetadataDecoder.d.ts +1 -1
- package/dist/metadata/tile/streamMetadataDecoder.js +9 -4
- package/dist/metadata/tile/streamMetadataDecoder.js.map +1 -1
- package/dist/mltDecoder.js +25 -29
- package/dist/mltDecoder.js.map +1 -1
- package/dist/vector/constant/{intConstVector.d.ts → int32ConstVector.d.ts} +2 -2
- package/dist/vector/constant/int32ConstVector.js +10 -0
- package/dist/vector/constant/int32ConstVector.js.map +1 -0
- package/dist/vector/constant/{longConstVector.d.ts → int64ConstVector.d.ts} +2 -2
- package/dist/vector/constant/int64ConstVector.js +10 -0
- package/dist/vector/constant/int64ConstVector.js.map +1 -0
- package/dist/vector/dictionary/stringDictionaryVector.d.ts +1 -1
- package/dist/vector/dictionary/stringDictionaryVector.js +0 -1
- package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
- package/dist/vector/featureTable.d.ts +4 -4
- package/dist/vector/featureTable.js +9 -14
- package/dist/vector/featureTable.js.map +1 -1
- package/dist/vector/filter/flatSelectionVector.js +0 -2
- package/dist/vector/filter/flatSelectionVector.js.map +1 -1
- package/dist/vector/filter/sequenceSelectionVector.js +1 -5
- package/dist/vector/filter/sequenceSelectionVector.js.map +1 -1
- package/dist/vector/flat/bitVector.js +0 -2
- package/dist/vector/flat/bitVector.js.map +1 -1
- package/dist/vector/flat/booleanFlatVector.js +0 -1
- package/dist/vector/flat/booleanFlatVector.js.map +1 -1
- package/dist/vector/flat/{intFlatVector.d.ts → int32FlatVector.d.ts} +1 -1
- package/dist/vector/flat/{intFlatVector.js → int32FlatVector.js} +2 -2
- package/dist/vector/flat/int32FlatVector.js.map +1 -0
- package/dist/vector/flat/{longFlatVector.d.ts → int64FlatVector.d.ts} +1 -1
- package/dist/vector/flat/{longFlatVector.js → int64FlatVector.js} +2 -2
- package/dist/vector/flat/int64FlatVector.js.map +1 -0
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +1 -1
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js +0 -6
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
- package/dist/vector/geometry/constGeometryVector.d.ts +3 -3
- package/dist/vector/geometry/constGeometryVector.js +0 -2
- package/dist/vector/geometry/constGeometryVector.js.map +1 -1
- package/dist/vector/geometry/constGpuVector.d.ts +2 -2
- package/dist/vector/geometry/constGpuVector.js +0 -2
- package/dist/vector/geometry/constGpuVector.js.map +1 -1
- package/dist/vector/geometry/flatGeometryVector.d.ts +3 -3
- package/dist/vector/geometry/flatGeometryVector.js +1 -5
- package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
- package/dist/vector/geometry/flatGpuVector.d.ts +2 -2
- package/dist/vector/geometry/flatGpuVector.js +0 -1
- package/dist/vector/geometry/flatGpuVector.js.map +1 -1
- package/dist/vector/geometry/geometryVector.d.ts +3 -3
- package/dist/vector/geometry/geometryVector.js +0 -5
- package/dist/vector/geometry/geometryVector.js.map +1 -1
- package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
- package/dist/vector/geometry/gpuVector.d.ts +4 -4
- package/dist/vector/geometry/gpuVector.js +0 -4
- package/dist/vector/geometry/gpuVector.js.map +1 -1
- package/dist/vector/geometry/topologyVector.d.ts +3 -3
- package/dist/vector/geometry/topologyVector.js.map +1 -1
- package/dist/vector/idVector.d.ts +8 -0
- package/dist/vector/idVector.js +2 -0
- package/dist/vector/idVector.js.map +1 -0
- package/dist/vector/sequence/{intSequenceVector.d.ts → int32SequenceVector.d.ts} +1 -1
- package/dist/vector/sequence/{intSequenceVector.js → int32SequenceVector.js} +2 -2
- package/dist/vector/sequence/int32SequenceVector.js.map +1 -0
- package/dist/vector/sequence/{longSequenceVector.d.ts → int64SequenceVector.d.ts} +1 -1
- package/dist/vector/sequence/{longSequenceVector.js → int64SequenceVector.js} +2 -2
- package/dist/vector/sequence/int64SequenceVector.js.map +1 -0
- package/dist/vector/sequence/sequenceVector.js +0 -1
- package/dist/vector/sequence/sequenceVector.js.map +1 -1
- package/dist/vector/variableSizeVector.js +0 -1
- package/dist/vector/variableSizeVector.js.map +1 -1
- package/dist/vector/vector.js +0 -4
- package/dist/vector/vector.js.map +1 -1
- package/package.json +6 -6
- package/dist/vector/constant/intConstVector.js +0 -10
- package/dist/vector/constant/intConstVector.js.map +0 -1
- package/dist/vector/constant/longConstVector.js +0 -10
- package/dist/vector/constant/longConstVector.js.map +0 -1
- package/dist/vector/flat/intFlatVector.js.map +0 -1
- package/dist/vector/flat/longFlatVector.js.map +0 -1
- package/dist/vector/intVector.d.ts +0 -8
- package/dist/vector/intVector.js +0 -2
- package/dist/vector/intVector.js.map +0 -1
- package/dist/vector/sequence/intSequenceVector.js.map +0 -1
- package/dist/vector/sequence/longSequenceVector.js.map +0 -1
|
@@ -101,9 +101,11 @@ export function encodeZigZagFloat64Value(n) {
|
|
|
101
101
|
return n >= 0 ? n * 2 : n * -2 - 1;
|
|
102
102
|
}
|
|
103
103
|
export function encodeZigZagInt32(data) {
|
|
104
|
+
const result = new Uint32Array(data.length);
|
|
104
105
|
for (let i = 0; i < data.length; i++) {
|
|
105
|
-
|
|
106
|
+
result[i] = encodeZigZagInt32Value(data[i]);
|
|
106
107
|
}
|
|
108
|
+
return result;
|
|
107
109
|
}
|
|
108
110
|
export function encodeZigZagInt64(data) {
|
|
109
111
|
const result = new BigUint64Array(data.length);
|
|
@@ -119,7 +121,7 @@ export function encodeZigZagFloat64(data) {
|
|
|
119
121
|
}
|
|
120
122
|
export function encodeUnsignedRleInt32(input) {
|
|
121
123
|
if (input.length === 0) {
|
|
122
|
-
return { data: new
|
|
124
|
+
return { data: new Uint32Array(0), runs: 0 };
|
|
123
125
|
}
|
|
124
126
|
const runLengths = [];
|
|
125
127
|
const runValues = [];
|
|
@@ -144,7 +146,7 @@ export function encodeUnsignedRleInt32(input) {
|
|
|
144
146
|
runValues.push(currentValue);
|
|
145
147
|
// Combine lengths and values into the final structured output array
|
|
146
148
|
const numRuns = runLengths.length;
|
|
147
|
-
const encodedData = new
|
|
149
|
+
const encodedData = new Uint32Array(numRuns * 2);
|
|
148
150
|
// Populate the first half with lengths
|
|
149
151
|
encodedData.set(runLengths, 0);
|
|
150
152
|
// Populate the second half with values, offset by the total number of runs
|
|
@@ -224,19 +226,21 @@ export function encodeUnsignedRleFloat64(input) {
|
|
|
224
226
|
}
|
|
225
227
|
export function encodeZigZagDeltaInt32(data) {
|
|
226
228
|
if (data.length === 0) {
|
|
227
|
-
return;
|
|
229
|
+
return new Uint32Array(0);
|
|
228
230
|
}
|
|
231
|
+
const encodedData = new Uint32Array(data.length);
|
|
229
232
|
let previousValue = data[0];
|
|
230
|
-
|
|
233
|
+
encodedData[0] = encodeZigZagInt32Value(previousValue);
|
|
231
234
|
for (let i = 1; i < data.length; i++) {
|
|
232
235
|
const currentValue = data[i];
|
|
233
236
|
const delta = currentValue - previousValue;
|
|
234
237
|
const encodedDelta = encodeZigZagInt32Value(delta);
|
|
235
238
|
// Store the encoded delta back into the array
|
|
236
|
-
|
|
239
|
+
encodedData[i] = encodedDelta;
|
|
237
240
|
// Update the previous value tracker for the next iteration's delta calculation
|
|
238
241
|
previousValue = currentValue;
|
|
239
242
|
}
|
|
243
|
+
return encodedData;
|
|
240
244
|
}
|
|
241
245
|
export function encodeZigZagDeltaInt64(data) {
|
|
242
246
|
if (data.length === 0) {
|
|
@@ -274,7 +278,7 @@ export function encodeZigZagDeltaFloat64(data) {
|
|
|
274
278
|
}
|
|
275
279
|
export function encodeZigZagRleInt32(input) {
|
|
276
280
|
if (input.length === 0) {
|
|
277
|
-
return { data: new
|
|
281
|
+
return { data: new Uint32Array(0), runs: 0, numTotalValues: 0 };
|
|
278
282
|
}
|
|
279
283
|
const zigzagEncodedStream = [];
|
|
280
284
|
// Step 1: Apply Zigzag Encoding to all values
|
|
@@ -304,8 +308,8 @@ export function encodeZigZagRleInt32(input) {
|
|
|
304
308
|
runZigZagValues.push(currentValue);
|
|
305
309
|
// Step 3: Combine lengths and values into the final structured output array
|
|
306
310
|
const numRuns = runLengths.length;
|
|
307
|
-
// The final array uses
|
|
308
|
-
const encodedData = new
|
|
311
|
+
// The final array uses Uint32Array for lengths AND values
|
|
312
|
+
const encodedData = new Uint32Array(numRuns * 2);
|
|
309
313
|
// Populate the first half with lengths
|
|
310
314
|
encodedData.set(runLengths, 0);
|
|
311
315
|
// Populate the second half with zigzagged values
|
|
@@ -419,42 +423,46 @@ export function encodeDeltaInt32(data) {
|
|
|
419
423
|
}
|
|
420
424
|
export function encodeComponentwiseDeltaVec2(data) {
|
|
421
425
|
if (data.length < 2)
|
|
422
|
-
return;
|
|
426
|
+
return new Uint32Array(data);
|
|
427
|
+
const encoded = new Uint32Array(data.length);
|
|
423
428
|
// Reverse iterate to avoid overwriting data needed for delta computation
|
|
424
429
|
for (let i = data.length - 2; i >= 2; i -= 2) {
|
|
425
430
|
const deltaX = data[i] - data[i - 2];
|
|
426
431
|
const deltaY = data[i + 1] - data[i - 1];
|
|
427
|
-
|
|
428
|
-
|
|
432
|
+
encoded[i] = encodeZigZagInt32Value(deltaX);
|
|
433
|
+
encoded[i + 1] = encodeZigZagInt32Value(deltaY);
|
|
429
434
|
}
|
|
430
435
|
// Encode first vertex last (after computing all deltas)
|
|
431
|
-
|
|
432
|
-
|
|
436
|
+
encoded[0] = encodeZigZagInt32Value(data[0]);
|
|
437
|
+
encoded[1] = encodeZigZagInt32Value(data[1]);
|
|
438
|
+
return encoded;
|
|
433
439
|
}
|
|
434
440
|
export function encodeComponentwiseDeltaVec2Scaled(data, scale) {
|
|
435
441
|
if (data.length < 2)
|
|
436
|
-
return;
|
|
442
|
+
return new Uint32Array(data);
|
|
443
|
+
const encoded = new Uint32Array(data.length);
|
|
437
444
|
// First, inverse scale all values (tile space -> original space)
|
|
438
445
|
for (let i = 0; i < data.length; i++) {
|
|
439
|
-
|
|
446
|
+
encoded[i] = Math.round(data[i] / scale);
|
|
440
447
|
}
|
|
441
448
|
// Then apply componentwise delta encoding (same as non-scaled version)
|
|
442
449
|
// Reverse iterate to avoid overwriting data needed for delta computation
|
|
443
|
-
for (let i =
|
|
444
|
-
const deltaX =
|
|
445
|
-
const deltaY =
|
|
446
|
-
|
|
447
|
-
|
|
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);
|
|
448
455
|
}
|
|
449
456
|
// Encode first vertex last (after computing all deltas)
|
|
450
|
-
|
|
451
|
-
|
|
457
|
+
encoded[0] = encodeZigZagInt32Value(encoded[0]);
|
|
458
|
+
encoded[1] = encodeZigZagInt32Value(encoded[1]);
|
|
459
|
+
return encoded;
|
|
452
460
|
}
|
|
453
461
|
// HM TODO:
|
|
454
462
|
// zigZagDeltaOfDeltaDecoding
|
|
455
463
|
export function encodeZigZagRleDeltaInt32(values) {
|
|
456
464
|
if (values.length === 0) {
|
|
457
|
-
return { data: new
|
|
465
|
+
return { data: new Uint32Array(0), runs: 0, numTotalValues: 0 };
|
|
458
466
|
}
|
|
459
467
|
const runLengths = [];
|
|
460
468
|
const encodedDeltas = [];
|
|
@@ -496,7 +504,7 @@ export function encodeZigZagRleDeltaInt32(values) {
|
|
|
496
504
|
const numRuns = runLengths.length;
|
|
497
505
|
// The decoder expects 'data' to be: [RunLength 1, RunLength 2... | Value 1, Value 2...]
|
|
498
506
|
// Size is numRuns * 2 (First half lengths, second half values)
|
|
499
|
-
const data = new
|
|
507
|
+
const data = new Uint32Array(numRuns * 2);
|
|
500
508
|
for (let i = 0; i < numRuns; i++) {
|
|
501
509
|
data[i] = runLengths[i]; // First half: Run Lengths
|
|
502
510
|
data[i + numRuns] = encodedDeltas[i]; // Second half: ZigZag Encoded Deltas
|
|
@@ -509,7 +517,7 @@ export function encodeZigZagRleDeltaInt32(values) {
|
|
|
509
517
|
}
|
|
510
518
|
export function encodeRleDeltaInt32(values) {
|
|
511
519
|
if (values.length === 0) {
|
|
512
|
-
return { data: new
|
|
520
|
+
return { data: new Uint32Array(0), runs: 0, numTotalValues: 0 };
|
|
513
521
|
}
|
|
514
522
|
const runLengths = [];
|
|
515
523
|
const deltas = [];
|
|
@@ -547,8 +555,8 @@ export function encodeRleDeltaInt32(values) {
|
|
|
547
555
|
deltas.push(currentDelta);
|
|
548
556
|
}
|
|
549
557
|
const numRuns = runLengths.length;
|
|
550
|
-
// Pack into
|
|
551
|
-
const data = new
|
|
558
|
+
// Pack into Uint32Array: [ RunLength 1...N | Delta 1...N ]
|
|
559
|
+
const data = new Uint32Array(numRuns * 2);
|
|
552
560
|
for (let i = 0; i < numRuns; i++) {
|
|
553
561
|
data[i] = runLengths[i];
|
|
554
562
|
data[i + numRuns] = deltas[i];
|
|
@@ -561,7 +569,7 @@ export function encodeRleDeltaInt32(values) {
|
|
|
561
569
|
}
|
|
562
570
|
export function encodeDeltaRleInt32(input) {
|
|
563
571
|
if (input.length === 0) {
|
|
564
|
-
return { data: new
|
|
572
|
+
return { data: new Uint32Array(0), runs: 0, numValues: 0 };
|
|
565
573
|
}
|
|
566
574
|
const deltasAndEncoded = [];
|
|
567
575
|
let previousValue = 0;
|
|
@@ -596,13 +604,13 @@ export function encodeDeltaRleInt32(input) {
|
|
|
596
604
|
runZigZagDeltas.push(currentRunValue);
|
|
597
605
|
// Step 4: Combine lengths and values into the final structured output array
|
|
598
606
|
const numRuns = runLengths.length;
|
|
599
|
-
const encodedData = new
|
|
607
|
+
const encodedData = new Uint32Array(numRuns * 2);
|
|
600
608
|
// Populate the first half with lengths
|
|
601
609
|
for (let i = 0; i < numRuns; i++) {
|
|
602
610
|
encodedData[i] = runLengths[i];
|
|
603
611
|
}
|
|
604
612
|
// Populate the second half with zigzagged deltas
|
|
605
|
-
//
|
|
613
|
+
// Uint32Array.set() works with standard number arrays
|
|
606
614
|
encodedData.set(runZigZagDeltas, numRuns);
|
|
607
615
|
return {
|
|
608
616
|
data: encodedData,
|
|
@@ -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\";\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: 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: 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: Int32Array): 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): void {\n for (let i = 0; i < data.length; i++) {\n data[i] = encodeZigZagInt32Value(data[i]);\n }\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: 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: 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): 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): 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: 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: 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): 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 = 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: 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
|
+
{"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
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
|
|
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
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { LogicalLevelTechnique } from "../metadata/tile/logicalLevelTechnique";
|
|
2
|
-
import { encodeDeltaRleInt32, encodeZigZagInt32, encodeZigZagRleInt32, encodeUnsignedRleInt32, encodeDeltaInt32, encodeUnsignedRleFloat64, encodeZigZagDeltaFloat64, encodeZigZagFloat64, encodeZigZagRleFloat64, encodeVarintInt32, encodeVarintInt64, encodeZigZagInt64Value, encodeFastPfor, encodeComponentwiseDeltaVec2, encodeComponentwiseDeltaVec2Scaled, } from "./integerEncodingUtils";
|
|
2
|
+
import { encodeDeltaRleInt32, encodeZigZagInt32, encodeZigZagRleInt32, encodeUnsignedRleInt32, encodeDeltaInt32, encodeUnsignedRleFloat64, encodeZigZagDeltaFloat64, encodeZigZagFloat64, encodeZigZagRleFloat64, encodeVarintInt32, encodeVarintInt64, encodeZigZagInt64Value, encodeFastPfor, encodeComponentwiseDeltaVec2, encodeComponentwiseDeltaVec2Scaled, encodeZigZagDeltaInt32, } from "./integerEncodingUtils";
|
|
3
3
|
import { packNullable } from "./packNullableUtils";
|
|
4
4
|
import { PhysicalLevelTechnique } from "../metadata/tile/physicalLevelTechnique";
|
|
5
|
-
export function
|
|
6
|
-
const { data } =
|
|
5
|
+
export function encodeSignedInt32Stream(values, metadata, bitVector, scalingData) {
|
|
6
|
+
const { data } = encodeSignedInt32(values, metadata, bitVector, scalingData);
|
|
7
|
+
return encodePhysicalLevelTechnique(data, metadata);
|
|
8
|
+
}
|
|
9
|
+
export function encodeUnsignedInt32Stream(values, metadata, bitVector, scalingData) {
|
|
10
|
+
const { data } = encodeUnsignedInt32(values, metadata, bitVector, scalingData);
|
|
7
11
|
return encodePhysicalLevelTechnique(data, metadata);
|
|
8
12
|
}
|
|
9
13
|
function encodePhysicalLevelTechnique(data, streamMetadata) {
|
|
@@ -20,39 +24,69 @@ function encodePhysicalLevelTechnique(data, streamMetadata) {
|
|
|
20
24
|
}
|
|
21
25
|
throw new Error("Specified physicalLevelTechnique is not supported (yet).");
|
|
22
26
|
}
|
|
23
|
-
function
|
|
24
|
-
|
|
27
|
+
function encodeSignedInt32(values, streamMetadata, bitVector, scalingData) {
|
|
28
|
+
values = bitVector ? packNullable(values, bitVector) : new Int32Array(values);
|
|
29
|
+
let data;
|
|
25
30
|
switch (streamMetadata.logicalLevelTechnique1) {
|
|
26
31
|
case LogicalLevelTechnique.DELTA:
|
|
27
32
|
if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
|
|
28
|
-
const encoded = encodeDeltaRleInt32(
|
|
33
|
+
const encoded = encodeDeltaRleInt32(values);
|
|
29
34
|
return { data: encoded.data, runs: encoded.runs };
|
|
30
35
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
else {
|
|
37
|
+
data = encodeZigZagDeltaInt32(values);
|
|
38
|
+
return { data };
|
|
39
|
+
}
|
|
34
40
|
case LogicalLevelTechnique.RLE: {
|
|
35
|
-
|
|
36
|
-
|
|
41
|
+
const encoded = encodeZigZagRleInt32(values);
|
|
42
|
+
return { data: encoded.data, runs: encoded.runs };
|
|
43
|
+
}
|
|
44
|
+
case LogicalLevelTechnique.MORTON:
|
|
45
|
+
encodeDeltaInt32(values);
|
|
46
|
+
data = new Uint32Array(values);
|
|
47
|
+
return { data };
|
|
48
|
+
case LogicalLevelTechnique.COMPONENTWISE_DELTA:
|
|
49
|
+
if (scalingData && !bitVector) {
|
|
50
|
+
const data = encodeComponentwiseDeltaVec2Scaled(values, scalingData.scale);
|
|
51
|
+
return { data };
|
|
52
|
+
}
|
|
53
|
+
data = encodeComponentwiseDeltaVec2(values);
|
|
54
|
+
return { data };
|
|
55
|
+
case LogicalLevelTechnique.NONE:
|
|
56
|
+
data = encodeZigZagInt32(values);
|
|
57
|
+
return { data };
|
|
58
|
+
default:
|
|
59
|
+
throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function encodeUnsignedInt32(values, streamMetadata, bitVector, scalingData) {
|
|
63
|
+
values = bitVector ? packNullable(values, bitVector) : new Uint32Array(values);
|
|
64
|
+
let data;
|
|
65
|
+
switch (streamMetadata.logicalLevelTechnique1) {
|
|
66
|
+
case LogicalLevelTechnique.DELTA:
|
|
67
|
+
if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
|
|
68
|
+
const encoded = encodeDeltaRleInt32(new Int32Array(values.buffer, values.byteOffset, values.length));
|
|
37
69
|
return { data: encoded.data, runs: encoded.runs };
|
|
38
70
|
}
|
|
39
|
-
|
|
71
|
+
data = encodeZigZagDeltaInt32(new Int32Array(values.buffer, values.byteOffset, values.length));
|
|
72
|
+
return { data };
|
|
73
|
+
case LogicalLevelTechnique.RLE: {
|
|
74
|
+
const encoded = encodeUnsignedRleInt32(values);
|
|
40
75
|
return { data: encoded.data, runs: encoded.runs };
|
|
41
76
|
}
|
|
42
77
|
case LogicalLevelTechnique.MORTON:
|
|
43
|
-
encodeDeltaInt32(
|
|
78
|
+
encodeDeltaInt32(values);
|
|
79
|
+
data = values;
|
|
44
80
|
return { data };
|
|
45
81
|
case LogicalLevelTechnique.COMPONENTWISE_DELTA:
|
|
46
82
|
if (scalingData && !bitVector) {
|
|
47
|
-
encodeComponentwiseDeltaVec2Scaled(
|
|
83
|
+
const data = encodeComponentwiseDeltaVec2Scaled(new Int32Array(values), scalingData.scale);
|
|
48
84
|
return { data };
|
|
49
85
|
}
|
|
50
|
-
encodeComponentwiseDeltaVec2(
|
|
86
|
+
data = encodeComponentwiseDeltaVec2(new Int32Array(values));
|
|
51
87
|
return { data };
|
|
52
88
|
case LogicalLevelTechnique.NONE:
|
|
53
|
-
|
|
54
|
-
encodeZigZagInt32(data);
|
|
55
|
-
}
|
|
89
|
+
data = values;
|
|
56
90
|
return { data };
|
|
57
91
|
default:
|
|
58
92
|
throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integerStreamEncoder.js","sourceRoot":"","sources":["../../src/encoding/integerStreamEncoder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport {\n encodeDeltaRleInt32,\n encodeZigZagInt32,\n encodeZigZagRleInt32,\n encodeUnsignedRleInt32,\n encodeDeltaInt32,\n encodeUnsignedRleFloat64,\n encodeZigZagDeltaFloat64,\n encodeZigZagFloat64,\n encodeZigZagRleFloat64,\n encodeVarintInt32,\n encodeVarintInt64,\n encodeZigZagInt64Value,\n encodeFastPfor,\n encodeComponentwiseDeltaVec2,\n encodeComponentwiseDeltaVec2Scaled,\n} from \"./integerEncodingUtils\";\nimport type BitVector from \"../vector/flat/bitVector\";\nimport { packNullable } from \"./packNullableUtils\";\nimport { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport type GeometryScaling from \"../decoding/geometryScaling\";\n\nexport function encodeIntStream(\n values: Int32Array,\n metadata: StreamMetadata,\n isSigned: boolean,\n bitVector?: BitVector,\n scalingData?: GeometryScaling,\n): Uint8Array {\n const { data } = encodeInt32(values, metadata, isSigned, bitVector, scalingData);\n return encodePhysicalLevelTechnique(data, metadata);\n}\n\nfunction encodePhysicalLevelTechnique(data: Int32Array, streamMetadata: StreamMetadata): Uint8Array {\n const physicalLevelTechnique = streamMetadata.physicalLevelTechnique;\n if (physicalLevelTechnique === PhysicalLevelTechnique.FAST_PFOR) {\n return encodeFastPfor(data);\n }\n if (physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n return encodeVarintInt32(data);\n }\n\n if (physicalLevelTechnique === PhysicalLevelTechnique.NONE) {\n const slice = data.subarray(0, streamMetadata.byteLength);\n return new Uint8Array(slice);\n }\n\n throw new Error(\"Specified physicalLevelTechnique is not supported (yet).\");\n}\n\nfunction encodeInt32(\n values: Int32Array,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n bitVector?: BitVector,\n scalingData?: GeometryScaling,\n): { data: Int32Array; runs?: number } {\n const data = bitVector ? packNullable(values, bitVector) : new Int32Array(values);\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const encoded = encodeDeltaRleInt32(data);\n return { data: encoded.data, runs: encoded.runs };\n }\n encodeDeltaInt32(data);\n encodeZigZagInt32(data);\n return { data };\n case LogicalLevelTechnique.RLE: {\n if (isSigned) {\n const encoded = encodeZigZagRleInt32(data);\n return { data: encoded.data, runs: encoded.runs };\n }\n const encoded = encodeUnsignedRleInt32(data);\n return { data: encoded.data, runs: encoded.runs };\n }\n case LogicalLevelTechnique.MORTON:\n encodeDeltaInt32(data);\n return { data };\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !bitVector) {\n encodeComponentwiseDeltaVec2Scaled(data, scalingData.scale);\n return { data };\n }\n encodeComponentwiseDeltaVec2(data);\n return { data };\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n encodeZigZagInt32(data);\n }\n return { data };\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n}\n\nexport function encodeFloat64(values: Float64Array, streamMetadata: StreamMetadata, isSigned: boolean): Float64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n encodeZigZagDeltaFloat64(values);\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n values = encodeUnsignedRleFloat64(values).data;\n }\n return values;\n case LogicalLevelTechnique.RLE:\n return encodeRleFloat64(values, isSigned);\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n encodeZigZagFloat64(values);\n }\n return values;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n}\n\nfunction encodeRleFloat64(data: Float64Array, isSigned: boolean): Float64Array {\n return isSigned ? encodeZigZagRleFloat64(data).data : encodeUnsignedRleFloat64(data).data;\n}\n\n/**\n * Encodes BigInt64 values with zigzag encoding and varint compression\n */\nexport function encodeInt64SignedNone(values: BigInt64Array): Uint8Array {\n const zigzagEncoded = new BigUint64Array(Array.from(values, (val) => encodeZigZagInt64Value(val)));\n return encodeVarintInt64(zigzagEncoded);\n}\n\n/**\n * Encodes BigInt64 values with delta encoding, zigzag, and varint\n */\nexport function encodeInt64SignedDelta(values: BigInt64Array): Uint8Array {\n const deltaEncoded = new BigInt64Array(values.length);\n deltaEncoded[0] = values[0];\n for (let i = 1; i < values.length; i++) {\n deltaEncoded[i] = values[i] - values[i - 1];\n }\n const zigzagEncoded = new BigUint64Array(deltaEncoded.length);\n for (let i = 0; i < deltaEncoded.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt64Value(deltaEncoded[i]);\n }\n return encodeVarintInt64(zigzagEncoded);\n}\n\n/**\n * Encodes BigInt64 values with RLE, zigzag, and varint\n * @param runs - Array of [runLength, value] pairs\n */\nexport function encodeInt64SignedRle(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n }\n\n const rleValues = [...runLengths, ...values];\n return encodeVarintInt64(new BigUint64Array(rleValues));\n}\n\n/**\n * Encodes BigInt64 values with delta+RLE, zigzag, and varint\n * @param runs - Array of [runLength, deltaValue] pairs representing RLE-encoded delta values\n */\nexport function encodeInt64SignedDeltaRle(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n }\n\n const rleValues = [...runLengths, ...values];\n return encodeVarintInt64(new BigUint64Array(rleValues));\n}\n\n/**\n * Encodes unsigned BigInt64 values with varint compression (no zigzag)\n */\nexport function encodeInt64UnsignedNone(values: BigInt64Array): Uint8Array {\n return encodeVarintInt64(new BigUint64Array(values));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"integerStreamEncoder.js","sourceRoot":"","sources":["../../src/encoding/integerStreamEncoder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport {\n encodeDeltaRleInt32,\n encodeZigZagInt32,\n encodeZigZagRleInt32,\n encodeUnsignedRleInt32,\n encodeDeltaInt32,\n encodeUnsignedRleFloat64,\n encodeZigZagDeltaFloat64,\n encodeZigZagFloat64,\n encodeZigZagRleFloat64,\n encodeVarintInt32,\n encodeVarintInt64,\n encodeZigZagInt64Value,\n encodeFastPfor,\n encodeComponentwiseDeltaVec2,\n encodeComponentwiseDeltaVec2Scaled,\n encodeZigZagDeltaInt32,\n} from \"./integerEncodingUtils\";\nimport type BitVector from \"../vector/flat/bitVector\";\nimport { packNullable } from \"./packNullableUtils\";\nimport { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport type GeometryScaling from \"../decoding/geometryScaling\";\n\nexport function encodeSignedInt32Stream(\n values: Int32Array,\n metadata: StreamMetadata,\n bitVector?: BitVector,\n scalingData?: GeometryScaling,\n): Uint8Array {\n const { data } = encodeSignedInt32(values, metadata, bitVector, scalingData);\n return encodePhysicalLevelTechnique(data, metadata);\n}\n\nexport function encodeUnsignedInt32Stream(\n values: Uint32Array,\n metadata: StreamMetadata,\n bitVector?: BitVector,\n scalingData?: GeometryScaling,\n): Uint8Array {\n const { data } = encodeUnsignedInt32(values, metadata, bitVector, scalingData);\n return encodePhysicalLevelTechnique(data, metadata);\n}\n\nfunction encodePhysicalLevelTechnique(data: Uint32Array, streamMetadata: StreamMetadata): Uint8Array {\n const physicalLevelTechnique = streamMetadata.physicalLevelTechnique;\n if (physicalLevelTechnique === PhysicalLevelTechnique.FAST_PFOR) {\n return encodeFastPfor(data);\n }\n if (physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n return encodeVarintInt32(data);\n }\n\n if (physicalLevelTechnique === PhysicalLevelTechnique.NONE) {\n const slice = data.subarray(0, streamMetadata.byteLength);\n return new Uint8Array(slice);\n }\n\n throw new Error(\"Specified physicalLevelTechnique is not supported (yet).\");\n}\n\nfunction encodeSignedInt32(\n values: Int32Array,\n streamMetadata: StreamMetadata,\n bitVector?: BitVector,\n scalingData?: GeometryScaling,\n): { data: Uint32Array; runs?: number } {\n values = bitVector ? packNullable(values, bitVector) : new Int32Array(values);\n let data: Uint32Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const encoded = encodeDeltaRleInt32(values);\n return { data: encoded.data, runs: encoded.runs };\n } else {\n data = encodeZigZagDeltaInt32(values);\n return { data };\n }\n case LogicalLevelTechnique.RLE: {\n const encoded = encodeZigZagRleInt32(values);\n return { data: encoded.data, runs: encoded.runs };\n }\n case LogicalLevelTechnique.MORTON:\n encodeDeltaInt32(values);\n data = new Uint32Array(values);\n return { data };\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !bitVector) {\n const data = encodeComponentwiseDeltaVec2Scaled(values, scalingData.scale);\n return { data };\n }\n data = encodeComponentwiseDeltaVec2(values);\n return { data };\n case LogicalLevelTechnique.NONE:\n data = encodeZigZagInt32(values);\n return { data };\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n}\n\nfunction encodeUnsignedInt32(\n values: Uint32Array,\n streamMetadata: StreamMetadata,\n bitVector?: BitVector,\n scalingData?: GeometryScaling,\n): { data: Uint32Array; runs?: number } {\n values = bitVector ? packNullable(values, bitVector) : new Uint32Array(values);\n let data: Uint32Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const encoded = encodeDeltaRleInt32(new Int32Array(values.buffer, values.byteOffset, values.length));\n return { data: encoded.data, runs: encoded.runs };\n }\n data = encodeZigZagDeltaInt32(new Int32Array(values.buffer, values.byteOffset, values.length));\n return { data };\n case LogicalLevelTechnique.RLE: {\n const encoded = encodeUnsignedRleInt32(values);\n return { data: encoded.data, runs: encoded.runs };\n }\n case LogicalLevelTechnique.MORTON:\n encodeDeltaInt32(values);\n data = values;\n return { data };\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !bitVector) {\n const data = encodeComponentwiseDeltaVec2Scaled(new Int32Array(values), scalingData.scale);\n return { data };\n }\n data = encodeComponentwiseDeltaVec2(new Int32Array(values));\n return { data };\n case LogicalLevelTechnique.NONE:\n data = values;\n return { data };\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n}\n\nexport function encodeFloat64(values: Float64Array, streamMetadata: StreamMetadata, isSigned: boolean): Float64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n encodeZigZagDeltaFloat64(values);\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n values = encodeUnsignedRleFloat64(values).data;\n }\n return values;\n case LogicalLevelTechnique.RLE:\n return encodeRleFloat64(values, isSigned);\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n encodeZigZagFloat64(values);\n }\n return values;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n}\n\nfunction encodeRleFloat64(data: Float64Array, isSigned: boolean): Float64Array {\n return isSigned ? encodeZigZagRleFloat64(data).data : encodeUnsignedRleFloat64(data).data;\n}\n\n/**\n * Encodes BigInt64 values with zigzag encoding and varint compression\n */\nexport function encodeInt64SignedNone(values: BigInt64Array): Uint8Array {\n const zigzagEncoded = new BigUint64Array(Array.from(values, (val) => encodeZigZagInt64Value(val)));\n return encodeVarintInt64(zigzagEncoded);\n}\n\n/**\n * Encodes BigInt64 values with delta encoding, zigzag, and varint\n */\nexport function encodeInt64SignedDelta(values: BigInt64Array): Uint8Array {\n const deltaEncoded = new BigInt64Array(values.length);\n deltaEncoded[0] = values[0];\n for (let i = 1; i < values.length; i++) {\n deltaEncoded[i] = values[i] - values[i - 1];\n }\n const zigzagEncoded = new BigUint64Array(deltaEncoded.length);\n for (let i = 0; i < deltaEncoded.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt64Value(deltaEncoded[i]);\n }\n return encodeVarintInt64(zigzagEncoded);\n}\n\n/**\n * Encodes BigInt64 values with RLE, zigzag, and varint\n * @param runs - Array of [runLength, value] pairs\n */\nexport function encodeInt64SignedRle(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n }\n\n const rleValues = [...runLengths, ...values];\n return encodeVarintInt64(new BigUint64Array(rleValues));\n}\n\n/**\n * Encodes BigInt64 values with delta+RLE, zigzag, and varint\n * @param runs - Array of [runLength, deltaValue] pairs representing RLE-encoded delta values\n */\nexport function encodeInt64SignedDeltaRle(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n }\n\n const rleValues = [...runLengths, ...values];\n return encodeVarintInt64(new BigUint64Array(rleValues));\n}\n\n/**\n * Encodes unsigned BigInt64 values with varint compression (no zigzag)\n */\nexport function encodeInt64UnsignedNone(values: BigInt64Array): Uint8Array {\n return encodeVarintInt64(new BigUint64Array(values));\n}\n"]}
|