@maplibre/mlt 1.1.2 → 1.1.5
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/decodingTestUtils.d.ts +75 -0
- package/dist/decoding/decodingTestUtils.js +285 -0
- package/dist/decoding/decodingTestUtils.js.map +1 -0
- package/dist/decoding/decodingUtils.d.ts +5 -8
- package/dist/decoding/decodingUtils.js +22 -49
- package/dist/decoding/decodingUtils.js.map +1 -1
- package/dist/decoding/decodingUtils.spec.js +85 -69
- package/dist/decoding/decodingUtils.spec.js.map +1 -1
- package/dist/decoding/fsstDecoder.spec.js +52 -35
- package/dist/decoding/fsstDecoder.spec.js.map +1 -1
- package/dist/decoding/geometryDecoder.js +41 -30
- package/dist/decoding/geometryDecoder.js.map +1 -1
- package/dist/decoding/integerDecodingUtils.d.ts +18 -31
- package/dist/decoding/integerDecodingUtils.js +134 -299
- package/dist/decoding/integerDecodingUtils.js.map +1 -1
- package/dist/decoding/integerDecodingUtils.spec.js +254 -148
- package/dist/decoding/integerDecodingUtils.spec.js.map +1 -1
- package/dist/decoding/integerStreamDecoder.d.ts +4 -6
- package/dist/decoding/integerStreamDecoder.js +104 -122
- package/dist/decoding/integerStreamDecoder.js.map +1 -1
- package/dist/decoding/integerStreamDecoder.spec.js +370 -131
- package/dist/decoding/integerStreamDecoder.spec.js.map +1 -1
- package/dist/decoding/propertyDecoder.js +14 -24
- package/dist/decoding/propertyDecoder.js.map +1 -1
- package/dist/decoding/propertyDecoder.spec.js +409 -606
- package/dist/decoding/propertyDecoder.spec.js.map +1 -1
- package/dist/decoding/stringDecoder.js +10 -10
- package/dist/decoding/stringDecoder.js.map +1 -1
- package/dist/decoding/stringDecoder.spec.js +352 -320
- package/dist/decoding/stringDecoder.spec.js.map +1 -1
- package/dist/decoding/unpackNullableUtils.d.ts +25 -0
- package/dist/decoding/unpackNullableUtils.js +51 -0
- package/dist/decoding/unpackNullableUtils.js.map +1 -0
- package/dist/decoding/unpackNullableUtils.spec.js +71 -0
- package/dist/decoding/unpackNullableUtils.spec.js.map +1 -0
- package/dist/encoding/embeddedTilesetMetadataEncoder.d.ts +16 -0
- package/dist/encoding/embeddedTilesetMetadataEncoder.js +40 -0
- package/dist/encoding/embeddedTilesetMetadataEncoder.js.map +1 -0
- package/dist/encoding/encodingUtils.d.ts +7 -0
- package/dist/encoding/encodingUtils.js +107 -0
- package/dist/encoding/encodingUtils.js.map +1 -0
- package/dist/encoding/fsstEncoder.d.ts +21 -0
- package/dist/encoding/fsstEncoder.js +78 -0
- package/dist/encoding/fsstEncoder.js.map +1 -0
- package/dist/encoding/integerEncodingUtils.d.ts +68 -0
- package/dist/encoding/integerEncodingUtils.js +655 -0
- package/dist/encoding/integerEncodingUtils.js.map +1 -0
- package/dist/encoding/integerStreamEncoder.d.ts +27 -0
- package/dist/encoding/integerStreamEncoder.js +139 -0
- package/dist/encoding/integerStreamEncoder.js.map +1 -0
- package/dist/encoding/packNullableUtils.d.ts +4 -0
- package/dist/encoding/packNullableUtils.js +55 -0
- package/dist/encoding/packNullableUtils.js.map +1 -0
- package/dist/encoding/propertyEncoder.d.ts +78 -0
- package/dist/encoding/propertyEncoder.js +335 -0
- package/dist/encoding/propertyEncoder.js.map +1 -0
- package/dist/encoding/stringEncoder.d.ts +12 -0
- package/dist/encoding/stringEncoder.js +182 -0
- package/dist/encoding/stringEncoder.js.map +1 -0
- package/dist/encoding/zOrderCurveEncoder.d.ts +1 -0
- package/dist/encoding/zOrderCurveEncoder.js +10 -0
- package/dist/encoding/zOrderCurveEncoder.js.map +1 -0
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.d.ts +5 -1
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js +29 -41
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -1
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.d.ts +1 -0
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js +142 -0
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js.map +1 -0
- package/dist/mltDecoder.js +2 -3
- package/dist/mltDecoder.js.map +1 -1
- package/dist/vector/dictionary/stringDictionaryVector.d.ts +1 -1
- package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
- package/dist/vector/flat/stringFlatVector.d.ts +1 -1
- package/dist/vector/flat/stringFlatVector.js.map +1 -1
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +1 -1
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js +2 -2
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js.map +1 -1
- package/dist/vector/geometry/constGpuVector.d.ts +2 -2
- package/dist/vector/geometry/constGpuVector.js.map +1 -1
- package/dist/vector/geometry/flatGpuVector.d.ts +2 -2
- package/dist/vector/geometry/flatGpuVector.js.map +1 -1
- package/dist/vector/geometry/gpuVector.d.ts +2 -2
- package/dist/vector/geometry/gpuVector.js.map +1 -1
- package/dist/vector/geometry/topologyVector.d.ts +4 -4
- package/dist/vector/geometry/topologyVector.js +0 -1
- package/dist/vector/geometry/topologyVector.js.map +1 -1
- package/dist/vector/geometry/zOrderCurve.spec.js +17 -11
- package/dist/vector/geometry/zOrderCurve.spec.js.map +1 -1
- package/dist/vector/variableSizeVector.d.ts +2 -2
- package/dist/vector/variableSizeVector.js +0 -1
- package/dist/vector/variableSizeVector.js.map +1 -1
- package/package.json +6 -8
- package/dist/decoding/geometryDecoder.spec.js +0 -5
- package/dist/decoding/geometryDecoder.spec.js.map +0 -1
- /package/dist/decoding/{geometryDecoder.spec.d.ts → unpackNullableUtils.spec.d.ts} +0 -0
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { PhysicalLevelTechnique } from "../metadata/tile/physicalLevelTechnique";
|
|
2
|
-
import { decodeComponentwiseDeltaVec2, decodeComponentwiseDeltaVec2Scaled,
|
|
2
|
+
import { decodeComponentwiseDeltaVec2, decodeComponentwiseDeltaVec2Scaled, decodeDeltaRleInt32, decodeDeltaRleInt64, decodeFastPfor, decodeUnsignedConstRleInt32, decodeUnsignedConstRleInt64, decodeUnsignedRleInt32, decodeUnsignedRleInt64, decodeUnsignedRleFloat64, decodeVarintInt32, decodeVarintInt64, decodeVarintFloat64, decodeZigZagInt32, decodeZigZagInt64, decodeZigZagFloat64, decodeZigZagConstRleInt32, decodeZigZagConstRleInt64, decodeZigZagDeltaInt32, decodeZigZagDeltaInt64, decodeZigZagDeltaFloat64, decodeZigZagSequenceRleInt32, decodeZigZagSequenceRleInt64, decodeZigZagInt32Value, decodeZigZagInt64Value, fastInverseDelta, inverseDelta, decodeRleDeltaInt32, decodeZigZagDeltaOfDeltaInt32, decodeZigZagRleDeltaInt32, decodeZigZagRleInt32, decodeZigZagRleInt64, decodeZigZagRleFloat64, } from "./integerDecodingUtils";
|
|
3
3
|
import { LogicalLevelTechnique } from "../metadata/tile/logicalLevelTechnique";
|
|
4
4
|
import BitVector from "../vector/flat/bitVector";
|
|
5
5
|
import { VectorType } from "../vector/vectorType";
|
|
6
|
-
|
|
6
|
+
import { unpackNullable } from "./unpackNullableUtils";
|
|
7
|
+
export function decodeIntStream(data, offset, streamMetadata, isSigned, scalingData, nullabilityBuffer) {
|
|
7
8
|
const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);
|
|
8
|
-
return
|
|
9
|
+
return decodeInt32(values, streamMetadata, isSigned, scalingData, nullabilityBuffer);
|
|
9
10
|
}
|
|
10
11
|
export function decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata) {
|
|
11
12
|
const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);
|
|
@@ -33,95 +34,112 @@ export function decodeConstIntStream(data, offset, streamMetadata, isSigned) {
|
|
|
33
34
|
const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);
|
|
34
35
|
if (values.length === 1) {
|
|
35
36
|
const value = values[0];
|
|
36
|
-
return isSigned ?
|
|
37
|
+
return isSigned ? decodeZigZagInt32Value(value) : value;
|
|
37
38
|
}
|
|
38
|
-
return isSigned ?
|
|
39
|
+
return isSigned ? decodeZigZagConstRleInt32(values) : decodeUnsignedConstRleInt32(values);
|
|
39
40
|
}
|
|
40
41
|
export function decodeSequenceIntStream(data, offset, streamMetadata) {
|
|
41
42
|
const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);
|
|
42
|
-
return
|
|
43
|
+
return decodeZigZagSequenceRleInt32(values);
|
|
43
44
|
}
|
|
44
45
|
export function decodeSequenceLongStream(data, offset, streamMetadata) {
|
|
45
46
|
const values = decodeVarintInt64(data, offset, streamMetadata.numValues);
|
|
46
47
|
return decodeZigZagSequenceRleInt64(values);
|
|
47
48
|
}
|
|
48
|
-
export function decodeLongStream(data, offset, streamMetadata, isSigned) {
|
|
49
|
+
export function decodeLongStream(data, offset, streamMetadata, isSigned, nullabilityBuffer) {
|
|
49
50
|
const values = decodeVarintInt64(data, offset, streamMetadata.numValues);
|
|
50
|
-
return
|
|
51
|
+
return decodeInt64(values, streamMetadata, isSigned, nullabilityBuffer);
|
|
51
52
|
}
|
|
52
53
|
export function decodeLongFloat64Stream(data, offset, streamMetadata, isSigned) {
|
|
53
|
-
const values = decodeVarintFloat64(data, streamMetadata.numValues
|
|
54
|
-
return
|
|
54
|
+
const values = decodeVarintFloat64(data, offset, streamMetadata.numValues);
|
|
55
|
+
return decodeFloat64(values, streamMetadata, isSigned);
|
|
55
56
|
}
|
|
56
57
|
export function decodeConstLongStream(data, offset, streamMetadata, isSigned) {
|
|
57
58
|
const values = decodeVarintInt64(data, offset, streamMetadata.numValues);
|
|
58
59
|
if (values.length === 1) {
|
|
59
60
|
const value = values[0];
|
|
60
|
-
return isSigned ?
|
|
61
|
+
return isSigned ? decodeZigZagInt64Value(value) : value;
|
|
61
62
|
}
|
|
62
63
|
return isSigned ? decodeZigZagConstRleInt64(values) : decodeUnsignedConstRleInt64(values);
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
65
|
+
/**
|
|
66
|
+
* This method decodes integer streams.
|
|
67
|
+
* Currently the encoder uses only fixed combinations of encodings.
|
|
68
|
+
* For performance reasons it is also uses a fixed combination of the encodings on the decoding side.
|
|
69
|
+
* The following encodings and combinations are used:
|
|
70
|
+
* - Morton Delta -> always sorted so not ZigZag encoding needed
|
|
71
|
+
* - Delta -> currently always in combination with ZigZag encoding
|
|
72
|
+
* - Rle -> in combination with ZigZag encoding if data type is signed
|
|
73
|
+
* - Delta Rle
|
|
74
|
+
* - Componentwise Delta -> always ZigZag encoding is used
|
|
75
|
+
*/
|
|
76
|
+
function decodeInt32(values, streamMetadata, isSigned, scalingData, nullabilityBuffer) {
|
|
75
77
|
switch (streamMetadata.logicalLevelTechnique1) {
|
|
76
78
|
case LogicalLevelTechnique.DELTA:
|
|
77
79
|
if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
|
|
78
80
|
const rleMetadata = streamMetadata;
|
|
79
|
-
|
|
81
|
+
if (!nullabilityBuffer) {
|
|
82
|
+
return decodeDeltaRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
83
|
+
}
|
|
84
|
+
values = decodeUnsignedRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
80
85
|
}
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
decodeZigZagDeltaInt32(values);
|
|
87
|
+
break;
|
|
83
88
|
case LogicalLevelTechnique.RLE:
|
|
84
|
-
|
|
89
|
+
values = decodeRleInt32(values, streamMetadata, isSigned);
|
|
90
|
+
break;
|
|
85
91
|
case LogicalLevelTechnique.MORTON:
|
|
86
92
|
fastInverseDelta(values);
|
|
87
|
-
|
|
93
|
+
break;
|
|
88
94
|
case LogicalLevelTechnique.COMPONENTWISE_DELTA:
|
|
89
|
-
if (scalingData) {
|
|
95
|
+
if (scalingData && !nullabilityBuffer) {
|
|
90
96
|
decodeComponentwiseDeltaVec2Scaled(values, scalingData.scale, scalingData.min, scalingData.max);
|
|
91
97
|
return values;
|
|
92
98
|
}
|
|
93
99
|
decodeComponentwiseDeltaVec2(values);
|
|
94
|
-
|
|
100
|
+
break;
|
|
95
101
|
case LogicalLevelTechnique.NONE:
|
|
96
102
|
if (isSigned) {
|
|
97
|
-
|
|
103
|
+
decodeZigZagInt32(values);
|
|
98
104
|
}
|
|
99
|
-
|
|
105
|
+
break;
|
|
100
106
|
default:
|
|
101
107
|
throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
|
|
102
108
|
}
|
|
109
|
+
if (nullabilityBuffer) {
|
|
110
|
+
return unpackNullable(values, nullabilityBuffer, 0);
|
|
111
|
+
}
|
|
112
|
+
return values;
|
|
103
113
|
}
|
|
104
|
-
function
|
|
114
|
+
function decodeInt64(values, streamMetadata, isSigned, nullabilityBuffer) {
|
|
105
115
|
switch (streamMetadata.logicalLevelTechnique1) {
|
|
106
116
|
case LogicalLevelTechnique.DELTA:
|
|
107
117
|
if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
|
|
108
118
|
const rleMetadata = streamMetadata;
|
|
109
|
-
|
|
119
|
+
if (!nullabilityBuffer) {
|
|
120
|
+
return decodeDeltaRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
121
|
+
}
|
|
122
|
+
values = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
110
123
|
}
|
|
111
124
|
decodeZigZagDeltaInt64(values);
|
|
112
|
-
|
|
125
|
+
break;
|
|
113
126
|
case LogicalLevelTechnique.RLE:
|
|
114
|
-
|
|
127
|
+
values = decodeRleInt64(values, streamMetadata, isSigned);
|
|
128
|
+
break;
|
|
115
129
|
case LogicalLevelTechnique.NONE:
|
|
116
130
|
if (isSigned) {
|
|
117
131
|
decodeZigZagInt64(values);
|
|
118
132
|
}
|
|
119
|
-
|
|
133
|
+
break;
|
|
120
134
|
default:
|
|
121
135
|
throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
|
|
122
136
|
}
|
|
137
|
+
if (nullabilityBuffer) {
|
|
138
|
+
return unpackNullable(values, nullabilityBuffer, 0n);
|
|
139
|
+
}
|
|
140
|
+
return values;
|
|
123
141
|
}
|
|
124
|
-
export function
|
|
142
|
+
export function decodeFloat64(values, streamMetadata, isSigned) {
|
|
125
143
|
switch (streamMetadata.logicalLevelTechnique1) {
|
|
126
144
|
case LogicalLevelTechnique.DELTA:
|
|
127
145
|
if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
|
|
@@ -144,21 +162,19 @@ export function decodeFloat64Buffer(values, streamMetadata, isSigned) {
|
|
|
144
162
|
function decodeLengthToOffsetBuffer(values, streamMetadata) {
|
|
145
163
|
if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&
|
|
146
164
|
streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE) {
|
|
147
|
-
|
|
148
|
-
return decodedValues;
|
|
165
|
+
return decodeZigZagDeltaOfDeltaInt32(values);
|
|
149
166
|
}
|
|
150
167
|
if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.RLE &&
|
|
151
168
|
streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE) {
|
|
152
169
|
const rleMetadata = streamMetadata;
|
|
153
|
-
|
|
154
|
-
return decodedValues;
|
|
170
|
+
return decodeRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
155
171
|
}
|
|
156
172
|
if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.NONE &&
|
|
157
173
|
streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE) {
|
|
158
174
|
//TODO: use fastInverseDelta again and check what are the performance problems in zoom 14
|
|
159
175
|
//fastInverseDelta(values);
|
|
160
176
|
inverseDelta(values);
|
|
161
|
-
const offsets = new
|
|
177
|
+
const offsets = new Uint32Array(streamMetadata.numValues + 1);
|
|
162
178
|
offsets[0] = 0;
|
|
163
179
|
offsets.set(values, 1);
|
|
164
180
|
return offsets;
|
|
@@ -166,98 +182,64 @@ function decodeLengthToOffsetBuffer(values, streamMetadata) {
|
|
|
166
182
|
if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&
|
|
167
183
|
streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
|
|
168
184
|
const rleMetadata = streamMetadata;
|
|
169
|
-
const decodedValues =
|
|
185
|
+
const decodedValues = decodeZigZagRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
170
186
|
fastInverseDelta(decodedValues);
|
|
171
187
|
return decodedValues;
|
|
172
188
|
}
|
|
173
189
|
throw new Error("Only delta encoding is supported for transforming length to offset streams yet.");
|
|
174
190
|
}
|
|
175
|
-
export function decodeNullableIntStream(data, offset, streamMetadata, isSigned, bitVector) {
|
|
176
|
-
const values = streamMetadata.physicalLevelTechnique === PhysicalLevelTechnique.FAST_PFOR
|
|
177
|
-
? decodeFastPfor(data, streamMetadata.numValues, streamMetadata.byteLength, offset)
|
|
178
|
-
: decodeVarintInt32(data, offset, streamMetadata.numValues);
|
|
179
|
-
return decodeNullableIntBuffer(values, streamMetadata, isSigned, bitVector);
|
|
180
|
-
}
|
|
181
|
-
export function decodeNullableLongStream(data, offset, streamMetadata, isSigned, bitVector) {
|
|
182
|
-
const values = decodeVarintInt64(data, offset, streamMetadata.numValues);
|
|
183
|
-
return decodeNullableLongBuffer(values, streamMetadata, isSigned, bitVector);
|
|
184
|
-
}
|
|
185
|
-
function decodeNullableIntBuffer(values, streamMetadata, isSigned, bitVector) {
|
|
186
|
-
switch (streamMetadata.logicalLevelTechnique1) {
|
|
187
|
-
case LogicalLevelTechnique.DELTA:
|
|
188
|
-
if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
|
|
189
|
-
const rleMetadata = streamMetadata;
|
|
190
|
-
values = decodeUnsignedRle(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
191
|
-
}
|
|
192
|
-
return decodeNullableZigZagDelta(bitVector, values);
|
|
193
|
-
case LogicalLevelTechnique.RLE:
|
|
194
|
-
return decodeNullableRle(values, streamMetadata, isSigned, bitVector);
|
|
195
|
-
case LogicalLevelTechnique.MORTON:
|
|
196
|
-
fastInverseDelta(values);
|
|
197
|
-
return values;
|
|
198
|
-
case LogicalLevelTechnique.COMPONENTWISE_DELTA:
|
|
199
|
-
decodeComponentwiseDeltaVec2(values);
|
|
200
|
-
return values;
|
|
201
|
-
case LogicalLevelTechnique.NONE:
|
|
202
|
-
values = isSigned ? padZigZagWithZeros(bitVector, values) : padWithZeros(bitVector, values);
|
|
203
|
-
return values;
|
|
204
|
-
default:
|
|
205
|
-
throw new Error("The specified Logical level technique is not supported");
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
function decodeNullableLongBuffer(values, streamMetadata, isSigned, bitVector) {
|
|
209
|
-
switch (streamMetadata.logicalLevelTechnique1) {
|
|
210
|
-
case LogicalLevelTechnique.DELTA:
|
|
211
|
-
if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
|
|
212
|
-
const rleMetadata = streamMetadata;
|
|
213
|
-
values = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);
|
|
214
|
-
}
|
|
215
|
-
return decodeNullableZigZagDeltaInt64(bitVector, values);
|
|
216
|
-
case LogicalLevelTechnique.RLE:
|
|
217
|
-
return decodeNullableRleInt64(values, streamMetadata, isSigned, bitVector);
|
|
218
|
-
case LogicalLevelTechnique.NONE:
|
|
219
|
-
values = isSigned ? padZigZagWithZerosInt64(bitVector, values) : padWithZerosInt64(bitVector, values);
|
|
220
|
-
return values;
|
|
221
|
-
default:
|
|
222
|
-
throw new Error("The specified Logical level technique is not supported");
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
191
|
export function getVectorType(streamMetadata, sizeOrNullabilityBuffer, data, offset) {
|
|
226
192
|
const logicalLevelTechnique1 = streamMetadata.logicalLevelTechnique1;
|
|
227
193
|
if (logicalLevelTechnique1 === LogicalLevelTechnique.RLE) {
|
|
228
194
|
return streamMetadata.runs === 1 ? VectorType.CONST : VectorType.FLAT;
|
|
229
195
|
}
|
|
196
|
+
if (logicalLevelTechnique1 !== LogicalLevelTechnique.DELTA ||
|
|
197
|
+
streamMetadata.logicalLevelTechnique2 !== LogicalLevelTechnique.RLE) {
|
|
198
|
+
return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;
|
|
199
|
+
}
|
|
230
200
|
const numFeatures = sizeOrNullabilityBuffer instanceof BitVector ? sizeOrNullabilityBuffer.size() : sizeOrNullabilityBuffer;
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
return VectorType.SEQUENCE;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
201
|
+
const rleMetadata = streamMetadata;
|
|
202
|
+
if (rleMetadata.numRleValues !== numFeatures) {
|
|
203
|
+
return VectorType.FLAT;
|
|
204
|
+
}
|
|
205
|
+
// Single run is always a sequence
|
|
206
|
+
if (rleMetadata.runs === 1) {
|
|
207
|
+
return VectorType.SEQUENCE;
|
|
208
|
+
}
|
|
209
|
+
if (rleMetadata.runs !== 2) {
|
|
210
|
+
return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;
|
|
211
|
+
}
|
|
212
|
+
// Two runs can be a sequence if both deltas are equal to 1
|
|
213
|
+
const savedOffset = offset.get();
|
|
214
|
+
let values;
|
|
215
|
+
if (streamMetadata.physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {
|
|
216
|
+
values = decodeVarintInt32(data, offset, 4);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
const byteOffset = offset.get();
|
|
220
|
+
values = new Int32Array(data.buffer, data.byteOffset + byteOffset, 4);
|
|
221
|
+
}
|
|
222
|
+
offset.set(savedOffset);
|
|
223
|
+
// Check if both deltas are encoded 1
|
|
224
|
+
const zigZagOne = 2;
|
|
225
|
+
if (values[2] === zigZagOne && values[3] === zigZagOne) {
|
|
226
|
+
return VectorType.SEQUENCE;
|
|
260
227
|
}
|
|
261
228
|
return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;
|
|
262
229
|
}
|
|
230
|
+
function decodeRleInt32(data, streamMetadata, isSigned) {
|
|
231
|
+
return isSigned
|
|
232
|
+
? decodeZigZagRleInt32(data, streamMetadata.runs, streamMetadata.numRleValues)
|
|
233
|
+
: decodeUnsignedRleInt32(data, streamMetadata.runs, streamMetadata.numRleValues);
|
|
234
|
+
}
|
|
235
|
+
function decodeRleInt64(data, streamMetadata, isSigned) {
|
|
236
|
+
return isSigned
|
|
237
|
+
? decodeZigZagRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues)
|
|
238
|
+
: decodeUnsignedRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues);
|
|
239
|
+
}
|
|
240
|
+
function decodeRleFloat64(data, streamMetadata, isSigned) {
|
|
241
|
+
return isSigned
|
|
242
|
+
? decodeZigZagRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues)
|
|
243
|
+
: decodeUnsignedRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues);
|
|
244
|
+
}
|
|
263
245
|
//# sourceMappingURL=integerStreamDecoder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integerStreamDecoder.js","sourceRoot":"","sources":["../../src/decoding/integerStreamDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport type IntWrapper from \"./intWrapper\";\nimport {\n decodeComponentwiseDeltaVec2,\n decodeComponentwiseDeltaVec2Scaled,\n decodeDeltaRle,\n decodeDeltaRleInt64,\n decodeFastPfor,\n decodeNullableRle,\n decodeNullableRleInt64,\n decodeNullableZigZagDelta,\n decodeNullableZigZagDeltaInt64,\n decodeRle,\n decodeRleFloat64,\n decodeRleInt64,\n decodeUnsignedConstRle,\n decodeUnsignedConstRleInt64,\n decodeUnsignedRle,\n decodeUnsignedRleFloat64,\n decodeUnsignedRleInt64,\n decodeVarintInt32,\n decodeVarintInt64,\n decodeVarintFloat64,\n decodeZigZag,\n decodeZigZagConstRle,\n decodeZigZagConstRleInt64,\n decodeZigZagDelta,\n decodeZigZagDeltaFloat64,\n decodeZigZagDeltaInt64,\n decodeZigZagFloat64,\n decodeZigZagInt64,\n decodeZigZagSequenceRle,\n decodeZigZagSequenceRleInt64,\n decodeZigZagValue,\n decodeZigZagValueInt64,\n fastInverseDelta,\n inverseDelta,\n padWithZeros,\n padWithZerosInt64,\n padZigZagWithZeros,\n padZigZagWithZerosInt64,\n rleDeltaDecoding,\n zigZagDeltaOfDeltaDecoding,\n zigZagRleDeltaDecoding,\n} from \"./integerDecodingUtils\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport { type StreamMetadata, type RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport { VectorType } from \"../vector/vectorType\";\nimport type GeometryScaling from \"./geometryScaling\";\n\nexport function decodeIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n scalingData?: GeometryScaling,\n): Int32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeIntBuffer(values, streamMetadata, isSigned, scalingData);\n}\n\nexport function decodeLengthStreamToOffsetBuffer(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Int32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeLengthToOffsetBuffer(values, streamMetadata);\n}\n\nfunction decodePhysicalLevelTechnique(data: Uint8Array, offset: IntWrapper, streamMetadata: StreamMetadata) {\n const physicalLevelTechnique = streamMetadata.physicalLevelTechnique;\n if (physicalLevelTechnique === PhysicalLevelTechnique.FAST_PFOR) {\n return decodeFastPfor(data, streamMetadata.numValues, streamMetadata.byteLength, offset);\n }\n if (physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n return decodeVarintInt32(data, offset, streamMetadata.numValues);\n }\n\n if (physicalLevelTechnique === PhysicalLevelTechnique.NONE) {\n const dataOffset = offset.get();\n const byteLength = streamMetadata.byteLength;\n offset.add(byteLength);\n //TODO: use Byte Rle for geometry type encoding\n const slice = data.subarray(dataOffset, offset.get());\n return new Int32Array(slice);\n }\n\n throw new Error(\"Specified physicalLevelTechnique is not supported (yet).\");\n}\n\nexport function decodeConstIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): number {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n\n if (values.length === 1) {\n const value = values[0];\n return isSigned ? decodeZigZagValue(value) : value;\n }\n\n return isSigned ? decodeZigZagConstRle(values) : decodeUnsignedConstRle(values);\n}\n\nexport function decodeSequenceIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: number, delta: number] {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeZigZagSequenceRle(values);\n}\n\nexport function decodeSequenceLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: bigint, delta: bigint] {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeZigZagSequenceRleInt64(values);\n}\n\nexport function decodeLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): BigInt64Array {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeLongBuffer(values, streamMetadata, isSigned);\n}\n\nexport function decodeLongFloat64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): Float64Array {\n const values = decodeVarintFloat64(data, streamMetadata.numValues, offset);\n return decodeFloat64Buffer(values, streamMetadata, isSigned);\n}\n\nexport function decodeConstLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): bigint {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n\n if (values.length === 1) {\n const value = values[0];\n return isSigned ? decodeZigZagValueInt64(value) : value;\n }\n\n return isSigned ? decodeZigZagConstRleInt64(values) : decodeUnsignedConstRleInt64(values);\n}\n\nfunction decodeIntBuffer(\n values: Int32Array,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n scalingData?: GeometryScaling,\n): Int32Array {\n /*\n * Currently the encoder uses only fixed combinations of encodings.\n * For performance reasons it is also used a fixed combination of the encodings on the decoding side.\n * The following encodings and combinations are used:\n * - Morton Delta -> always sorted so not ZigZag encoding needed\n * - Delta -> currently always in combination with ZigZag encoding\n * - Rle -> in combination with ZigZag encoding if data type is signed\n * - Delta Rle\n * - Componentwise Delta -> always ZigZag encoding is used\n * */\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n return decodeDeltaRle(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDelta(values);\n return values;\n case LogicalLevelTechnique.RLE:\n return decodeRle(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n case LogicalLevelTechnique.MORTON:\n fastInverseDelta(values);\n return values;\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData) {\n decodeComponentwiseDeltaVec2Scaled(values, scalingData.scale, scalingData.min, scalingData.max);\n return values;\n }\n\n decodeComponentwiseDeltaVec2(values);\n return values;\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZag(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 decodeLongBuffer(values: BigInt64Array, streamMetadata: StreamMetadata, isSigned: boolean): BigInt64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n return decodeDeltaRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaInt64(values);\n return values;\n case LogicalLevelTechnique.RLE:\n return decodeRleInt64(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagInt64(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\nexport function decodeFloat64Buffer(\n values: Float64Array,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): Float64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n values = decodeUnsignedRleFloat64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaFloat64(values);\n return values;\n case LogicalLevelTechnique.RLE:\n return decodeRleFloat64(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagFloat64(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 decodeLengthToOffsetBuffer(values: Int32Array, streamMetadata: StreamMetadata): Int32Array {\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n const decodedValues = zigZagDeltaOfDeltaDecoding(values);\n return decodedValues;\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.RLE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const decodedValues = rleDeltaDecoding(values, rleMetadata.runs, rleMetadata.numRleValues);\n return decodedValues;\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.NONE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n //TODO: use fastInverseDelta again and check what are the performance problems in zoom 14\n //fastInverseDelta(values);\n inverseDelta(values);\n const offsets = new Int32Array(streamMetadata.numValues + 1);\n offsets[0] = 0;\n offsets.set(values, 1);\n return offsets;\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const decodedValues = zigZagRleDeltaDecoding(values, rleMetadata.runs, rleMetadata.numRleValues);\n fastInverseDelta(decodedValues);\n return decodedValues;\n }\n\n throw new Error(\"Only delta encoding is supported for transforming length to offset streams yet.\");\n}\n\nexport function decodeNullableIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n bitVector: BitVector,\n): Int32Array {\n const values =\n streamMetadata.physicalLevelTechnique === PhysicalLevelTechnique.FAST_PFOR\n ? decodeFastPfor(data, streamMetadata.numValues, streamMetadata.byteLength, offset)\n : decodeVarintInt32(data, offset, streamMetadata.numValues);\n\n return decodeNullableIntBuffer(values, streamMetadata, isSigned, bitVector);\n}\n\nexport function decodeNullableLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n bitVector: BitVector,\n): BigInt64Array {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeNullableLongBuffer(values, streamMetadata, isSigned, bitVector);\n}\n\nfunction decodeNullableIntBuffer(\n values: Int32Array,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n bitVector: BitVector,\n): Int32Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n values = decodeUnsignedRle(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n return decodeNullableZigZagDelta(bitVector, values);\n case LogicalLevelTechnique.RLE:\n return decodeNullableRle(values, streamMetadata, isSigned, bitVector);\n case LogicalLevelTechnique.MORTON:\n fastInverseDelta(values);\n return values;\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n decodeComponentwiseDeltaVec2(values);\n return values;\n case LogicalLevelTechnique.NONE:\n values = isSigned ? padZigZagWithZeros(bitVector, values) : padWithZeros(bitVector, values);\n return values;\n default:\n throw new Error(\"The specified Logical level technique is not supported\");\n }\n}\n\nfunction decodeNullableLongBuffer(\n values: BigInt64Array,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n bitVector: BitVector,\n): BigInt64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n values = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n return decodeNullableZigZagDeltaInt64(bitVector, values);\n case LogicalLevelTechnique.RLE:\n return decodeNullableRleInt64(values, streamMetadata, isSigned, bitVector);\n case LogicalLevelTechnique.NONE:\n values = isSigned ? padZigZagWithZerosInt64(bitVector, values) : padWithZerosInt64(bitVector, values);\n return values;\n default:\n throw new Error(\"The specified Logical level technique is not supported\");\n }\n}\n\nexport function getVectorType(\n streamMetadata: StreamMetadata,\n sizeOrNullabilityBuffer: number | BitVector,\n data: Uint8Array,\n offset: IntWrapper,\n): VectorType {\n const logicalLevelTechnique1 = streamMetadata.logicalLevelTechnique1;\n if (logicalLevelTechnique1 === LogicalLevelTechnique.RLE) {\n return (streamMetadata as RleEncodedStreamMetadata).runs === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n\n const numFeatures =\n sizeOrNullabilityBuffer instanceof BitVector ? sizeOrNullabilityBuffer.size() : sizeOrNullabilityBuffer;\n\n if (\n logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const runs = rleMetadata.runs;\n const zigZagOne = 2;\n\n if (rleMetadata.numRleValues !== numFeatures) {\n return VectorType.FLAT;\n }\n // Single run is always a sequence\n if (runs === 1) {\n return VectorType.SEQUENCE;\n }\n // Two runs can be a sequence if both deltas are equal to 1\n if (runs === 2) {\n const savedOffset = offset.get();\n\n let values: Int32Array;\n if (streamMetadata.physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n values = decodeVarintInt32(data, offset, 4);\n } else {\n const byteOffset = offset.get();\n values = new Int32Array(data.buffer, data.byteOffset + byteOffset, 4);\n }\n offset.set(savedOffset);\n // Check if both deltas are encoded 1\n if (values[2] === zigZagOne && values[3] === zigZagOne) {\n return VectorType.SEQUENCE;\n }\n }\n }\n\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"integerStreamDecoder.js","sourceRoot":"","sources":["../../src/decoding/integerStreamDecoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF,OAAO,EACH,4BAA4B,EAC5B,kCAAkC,EAClC,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,2BAA2B,EAC3B,2BAA2B,EAC3B,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,6BAA6B,EAC7B,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,GACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE/E,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,UAAU,eAAe,CAC3B,IAAgB,EAChB,MAAkB,EAClB,cAA8B,EAC9B,QAAiB,EACjB,WAA6B,EAC7B,iBAA6B;IAE7B,MAAM,MAAM,GAAG,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1E,OAAO,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC5C,IAAgB,EAChB,MAAkB,EAClB,cAA8B;IAE9B,MAAM,MAAM,GAAG,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1E,OAAO,0BAA0B,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,4BAA4B,CACjC,IAAgB,EAChB,MAAkB,EAClB,cAA8B;IAE9B,MAAM,sBAAsB,GAAG,cAAc,CAAC,sBAAsB,CAAC;IACrE,IAAI,sBAAsB,KAAK,sBAAsB,CAAC,SAAS,EAAE,CAAC;QAC9D,OAAO,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,sBAAsB,KAAK,sBAAsB,CAAC,MAAM,EAAE,CAAC;QAC3D,OAAO,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,sBAAsB,KAAK,sBAAsB,CAAC,IAAI,EAAE,CAAC;QACzD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,+CAA+C;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAChC,IAAgB,EAChB,MAAkB,EAClB,cAA8B,EAC9B,QAAiB;IAEjB,MAAM,MAAM,GAAG,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAE1E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5D,CAAC;IAED,OAAO,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,uBAAuB,CACnC,IAAgB,EAChB,MAAkB,EAClB,cAA8B;IAE9B,MAAM,MAAM,GAAG,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1E,OAAO,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACpC,IAAgB,EAChB,MAAkB,EAClB,cAA8B;IAE9B,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACzE,OAAO,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC5B,IAAgB,EAChB,MAAkB,EAClB,cAA8B,EAC9B,QAAiB,EACjB,iBAA6B;IAE7B,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACzE,OAAO,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,uBAAuB,CACnC,IAAgB,EAChB,MAAkB,EAClB,cAA8B,EAC9B,QAAiB;IAEjB,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3E,OAAO,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACjC,IAAgB,EAChB,MAAkB,EAClB,cAA8B,EAC9B,QAAiB;IAEjB,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAEzE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5D,CAAC;IAED,OAAO,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC9F,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,WAAW,CAChB,MAAkB,EAClB,cAA8B,EAC9B,QAAiB,EACjB,WAA6B,EAC7B,iBAA6B;IAE7B,QAAQ,cAAc,CAAC,sBAAsB,EAAE,CAAC;QAC5C,KAAK,qBAAqB,CAAC,KAAK;YAC5B,IAAI,cAAc,CAAC,sBAAsB,KAAK,qBAAqB,CAAC,GAAG,EAAE,CAAC;gBACtE,MAAM,WAAW,GAAG,cAA0C,CAAC;gBAC/D,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACrB,OAAO,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBACnF,CAAC;gBACD,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;YACxF,CAAC;YACD,sBAAsB,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM;QACV,KAAK,qBAAqB,CAAC,GAAG;YAC1B,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,cAA0C,EAAE,QAAQ,CAAC,CAAC;YACtF,MAAM;QACV,KAAK,qBAAqB,CAAC,MAAM;YAC7B,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzB,MAAM;QACV,KAAK,qBAAqB,CAAC,mBAAmB;YAC1C,IAAI,WAAW,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACpC,kCAAkC,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;gBAChG,OAAO,MAAM,CAAC;YAClB,CAAC;YACD,4BAA4B,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM;QACV,KAAK,qBAAqB,CAAC,IAAI;YAC3B,IAAI,QAAQ,EAAE,CAAC;gBACX,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM;QACV;YACI,MAAM,IAAI,KAAK,CACX,2DAA2D,cAAc,CAAC,sBAAsB,EAAE,CACrG,CAAC;IACV,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACpB,OAAO,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,WAAW,CAChB,MAAqB,EACrB,cAA8B,EAC9B,QAAiB,EACjB,iBAA6B;IAE7B,QAAQ,cAAc,CAAC,sBAAsB,EAAE,CAAC;QAC5C,KAAK,qBAAqB,CAAC,KAAK;YAC5B,IAAI,cAAc,CAAC,sBAAsB,KAAK,qBAAqB,CAAC,GAAG,EAAE,CAAC;gBACtE,MAAM,WAAW,GAAG,cAA0C,CAAC;gBAC/D,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACrB,OAAO,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBACnF,CAAC;gBACD,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;YACxF,CAAC;YACD,sBAAsB,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM;QACV,KAAK,qBAAqB,CAAC,GAAG;YAC1B,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,cAA0C,EAAE,QAAQ,CAAC,CAAC;YACtF,MAAM;QACV,KAAK,qBAAqB,CAAC,IAAI;YAC3B,IAAI,QAAQ,EAAE,CAAC;gBACX,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM;QACV;YACI,MAAM,IAAI,KAAK,CACX,2DAA2D,cAAc,CAAC,sBAAsB,EAAE,CACrG,CAAC;IACV,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACpB,OAAO,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAoB,EAAE,cAA8B,EAAE,QAAiB;IACjG,QAAQ,cAAc,CAAC,sBAAsB,EAAE,CAAC;QAC5C,KAAK,qBAAqB,CAAC,KAAK;YAC5B,IAAI,cAAc,CAAC,sBAAsB,KAAK,qBAAqB,CAAC,GAAG,EAAE,CAAC;gBACtE,MAAM,WAAW,GAAG,cAA0C,CAAC;gBAC/D,MAAM,GAAG,wBAAwB,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;YAC1F,CAAC;YACD,wBAAwB,CAAC,MAAM,CAAC,CAAC;YACjC,OAAO,MAAM,CAAC;QAClB,KAAK,qBAAqB,CAAC,GAAG;YAC1B,OAAO,gBAAgB,CAAC,MAAM,EAAE,cAA0C,EAAE,QAAQ,CAAC,CAAC;QAC1F,KAAK,qBAAqB,CAAC,IAAI;YAC3B,IAAI,QAAQ,EAAE,CAAC;gBACX,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YACD,OAAO,MAAM,CAAC;QAClB;YACI,MAAM,IAAI,KAAK,CACX,2DAA2D,cAAc,CAAC,sBAAsB,EAAE,CACrG,CAAC;IACV,CAAC;AACL,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAkB,EAAE,cAA8B;IAClF,IACI,cAAc,CAAC,sBAAsB,KAAK,qBAAqB,CAAC,KAAK;QACrE,cAAc,CAAC,sBAAsB,KAAK,qBAAqB,CAAC,IAAI,EACtE,CAAC;QACC,OAAO,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,IACI,cAAc,CAAC,sBAAsB,KAAK,qBAAqB,CAAC,GAAG;QACnE,cAAc,CAAC,sBAAsB,KAAK,qBAAqB,CAAC,IAAI,EACtE,CAAC;QACC,MAAM,WAAW,GAAG,cAA0C,CAAC;QAC/D,OAAO,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACnF,CAAC;IAED,IACI,cAAc,CAAC,sBAAsB,KAAK,qBAAqB,CAAC,IAAI;QACpE,cAAc,CAAC,sBAAsB,KAAK,qBAAqB,CAAC,IAAI,EACtE,CAAC;QACC,yFAAyF;QACzF,2BAA2B;QAC3B,YAAY,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACvB,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,IACI,cAAc,CAAC,sBAAsB,KAAK,qBAAqB,CAAC,KAAK;QACrE,cAAc,CAAC,sBAAsB,KAAK,qBAAqB,CAAC,GAAG,EACrE,CAAC;QACC,MAAM,WAAW,GAAG,cAA0C,CAAC;QAC/D,MAAM,aAAa,GAAG,yBAAyB,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;QACpG,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAChC,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,aAAa,CACzB,cAA8B,EAC9B,uBAA2C,EAC3C,IAAgB,EAChB,MAAkB;IAElB,MAAM,sBAAsB,GAAG,cAAc,CAAC,sBAAsB,CAAC;IACrE,IAAI,sBAAsB,KAAK,qBAAqB,CAAC,GAAG,EAAE,CAAC;QACvD,OAAQ,cAA2C,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;IACxG,CAAC;IAED,IACI,sBAAsB,KAAK,qBAAqB,CAAC,KAAK;QACtD,cAAc,CAAC,sBAAsB,KAAK,qBAAqB,CAAC,GAAG,EACrE,CAAC;QACC,OAAO,cAAc,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;IAC/E,CAAC;IACD,MAAM,WAAW,GACb,uBAAuB,YAAY,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC;IAC5G,MAAM,WAAW,GAAG,cAA0C,CAAC;IAE/D,IAAI,WAAW,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC;IAC3B,CAAC;IACD,kCAAkC;IAClC,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,cAAc,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;IAC/E,CAAC;IACD,2DAA2D;IAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IAEjC,IAAI,MAAkB,CAAC;IACvB,IAAI,cAAc,CAAC,sBAAsB,KAAK,sBAAsB,CAAC,MAAM,EAAE,CAAC;QAC1E,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACJ,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACxB,qCAAqC;IACrC,MAAM,SAAS,GAAG,CAAC,CAAC;IACpB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC/B,CAAC;IACD,OAAO,cAAc,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED,SAAS,cAAc,CAAC,IAAgB,EAAE,cAAwC,EAAE,QAAiB;IACjG,OAAO,QAAQ;QACX,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC;QAC9E,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,cAAc,CACnB,IAAmB,EACnB,cAAwC,EACxC,QAAiB;IAEjB,OAAO,QAAQ;QACX,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC;QAC9E,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,gBAAgB,CACrB,IAAkB,EAClB,cAAwC,EACxC,QAAiB;IAEjB,OAAO,QAAQ;QACX,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC;QAChF,CAAC,CAAC,wBAAwB,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;AAC3F,CAAC","sourcesContent":["import { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport type IntWrapper from \"./intWrapper\";\nimport {\n decodeComponentwiseDeltaVec2,\n decodeComponentwiseDeltaVec2Scaled,\n decodeDeltaRleInt32,\n decodeDeltaRleInt64,\n decodeFastPfor,\n decodeUnsignedConstRleInt32,\n decodeUnsignedConstRleInt64,\n decodeUnsignedRleInt32,\n decodeUnsignedRleInt64,\n decodeUnsignedRleFloat64,\n decodeVarintInt32,\n decodeVarintInt64,\n decodeVarintFloat64,\n decodeZigZagInt32,\n decodeZigZagInt64,\n decodeZigZagFloat64,\n decodeZigZagConstRleInt32,\n decodeZigZagConstRleInt64,\n decodeZigZagDeltaInt32,\n decodeZigZagDeltaInt64,\n decodeZigZagDeltaFloat64,\n decodeZigZagSequenceRleInt32,\n decodeZigZagSequenceRleInt64,\n decodeZigZagInt32Value,\n decodeZigZagInt64Value,\n fastInverseDelta,\n inverseDelta,\n decodeRleDeltaInt32,\n decodeZigZagDeltaOfDeltaInt32,\n decodeZigZagRleDeltaInt32,\n decodeZigZagRleInt32,\n decodeZigZagRleInt64,\n decodeZigZagRleFloat64,\n} from \"./integerDecodingUtils\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport { type StreamMetadata, type RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport { VectorType } from \"../vector/vectorType\";\nimport type GeometryScaling from \"./geometryScaling\";\nimport { unpackNullable } from \"./unpackNullableUtils\";\n\nexport function decodeIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Int32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeInt32(values, streamMetadata, isSigned, scalingData, nullabilityBuffer);\n}\n\nexport function decodeLengthStreamToOffsetBuffer(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Uint32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeLengthToOffsetBuffer(values, streamMetadata);\n}\n\nfunction decodePhysicalLevelTechnique(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Int32Array {\n const physicalLevelTechnique = streamMetadata.physicalLevelTechnique;\n if (physicalLevelTechnique === PhysicalLevelTechnique.FAST_PFOR) {\n return decodeFastPfor(data, streamMetadata.numValues, streamMetadata.byteLength, offset);\n }\n if (physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n return decodeVarintInt32(data, offset, streamMetadata.numValues);\n }\n\n if (physicalLevelTechnique === PhysicalLevelTechnique.NONE) {\n const dataOffset = offset.get();\n const byteLength = streamMetadata.byteLength;\n offset.add(byteLength);\n //TODO: use Byte Rle for geometry type encoding\n const slice = data.subarray(dataOffset, offset.get());\n return new Int32Array(slice);\n }\n\n throw new Error(\"Specified physicalLevelTechnique is not supported (yet).\");\n}\n\nexport function decodeConstIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): number {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n\n if (values.length === 1) {\n const value = values[0];\n return isSigned ? decodeZigZagInt32Value(value) : value;\n }\n\n return isSigned ? decodeZigZagConstRleInt32(values) : decodeUnsignedConstRleInt32(values);\n}\n\nexport function decodeSequenceIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: number, delta: number] {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeZigZagSequenceRleInt32(values);\n}\n\nexport function decodeSequenceLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: bigint, delta: bigint] {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeZigZagSequenceRleInt64(values);\n}\n\nexport function decodeLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n nullabilityBuffer?: BitVector,\n): BigInt64Array {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeInt64(values, streamMetadata, isSigned, nullabilityBuffer);\n}\n\nexport function decodeLongFloat64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): Float64Array {\n const values = decodeVarintFloat64(data, offset, streamMetadata.numValues);\n return decodeFloat64(values, streamMetadata, isSigned);\n}\n\nexport function decodeConstLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): bigint {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n\n if (values.length === 1) {\n const value = values[0];\n return isSigned ? decodeZigZagInt64Value(value) : value;\n }\n\n return isSigned ? decodeZigZagConstRleInt64(values) : decodeUnsignedConstRleInt64(values);\n}\n\n/**\n * This method decodes integer streams.\n * Currently the encoder uses only fixed combinations of encodings.\n * For performance reasons it is also uses a fixed combination of the encodings on the decoding side.\n * The following encodings and combinations are used:\n * - Morton Delta -> always sorted so not ZigZag encoding needed\n * - Delta -> currently always in combination with ZigZag encoding\n * - Rle -> in combination with ZigZag encoding if data type is signed\n * - Delta Rle\n * - Componentwise Delta -> always ZigZag encoding is used\n */\nfunction decodeInt32(\n values: Int32Array,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Int32Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n if (!nullabilityBuffer) {\n return decodeDeltaRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n values = decodeUnsignedRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaInt32(values);\n break;\n case LogicalLevelTechnique.RLE:\n values = decodeRleInt32(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n break;\n case LogicalLevelTechnique.MORTON:\n fastInverseDelta(values);\n break;\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !nullabilityBuffer) {\n decodeComponentwiseDeltaVec2Scaled(values, scalingData.scale, scalingData.min, scalingData.max);\n return values;\n }\n decodeComponentwiseDeltaVec2(values);\n break;\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagInt32(values);\n }\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(values, nullabilityBuffer, 0);\n }\n return values;\n}\n\nfunction decodeInt64(\n values: BigInt64Array,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n nullabilityBuffer?: BitVector,\n): BigInt64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n if (!nullabilityBuffer) {\n return decodeDeltaRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n values = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaInt64(values);\n break;\n case LogicalLevelTechnique.RLE:\n values = decodeRleInt64(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n break;\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagInt64(values);\n }\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(values, nullabilityBuffer, 0n);\n }\n return values;\n}\n\nexport function decodeFloat64(values: Float64Array, streamMetadata: StreamMetadata, isSigned: boolean): Float64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n values = decodeUnsignedRleFloat64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaFloat64(values);\n return values;\n case LogicalLevelTechnique.RLE:\n return decodeRleFloat64(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagFloat64(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 decodeLengthToOffsetBuffer(values: Int32Array, streamMetadata: StreamMetadata): Uint32Array {\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n return decodeZigZagDeltaOfDeltaInt32(values);\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.RLE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n return decodeRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.NONE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n //TODO: use fastInverseDelta again and check what are the performance problems in zoom 14\n //fastInverseDelta(values);\n inverseDelta(values);\n const offsets = new Uint32Array(streamMetadata.numValues + 1);\n offsets[0] = 0;\n offsets.set(values, 1);\n return offsets;\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const decodedValues = decodeZigZagRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n fastInverseDelta(decodedValues);\n return decodedValues;\n }\n\n throw new Error(\"Only delta encoding is supported for transforming length to offset streams yet.\");\n}\n\nexport function getVectorType(\n streamMetadata: StreamMetadata,\n sizeOrNullabilityBuffer: number | BitVector,\n data: Uint8Array,\n offset: IntWrapper,\n): VectorType {\n const logicalLevelTechnique1 = streamMetadata.logicalLevelTechnique1;\n if (logicalLevelTechnique1 === LogicalLevelTechnique.RLE) {\n return (streamMetadata as RleEncodedStreamMetadata).runs === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n\n if (\n logicalLevelTechnique1 !== LogicalLevelTechnique.DELTA ||\n streamMetadata.logicalLevelTechnique2 !== LogicalLevelTechnique.RLE\n ) {\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n const numFeatures =\n sizeOrNullabilityBuffer instanceof BitVector ? sizeOrNullabilityBuffer.size() : sizeOrNullabilityBuffer;\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n\n if (rleMetadata.numRleValues !== numFeatures) {\n return VectorType.FLAT;\n }\n // Single run is always a sequence\n if (rleMetadata.runs === 1) {\n return VectorType.SEQUENCE;\n }\n\n if (rleMetadata.runs !== 2) {\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n // Two runs can be a sequence if both deltas are equal to 1\n const savedOffset = offset.get();\n\n let values: Int32Array;\n if (streamMetadata.physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n values = decodeVarintInt32(data, offset, 4);\n } else {\n const byteOffset = offset.get();\n values = new Int32Array(data.buffer, data.byteOffset + byteOffset, 4);\n }\n offset.set(savedOffset);\n // Check if both deltas are encoded 1\n const zigZagOne = 2;\n if (values[2] === zigZagOne && values[3] === zigZagOne) {\n return VectorType.SEQUENCE;\n }\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n}\n\nfunction decodeRleInt32(data: Int32Array, streamMetadata: RleEncodedStreamMetadata, isSigned: boolean): Int32Array {\n return isSigned\n ? decodeZigZagRleInt32(data, streamMetadata.runs, streamMetadata.numRleValues)\n : decodeUnsignedRleInt32(data, streamMetadata.runs, streamMetadata.numRleValues);\n}\n\nfunction decodeRleInt64(\n data: BigInt64Array,\n streamMetadata: RleEncodedStreamMetadata,\n isSigned: boolean,\n): BigInt64Array {\n return isSigned\n ? decodeZigZagRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues)\n : decodeUnsignedRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues);\n}\n\nfunction decodeRleFloat64(\n data: Float64Array,\n streamMetadata: RleEncodedStreamMetadata,\n isSigned: boolean,\n): Float64Array {\n return isSigned\n ? decodeZigZagRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues)\n : decodeUnsignedRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues);\n}\n"]}
|