@maplibre/mlt 0.0.1-alpha.7 → 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 +83 -101
- 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 +127 -130
- 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 +5 -4
- package/dist/index.js +5 -18
- 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.d.ts +3 -3
- package/dist/metadata/tile/logicalStreamType.js +4 -5
- package/dist/metadata/tile/logicalStreamType.js.map +1 -1
- package/dist/metadata/tile/mortonEncodedStreamMetadata.d.ts +6 -6
- 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 +10 -6
- 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 +11 -5
- package/dist/metadata/tile/streamMetadata.js +35 -24
- package/dist/metadata/tile/streamMetadata.js.map +1 -1
- package/dist/metadata/tile/streamMetadataDecoder.d.ts +2 -2
- 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 -81
- 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 -79
- 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 -167
- package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
- package/dist/vector/featureTable.d.ts +4 -0
- package/dist/vector/featureTable.js +48 -12
- 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 -46
- 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 -101
- 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 -101
- 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 -115
- 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 -116
- 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 -155
- 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 -36
- 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 +8 -7
- package/dist/vector/geometry/geometryVector.js +13 -14
- package/dist/vector/geometry/geometryVector.js.map +1 -1
- package/dist/vector/geometry/geometryVectorConverter.d.ts +2 -2
- package/dist/vector/geometry/geometryVectorConverter.js +38 -41
- package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
- package/dist/vector/geometry/gpuVector.d.ts +8 -7
- package/dist/vector/geometry/gpuVector.js +97 -13
- package/dist/vector/geometry/gpuVector.js.map +1 -1
- package/dist/vector/geometry/spaceFillingCurve.js +10 -5
- 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.d.ts +1 -1
- package/dist/vector/geometry/zOrderCurve.js +3 -9
- 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 +6 -49
- 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 -4444
- 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 -123
- 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 -254
- 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 -147
- 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 -283
- 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":"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"}
|
|
@@ -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":"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"}
|
|
@@ -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"}
|