Skip to content

Commit 78cbd56

Browse files
authored
fix(js): remove the rest of the static methods and spread operator (#733)
This removes the rest of the static methods. It also removes spread operator and refactors `StreamMetadata` into a type and `ZOrderCurve` into a method. - Related to #725, and build on #730 There are still skipped tests as part of this PR that needs to be addressed. I didn't change the file names to keep things simpler to review, but I would prefer more meaningful file names to the "static" methods.
1 parent 7a15623 commit 78cbd56

21 files changed

+669
-897
lines changed

ts/src/decoding/decodingUtils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import type IntWrapper from "./intWrapper";
22
import { VectorType } from "../vector/vectorType";
33
import BitVector from "../vector/flat/bitVector";
4-
import { StreamMetadataDecoder } from "../metadata/tile/streamMetadataDecoder";
4+
import { decodeStreamMetadata } from "../metadata/tile/streamMetadataDecoder";
55

66
export function skipColumn(numStreams: number, tile: Uint8Array, offset: IntWrapper) {
77
//TODO: add size of column in Mlt for fast skipping
88
for (let i = 0; i < numStreams; i++) {
9-
const streamMetadata = StreamMetadataDecoder.decode(tile, offset);
9+
const streamMetadata = decodeStreamMetadata(tile, offset);
1010
offset.add(streamMetadata.byteLength);
1111
}
1212
}

ts/src/decoding/geometryDecoder.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { type GeometryVector, type MortonSettings } from "../vector/geometry/geometryVector";
2-
import { StreamMetadataDecoder } from "../metadata/tile/streamMetadataDecoder";
2+
import { decodeStreamMetadata, type MortonEncodedStreamMetadata } from "../metadata/tile/streamMetadataDecoder";
33
import type IntWrapper from "./intWrapper";
44
import {
55
decodeConstIntStream,
@@ -11,7 +11,6 @@ import { VectorType } from "../vector/vectorType";
1111
import { PhysicalStreamType } from "../metadata/tile/physicalStreamType";
1212
import { LengthType } from "../metadata/tile/lengthType";
1313
import { DictionaryType } from "../metadata/tile/dictionaryType";
14-
import { type MortonEncodedStreamMetadata } from "../metadata/tile/mortonEncodedStreamMetadata";
1514
import TopologyVector from "../vector/geometry/topologyVector";
1615
import {
1716
ConstGeometryVector,
@@ -37,7 +36,7 @@ export function decodeGeometryColumn(
3736
numFeatures: number,
3837
scalingData?: GeometryScaling,
3938
): GeometryVector | GpuVector {
40-
const geometryTypeMetadata = StreamMetadataDecoder.decode(tile, offset);
39+
const geometryTypeMetadata = decodeStreamMetadata(tile, offset);
4140
const geometryTypesVectorType = getVectorType(geometryTypeMetadata, numFeatures, tile, offset);
4241

4342
let geometryOffsets: Int32Array = null;
@@ -56,7 +55,7 @@ export function decodeGeometryColumn(
5655
const geometryType = decodeConstIntStream(tile, offset, geometryTypeMetadata, false);
5756

5857
for (let i = 0; i < numStreams - 1; i++) {
59-
const geometryStreamMetadata = StreamMetadataDecoder.decode(tile, offset);
58+
const geometryStreamMetadata = decodeStreamMetadata(tile, offset);
6059
switch (geometryStreamMetadata.physicalStreamType) {
6160
case PhysicalStreamType.LENGTH:
6261
switch (geometryStreamMetadata.logicalStreamType.lengthType) {
@@ -90,8 +89,8 @@ export function decodeGeometryColumn(
9089
} else {
9190
const mortonMetadata = geometryStreamMetadata as MortonEncodedStreamMetadata;
9291
mortonSettings = {
93-
numBits: mortonMetadata.numBits(),
94-
coordinateShift: mortonMetadata.coordinateShift(),
92+
numBits: mortonMetadata.numBits,
93+
coordinateShift: mortonMetadata.coordinateShift,
9594
};
9695
vertexBuffer = decodeIntStream(tile, offset, geometryStreamMetadata, false, scalingData);
9796
}
@@ -141,7 +140,7 @@ export function decodeGeometryColumn(
141140
const geometryTypeVector = decodeIntStream(tile, offset, geometryTypeMetadata, false);
142141

143142
for (let i = 0; i < numStreams - 1; i++) {
144-
const geometryStreamMetadata = StreamMetadataDecoder.decode(tile, offset);
143+
const geometryStreamMetadata = decodeStreamMetadata(tile, offset);
145144
switch (geometryStreamMetadata.physicalStreamType) {
146145
case PhysicalStreamType.LENGTH:
147146
switch (geometryStreamMetadata.logicalStreamType.lengthType) {
@@ -174,8 +173,8 @@ export function decodeGeometryColumn(
174173
} else {
175174
const mortonMetadata = geometryStreamMetadata as MortonEncodedStreamMetadata;
176175
mortonSettings = {
177-
numBits: mortonMetadata.numBits(),
178-
coordinateShift: mortonMetadata.coordinateShift(),
176+
numBits: mortonMetadata.numBits,
177+
coordinateShift: mortonMetadata.coordinateShift,
179178
};
180179
vertexBuffer = decodeIntStream(tile, offset, geometryStreamMetadata, false, scalingData);
181180
}

ts/src/decoding/integerDecodingUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type IntWrapper from "./intWrapper";
2-
import { type RleEncodedStreamMetadata } from "../metadata/tile/rleEncodedStreamMetadata";
32
import type BitVector from "../vector/flat/bitVector";
43
import { type StreamMetadata } from "../mltMetadata";
4+
import { type RleEncodedStreamMetadata } from "../metadata/tile/streamMetadataDecoder";
55

66
/* Null suppression (physical level) techniques ------------------------------------------------------------------*/
77

ts/src/decoding/integerStreamDecoder.spec.ts

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { describe, it, expect } from "vitest";
22
import { getVectorType, decodeLongStream, decodeNullableLongStream } from "./integerStreamDecoder";
3-
import { RleEncodedStreamMetadata } from "../metadata/tile/rleEncodedStreamMetadata";
43
import { PhysicalStreamType } from "../metadata/tile/physicalStreamType";
54
import { LogicalStreamType } from "../metadata/tile/logicalStreamType";
65
import { LogicalLevelTechnique } from "../metadata/tile/logicalLevelTechnique";
@@ -9,7 +8,7 @@ import { VectorType } from "../vector/vectorType";
98
import { DictionaryType } from "../metadata/tile/dictionaryType";
109
import IntWrapper from "./intWrapper";
1110
import BitVector from "../vector/flat/bitVector";
12-
import { StreamMetadata } from "../metadata/tile/streamMetadata";
11+
import { type RleEncodedStreamMetadata, type StreamMetadata } from "../metadata/tile/streamMetadataDecoder";
1312

1413
/**
1514
* Helper function to create StreamMetadata
@@ -19,15 +18,16 @@ function createStreamMetadata(
1918
logicalTechnique2: LogicalLevelTechnique = LogicalLevelTechnique.NONE,
2019
numValues: number = 3,
2120
): StreamMetadata {
22-
return new StreamMetadata(
23-
PhysicalStreamType.DATA,
24-
new LogicalStreamType(DictionaryType.NONE),
25-
logicalTechnique1,
26-
logicalTechnique2,
27-
PhysicalLevelTechnique.VARINT,
21+
return {
22+
physicalStreamType: PhysicalStreamType.DATA,
23+
logicalStreamType: new LogicalStreamType(DictionaryType.NONE),
24+
logicalLevelTechnique1: logicalTechnique1,
25+
logicalLevelTechnique2: logicalTechnique2,
26+
physicalLevelTechnique: PhysicalLevelTechnique.VARINT,
2827
numValues,
29-
10,
30-
);
28+
byteLength: 10,
29+
decompressedCount: numValues,
30+
};
3131
}
3232

3333
/**
@@ -39,17 +39,18 @@ function createRleMetadata(
3939
runs: number,
4040
numRleValues: number,
4141
): RleEncodedStreamMetadata {
42-
return new RleEncodedStreamMetadata(
43-
PhysicalStreamType.DATA,
44-
new LogicalStreamType(DictionaryType.NONE),
45-
logicalTechnique1,
46-
logicalTechnique2,
47-
PhysicalLevelTechnique.VARINT,
48-
runs * 2,
49-
10,
42+
return {
43+
physicalStreamType: PhysicalStreamType.DATA,
44+
logicalStreamType: new LogicalStreamType(DictionaryType.NONE),
45+
logicalLevelTechnique1: logicalTechnique1,
46+
logicalLevelTechnique2: logicalTechnique2,
47+
physicalLevelTechnique: PhysicalLevelTechnique.VARINT,
48+
numValues: runs * 2,
49+
byteLength: 10,
50+
decompressedCount: numRleValues,
5051
runs,
5152
numRleValues,
52-
);
53+
};
5354
}
5455

5556
describe("getVectorType", () => {

ts/src/decoding/integerStreamDecoder.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { type StreamMetadata } from "../metadata/tile/streamMetadata";
21
import { PhysicalLevelTechnique } from "../metadata/tile/physicalLevelTechnique";
32
import type IntWrapper from "./intWrapper";
43
import {
@@ -45,7 +44,7 @@ import {
4544
zigZagRleDeltaDecoding,
4645
} from "./integerDecodingUtils";
4746
import { LogicalLevelTechnique } from "../metadata/tile/logicalLevelTechnique";
48-
import { type RleEncodedStreamMetadata } from "../metadata/tile/rleEncodedStreamMetadata";
47+
import { type StreamMetadata, type RleEncodedStreamMetadata } from "../metadata/tile/streamMetadataDecoder";
4948
import BitVector from "../vector/flat/bitVector";
5049
import { VectorType } from "../vector/vectorType";
5150
import type GeometryScaling from "./geometryScaling";

0 commit comments

Comments
 (0)