@maplibre/mlt 0.0.1-alpha.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{encodings → decoding}/decodingUtils.js +18 -33
- package/dist/decoding/decodingUtils.js.map +1 -0
- package/dist/decoding/decodingUtils.spec.d.ts +1 -0
- package/dist/decoding/decodingUtils.spec.js +125 -0
- package/dist/decoding/decodingUtils.spec.js.map +1 -0
- package/dist/{encodings → decoding}/fsstDecoder.js +1 -4
- package/dist/decoding/fsstDecoder.js.map +1 -0
- package/dist/decoding/fsstDecoder.spec.d.ts +1 -0
- package/dist/decoding/fsstDecoder.spec.js +36 -0
- package/dist/decoding/fsstDecoder.spec.js.map +1 -0
- package/dist/{encodings → decoding}/geometryDecoder.js +65 -71
- package/dist/decoding/geometryDecoder.js.map +1 -0
- package/dist/decoding/geometryDecoder.spec.d.ts +1 -0
- package/dist/decoding/geometryDecoder.spec.js +5 -0
- package/dist/decoding/geometryDecoder.spec.js.map +1 -0
- package/dist/decoding/geometryScaling.js +2 -0
- package/dist/decoding/geometryScaling.js.map +1 -0
- package/dist/{encodings → decoding}/intWrapper.js +2 -4
- package/dist/decoding/intWrapper.js.map +1 -0
- package/dist/{encodings → decoding}/integerDecodingUtils.d.ts +13 -0
- package/dist/{encodings → decoding}/integerDecodingUtils.js +89 -88
- package/dist/decoding/integerDecodingUtils.js.map +1 -0
- package/dist/decoding/integerDecodingUtils.spec.d.ts +1 -0
- package/dist/decoding/integerDecodingUtils.spec.js +194 -0
- package/dist/decoding/integerDecodingUtils.spec.js.map +1 -0
- package/dist/{encodings → decoding}/integerStreamDecoder.d.ts +1 -1
- package/dist/decoding/integerStreamDecoder.js +263 -0
- package/dist/decoding/integerStreamDecoder.js.map +1 -0
- package/dist/decoding/integerStreamDecoder.spec.d.ts +1 -0
- package/dist/decoding/integerStreamDecoder.spec.js +125 -0
- package/dist/decoding/integerStreamDecoder.spec.js.map +1 -0
- package/dist/{encodings → decoding}/propertyDecoder.d.ts +1 -1
- package/dist/decoding/propertyDecoder.js +140 -0
- package/dist/decoding/propertyDecoder.js.map +1 -0
- package/dist/decoding/propertyDecoder.spec.d.ts +1 -0
- package/dist/decoding/propertyDecoder.spec.js +682 -0
- package/dist/decoding/propertyDecoder.spec.js.map +1 -0
- package/dist/{encodings → decoding}/stringDecoder.d.ts +1 -1
- package/dist/decoding/stringDecoder.js +142 -0
- package/dist/decoding/stringDecoder.js.map +1 -0
- package/dist/decoding/stringDecoder.spec.d.ts +1 -0
- package/dist/decoding/stringDecoder.spec.js +311 -0
- package/dist/decoding/stringDecoder.spec.js.map +1 -0
- package/dist/index.d.ts +2 -4
- package/dist/index.js +5 -20
- package/dist/index.js.map +1 -1
- package/dist/metadata/tile/dictionaryType.js +2 -5
- package/dist/metadata/tile/dictionaryType.js.map +1 -1
- package/dist/metadata/tile/lengthType.js +2 -5
- package/dist/metadata/tile/lengthType.js.map +1 -1
- package/dist/metadata/tile/logicalLevelTechnique.js +2 -5
- package/dist/metadata/tile/logicalLevelTechnique.js.map +1 -1
- package/dist/metadata/tile/logicalStreamType.js +4 -5
- package/dist/metadata/tile/logicalStreamType.js.map +1 -1
- package/dist/metadata/tile/mortonEncodedStreamMetadata.d.ts +1 -1
- package/dist/metadata/tile/mortonEncodedStreamMetadata.js +8 -10
- package/dist/metadata/tile/mortonEncodedStreamMetadata.js.map +1 -1
- package/dist/metadata/tile/offsetType.js +2 -5
- package/dist/metadata/tile/offsetType.js.map +1 -1
- package/dist/metadata/tile/physicalLevelTechnique.js +2 -5
- package/dist/metadata/tile/physicalLevelTechnique.js.map +1 -1
- package/dist/metadata/tile/physicalStreamType.js +2 -5
- package/dist/metadata/tile/physicalStreamType.js.map +1 -1
- package/dist/metadata/tile/rleEncodedStreamMetadata.d.ts +5 -1
- package/dist/metadata/tile/rleEncodedStreamMetadata.js +14 -10
- package/dist/metadata/tile/rleEncodedStreamMetadata.js.map +1 -1
- package/dist/metadata/tile/scalarType.js +2 -5
- package/dist/metadata/tile/scalarType.js.map +1 -1
- package/dist/metadata/tile/streamMetadata.d.ts +7 -1
- package/dist/metadata/tile/streamMetadata.js +35 -24
- package/dist/metadata/tile/streamMetadata.js.map +1 -1
- package/dist/metadata/tile/streamMetadataDecoder.d.ts +1 -1
- package/dist/metadata/tile/streamMetadataDecoder.js +13 -17
- package/dist/metadata/tile/streamMetadataDecoder.js.map +1 -1
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.d.ts +2 -2
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js +40 -32
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -1
- package/dist/metadata/tileset/tilesetMetadata.d.ts +80 -0
- package/dist/metadata/tileset/tilesetMetadata.js +29 -0
- package/dist/metadata/tileset/tilesetMetadata.js.map +1 -0
- package/dist/metadata/tileset/typeMap.d.ts +1 -1
- package/dist/metadata/tileset/typeMap.js +63 -59
- package/dist/metadata/tileset/typeMap.js.map +1 -1
- package/dist/mltDecoder.d.ts +1 -1
- package/dist/mltDecoder.js +58 -64
- package/dist/mltDecoder.js.map +1 -1
- package/dist/mltDecoder.spec.d.ts +1 -0
- package/dist/mltDecoder.spec.js +152 -0
- package/dist/mltDecoder.spec.js.map +1 -0
- package/dist/mltMetadata.js +4 -7
- package/dist/mltMetadata.js.map +1 -1
- package/dist/vector/constant/intConstVector.d.ts +0 -13
- package/dist/vector/constant/intConstVector.js +2 -82
- package/dist/vector/constant/intConstVector.js.map +1 -1
- package/dist/vector/constant/longConstVector.d.ts +0 -13
- package/dist/vector/constant/longConstVector.js +2 -80
- package/dist/vector/constant/longConstVector.js.map +1 -1
- package/dist/vector/dictionary/stringDictionaryVector.d.ts +0 -14
- package/dist/vector/dictionary/stringDictionaryVector.js +6 -178
- package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
- package/dist/vector/featureTable.d.ts +7 -2
- package/dist/vector/featureTable.js +45 -11
- package/dist/vector/featureTable.js.map +1 -1
- package/dist/vector/fixedSizeVector.js +2 -9
- package/dist/vector/fixedSizeVector.js.map +1 -1
- package/dist/vector/flat/bitVector.js +3 -4
- package/dist/vector/flat/bitVector.js.map +1 -1
- package/dist/vector/flat/booleanFlatVector.d.ts +0 -13
- package/dist/vector/flat/booleanFlatVector.js +3 -45
- package/dist/vector/flat/booleanFlatVector.js.map +1 -1
- package/dist/vector/flat/doubleFlatVector.d.ts +0 -13
- package/dist/vector/flat/doubleFlatVector.js +2 -104
- package/dist/vector/flat/doubleFlatVector.js.map +1 -1
- package/dist/vector/flat/floatFlatVector.d.ts +0 -13
- package/dist/vector/flat/floatFlatVector.js +2 -104
- package/dist/vector/flat/floatFlatVector.js.map +1 -1
- package/dist/vector/flat/floatFlatVector.spec.d.ts +1 -0
- package/dist/vector/flat/floatFlatVector.spec.js +14 -0
- package/dist/vector/flat/floatFlatVector.spec.js.map +1 -0
- package/dist/vector/flat/intFlatVector.d.ts +0 -13
- package/dist/vector/flat/intFlatVector.js +2 -117
- package/dist/vector/flat/intFlatVector.js.map +1 -1
- package/dist/vector/flat/intFlatVector.spec.d.ts +1 -0
- package/dist/vector/flat/intFlatVector.spec.js +15 -0
- package/dist/vector/flat/intFlatVector.spec.js.map +1 -0
- package/dist/vector/flat/longFlatVector.d.ts +0 -13
- package/dist/vector/flat/longFlatVector.js +2 -118
- package/dist/vector/flat/longFlatVector.js.map +1 -1
- package/dist/vector/flat/longFlatVector.spec.d.ts +1 -0
- package/dist/vector/flat/longFlatVector.spec.js +14 -0
- package/dist/vector/flat/longFlatVector.spec.js.map +1 -0
- package/dist/vector/flat/stringFlatVector.d.ts +0 -13
- package/dist/vector/flat/stringFlatVector.js +5 -166
- package/dist/vector/flat/stringFlatVector.js.map +1 -1
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +0 -13
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js +14 -51
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.d.ts +1 -0
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js +28 -0
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js.map +1 -0
- package/dist/vector/geometry/constGeometryVector.d.ts +0 -4
- package/dist/vector/geometry/constGeometryVector.js +9 -30
- package/dist/vector/geometry/constGeometryVector.js.map +1 -1
- package/dist/vector/geometry/constGpuVector.d.ts +0 -4
- package/dist/vector/geometry/constGpuVector.js +4 -25
- package/dist/vector/geometry/constGpuVector.js.map +1 -1
- package/dist/vector/geometry/flatGeometryVector.d.ts +0 -4
- package/dist/vector/geometry/flatGeometryVector.js +8 -35
- package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
- package/dist/vector/geometry/flatGpuVector.d.ts +0 -4
- package/dist/vector/geometry/flatGpuVector.js +3 -29
- package/dist/vector/geometry/flatGpuVector.js.map +1 -1
- package/dist/vector/geometry/geometryType.js +4 -7
- package/dist/vector/geometry/geometryType.js.map +1 -1
- package/dist/vector/geometry/geometryVector.d.ts +2 -5
- package/dist/vector/geometry/geometryVector.js +11 -13
- package/dist/vector/geometry/geometryVector.js.map +1 -1
- package/dist/vector/geometry/geometryVectorConverter.js +28 -34
- package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
- package/dist/vector/geometry/gpuVector.d.ts +5 -4
- package/dist/vector/geometry/gpuVector.js +89 -5
- package/dist/vector/geometry/gpuVector.js.map +1 -1
- package/dist/vector/geometry/spaceFillingCurve.js +6 -4
- package/dist/vector/geometry/spaceFillingCurve.js.map +1 -1
- package/dist/vector/geometry/topologyVector.js +4 -4
- package/dist/vector/geometry/topologyVector.js.map +1 -1
- package/dist/vector/geometry/vertexBufferType.js +2 -5
- package/dist/vector/geometry/vertexBufferType.js.map +1 -1
- package/dist/vector/geometry/zOrderCurve.js +2 -8
- package/dist/vector/geometry/zOrderCurve.js.map +1 -1
- package/dist/vector/geometry/zOrderCurve.spec.d.ts +1 -0
- package/dist/vector/geometry/zOrderCurve.spec.js +14 -0
- package/dist/vector/geometry/zOrderCurve.spec.js.map +1 -0
- package/dist/vector/intVector.js +1 -2
- package/dist/vector/sequence/intSequenceVector.d.ts +0 -13
- package/dist/vector/sequence/intSequenceVector.js +2 -64
- package/dist/vector/sequence/intSequenceVector.js.map +1 -1
- package/dist/vector/sequence/longSequenceVector.d.ts +0 -13
- package/dist/vector/sequence/longSequenceVector.js +2 -49
- package/dist/vector/sequence/longSequenceVector.js.map +1 -1
- package/dist/vector/sequence/longSequenceVektor.spec.d.ts +1 -0
- package/dist/vector/sequence/longSequenceVektor.spec.js +11 -0
- package/dist/vector/sequence/longSequenceVektor.spec.js.map +1 -0
- package/dist/vector/sequence/sequenceVector.js +3 -9
- package/dist/vector/sequence/sequenceVector.js.map +1 -1
- package/dist/vector/variableSizeVector.js +3 -9
- package/dist/vector/variableSizeVector.js.map +1 -1
- package/dist/vector/vector.d.ts +0 -17
- package/dist/vector/vector.js +5 -47
- package/dist/vector/vector.js.map +1 -1
- package/dist/vector/vectorType.js +2 -5
- package/dist/vector/vectorType.js.map +1 -1
- package/package.json +10 -31
- package/dist/encodings/decodingUtils.js.map +0 -1
- package/dist/encodings/doubleDecoder.d.ts +0 -4
- package/dist/encodings/doubleDecoder.js +0 -22
- package/dist/encodings/doubleDecoder.js.map +0 -1
- package/dist/encodings/fastpfor/bitpacking.d.ts +0 -51
- package/dist/encodings/fastpfor/bitpacking.js +0 -3930
- package/dist/encodings/fastpfor/bitpacking.js.map +0 -1
- package/dist/encodings/fastpfor/codec.d.ts +0 -19
- package/dist/encodings/fastpfor/codec.js +0 -3
- package/dist/encodings/fastpfor/codec.js.map +0 -1
- package/dist/encodings/fastpfor/fastpfor.d.ts +0 -38
- package/dist/encodings/fastpfor/fastpfor.js +0 -146
- package/dist/encodings/fastpfor/fastpfor.js.map +0 -1
- package/dist/encodings/fastpfor/index.d.ts +0 -20
- package/dist/encodings/fastpfor/index.js +0 -47
- package/dist/encodings/fastpfor/index.js.map +0 -1
- package/dist/encodings/fastpfor/util.d.ts +0 -2
- package/dist/encodings/fastpfor/util.js +0 -16
- package/dist/encodings/fastpfor/util.js.map +0 -1
- package/dist/encodings/fastpfor/varint.d.ts +0 -18
- package/dist/encodings/fastpfor/varint.js +0 -125
- package/dist/encodings/fastpfor/varint.js.map +0 -1
- package/dist/encodings/fsstDecoder.js.map +0 -1
- package/dist/encodings/geometryDecoder.js.map +0 -1
- package/dist/encodings/geometryScaling.js +0 -3
- package/dist/encodings/geometryScaling.js.map +0 -1
- package/dist/encodings/intWrapper.js.map +0 -1
- package/dist/encodings/integerDecodingUtils.js.map +0 -1
- package/dist/encodings/integerStreamDecoder.js +0 -249
- package/dist/encodings/integerStreamDecoder.js.map +0 -1
- package/dist/encodings/propertyDecoder.js +0 -146
- package/dist/encodings/propertyDecoder.js.map +0 -1
- package/dist/encodings/stringDecoder.js +0 -149
- package/dist/encodings/stringDecoder.js.map +0 -1
- package/dist/metadata/tileset/tilesetMetadata.g.d.ts +0 -418
- package/dist/metadata/tileset/tilesetMetadata.g.js +0 -476
- package/dist/metadata/tileset/tilesetMetadata.g.js.map +0 -1
- package/dist/vector/filter/constSelectionVector.d.ts +0 -0
- package/dist/vector/filter/constSelectionVector.js +0 -1
- package/dist/vector/filter/constSelectionVector.js.map +0 -1
- package/dist/vector/filter/flatSelectionVector.d.ts +0 -16
- package/dist/vector/filter/flatSelectionVector.js +0 -42
- package/dist/vector/filter/flatSelectionVector.js.map +0 -1
- package/dist/vector/filter/selectionVector.d.ts +0 -8
- package/dist/vector/filter/selectionVector.js +0 -3
- package/dist/vector/filter/selectionVector.js.map +0 -1
- package/dist/vector/filter/selectionVectorUtils.d.ts +0 -7
- package/dist/vector/filter/selectionVectorUtils.js +0 -44
- package/dist/vector/filter/selectionVectorUtils.js.map +0 -1
- package/dist/vector/filter/sequenceSelectionVector.d.ts +0 -0
- package/dist/vector/filter/sequenceSelectionVector.js +0 -1
- package/dist/vector/filter/sequenceSelectionVector.js.map +0 -1
- package/dist/vector/geometry/point.d.ts +0 -195
- package/dist/vector/geometry/point.js +0 -308
- package/dist/vector/geometry/point.js.map +0 -1
- /package/dist/{encodings → decoding}/decodingUtils.d.ts +0 -0
- /package/dist/{encodings → decoding}/fsstDecoder.d.ts +0 -0
- /package/dist/{encodings → decoding}/geometryDecoder.d.ts +0 -0
- /package/dist/{encodings → decoding}/geometryScaling.d.ts +0 -0
- /package/dist/{encodings → decoding}/intWrapper.d.ts +0 -0
|
@@ -1,39 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.skipColumn = skipColumn;
|
|
7
|
-
exports.decodeBooleanRle = decodeBooleanRle;
|
|
8
|
-
exports.decodeNullableBooleanRle = decodeNullableBooleanRle;
|
|
9
|
-
exports.decodeByteRle = decodeByteRle;
|
|
10
|
-
exports.decodeFloatsLE = decodeFloatsLE;
|
|
11
|
-
exports.decodeDoublesLE = decodeDoublesLE;
|
|
12
|
-
exports.decodeNullableFloatsLE = decodeNullableFloatsLE;
|
|
13
|
-
exports.decodeNullableDoublesLE = decodeNullableDoublesLE;
|
|
14
|
-
exports.decodeString = decodeString;
|
|
15
|
-
exports.getVectorTypeBooleanStream = getVectorTypeBooleanStream;
|
|
16
|
-
const vectorType_1 = require("../vector/vectorType");
|
|
17
|
-
const bitVector_1 = __importDefault(require("../vector/flat/bitVector"));
|
|
18
|
-
const streamMetadataDecoder_1 = require("../metadata/tile/streamMetadataDecoder");
|
|
19
|
-
function skipColumn(numStreams, tile, offset) {
|
|
1
|
+
import { VectorType } from "../vector/vectorType";
|
|
2
|
+
import BitVector from "../vector/flat/bitVector";
|
|
3
|
+
import { StreamMetadataDecoder } from "../metadata/tile/streamMetadataDecoder";
|
|
4
|
+
export function skipColumn(numStreams, tile, offset) {
|
|
20
5
|
//TODO: add size of column in Mlt for fast skipping
|
|
21
6
|
for (let i = 0; i < numStreams; i++) {
|
|
22
|
-
const streamMetadata =
|
|
7
|
+
const streamMetadata = StreamMetadataDecoder.decode(tile, offset);
|
|
23
8
|
offset.add(streamMetadata.byteLength);
|
|
24
9
|
}
|
|
25
10
|
}
|
|
26
|
-
function decodeBooleanRle(buffer, numBooleans, pos) {
|
|
11
|
+
export function decodeBooleanRle(buffer, numBooleans, pos) {
|
|
27
12
|
const numBytes = Math.ceil(numBooleans / 8.0);
|
|
28
13
|
return decodeByteRle(buffer, numBytes, pos);
|
|
29
14
|
}
|
|
30
|
-
function decodeNullableBooleanRle(buffer, numBooleans, pos, nullabilityBuffer) {
|
|
15
|
+
export function decodeNullableBooleanRle(buffer, numBooleans, pos, nullabilityBuffer) {
|
|
31
16
|
// TODO: refactor quick and dirty solution -> use solution in one pass
|
|
32
17
|
const numBytes = Math.ceil(numBooleans / 8);
|
|
33
18
|
const values = decodeByteRle(buffer, numBytes, pos);
|
|
34
|
-
const bitVector = new
|
|
19
|
+
const bitVector = new BitVector(values, numBooleans);
|
|
35
20
|
const size = nullabilityBuffer.size();
|
|
36
|
-
const nullableBitvector = new
|
|
21
|
+
const nullableBitvector = new BitVector(new Uint8Array(size), size);
|
|
37
22
|
let valueCounter = 0;
|
|
38
23
|
for (let i = 0; i < nullabilityBuffer.size(); i++) {
|
|
39
24
|
const value = nullabilityBuffer.get(i) ? bitVector.get(valueCounter++) : false;
|
|
@@ -41,7 +26,7 @@ function decodeNullableBooleanRle(buffer, numBooleans, pos, nullabilityBuffer) {
|
|
|
41
26
|
}
|
|
42
27
|
return nullableBitvector.getBuffer();
|
|
43
28
|
}
|
|
44
|
-
function decodeByteRle(buffer, numBytes, pos) {
|
|
29
|
+
export function decodeByteRle(buffer, numBytes, pos) {
|
|
45
30
|
const values = new Uint8Array(numBytes);
|
|
46
31
|
let valueOffset = 0;
|
|
47
32
|
while (valueOffset < numBytes) {
|
|
@@ -64,7 +49,7 @@ function decodeByteRle(buffer, numBytes, pos) {
|
|
|
64
49
|
}
|
|
65
50
|
return values;
|
|
66
51
|
}
|
|
67
|
-
function decodeFloatsLE(encodedValues, pos, numValues) {
|
|
52
|
+
export function decodeFloatsLE(encodedValues, pos, numValues) {
|
|
68
53
|
const currentPos = pos.get();
|
|
69
54
|
const newOffset = currentPos + numValues * Float32Array.BYTES_PER_ELEMENT;
|
|
70
55
|
const newBuf = new Uint8Array(encodedValues.subarray(currentPos, newOffset)).buffer;
|
|
@@ -72,7 +57,7 @@ function decodeFloatsLE(encodedValues, pos, numValues) {
|
|
|
72
57
|
pos.set(newOffset);
|
|
73
58
|
return fb;
|
|
74
59
|
}
|
|
75
|
-
function decodeDoublesLE(encodedValues, pos, numValues) {
|
|
60
|
+
export function decodeDoublesLE(encodedValues, pos, numValues) {
|
|
76
61
|
const currentPos = pos.get();
|
|
77
62
|
const newOffset = currentPos + numValues * Float64Array.BYTES_PER_ELEMENT;
|
|
78
63
|
const newBuf = new Uint8Array(encodedValues.subarray(currentPos, newOffset)).buffer;
|
|
@@ -80,7 +65,7 @@ function decodeDoublesLE(encodedValues, pos, numValues) {
|
|
|
80
65
|
pos.set(newOffset);
|
|
81
66
|
return fb;
|
|
82
67
|
}
|
|
83
|
-
function decodeNullableFloatsLE(encodedValues, pos, nullabilityBuffer, numValues) {
|
|
68
|
+
export function decodeNullableFloatsLE(encodedValues, pos, nullabilityBuffer, numValues) {
|
|
84
69
|
const currentPos = pos.get();
|
|
85
70
|
const newOffset = currentPos + numValues * Float32Array.BYTES_PER_ELEMENT;
|
|
86
71
|
const newBuf = new Uint8Array(encodedValues.subarray(currentPos, newOffset)).buffer;
|
|
@@ -94,7 +79,7 @@ function decodeNullableFloatsLE(encodedValues, pos, nullabilityBuffer, numValues
|
|
|
94
79
|
}
|
|
95
80
|
return nullableFloatsBuffer;
|
|
96
81
|
}
|
|
97
|
-
function decodeNullableDoublesLE(encodedValues, pos, nullabilityBuffer, numValues) {
|
|
82
|
+
export function decodeNullableDoublesLE(encodedValues, pos, nullabilityBuffer, numValues) {
|
|
98
83
|
const currentPos = pos.get();
|
|
99
84
|
const newOffset = currentPos + numValues * Float64Array.BYTES_PER_ELEMENT;
|
|
100
85
|
const newBuf = new Uint8Array(encodedValues.subarray(currentPos, newOffset)).buffer;
|
|
@@ -111,7 +96,7 @@ function decodeNullableDoublesLE(encodedValues, pos, nullabilityBuffer, numValue
|
|
|
111
96
|
const TEXT_DECODER_MIN_LENGTH = 12;
|
|
112
97
|
const utf8TextDecoder = new TextDecoder();
|
|
113
98
|
// Source: https://github.com/mapbox/pbf/issues/106
|
|
114
|
-
function decodeString(buf, pos, end) {
|
|
99
|
+
export function decodeString(buf, pos, end) {
|
|
115
100
|
if (end - pos >= TEXT_DECODER_MIN_LENGTH) {
|
|
116
101
|
// longer strings are fast with the built-in browser TextDecoder API
|
|
117
102
|
return utf8TextDecoder.decode(buf.subarray(pos, end));
|
|
@@ -178,14 +163,14 @@ function readUtf8(buf, pos, end) {
|
|
|
178
163
|
}
|
|
179
164
|
return str;
|
|
180
165
|
}
|
|
181
|
-
function getVectorTypeBooleanStream(numFeatures, byteLength, data, offset) {
|
|
166
|
+
export function getVectorTypeBooleanStream(numFeatures, byteLength, data, offset) {
|
|
182
167
|
const valuesPerRun = 0x83;
|
|
183
168
|
// TODO: use VectorType metadata field for to test which VectorType is used
|
|
184
169
|
return Math.ceil(numFeatures / valuesPerRun) * 2 == byteLength &&
|
|
185
170
|
/* Test the first value byte if all bits are set to true */
|
|
186
171
|
(data[offset.get() + 1] & 0xff) === (bitCount(numFeatures) << 2) - 1
|
|
187
|
-
?
|
|
188
|
-
:
|
|
172
|
+
? VectorType.CONST
|
|
173
|
+
: VectorType.FLAT;
|
|
189
174
|
}
|
|
190
175
|
function bitCount(number) {
|
|
191
176
|
//TODO: refactor to get rid of special case handling
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decodingUtils.js","sourceRoot":"","sources":["../../src/decoding/decodingUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE/E,MAAM,UAAU,UAAU,CAAC,UAAkB,EAAE,IAAgB,EAAE,MAAkB;IAC/E,mDAAmD;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAkB,EAAE,WAAmB,EAAE,GAAe;IACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC;IAC9C,OAAO,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACpC,MAAkB,EAClB,WAAmB,EACnB,GAAe,EACf,iBAA4B;IAE5B,sEAAsE;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACpE,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/E,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,iBAAiB,CAAC,SAAS,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAkB,EAAE,QAAgB,EAAE,GAAe;IAC/E,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;IAExC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,OAAO,WAAW,GAAG,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QAEvC,UAAU;QACV,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YACtC,MAAM,cAAc,GAAG,WAAW,GAAG,OAAO,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;YAChD,WAAW,GAAG,cAAc,CAAC;QACjC,CAAC;aAAM,CAAC;YACJ,cAAc;YACd,MAAM,WAAW,GAAG,GAAG,GAAG,MAAM,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;YACpD,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,aAAyB,EAAE,GAAe,EAAE,SAAiB;IACxF,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC,iBAAiB,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IACpF,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnB,OAAO,EAAE,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,aAAyB,EAAE,GAAe,EAAE,SAAiB;IACzF,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC,iBAAiB,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IACpF,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnB,OAAO,EAAE,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAClC,aAAyB,EACzB,GAAe,EACf,iBAA4B,EAC5B,SAAiB;IAEjB,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC,iBAAiB,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IACpF,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEnB,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAChD,MAAM,oBAAoB,GAAG,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC;IAC9D,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,oBAAoB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,oBAAoB,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACnC,aAAyB,EACzB,GAAe,EACf,iBAA4B,EAC5B,SAAiB;IAEjB,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC,iBAAiB,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IACpF,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEnB,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAChD,MAAM,oBAAoB,GAAG,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC;IAC9D,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,oBAAoB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,oBAAoB,CAAC;AAChC,CAAC;AAED,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,MAAM,eAAe,GAAG,IAAI,WAAW,EAAE,CAAC;AAE1C,mDAAmD;AACnD,MAAM,UAAU,YAAY,CAAC,GAAe,EAAE,GAAW,EAAE,GAAW;IAClE,IAAI,GAAG,GAAG,GAAG,IAAI,uBAAuB,EAAE,CAAC;QACvC,oEAAoE;QACpE,OAAO,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,oDAAoD;IACpD,OAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;IAC3B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,GAAG,GAAG,CAAC;IAEZ,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY;QAC1B,IAAI,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzE,IAAI,CAAC,GAAG,gBAAgB,GAAG,GAAG;YAAE,MAAM;QAEtC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAEf,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;gBACZ,CAAC,GAAG,EAAE,CAAC;YACX,CAAC;QACL,CAAC;aAAM,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;YAChC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;gBACvC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;oBACZ,CAAC,GAAG,IAAI,CAAC;gBACb,CAAC;YACL,CAAC;QACL,CAAC;aAAM,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;YAChC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChB,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/C,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;gBAC7D,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC;oBAC7C,CAAC,GAAG,IAAI,CAAC;gBACb,CAAC;YACL,CAAC;QACL,CAAC;aAAM,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;YAChC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChB,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChB,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;gBACrF,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;oBAC/B,CAAC,GAAG,IAAI,CAAC;gBACb,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACb,CAAC,GAAG,MAAM,CAAC;YACX,gBAAgB,GAAG,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC;YACpB,CAAC,IAAI,OAAO,CAAC;YACb,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;YAC1D,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC,IAAI,gBAAgB,CAAC;IAC1B,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAED,MAAM,UAAU,0BAA0B,CACtC,WAAmB,EACnB,UAAkB,EAClB,IAAgB,EAChB,MAAkB;IAElB,MAAM,YAAY,GAAG,IAAI,CAAC;IAC1B,2EAA2E;IAC3E,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,UAAU;QAC1D,2DAA2D;QAC3D,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;QACpE,CAAC,CAAC,UAAU,CAAC,KAAK;QAClB,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1B,CAAC;AAED,SAAS,QAAQ,CAAC,MAAM;IACpB,oDAAoD;IACpD,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { decodeFloatsLE, decodeDoublesLE, decodeBooleanRle, decodeString, decodeByteRle, decodeNullableFloatsLE, decodeNullableDoublesLE, } from "./decodingUtils";
|
|
3
|
+
import IntWrapper from "./intWrapper";
|
|
4
|
+
import BitVector from "../vector/flat/bitVector";
|
|
5
|
+
describe("decodingUtils", () => {
|
|
6
|
+
describe("decodeFloatsLE", () => {
|
|
7
|
+
it("should decode float values from little-endian bytes", () => {
|
|
8
|
+
const buffer = new ArrayBuffer(8);
|
|
9
|
+
const view = new Float32Array(buffer);
|
|
10
|
+
view[0] = 1.5;
|
|
11
|
+
view[1] = 2.5;
|
|
12
|
+
const data = new Uint8Array(buffer);
|
|
13
|
+
const offset = new IntWrapper(0);
|
|
14
|
+
const result = decodeFloatsLE(data, offset, 2);
|
|
15
|
+
expect(result[0]).toBeCloseTo(1.5);
|
|
16
|
+
expect(result[1]).toBeCloseTo(2.5);
|
|
17
|
+
expect(offset.get()).toBe(8);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
describe("decodeDoublesLE", () => {
|
|
21
|
+
it("should decode double values from little-endian bytes", () => {
|
|
22
|
+
const buffer = new ArrayBuffer(16);
|
|
23
|
+
const view = new Float64Array(buffer);
|
|
24
|
+
view[0] = 3.14159;
|
|
25
|
+
view[1] = 2.71828;
|
|
26
|
+
const data = new Uint8Array(buffer);
|
|
27
|
+
const offset = new IntWrapper(0);
|
|
28
|
+
const result = decodeDoublesLE(data, offset, 2);
|
|
29
|
+
expect(result[0]).toBeCloseTo(3.14159);
|
|
30
|
+
expect(result[1]).toBeCloseTo(2.71828);
|
|
31
|
+
expect(offset.get()).toBe(16);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe("decodeNullableFloatsLE", () => {
|
|
35
|
+
it("should decode nullable float values with nullability buffer", () => {
|
|
36
|
+
const buffer = new ArrayBuffer(8);
|
|
37
|
+
const view = new Float32Array(buffer);
|
|
38
|
+
view[0] = 1.5;
|
|
39
|
+
view[1] = 2.5;
|
|
40
|
+
const data = new Uint8Array(buffer);
|
|
41
|
+
const offset = new IntWrapper(0);
|
|
42
|
+
const bitVectorData = new Uint8Array([0b00000101]); // bits 0 and 2 are set
|
|
43
|
+
const nullabilityBuffer = new BitVector(bitVectorData, 3);
|
|
44
|
+
const result = decodeNullableFloatsLE(data, offset, nullabilityBuffer, 2);
|
|
45
|
+
expect(result.length).toBe(3);
|
|
46
|
+
expect(result[0]).toBeCloseTo(1.5); // bit 0 is set
|
|
47
|
+
expect(result[1]).toBe(0); // bit 1 is not set (null)
|
|
48
|
+
expect(result[2]).toBeCloseTo(2.5); // bit 2 is set
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe("decodeNullableDoublesLE", () => {
|
|
52
|
+
it("should decode nullable double values with nullability buffer", () => {
|
|
53
|
+
const buffer = new ArrayBuffer(16);
|
|
54
|
+
const view = new Float64Array(buffer);
|
|
55
|
+
view[0] = 3.14159;
|
|
56
|
+
view[1] = 2.71828;
|
|
57
|
+
const data = new Uint8Array(buffer);
|
|
58
|
+
const offset = new IntWrapper(0);
|
|
59
|
+
const bitVectorData = new Uint8Array([0b00000011]); // bits 0 and 1 are set
|
|
60
|
+
const nullabilityBuffer = new BitVector(bitVectorData, 2);
|
|
61
|
+
const result = decodeNullableDoublesLE(data, offset, nullabilityBuffer, 2);
|
|
62
|
+
expect(result.length).toBe(2);
|
|
63
|
+
expect(result[0]).toBeCloseTo(3.14159); // bit 0 is set
|
|
64
|
+
expect(result[1]).toBeCloseTo(2.71828); // bit 1 is set
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
describe("decodeBooleanRle", () => {
|
|
68
|
+
it("should decode boolean RLE", () => {
|
|
69
|
+
const buffer = new Uint8Array([254, 0xFF]);
|
|
70
|
+
const offset = new IntWrapper(0);
|
|
71
|
+
const result = decodeBooleanRle(buffer, 8, offset);
|
|
72
|
+
expect(result[0]).toBe(0xFF);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe("decodeByteRle", () => {
|
|
76
|
+
it("should decode byte RLE with runs", () => {
|
|
77
|
+
// header=2 means numRuns=2+3=5, followed by value byte
|
|
78
|
+
const data = new Uint8Array([2, 42]);
|
|
79
|
+
const offset = new IntWrapper(0);
|
|
80
|
+
const result = decodeByteRle(data, 5, offset);
|
|
81
|
+
expect(result.length).toBe(5);
|
|
82
|
+
expect(result[0]).toBe(42);
|
|
83
|
+
expect(result[1]).toBe(42);
|
|
84
|
+
expect(result[2]).toBe(42);
|
|
85
|
+
expect(result[3]).toBe(42);
|
|
86
|
+
expect(result[4]).toBe(42);
|
|
87
|
+
});
|
|
88
|
+
it("should decode byte RLE with literals", () => {
|
|
89
|
+
// header=253 means numLiterals=256-253=3, followed by 3 literal bytes
|
|
90
|
+
const data = new Uint8Array([253, 1, 2, 3]);
|
|
91
|
+
const offset = new IntWrapper(0);
|
|
92
|
+
const result = decodeByteRle(data, 3, offset);
|
|
93
|
+
expect(result.length).toBe(3);
|
|
94
|
+
expect(result[0]).toBe(1);
|
|
95
|
+
expect(result[1]).toBe(2);
|
|
96
|
+
expect(result[2]).toBe(3);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
describe("decodeString", () => {
|
|
100
|
+
it("should decode short string", () => {
|
|
101
|
+
const text = "Hello";
|
|
102
|
+
const buffer = new TextEncoder().encode(text);
|
|
103
|
+
const result = decodeString(buffer, 0, buffer.length);
|
|
104
|
+
expect(result).toBe(text);
|
|
105
|
+
});
|
|
106
|
+
it("should decode long string", () => {
|
|
107
|
+
const text = "This is a longer string for testing TextDecoder path";
|
|
108
|
+
const buffer = new TextEncoder().encode(text);
|
|
109
|
+
const result = decodeString(buffer, 0, buffer.length);
|
|
110
|
+
expect(result).toBe(text);
|
|
111
|
+
});
|
|
112
|
+
it("should handle string with offset", () => {
|
|
113
|
+
const text = "World";
|
|
114
|
+
const prefix = new TextEncoder().encode("Hello");
|
|
115
|
+
const textBytes = new TextEncoder().encode(text);
|
|
116
|
+
const combined = new Uint8Array(prefix.length + textBytes.length);
|
|
117
|
+
combined.set(prefix, 0);
|
|
118
|
+
combined.set(textBytes, prefix.length);
|
|
119
|
+
// decodeString takes (buffer, start, end) where end is the position after the last byte
|
|
120
|
+
const result = decodeString(combined, prefix.length, prefix.length + textBytes.length);
|
|
121
|
+
expect(result).toBe(text);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
//# sourceMappingURL=decodingUtils.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decodingUtils.spec.js","sourceRoot":"","sources":["../../src/decoding/decodingUtils.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACH,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,uBAAuB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,SAAS,MAAM,0BAA0B,CAAC;AAEjD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC3D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACd,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAEd,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAE/C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC5D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YAClB,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YAElB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;YACnE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACd,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAEd,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uBAAuB;YAC3E,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAE1D,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;YAE1E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe;QACvD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACpE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YAClB,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YAElB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uBAAuB;YAC3E,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAE1D,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;YAE3E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;YACvD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;QAC3D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACjC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAEnD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YACxC,uDAAuD;YACvD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAE9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC5C,sEAAsE;YACtE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAE9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YAClC,MAAM,IAAI,GAAG,OAAO,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAEtD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACjC,MAAM,IAAI,GAAG,sDAAsD,CAAC;YACpE,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAEtD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YACxC,MAAM,IAAI,GAAG,OAAO,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAClE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACxB,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAEvC,wFAAwF;YACxF,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAEvF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.decodeFsst = decodeFsst;
|
|
4
1
|
/**
|
|
5
2
|
* Decode FSST compressed data
|
|
6
3
|
*
|
|
@@ -10,7 +7,7 @@ exports.decodeFsst = decodeFsst;
|
|
|
10
7
|
* @returns Decoded data as Uint8Array
|
|
11
8
|
*/
|
|
12
9
|
//TODO: improve -> quick and dirty implementation
|
|
13
|
-
function decodeFsst(symbols, symbolLengths, compressedData) {
|
|
10
|
+
export function decodeFsst(symbols, symbolLengths, compressedData) {
|
|
14
11
|
//TODO: use typed array directly
|
|
15
12
|
const decodedData = [];
|
|
16
13
|
const symbolOffsets = new Array(symbolLengths.length).fill(0);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fsstDecoder.js","sourceRoot":"","sources":["../../src/decoding/fsstDecoder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,iDAAiD;AACjD,MAAM,UAAU,UAAU,CAAC,OAAmB,EAAE,aAA0B,EAAE,cAA0B;IAClG,gCAAgC;IAChC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,aAAa,GAAa,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAExE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC5B,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACJ,MAAM,YAAY,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,YAAY,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { decodeFsst } from "./fsstDecoder";
|
|
3
|
+
describe("Test fsstDecoder", () => {
|
|
4
|
+
it('should decode FSST compressed data correctly', () => {
|
|
5
|
+
// Setup: Create symbol table
|
|
6
|
+
// Symbol 0: "Hello" (5 bytes)
|
|
7
|
+
// Symbol 1: "World" (5 bytes)
|
|
8
|
+
// Symbol 2: "!" (1 byte)
|
|
9
|
+
const symbols = new Uint8Array([
|
|
10
|
+
72, 101, 108, 108, 111,
|
|
11
|
+
87, 111, 114, 108, 100,
|
|
12
|
+
33
|
|
13
|
+
]);
|
|
14
|
+
const symbolLengths = new Uint32Array([5, 5, 1]);
|
|
15
|
+
// Compressed data:
|
|
16
|
+
// 0 = Symbol 0 ("Hello")
|
|
17
|
+
// 1 = Symbol 1 ("World")
|
|
18
|
+
// 255, 32 = Literal byte 32 (space character)
|
|
19
|
+
// 2 = Symbol 2 ("!")
|
|
20
|
+
const compressedData = new Uint8Array([0, 1, 255, 32, 2]);
|
|
21
|
+
// Act
|
|
22
|
+
const result = decodeFsst(symbols, symbolLengths, compressedData);
|
|
23
|
+
// Assert
|
|
24
|
+
const expected = new Uint8Array([
|
|
25
|
+
72, 101, 108, 108, 111, // "Hello"
|
|
26
|
+
87, 111, 114, 108, 100, // "World"
|
|
27
|
+
32, // " " (space)
|
|
28
|
+
33 // "!"
|
|
29
|
+
]);
|
|
30
|
+
expect(result).toEqual(expected);
|
|
31
|
+
// Verify decoded string
|
|
32
|
+
const decodedString = new TextDecoder().decode(result);
|
|
33
|
+
expect(decodedString).toBe('HelloWorld !');
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=fsstDecoder.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fsstDecoder.spec.js","sourceRoot":"","sources":["../../src/decoding/fsstDecoder.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,6BAA6B;QAC7B,8BAA8B;QAC9B,8BAA8B;QAC9B,yBAAyB;QACzB,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC;YAC3B,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;YACtB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;YACtB,EAAE;SACL,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEjD,mBAAmB;QACnB,yBAAyB;QACzB,yBAAyB;QACzB,8CAA8C;QAC9C,qBAAqB;QACrB,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAE1D,MAAM;QACN,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAElE,SAAS;QACT,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC;YAC5B,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU;YAClC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU;YAClC,EAAE,EAAuB,cAAc;YACvC,EAAE,CAAuB,MAAM;SAClC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEjC,wBAAwB;QACxB,MAAM,aAAa,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AAGP,CAAC,CAAC,CAAA"}
|
|
@@ -1,25 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const topologyVector_1 = __importDefault(require("../vector/geometry/topologyVector"));
|
|
14
|
-
const constGeometryVector_1 = require("../vector/geometry/constGeometryVector");
|
|
15
|
-
const flatGeometryVector_1 = require("../vector/geometry/flatGeometryVector");
|
|
16
|
-
const offsetType_1 = require("../metadata/tile/offsetType");
|
|
17
|
-
const constGpuVector_1 = require("../vector/geometry/constGpuVector");
|
|
18
|
-
const flatGpuVector_1 = require("../vector/geometry/flatGpuVector");
|
|
1
|
+
import { StreamMetadataDecoder } from "../metadata/tile/streamMetadataDecoder";
|
|
2
|
+
import IntegerStreamDecoder from "./integerStreamDecoder";
|
|
3
|
+
import { VectorType } from "../vector/vectorType";
|
|
4
|
+
import { PhysicalStreamType } from "../metadata/tile/physicalStreamType";
|
|
5
|
+
import { LengthType } from "../metadata/tile/lengthType";
|
|
6
|
+
import { DictionaryType } from "../metadata/tile/dictionaryType";
|
|
7
|
+
import TopologyVector from "../vector/geometry/topologyVector";
|
|
8
|
+
import { ConstGeometryVector } from "../vector/geometry/constGeometryVector";
|
|
9
|
+
import { FlatGeometryVector } from "../vector/geometry/flatGeometryVector";
|
|
10
|
+
import { OffsetType } from "../metadata/tile/offsetType";
|
|
11
|
+
import { ConstGpuVector } from "../vector/geometry/constGpuVector";
|
|
12
|
+
import { FlatGpuVector } from "../vector/geometry/flatGpuVector";
|
|
19
13
|
// TODO: get rid of numFeatures parameter
|
|
20
|
-
function decodeGeometryColumn(tile, numStreams, offset, numFeatures, scalingData) {
|
|
21
|
-
const geometryTypeMetadata =
|
|
22
|
-
const geometryTypesVectorType =
|
|
14
|
+
export function decodeGeometryColumn(tile, numStreams, offset, numFeatures, scalingData) {
|
|
15
|
+
const geometryTypeMetadata = StreamMetadataDecoder.decode(tile, offset);
|
|
16
|
+
const geometryTypesVectorType = IntegerStreamDecoder.getVectorType(geometryTypeMetadata, numFeatures, tile, offset);
|
|
23
17
|
let geometryOffsets = null;
|
|
24
18
|
let partOffsets = null;
|
|
25
19
|
let ringOffsets = null;
|
|
@@ -30,41 +24,41 @@ function decodeGeometryColumn(tile, numStreams, offset, numFeatures, scalingData
|
|
|
30
24
|
// in one FeatureTable?
|
|
31
25
|
let triangleOffsets = null;
|
|
32
26
|
let indexBuffer = null;
|
|
33
|
-
if (geometryTypesVectorType ===
|
|
27
|
+
if (geometryTypesVectorType === VectorType.CONST) {
|
|
34
28
|
/* All geometries in the colum have the same geometry type */
|
|
35
|
-
const geometryType =
|
|
29
|
+
const geometryType = IntegerStreamDecoder.decodeConstIntStream(tile, offset, geometryTypeMetadata, false);
|
|
36
30
|
for (let i = 0; i < numStreams - 1; i++) {
|
|
37
|
-
const geometryStreamMetadata =
|
|
31
|
+
const geometryStreamMetadata = StreamMetadataDecoder.decode(tile, offset);
|
|
38
32
|
switch (geometryStreamMetadata.physicalStreamType) {
|
|
39
|
-
case
|
|
33
|
+
case PhysicalStreamType.LENGTH:
|
|
40
34
|
switch (geometryStreamMetadata.logicalStreamType.lengthType) {
|
|
41
|
-
case
|
|
42
|
-
geometryOffsets =
|
|
35
|
+
case LengthType.GEOMETRIES:
|
|
36
|
+
geometryOffsets = IntegerStreamDecoder.decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);
|
|
43
37
|
break;
|
|
44
|
-
case
|
|
45
|
-
partOffsets =
|
|
38
|
+
case LengthType.PARTS:
|
|
39
|
+
partOffsets = IntegerStreamDecoder.decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);
|
|
46
40
|
break;
|
|
47
|
-
case
|
|
48
|
-
ringOffsets =
|
|
41
|
+
case LengthType.RINGS:
|
|
42
|
+
ringOffsets = IntegerStreamDecoder.decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);
|
|
49
43
|
break;
|
|
50
|
-
case
|
|
51
|
-
triangleOffsets =
|
|
44
|
+
case LengthType.TRIANGLES:
|
|
45
|
+
triangleOffsets = IntegerStreamDecoder.decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);
|
|
52
46
|
}
|
|
53
47
|
break;
|
|
54
|
-
case
|
|
48
|
+
case PhysicalStreamType.OFFSET: {
|
|
55
49
|
switch (geometryStreamMetadata.logicalStreamType.offsetType) {
|
|
56
|
-
case
|
|
57
|
-
vertexOffsets =
|
|
50
|
+
case OffsetType.VERTEX:
|
|
51
|
+
vertexOffsets = IntegerStreamDecoder.decodeIntStream(tile, offset, geometryStreamMetadata, false);
|
|
58
52
|
break;
|
|
59
|
-
case
|
|
60
|
-
indexBuffer =
|
|
53
|
+
case OffsetType.INDEX:
|
|
54
|
+
indexBuffer = IntegerStreamDecoder.decodeIntStream(tile, offset, geometryStreamMetadata, false);
|
|
61
55
|
break;
|
|
62
56
|
}
|
|
63
57
|
break;
|
|
64
58
|
}
|
|
65
|
-
case
|
|
66
|
-
if (
|
|
67
|
-
vertexBuffer =
|
|
59
|
+
case PhysicalStreamType.DATA: {
|
|
60
|
+
if (DictionaryType.VERTEX === geometryStreamMetadata.logicalStreamType.dictionaryType) {
|
|
61
|
+
vertexBuffer = IntegerStreamDecoder.decodeIntStream(tile, offset, geometryStreamMetadata, true, scalingData);
|
|
68
62
|
}
|
|
69
63
|
else {
|
|
70
64
|
const mortonMetadata = geometryStreamMetadata;
|
|
@@ -72,7 +66,7 @@ function decodeGeometryColumn(tile, numStreams, offset, numFeatures, scalingData
|
|
|
72
66
|
numBits: mortonMetadata.numBits(),
|
|
73
67
|
coordinateShift: mortonMetadata.coordinateShift(),
|
|
74
68
|
};
|
|
75
|
-
vertexBuffer =
|
|
69
|
+
vertexBuffer = IntegerStreamDecoder.decodeIntStream(tile, offset, geometryStreamMetadata, false, scalingData);
|
|
76
70
|
}
|
|
77
71
|
break;
|
|
78
72
|
}
|
|
@@ -81,50 +75,50 @@ function decodeGeometryColumn(tile, numStreams, offset, numFeatures, scalingData
|
|
|
81
75
|
if (indexBuffer !== null) {
|
|
82
76
|
if (geometryOffsets != null || partOffsets != null) {
|
|
83
77
|
/* Case when the indices of a Polygon outline are encoded in the tile */
|
|
84
|
-
const topologyVector = new
|
|
85
|
-
return
|
|
78
|
+
const topologyVector = new TopologyVector(geometryOffsets, partOffsets, ringOffsets);
|
|
79
|
+
return ConstGpuVector.create(numFeatures, geometryType, triangleOffsets, indexBuffer, vertexBuffer, topologyVector);
|
|
86
80
|
}
|
|
87
81
|
/* Case when the no Polygon outlines are encoded in the tile */
|
|
88
|
-
return
|
|
82
|
+
return ConstGpuVector.create(numFeatures, geometryType, triangleOffsets, indexBuffer, vertexBuffer);
|
|
89
83
|
}
|
|
90
84
|
return mortonSettings === null
|
|
91
85
|
? /* Currently only 2D coordinates (Vec2) are implemented in the encoder */
|
|
92
|
-
|
|
93
|
-
:
|
|
86
|
+
ConstGeometryVector.create(numFeatures, geometryType, new TopologyVector(geometryOffsets, partOffsets, ringOffsets), vertexOffsets, vertexBuffer)
|
|
87
|
+
: ConstGeometryVector.createMortonEncoded(numFeatures, geometryType, new TopologyVector(geometryOffsets, partOffsets, ringOffsets), vertexOffsets, vertexBuffer, mortonSettings);
|
|
94
88
|
}
|
|
95
89
|
/* Different geometry types are mixed in the geometry column */
|
|
96
|
-
const geometryTypeVector =
|
|
90
|
+
const geometryTypeVector = IntegerStreamDecoder.decodeIntStream(tile, offset, geometryTypeMetadata, false);
|
|
97
91
|
for (let i = 0; i < numStreams - 1; i++) {
|
|
98
|
-
const geometryStreamMetadata =
|
|
92
|
+
const geometryStreamMetadata = StreamMetadataDecoder.decode(tile, offset);
|
|
99
93
|
switch (geometryStreamMetadata.physicalStreamType) {
|
|
100
|
-
case
|
|
94
|
+
case PhysicalStreamType.LENGTH:
|
|
101
95
|
switch (geometryStreamMetadata.logicalStreamType.lengthType) {
|
|
102
|
-
case
|
|
103
|
-
geometryOffsets =
|
|
96
|
+
case LengthType.GEOMETRIES:
|
|
97
|
+
geometryOffsets = IntegerStreamDecoder.decodeIntStream(tile, offset, geometryStreamMetadata, false);
|
|
104
98
|
break;
|
|
105
|
-
case
|
|
106
|
-
partOffsets =
|
|
99
|
+
case LengthType.PARTS:
|
|
100
|
+
partOffsets = IntegerStreamDecoder.decodeIntStream(tile, offset, geometryStreamMetadata, false);
|
|
107
101
|
break;
|
|
108
|
-
case
|
|
109
|
-
ringOffsets =
|
|
102
|
+
case LengthType.RINGS:
|
|
103
|
+
ringOffsets = IntegerStreamDecoder.decodeIntStream(tile, offset, geometryStreamMetadata, false);
|
|
110
104
|
break;
|
|
111
|
-
case
|
|
112
|
-
triangleOffsets =
|
|
105
|
+
case LengthType.TRIANGLES:
|
|
106
|
+
triangleOffsets = IntegerStreamDecoder.decodeLengthStreamToOffsetBuffer(tile, offset, geometryStreamMetadata);
|
|
113
107
|
}
|
|
114
108
|
break;
|
|
115
|
-
case
|
|
109
|
+
case PhysicalStreamType.OFFSET:
|
|
116
110
|
switch (geometryStreamMetadata.logicalStreamType.offsetType) {
|
|
117
|
-
case
|
|
118
|
-
vertexOffsets =
|
|
111
|
+
case OffsetType.VERTEX:
|
|
112
|
+
vertexOffsets = IntegerStreamDecoder.decodeIntStream(tile, offset, geometryStreamMetadata, false);
|
|
119
113
|
break;
|
|
120
|
-
case
|
|
121
|
-
indexBuffer =
|
|
114
|
+
case OffsetType.INDEX:
|
|
115
|
+
indexBuffer = IntegerStreamDecoder.decodeIntStream(tile, offset, geometryStreamMetadata, false);
|
|
122
116
|
break;
|
|
123
117
|
}
|
|
124
118
|
break;
|
|
125
|
-
case
|
|
126
|
-
if (
|
|
127
|
-
vertexBuffer =
|
|
119
|
+
case PhysicalStreamType.DATA:
|
|
120
|
+
if (DictionaryType.VERTEX === geometryStreamMetadata.logicalStreamType.dictionaryType) {
|
|
121
|
+
vertexBuffer = IntegerStreamDecoder.decodeIntStream(tile, offset, geometryStreamMetadata, true, scalingData);
|
|
128
122
|
}
|
|
129
123
|
else {
|
|
130
124
|
const mortonMetadata = geometryStreamMetadata;
|
|
@@ -132,7 +126,7 @@ function decodeGeometryColumn(tile, numStreams, offset, numFeatures, scalingData
|
|
|
132
126
|
numBits: mortonMetadata.numBits(),
|
|
133
127
|
coordinateShift: mortonMetadata.coordinateShift(),
|
|
134
128
|
};
|
|
135
|
-
vertexBuffer =
|
|
129
|
+
vertexBuffer = IntegerStreamDecoder.decodeIntStream(tile, offset, geometryStreamMetadata, false, scalingData);
|
|
136
130
|
}
|
|
137
131
|
break;
|
|
138
132
|
}
|
|
@@ -140,7 +134,7 @@ function decodeGeometryColumn(tile, numStreams, offset, numFeatures, scalingData
|
|
|
140
134
|
if (indexBuffer !== null && partOffsets === null) {
|
|
141
135
|
/* Case when the indices of a Polygon outline are not encoded in the data so no
|
|
142
136
|
* topology data are present in the tile */
|
|
143
|
-
return
|
|
137
|
+
return FlatGpuVector.create(geometryTypeVector, triangleOffsets, indexBuffer, vertexBuffer);
|
|
144
138
|
}
|
|
145
139
|
// TODO: refactor the following instructions -> decode in one pass for performance reasons
|
|
146
140
|
/* Calculate the offsets from the length buffer for util access */
|
|
@@ -163,11 +157,11 @@ function decodeGeometryColumn(tile, numStreams, offset, numFeatures, scalingData
|
|
|
163
157
|
}
|
|
164
158
|
if (indexBuffer !== null) {
|
|
165
159
|
/* Case when the indices of a Polygon outline are encoded in the tile */
|
|
166
|
-
return
|
|
160
|
+
return FlatGpuVector.create(geometryTypeVector, triangleOffsets, indexBuffer, vertexBuffer, new TopologyVector(geometryOffsets, partOffsets, ringOffsets));
|
|
167
161
|
}
|
|
168
162
|
return mortonSettings === null /* Currently only 2D coordinates (Vec2) are implemented in the encoder */
|
|
169
|
-
?
|
|
170
|
-
:
|
|
163
|
+
? FlatGeometryVector.create(geometryTypeVector, new TopologyVector(geometryOffsets, partOffsets, ringOffsets), vertexOffsets, vertexBuffer)
|
|
164
|
+
: FlatGeometryVector.createMortonEncoded(geometryTypeVector, new TopologyVector(geometryOffsets, partOffsets, ringOffsets), vertexOffsets, vertexBuffer, mortonSettings);
|
|
171
165
|
}
|
|
172
166
|
/*
|
|
173
167
|
* Handle the parsing of the different topology length buffers separate not generic to reduce the
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometryDecoder.js","sourceRoot":"","sources":["../../src/decoding/geometryDecoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometryDecoder.spec.js","sourceRoot":"","sources":["../../src/decoding/geometryDecoder.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEtC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;AAC7G,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometryScaling.js","sourceRoot":"","sources":["../../src/decoding/geometryScaling.ts"],"names":[],"mappings":""}
|