@maplibre/mlt 1.1.5 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/decoding/bigEndianDecode.d.ts +13 -0
- package/dist/decoding/bigEndianDecode.js +50 -0
- package/dist/decoding/bigEndianDecode.js.map +1 -0
- package/dist/decoding/decodingTestUtils.d.ts +1 -1
- package/dist/decoding/decodingTestUtils.js.map +1 -1
- package/dist/decoding/decodingUtils.js +4 -2
- package/dist/decoding/decodingUtils.js.map +1 -1
- package/dist/decoding/fastPforDecoder.d.ts +48 -0
- package/dist/decoding/fastPforDecoder.js +482 -0
- package/dist/decoding/fastPforDecoder.js.map +1 -0
- package/dist/decoding/fastPforShared.d.ts +9 -0
- package/dist/decoding/fastPforShared.js +29 -0
- package/dist/decoding/fastPforShared.js.map +1 -0
- package/dist/decoding/fastPforUnpack.d.ts +23 -0
- package/dist/decoding/fastPforUnpack.js +910 -0
- package/dist/decoding/fastPforUnpack.js.map +1 -0
- package/dist/decoding/geometryDecoder.d.ts +2 -2
- package/dist/decoding/geometryDecoder.js +11 -8
- package/dist/decoding/geometryDecoder.js.map +1 -1
- package/dist/decoding/integerDecodingUtils.d.ts +14 -10
- package/dist/decoding/integerDecodingUtils.js +44 -22
- package/dist/decoding/integerDecodingUtils.js.map +1 -1
- package/dist/decoding/integerStreamDecoder.d.ts +1 -1
- package/dist/decoding/integerStreamDecoder.js +13 -6
- package/dist/decoding/integerStreamDecoder.js.map +1 -1
- package/dist/decoding/propertyDecoder.js +10 -14
- package/dist/decoding/propertyDecoder.js.map +1 -1
- package/dist/decoding/stringDecoder.js +2 -11
- package/dist/decoding/stringDecoder.js.map +1 -1
- package/dist/encoding/bigEndianEncode.d.ts +7 -0
- package/dist/encoding/bigEndianEncode.js +16 -0
- package/dist/encoding/bigEndianEncode.js.map +1 -0
- package/dist/encoding/constGeometryVectorEncoder.d.ts +19 -0
- package/dist/encoding/constGeometryVectorEncoder.js +248 -0
- package/dist/encoding/constGeometryVectorEncoder.js.map +1 -0
- package/dist/encoding/encodingUtils.d.ts +1 -1
- package/dist/encoding/encodingUtils.js +2 -2
- package/dist/encoding/encodingUtils.js.map +1 -1
- package/dist/encoding/fastPforEncoder.d.ts +19 -0
- package/dist/encoding/fastPforEncoder.js +310 -0
- package/dist/encoding/fastPforEncoder.js.map +1 -0
- package/dist/encoding/integerEncodingUtils.d.ts +7 -7
- package/dist/encoding/integerEncodingUtils.js +25 -17
- package/dist/encoding/integerEncodingUtils.js.map +1 -1
- package/dist/encoding/integerStreamEncoder.d.ts +1 -1
- package/dist/encoding/integerStreamEncoder.js +5 -5
- package/dist/encoding/integerStreamEncoder.js.map +1 -1
- package/dist/encoding/packNullableUtils.d.ts +1 -1
- package/dist/encoding/packNullableUtils.js.map +1 -1
- package/dist/encoding/propertyEncoder.d.ts +1 -1
- package/dist/encoding/propertyEncoder.js +8 -8
- package/dist/encoding/propertyEncoder.js.map +1 -1
- package/dist/encoding/stringEncoder.js +3 -3
- package/dist/encoding/stringEncoder.js.map +1 -1
- package/dist/encoding/zOrderCurveEncoder.js +1 -1
- package/dist/encoding/zOrderCurveEncoder.js.map +1 -1
- package/dist/metadata/tile/logicalStreamType.d.ts +3 -3
- package/dist/metadata/tile/logicalStreamType.js.map +1 -1
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.d.ts +1 -1
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -1
- package/dist/metadata/tileset/typeMap.d.ts +10 -2
- package/dist/metadata/tileset/typeMap.js +25 -15
- package/dist/metadata/tileset/typeMap.js.map +1 -1
- package/dist/mltDecoder.js +29 -26
- package/dist/mltDecoder.js.map +1 -1
- package/dist/mltMetadata.js.map +1 -1
- package/dist/vector/constant/intConstVector.d.ts +1 -1
- package/dist/vector/constant/intConstVector.js +1 -1
- package/dist/vector/constant/intConstVector.js.map +1 -1
- package/dist/vector/constant/longConstVector.d.ts +1 -1
- package/dist/vector/constant/longConstVector.js +1 -1
- package/dist/vector/constant/longConstVector.js.map +1 -1
- package/dist/vector/dictionary/stringDictionaryVector.d.ts +0 -1
- package/dist/vector/dictionary/stringDictionaryVector.js +0 -2
- package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
- package/dist/vector/featureTable.d.ts +4 -5
- package/dist/vector/featureTable.js +2 -29
- package/dist/vector/featureTable.js.map +1 -1
- package/dist/vector/filter/flatSelectionVector.d.ts +1 -1
- package/dist/vector/filter/flatSelectionVector.js.map +1 -1
- package/dist/vector/filter/selectionVectorUtils.d.ts +1 -1
- package/dist/vector/filter/selectionVectorUtils.js.map +1 -1
- package/dist/vector/filter/sequenceSelectionVector.d.ts +1 -1
- package/dist/vector/filter/sequenceSelectionVector.js.map +1 -1
- package/dist/vector/flat/stringFlatVector.d.ts +0 -1
- package/dist/vector/flat/stringFlatVector.js +0 -2
- package/dist/vector/flat/stringFlatVector.js.map +1 -1
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +0 -2
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js +0 -36
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
- package/dist/vector/geometry/constGeometryVector.d.ts +2 -2
- package/dist/vector/geometry/constGeometryVector.js +1 -1
- package/dist/vector/geometry/constGeometryVector.js.map +1 -1
- package/dist/vector/geometry/constGpuVector.d.ts +2 -2
- package/dist/vector/geometry/constGpuVector.js +1 -1
- package/dist/vector/geometry/constGpuVector.js.map +1 -1
- package/dist/vector/geometry/flatGeometryVector.d.ts +1 -1
- package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
- package/dist/vector/geometry/flatGpuVector.d.ts +1 -1
- package/dist/vector/geometry/flatGpuVector.js.map +1 -1
- package/dist/vector/geometry/geometryType.js.map +1 -1
- package/dist/vector/geometry/geometryVector.d.ts +4 -5
- package/dist/vector/geometry/geometryVector.js +0 -8
- package/dist/vector/geometry/geometryVector.js.map +1 -1
- package/dist/vector/geometry/geometryVectorConverter.d.ts +1 -1
- package/dist/vector/geometry/geometryVectorConverter.js +167 -211
- package/dist/vector/geometry/geometryVectorConverter.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 +5 -9
- package/dist/vector/geometry/topologyVector.js +1 -19
- package/dist/vector/geometry/topologyVector.js.map +1 -1
- package/dist/vector/geometry/vertexBufferType.js.map +1 -1
- package/dist/vector/intVector.d.ts +7 -7
- package/dist/vector/intVector.js.map +1 -1
- package/dist/vector/vector.js +1 -1
- package/dist/vector/vector.js.map +1 -1
- package/dist/vector/vectorType.js.map +1 -1
- package/package.json +9 -10
- package/dist/decoding/decodingUtils.spec.d.ts +0 -1
- package/dist/decoding/decodingUtils.spec.js +0 -141
- package/dist/decoding/decodingUtils.spec.js.map +0 -1
- package/dist/decoding/fsstDecoder.spec.d.ts +0 -1
- package/dist/decoding/fsstDecoder.spec.js +0 -57
- package/dist/decoding/fsstDecoder.spec.js.map +0 -1
- package/dist/decoding/integerDecodingUtils.spec.d.ts +0 -1
- package/dist/decoding/integerDecodingUtils.spec.js +0 -300
- package/dist/decoding/integerDecodingUtils.spec.js.map +0 -1
- package/dist/decoding/integerStreamDecoder.spec.d.ts +0 -1
- package/dist/decoding/integerStreamDecoder.spec.js +0 -402
- package/dist/decoding/integerStreamDecoder.spec.js.map +0 -1
- package/dist/decoding/propertyDecoder.spec.d.ts +0 -1
- package/dist/decoding/propertyDecoder.spec.js +0 -448
- package/dist/decoding/propertyDecoder.spec.js.map +0 -1
- package/dist/decoding/stringDecoder.spec.d.ts +0 -1
- package/dist/decoding/stringDecoder.spec.js +0 -387
- package/dist/decoding/stringDecoder.spec.js.map +0 -1
- package/dist/decoding/unpackNullableUtils.spec.d.ts +0 -1
- package/dist/decoding/unpackNullableUtils.spec.js +0 -71
- package/dist/decoding/unpackNullableUtils.spec.js.map +0 -1
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.d.ts +0 -1
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js +0 -142
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js.map +0 -1
- package/dist/mltDecoder.spec.d.ts +0 -1
- package/dist/mltDecoder.spec.js +0 -152
- package/dist/mltDecoder.spec.js.map +0 -1
- package/dist/vector/filter/flatSelectionVector.spec.d.ts +0 -1
- package/dist/vector/filter/flatSelectionVector.spec.js +0 -51
- package/dist/vector/filter/flatSelectionVector.spec.js.map +0 -1
- package/dist/vector/filter/selectionVectorUtil.spec.d.ts +0 -1
- package/dist/vector/filter/selectionVectorUtil.spec.js +0 -154
- package/dist/vector/filter/selectionVectorUtil.spec.js.map +0 -1
- package/dist/vector/filter/sequenceSelectionVector.spec.d.ts +0 -1
- package/dist/vector/filter/sequenceSelectionVector.spec.js +0 -115
- package/dist/vector/filter/sequenceSelectionVector.spec.js.map +0 -1
- package/dist/vector/flat/floatFlatVector.spec.d.ts +0 -1
- package/dist/vector/flat/floatFlatVector.spec.js +0 -14
- package/dist/vector/flat/floatFlatVector.spec.js.map +0 -1
- package/dist/vector/flat/intFlatVector.spec.d.ts +0 -1
- package/dist/vector/flat/intFlatVector.spec.js +0 -15
- package/dist/vector/flat/intFlatVector.spec.js.map +0 -1
- package/dist/vector/flat/longFlatVector.spec.d.ts +0 -1
- package/dist/vector/flat/longFlatVector.spec.js +0 -14
- package/dist/vector/flat/longFlatVector.spec.js.map +0 -1
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.d.ts +0 -1
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js +0 -28
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js.map +0 -1
- package/dist/vector/geometry/zOrderCurve.spec.d.ts +0 -1
- package/dist/vector/geometry/zOrderCurve.spec.js +0 -25
- package/dist/vector/geometry/zOrderCurve.spec.js.map +0 -1
- package/dist/vector/sequence/longSequenceVektor.spec.d.ts +0 -1
- package/dist/vector/sequence/longSequenceVektor.spec.js +0 -11
- package/dist/vector/sequence/longSequenceVektor.spec.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propertyEncoder.js","sourceRoot":"","sources":["../../src/encoding/propertyEncoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { LogicalStreamType } from \"../metadata/tile/logicalStreamType\";\nimport { DictionaryType } from \"../metadata/tile/dictionaryType\";\nimport type { StreamMetadata, RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport IntWrapper from \"../decoding/intWrapper\";\nimport { encodeBooleanRle, encodeFloatsLE, encodeDoubleLE } from \"./encodingUtils\";\nimport {\n encodeVarintInt32Value,\n encodeVarintInt32,\n encodeVarintInt64,\n encodeZigZagInt32Value,\n encodeZigZagInt64Value,\n} from \"./integerEncodingUtils\";\n\n/**\n * Encodes INT_32 values with NONE encoding (no delta, no RLE)\n */\nexport function encodeInt32NoneColumn(values: Int32Array): Uint8Array {\n const zigzagEncoded = new Int32Array(values.length);\n for (let i = 0; i < values.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt32Value(values[i]);\n }\n const encodedData = encodeVarintInt32(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_32 values with DELTA encoding\n */\nexport function encodeInt32DeltaColumn(values: Int32Array): Uint8Array {\n // Delta encode: store deltas\n const deltaEncoded = new Int32Array(values.length);\n deltaEncoded[0] = values[0];\n for (let i = 1; i < values.length; i++) {\n deltaEncoded[i] = values[i] - values[i - 1];\n }\n\n const zigzagEncoded = new Int32Array(deltaEncoded.length);\n for (let i = 0; i < deltaEncoded.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt32Value(deltaEncoded[i]);\n }\n const encodedData = encodeVarintInt32(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_32 values with RLE encoding\n * @param runs - Array of [runLength, value] pairs\n */\nexport function encodeInt32RleColumn(runs: Array<[number, number]>): Uint8Array {\n const runLengths: number[] = [];\n const values: number[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(runLength);\n values.push(encodeZigZagInt32Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt32(new Int32Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.RLE,\n LogicalLevelTechnique.NONE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_32 values with DELTA+RLE encoding\n * @param runs - Array of [runLength, deltaValue] pairs, where first value is the base\n */\nexport function encodeInt32DeltaRleColumn(runs: Array<[number, number]>): Uint8Array {\n const runLengths: number[] = [];\n const values: number[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(runLength);\n values.push(encodeZigZagInt32Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt32(new Int32Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.DELTA,\n LogicalLevelTechnique.RLE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable INT_32 values\n */\nexport function encodeInt32NullableColumn(values: (number | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is number => v !== null);\n const zigzagEncoded = new Int32Array(nonNullValues.map((v) => encodeZigZagInt32Value(v)));\n const encodedData = encodeVarintInt32(zigzagEncoded);\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n // Nullability stream\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes UINT_32 values (no zigzag encoding)\n */\nexport function encodeUint32Column(values: Uint32Array): Uint8Array {\n const encodedData = encodeVarintInt32(new Int32Array(values));\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with NONE encoding\n */\nexport function encodeInt64NoneColumn(values: BigInt64Array): Uint8Array {\n const zigzagEncoded = new BigInt64Array(Array.from(values, (val) => encodeZigZagInt64Value(val)));\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with DELTA encoding\n */\nexport function encodeInt64DeltaColumn(values: BigInt64Array): Uint8Array {\n const deltaEncoded = new BigInt64Array(values.length);\n deltaEncoded[0] = values[0];\n for (let i = 1; i < values.length; i++) {\n deltaEncoded[i] = values[i] - values[i - 1];\n }\n\n const zigzagEncoded = new BigInt64Array(deltaEncoded.length);\n for (let i = 0; i < deltaEncoded.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt64Value(deltaEncoded[i]);\n }\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with RLE encoding\n */\nexport function encodeInt64RleColumn(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt64(new BigInt64Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.RLE,\n LogicalLevelTechnique.NONE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with DELTA+RLE encoding\n */\nexport function encodeInt64DeltaRleColumn(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt64(new BigInt64Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.DELTA,\n LogicalLevelTechnique.RLE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable INT_64 values\n */\nexport function encodeInt64NullableColumn(values: (bigint | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is bigint => v !== null);\n const zigzagEncoded = new BigInt64Array(Array.from(nonNullValues, (val) => encodeZigZagInt64Value(val)));\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes UINT_64 values (no zigzag encoding)\n */\nexport function encodeUint64Column(values: BigUint64Array): Uint8Array {\n const encodedData = encodeVarintInt64(new BigInt64Array(values));\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable UINT_64 values\n */\nexport function encodeUint64NullableColumn(values: (bigint | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is bigint => v !== null);\n const encodedData = encodeVarintInt64(new BigInt64Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes FLOAT values\n */\nexport function encodeFloatColumn(values: Float32Array): Uint8Array {\n const encodedData = encodeFloatsLE(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable FLOAT values\n */\nexport function encodeFloatNullableColumn(values: (number | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is number => v !== null);\n const encodedData = encodeFloatsLE(new Float32Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes DOUBLE values\n */\nexport function encodeDoubleColumn(values: Float32Array): Uint8Array {\n const encodedData = encodeDoubleLE(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable DOUBLE values\n */\nexport function encodeDoubleNullableColumn(values: (number | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is number => v !== null);\n const encodedData = encodeDoubleLE(new Float32Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes BOOLEAN values\n */\nexport function encodeBooleanColumn(values: boolean[]): Uint8Array {\n const encodedData = encodeBooleanRle(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable BOOLEAN values\n */\nexport function encodeBooleanNullableColumn(values: (boolean | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is boolean => v !== null);\n const encodedData = encodeBooleanRle(nonNullValues);\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\nfunction createStreamMetadata(\n logicalTechnique1: LogicalLevelTechnique,\n logicalTechnique2: LogicalLevelTechnique = LogicalLevelTechnique.NONE,\n numValues: number = 3,\n): StreamMetadata {\n return {\n physicalStreamType: PhysicalStreamType.DATA,\n logicalStreamType: new LogicalStreamType(DictionaryType.NONE),\n logicalLevelTechnique1: logicalTechnique1,\n logicalLevelTechnique2: logicalTechnique2,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues,\n byteLength: 10,\n decompressedCount: numValues,\n };\n}\n\nfunction createRleMetadata(\n logicalTechnique1: LogicalLevelTechnique,\n logicalTechnique2: LogicalLevelTechnique,\n runs: number,\n numRleValues: number,\n): RleEncodedStreamMetadata {\n return {\n physicalStreamType: PhysicalStreamType.DATA,\n logicalStreamType: new LogicalStreamType(DictionaryType.NONE),\n logicalLevelTechnique1: logicalTechnique1,\n logicalLevelTechnique2: logicalTechnique2,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues: runs * 2,\n byteLength: 10,\n decompressedCount: numRleValues,\n runs,\n numRleValues,\n };\n}\n\nfunction buildEncodedStream(\n streamMetadata: StreamMetadata | RleEncodedStreamMetadata,\n encodedData: Uint8Array,\n): Uint8Array {\n const updatedMetadata = {\n ...streamMetadata,\n byteLength: encodedData.length,\n };\n\n const metadataBuffer = encodeStreamMetadata(updatedMetadata);\n const result = new Uint8Array(metadataBuffer.length + encodedData.length);\n result.set(metadataBuffer, 0);\n result.set(encodedData, metadataBuffer.length);\n\n return result;\n}\n\nfunction encodeStreamMetadata(metadata: StreamMetadata | RleEncodedStreamMetadata): Uint8Array {\n const buffer = new Uint8Array(100);\n let writeOffset = 0;\n\n // Byte 1: Stream type\n const physicalTypeIndex = Object.values(PhysicalStreamType).indexOf(metadata.physicalStreamType);\n const lowerNibble = 0; // For DATA stream with NONE dictionary type\n buffer[writeOffset++] = (physicalTypeIndex << 4) | lowerNibble;\n\n // Byte 2: Encoding techniques\n const llt1Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique1);\n const llt2Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique2);\n const pltIndex = Object.values(PhysicalLevelTechnique).indexOf(metadata.physicalLevelTechnique);\n buffer[writeOffset++] = (llt1Index << 5) | (llt2Index << 2) | pltIndex;\n\n // Variable-length fields\n const offset = new IntWrapper(writeOffset);\n encodeVarintInt32Value(metadata.numValues, buffer, offset);\n encodeVarintInt32Value(metadata.byteLength, buffer, offset);\n\n // RLE-specific fields\n if (isRleMetadata(metadata)) {\n encodeVarintInt32Value(metadata.runs, buffer, offset);\n encodeVarintInt32Value(metadata.numRleValues, buffer, offset);\n }\n\n return buffer.slice(0, offset.get());\n}\n\nfunction isRleMetadata(metadata: StreamMetadata | RleEncodedStreamMetadata): metadata is RleEncodedStreamMetadata {\n return \"runs\" in metadata && \"numRleValues\" in metadata;\n}\n\nfunction concatenateBuffers(...buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((sum, buf) => sum + buf.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n\n for (const buffer of buffers) {\n result.set(buffer, offset);\n offset += buffer.length;\n }\n\n return result;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"propertyEncoder.js","sourceRoot":"","sources":["../../src/encoding/propertyEncoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { LogicalStreamType } from \"../metadata/tile/logicalStreamType\";\nimport { DictionaryType } from \"../metadata/tile/dictionaryType\";\nimport type { StreamMetadata, RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport IntWrapper from \"../decoding/intWrapper\";\nimport { encodeBooleanRle, encodeFloatsLE, encodeDoubleLE } from \"./encodingUtils\";\nimport {\n encodeVarintInt32Value,\n encodeVarintInt32,\n encodeVarintInt64,\n encodeZigZagInt32Value,\n encodeZigZagInt64Value,\n} from \"./integerEncodingUtils\";\n\n/**\n * Encodes INT_32 values with NONE encoding (no delta, no RLE)\n */\nexport function encodeInt32NoneColumn(values: Int32Array): Uint8Array {\n const zigzagEncoded = new Int32Array(values.length);\n for (let i = 0; i < values.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt32Value(values[i]);\n }\n const encodedData = encodeVarintInt32(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_32 values with DELTA encoding\n */\nexport function encodeInt32DeltaColumn(values: Int32Array): Uint8Array {\n // Delta encode: store deltas\n const deltaEncoded = new Int32Array(values.length);\n deltaEncoded[0] = values[0];\n for (let i = 1; i < values.length; i++) {\n deltaEncoded[i] = values[i] - values[i - 1];\n }\n\n const zigzagEncoded = new Int32Array(deltaEncoded.length);\n for (let i = 0; i < deltaEncoded.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt32Value(deltaEncoded[i]);\n }\n const encodedData = encodeVarintInt32(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_32 values with RLE encoding\n * @param runs - Array of [runLength, value] pairs\n */\nexport function encodeInt32RleColumn(runs: Array<[number, number]>): Uint8Array {\n const runLengths: number[] = [];\n const values: number[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(runLength);\n values.push(encodeZigZagInt32Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt32(new Int32Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.RLE,\n LogicalLevelTechnique.NONE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_32 values with DELTA+RLE encoding\n * @param runs - Array of [runLength, deltaValue] pairs, where first value is the base\n */\nexport function encodeInt32DeltaRleColumn(runs: Array<[number, number]>): Uint8Array {\n const runLengths: number[] = [];\n const values: number[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(runLength);\n values.push(encodeZigZagInt32Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt32(new Int32Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.DELTA,\n LogicalLevelTechnique.RLE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable INT_32 values\n */\nexport function encodeInt32NullableColumn(values: (number | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is number => v !== null);\n const zigzagEncoded = new Int32Array(nonNullValues.map((v) => encodeZigZagInt32Value(v)));\n const encodedData = encodeVarintInt32(zigzagEncoded);\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n // Nullability stream\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes UINT_32 values (no zigzag encoding)\n */\nexport function encodeUint32Column(values: Uint32Array): Uint8Array {\n const encodedData = encodeVarintInt32(new Int32Array(values));\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with NONE encoding\n */\nexport function encodeInt64NoneColumn(values: BigInt64Array): Uint8Array {\n const zigzagEncoded = new BigUint64Array(Array.from(values, (val) => encodeZigZagInt64Value(val)));\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with DELTA encoding\n */\nexport function encodeInt64DeltaColumn(values: BigInt64Array): Uint8Array {\n const deltaEncoded = new BigInt64Array(values.length);\n deltaEncoded[0] = values[0];\n for (let i = 1; i < values.length; i++) {\n deltaEncoded[i] = values[i] - values[i - 1];\n }\n\n const zigzagEncoded = new BigUint64Array(deltaEncoded.length);\n for (let i = 0; i < deltaEncoded.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt64Value(deltaEncoded[i]);\n }\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with RLE encoding\n */\nexport function encodeInt64RleColumn(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt64(new BigUint64Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.RLE,\n LogicalLevelTechnique.NONE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with DELTA+RLE encoding\n */\nexport function encodeInt64DeltaRleColumn(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt64(new BigUint64Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.DELTA,\n LogicalLevelTechnique.RLE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable INT_64 values\n */\nexport function encodeInt64NullableColumn(values: (bigint | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is bigint => v !== null);\n const zigzagEncoded = new BigUint64Array(Array.from(nonNullValues, (val) => encodeZigZagInt64Value(val)));\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes UINT_64 values (no zigzag encoding)\n */\nexport function encodeUint64Column(values: BigUint64Array): Uint8Array {\n const encodedData = encodeVarintInt64(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable UINT_64 values\n */\nexport function encodeUint64NullableColumn(values: (bigint | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is bigint => v !== null);\n const encodedData = encodeVarintInt64(new BigUint64Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes FLOAT values\n */\nexport function encodeFloatColumn(values: Float32Array): Uint8Array {\n const encodedData = encodeFloatsLE(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable FLOAT values\n */\nexport function encodeFloatNullableColumn(values: (number | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is number => v !== null);\n const encodedData = encodeFloatsLE(new Float32Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes DOUBLE values\n */\nexport function encodeDoubleColumn(values: Float64Array): Uint8Array {\n const encodedData = encodeDoubleLE(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable DOUBLE values\n */\nexport function encodeDoubleNullableColumn(values: (number | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is number => v !== null);\n const encodedData = encodeDoubleLE(new Float64Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes BOOLEAN values\n */\nexport function encodeBooleanColumn(values: boolean[]): Uint8Array {\n const encodedData = encodeBooleanRle(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable BOOLEAN values\n */\nexport function encodeBooleanNullableColumn(values: (boolean | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is boolean => v !== null);\n const encodedData = encodeBooleanRle(nonNullValues);\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\nfunction createStreamMetadata(\n logicalTechnique1: LogicalLevelTechnique,\n logicalTechnique2: LogicalLevelTechnique = LogicalLevelTechnique.NONE,\n numValues = 3,\n): StreamMetadata {\n return {\n physicalStreamType: PhysicalStreamType.DATA,\n logicalStreamType: new LogicalStreamType(DictionaryType.NONE),\n logicalLevelTechnique1: logicalTechnique1,\n logicalLevelTechnique2: logicalTechnique2,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues,\n byteLength: 10,\n decompressedCount: numValues,\n };\n}\n\nfunction createRleMetadata(\n logicalTechnique1: LogicalLevelTechnique,\n logicalTechnique2: LogicalLevelTechnique,\n runs: number,\n numRleValues: number,\n): RleEncodedStreamMetadata {\n return {\n physicalStreamType: PhysicalStreamType.DATA,\n logicalStreamType: new LogicalStreamType(DictionaryType.NONE),\n logicalLevelTechnique1: logicalTechnique1,\n logicalLevelTechnique2: logicalTechnique2,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues: runs * 2,\n byteLength: 10,\n decompressedCount: numRleValues,\n runs,\n numRleValues,\n };\n}\n\nfunction buildEncodedStream(\n streamMetadata: StreamMetadata | RleEncodedStreamMetadata,\n encodedData: Uint8Array,\n): Uint8Array {\n const updatedMetadata = {\n ...streamMetadata,\n byteLength: encodedData.length,\n };\n\n const metadataBuffer = encodeStreamMetadata(updatedMetadata);\n const result = new Uint8Array(metadataBuffer.length + encodedData.length);\n result.set(metadataBuffer, 0);\n result.set(encodedData, metadataBuffer.length);\n\n return result;\n}\n\nfunction encodeStreamMetadata(metadata: StreamMetadata | RleEncodedStreamMetadata): Uint8Array {\n const buffer = new Uint8Array(100);\n let writeOffset = 0;\n\n // Byte 1: Stream type\n const physicalTypeIndex = Object.values(PhysicalStreamType).indexOf(metadata.physicalStreamType);\n const lowerNibble = 0; // For DATA stream with NONE dictionary type\n buffer[writeOffset++] = (physicalTypeIndex << 4) | lowerNibble;\n\n // Byte 2: Encoding techniques\n const llt1Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique1);\n const llt2Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique2);\n const pltIndex = Object.values(PhysicalLevelTechnique).indexOf(metadata.physicalLevelTechnique);\n buffer[writeOffset++] = (llt1Index << 5) | (llt2Index << 2) | pltIndex;\n\n // Variable-length fields\n const offset = new IntWrapper(writeOffset);\n encodeVarintInt32Value(metadata.numValues, buffer, offset);\n encodeVarintInt32Value(metadata.byteLength, buffer, offset);\n\n // RLE-specific fields\n if (isRleMetadata(metadata)) {\n encodeVarintInt32Value(metadata.runs, buffer, offset);\n encodeVarintInt32Value(metadata.numRleValues, buffer, offset);\n }\n\n return buffer.slice(0, offset.get());\n}\n\nfunction isRleMetadata(metadata: StreamMetadata | RleEncodedStreamMetadata): metadata is RleEncodedStreamMetadata {\n return \"runs\" in metadata && \"numRleValues\" in metadata;\n}\n\nfunction concatenateBuffers(...buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((sum, buf) => sum + buf.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n\n for (const buffer of buffers) {\n result.set(buffer, offset);\n offset += buffer.length;\n }\n\n return result;\n}\n"]}
|
|
@@ -147,13 +147,13 @@ function getLogicalSubtypeValue(metadata) {
|
|
|
147
147
|
return 0;
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
|
-
function
|
|
150
|
+
function _encodeNumStreams(numStreams) {
|
|
151
151
|
const buffer = new Uint8Array(5);
|
|
152
152
|
const offset = new IntWrapper(0);
|
|
153
153
|
encodeVarintInt32Value(numStreams, buffer, offset);
|
|
154
154
|
return buffer.slice(0, offset.get());
|
|
155
155
|
}
|
|
156
|
-
function
|
|
156
|
+
function _createPresentStream(presentValues) {
|
|
157
157
|
const metadata = {
|
|
158
158
|
physicalStreamType: PhysicalStreamType.PRESENT,
|
|
159
159
|
logicalStreamType: new LogicalStreamType(DictionaryType.NONE),
|
|
@@ -166,7 +166,7 @@ function createPresentStream(presentValues) {
|
|
|
166
166
|
};
|
|
167
167
|
return buildEncodedStream(metadata, encodeBooleanRle(presentValues));
|
|
168
168
|
}
|
|
169
|
-
function
|
|
169
|
+
function _createOffsetStream(offsetIndices) {
|
|
170
170
|
const metadata = {
|
|
171
171
|
physicalStreamType: PhysicalStreamType.OFFSET,
|
|
172
172
|
logicalStreamType: new LogicalStreamType(undefined, OffsetType.STRING),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stringEncoder.js","sourceRoot":"","sources":["../../src/encoding/stringEncoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { LogicalStreamType } from \"../metadata/tile/logicalStreamType\";\nimport { DictionaryType } from \"../metadata/tile/dictionaryType\";\nimport { LengthType } from \"../metadata/tile/lengthType\";\nimport { OffsetType } from \"../metadata/tile/offsetType\";\nimport { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport type { StreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport IntWrapper from \"../decoding/intWrapper\";\nimport { encodeBooleanRle, encodeStrings, createStringLengths, concatenateBuffers } from \"./encodingUtils\";\nimport { encodeVarintInt32Value, encodeVarintInt32 } from \"./integerEncodingUtils\";\n\n/**\n * Encodes plain strings into a complete stream with PRESENT (if needed), LENGTH, and DATA streams.\n * @param strings - Array of strings (can include null values)\n * @returns Encoded Uint8Array that can be passed to decodeString\n */\nexport function encodePlainStrings(strings: (string | null)[]): Uint8Array {\n const hasNull = strings.some((s) => s === null);\n const nonNullStrings = strings.filter((s): s is string => s !== null);\n const stringBytes = encodeStrings(nonNullStrings);\n\n const streams: Uint8Array[] = [];\n\n // Add PRESENT stream if nulls exist\n if (hasNull) {\n const nullabilityValues = strings.map((s) => s !== null);\n streams.push(\n createStream(PhysicalStreamType.PRESENT, encodeBooleanRle(nullabilityValues), {\n technique: PhysicalLevelTechnique.VARINT,\n count: nullabilityValues.length,\n }),\n );\n }\n\n // Add LENGTH stream\n const lengths = createStringLengths(nonNullStrings);\n streams.push(\n createStream(PhysicalStreamType.LENGTH, encodeVarintInt32(new Int32Array(lengths)), {\n logical: new LogicalStreamType(undefined, undefined, LengthType.VAR_BINARY),\n technique: PhysicalLevelTechnique.VARINT,\n count: lengths.length,\n }),\n );\n\n // Add DATA stream\n streams.push(\n createStream(PhysicalStreamType.DATA, stringBytes, {\n logical: new LogicalStreamType(DictionaryType.NONE),\n }),\n );\n\n return concatenateBuffers(...streams);\n}\n\n/**\n * Encodes dictionary-compressed strings into a complete stream.\n * @param strings - Array of strings (can include null values)\n * @returns Encoded Uint8Array that can be passed to decodeString\n */\nexport function encodeDictionaryStrings(strings: (string | null)[]): Uint8Array {\n const hasNull = strings.some((s) => s === null);\n const nonNullStrings = strings.filter((s): s is string => s !== null);\n\n // Create dictionary of unique strings\n const uniqueStrings = Array.from(new Set(nonNullStrings));\n const stringMap = new Map(uniqueStrings.map((s, i) => [s, i]));\n const offsets = nonNullStrings.map((s) => {\n const offset = stringMap.get(s);\n if (offset === undefined) {\n throw new Error(`String not found in dictionary: ${s}`);\n }\n return offset;\n });\n\n const stringBytes = encodeStrings(uniqueStrings);\n const lengths = createStringLengths(uniqueStrings);\n\n const streams: Uint8Array[] = [];\n\n // Add PRESENT stream if nulls exist\n if (hasNull) {\n const nullabilityValues = strings.map((s) => s !== null);\n streams.push(\n createStream(PhysicalStreamType.PRESENT, encodeBooleanRle(nullabilityValues), {\n technique: PhysicalLevelTechnique.VARINT,\n count: nullabilityValues.length,\n }),\n );\n }\n\n // Add OFFSET stream\n streams.push(\n createStream(PhysicalStreamType.OFFSET, encodeVarintInt32(new Int32Array(offsets)), {\n logical: new LogicalStreamType(undefined, OffsetType.STRING),\n technique: PhysicalLevelTechnique.VARINT,\n count: offsets.length,\n }),\n );\n\n // Add LENGTH stream (for dictionary)\n streams.push(\n createStream(PhysicalStreamType.LENGTH, encodeVarintInt32(new Int32Array(lengths)), {\n logical: new LogicalStreamType(undefined, undefined, LengthType.DICTIONARY),\n technique: PhysicalLevelTechnique.VARINT,\n count: lengths.length,\n }),\n );\n\n // Add DATA stream\n streams.push(\n createStream(PhysicalStreamType.DATA, stringBytes, {\n logical: new LogicalStreamType(DictionaryType.SINGLE),\n }),\n );\n\n return concatenateBuffers(...streams);\n}\n\nfunction createStream(\n physicalType: PhysicalStreamType,\n data: Uint8Array,\n options: {\n logical?: LogicalStreamType;\n technique?: PhysicalLevelTechnique;\n count?: number;\n } = {},\n): Uint8Array {\n const count = options.count ?? 0;\n return buildEncodedStream(\n {\n physicalStreamType: physicalType,\n logicalStreamType: options.logical ?? new LogicalStreamType(),\n logicalLevelTechnique1: LogicalLevelTechnique.NONE,\n logicalLevelTechnique2: LogicalLevelTechnique.NONE,\n physicalLevelTechnique: options.technique ?? PhysicalLevelTechnique.NONE,\n numValues: count,\n byteLength: data.length,\n decompressedCount: count,\n },\n data,\n );\n}\n\nfunction buildEncodedStream(streamMetadata: StreamMetadata, encodedData: Uint8Array): Uint8Array {\n const updatedMetadata = {\n ...streamMetadata,\n byteLength: encodedData.length,\n };\n\n const metadataBuffer = encodeStreamMetadata(updatedMetadata);\n const result = new Uint8Array(metadataBuffer.length + encodedData.length);\n result.set(metadataBuffer, 0);\n result.set(encodedData, metadataBuffer.length);\n\n return result;\n}\n\nfunction encodeStreamMetadata(metadata: StreamMetadata): Uint8Array {\n const buffer = new Uint8Array(100);\n let writeOffset = 0;\n\n // Byte 1: Stream type\n const physicalTypeIndex = Object.values(PhysicalStreamType).indexOf(metadata.physicalStreamType);\n const lowerNibble = getLogicalSubtypeValue(metadata);\n buffer[writeOffset++] = (physicalTypeIndex << 4) | lowerNibble;\n\n // Byte 2: Encoding techniques\n const llt1Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique1);\n const llt2Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique2);\n const pltIndex = Object.values(PhysicalLevelTechnique).indexOf(metadata.physicalLevelTechnique);\n buffer[writeOffset++] = (llt1Index << 5) | (llt2Index << 2) | pltIndex;\n\n // Variable-length fields\n const offset = new IntWrapper(writeOffset);\n encodeVarintInt32Value(metadata.numValues, buffer, offset);\n encodeVarintInt32Value(metadata.byteLength, buffer, offset);\n\n return buffer.slice(0, offset.get());\n}\n\nfunction getLogicalSubtypeValue(metadata: StreamMetadata): number {\n const { physicalStreamType, logicalStreamType } = metadata;\n\n switch (physicalStreamType) {\n case PhysicalStreamType.DATA:\n return logicalStreamType.dictionaryType !== undefined\n ? Object.values(DictionaryType).indexOf(logicalStreamType.dictionaryType)\n : 0;\n case PhysicalStreamType.OFFSET:\n return logicalStreamType.offsetType !== undefined\n ? Object.values(OffsetType).indexOf(logicalStreamType.offsetType)\n : 0;\n case PhysicalStreamType.LENGTH:\n return logicalStreamType.lengthType !== undefined\n ? Object.values(LengthType).indexOf(logicalStreamType.lengthType)\n : 0;\n default:\n return 0;\n }\n}\n\nfunction encodeNumStreams(numStreams: number): Uint8Array {\n const buffer = new Uint8Array(5);\n const offset = new IntWrapper(0);\n encodeVarintInt32Value(numStreams, buffer, offset);\n return buffer.slice(0, offset.get());\n}\n\nfunction createPresentStream(presentValues: boolean[]): Uint8Array {\n const metadata: StreamMetadata = {\n physicalStreamType: PhysicalStreamType.PRESENT,\n logicalStreamType: new LogicalStreamType(DictionaryType.NONE),\n logicalLevelTechnique1: LogicalLevelTechnique.NONE,\n logicalLevelTechnique2: LogicalLevelTechnique.NONE,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues: presentValues.length,\n byteLength: 0,\n decompressedCount: presentValues.length,\n };\n return buildEncodedStream(metadata, encodeBooleanRle(presentValues));\n}\n\nfunction createOffsetStream(offsetIndices: number[]): Uint8Array {\n const metadata: StreamMetadata = {\n physicalStreamType: PhysicalStreamType.OFFSET,\n logicalStreamType: new LogicalStreamType(undefined, OffsetType.STRING),\n logicalLevelTechnique1: LogicalLevelTechnique.NONE,\n logicalLevelTechnique2: LogicalLevelTechnique.NONE,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues: offsetIndices.length,\n byteLength: 0,\n decompressedCount: offsetIndices.length,\n };\n return buildEncodedStream(metadata, encodeVarintInt32(new Int32Array(offsetIndices)));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"stringEncoder.js","sourceRoot":"","sources":["../../src/encoding/stringEncoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { LogicalStreamType } from \"../metadata/tile/logicalStreamType\";\nimport { DictionaryType } from \"../metadata/tile/dictionaryType\";\nimport { LengthType } from \"../metadata/tile/lengthType\";\nimport { OffsetType } from \"../metadata/tile/offsetType\";\nimport { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport type { StreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport IntWrapper from \"../decoding/intWrapper\";\nimport { encodeBooleanRle, encodeStrings, createStringLengths, concatenateBuffers } from \"./encodingUtils\";\nimport { encodeVarintInt32Value, encodeVarintInt32 } from \"./integerEncodingUtils\";\n\n/**\n * Encodes plain strings into a complete stream with PRESENT (if needed), LENGTH, and DATA streams.\n * @param strings - Array of strings (can include null values)\n * @returns Encoded Uint8Array that can be passed to decodeString\n */\nexport function encodePlainStrings(strings: (string | null)[]): Uint8Array {\n const hasNull = strings.some((s) => s === null);\n const nonNullStrings = strings.filter((s): s is string => s !== null);\n const stringBytes = encodeStrings(nonNullStrings);\n\n const streams: Uint8Array[] = [];\n\n // Add PRESENT stream if nulls exist\n if (hasNull) {\n const nullabilityValues = strings.map((s) => s !== null);\n streams.push(\n createStream(PhysicalStreamType.PRESENT, encodeBooleanRle(nullabilityValues), {\n technique: PhysicalLevelTechnique.VARINT,\n count: nullabilityValues.length,\n }),\n );\n }\n\n // Add LENGTH stream\n const lengths = createStringLengths(nonNullStrings);\n streams.push(\n createStream(PhysicalStreamType.LENGTH, encodeVarintInt32(new Int32Array(lengths)), {\n logical: new LogicalStreamType(undefined, undefined, LengthType.VAR_BINARY),\n technique: PhysicalLevelTechnique.VARINT,\n count: lengths.length,\n }),\n );\n\n // Add DATA stream\n streams.push(\n createStream(PhysicalStreamType.DATA, stringBytes, {\n logical: new LogicalStreamType(DictionaryType.NONE),\n }),\n );\n\n return concatenateBuffers(...streams);\n}\n\n/**\n * Encodes dictionary-compressed strings into a complete stream.\n * @param strings - Array of strings (can include null values)\n * @returns Encoded Uint8Array that can be passed to decodeString\n */\nexport function encodeDictionaryStrings(strings: (string | null)[]): Uint8Array {\n const hasNull = strings.some((s) => s === null);\n const nonNullStrings = strings.filter((s): s is string => s !== null);\n\n // Create dictionary of unique strings\n const uniqueStrings = Array.from(new Set(nonNullStrings));\n const stringMap = new Map(uniqueStrings.map((s, i) => [s, i]));\n const offsets = nonNullStrings.map((s) => {\n const offset = stringMap.get(s);\n if (offset === undefined) {\n throw new Error(`String not found in dictionary: ${s}`);\n }\n return offset;\n });\n\n const stringBytes = encodeStrings(uniqueStrings);\n const lengths = createStringLengths(uniqueStrings);\n\n const streams: Uint8Array[] = [];\n\n // Add PRESENT stream if nulls exist\n if (hasNull) {\n const nullabilityValues = strings.map((s) => s !== null);\n streams.push(\n createStream(PhysicalStreamType.PRESENT, encodeBooleanRle(nullabilityValues), {\n technique: PhysicalLevelTechnique.VARINT,\n count: nullabilityValues.length,\n }),\n );\n }\n\n // Add OFFSET stream\n streams.push(\n createStream(PhysicalStreamType.OFFSET, encodeVarintInt32(new Int32Array(offsets)), {\n logical: new LogicalStreamType(undefined, OffsetType.STRING),\n technique: PhysicalLevelTechnique.VARINT,\n count: offsets.length,\n }),\n );\n\n // Add LENGTH stream (for dictionary)\n streams.push(\n createStream(PhysicalStreamType.LENGTH, encodeVarintInt32(new Int32Array(lengths)), {\n logical: new LogicalStreamType(undefined, undefined, LengthType.DICTIONARY),\n technique: PhysicalLevelTechnique.VARINT,\n count: lengths.length,\n }),\n );\n\n // Add DATA stream\n streams.push(\n createStream(PhysicalStreamType.DATA, stringBytes, {\n logical: new LogicalStreamType(DictionaryType.SINGLE),\n }),\n );\n\n return concatenateBuffers(...streams);\n}\n\nfunction createStream(\n physicalType: PhysicalStreamType,\n data: Uint8Array,\n options: {\n logical?: LogicalStreamType;\n technique?: PhysicalLevelTechnique;\n count?: number;\n } = {},\n): Uint8Array {\n const count = options.count ?? 0;\n return buildEncodedStream(\n {\n physicalStreamType: physicalType,\n logicalStreamType: options.logical ?? new LogicalStreamType(),\n logicalLevelTechnique1: LogicalLevelTechnique.NONE,\n logicalLevelTechnique2: LogicalLevelTechnique.NONE,\n physicalLevelTechnique: options.technique ?? PhysicalLevelTechnique.NONE,\n numValues: count,\n byteLength: data.length,\n decompressedCount: count,\n },\n data,\n );\n}\n\nfunction buildEncodedStream(streamMetadata: StreamMetadata, encodedData: Uint8Array): Uint8Array {\n const updatedMetadata = {\n ...streamMetadata,\n byteLength: encodedData.length,\n };\n\n const metadataBuffer = encodeStreamMetadata(updatedMetadata);\n const result = new Uint8Array(metadataBuffer.length + encodedData.length);\n result.set(metadataBuffer, 0);\n result.set(encodedData, metadataBuffer.length);\n\n return result;\n}\n\nfunction encodeStreamMetadata(metadata: StreamMetadata): Uint8Array {\n const buffer = new Uint8Array(100);\n let writeOffset = 0;\n\n // Byte 1: Stream type\n const physicalTypeIndex = Object.values(PhysicalStreamType).indexOf(metadata.physicalStreamType);\n const lowerNibble = getLogicalSubtypeValue(metadata);\n buffer[writeOffset++] = (physicalTypeIndex << 4) | lowerNibble;\n\n // Byte 2: Encoding techniques\n const llt1Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique1);\n const llt2Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique2);\n const pltIndex = Object.values(PhysicalLevelTechnique).indexOf(metadata.physicalLevelTechnique);\n buffer[writeOffset++] = (llt1Index << 5) | (llt2Index << 2) | pltIndex;\n\n // Variable-length fields\n const offset = new IntWrapper(writeOffset);\n encodeVarintInt32Value(metadata.numValues, buffer, offset);\n encodeVarintInt32Value(metadata.byteLength, buffer, offset);\n\n return buffer.slice(0, offset.get());\n}\n\nfunction getLogicalSubtypeValue(metadata: StreamMetadata): number {\n const { physicalStreamType, logicalStreamType } = metadata;\n\n switch (physicalStreamType) {\n case PhysicalStreamType.DATA:\n return logicalStreamType.dictionaryType !== undefined\n ? Object.values(DictionaryType).indexOf(logicalStreamType.dictionaryType)\n : 0;\n case PhysicalStreamType.OFFSET:\n return logicalStreamType.offsetType !== undefined\n ? Object.values(OffsetType).indexOf(logicalStreamType.offsetType)\n : 0;\n case PhysicalStreamType.LENGTH:\n return logicalStreamType.lengthType !== undefined\n ? Object.values(LengthType).indexOf(logicalStreamType.lengthType)\n : 0;\n default:\n return 0;\n }\n}\n\nfunction _encodeNumStreams(numStreams: number): Uint8Array {\n const buffer = new Uint8Array(5);\n const offset = new IntWrapper(0);\n encodeVarintInt32Value(numStreams, buffer, offset);\n return buffer.slice(0, offset.get());\n}\n\nfunction _createPresentStream(presentValues: boolean[]): Uint8Array {\n const metadata: StreamMetadata = {\n physicalStreamType: PhysicalStreamType.PRESENT,\n logicalStreamType: new LogicalStreamType(DictionaryType.NONE),\n logicalLevelTechnique1: LogicalLevelTechnique.NONE,\n logicalLevelTechnique2: LogicalLevelTechnique.NONE,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues: presentValues.length,\n byteLength: 0,\n decompressedCount: presentValues.length,\n };\n return buildEncodedStream(metadata, encodeBooleanRle(presentValues));\n}\n\nfunction _createOffsetStream(offsetIndices: number[]): Uint8Array {\n const metadata: StreamMetadata = {\n physicalStreamType: PhysicalStreamType.OFFSET,\n logicalStreamType: new LogicalStreamType(undefined, OffsetType.STRING),\n logicalLevelTechnique1: LogicalLevelTechnique.NONE,\n logicalLevelTechnique2: LogicalLevelTechnique.NONE,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues: offsetIndices.length,\n byteLength: 0,\n decompressedCount: offsetIndices.length,\n };\n return buildEncodedStream(metadata, encodeVarintInt32(new Int32Array(offsetIndices)));\n}\n"]}
|
|
@@ -3,7 +3,7 @@ export function encodeZOrderCurve(x, y, numBits, coordinateShift) {
|
|
|
3
3
|
const shiftedY = y + coordinateShift;
|
|
4
4
|
let code = 0;
|
|
5
5
|
for (let i = 0; i < numBits; i++) {
|
|
6
|
-
code |= (shiftedX & (1 << i)) << i | (shiftedY & (1 << i)) << (i + 1);
|
|
6
|
+
code |= ((shiftedX & (1 << i)) << i) | ((shiftedY & (1 << i)) << (i + 1));
|
|
7
7
|
}
|
|
8
8
|
return code;
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zOrderCurveEncoder.js","sourceRoot":"","sources":["../../src/encoding/zOrderCurveEncoder.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,
|
|
1
|
+
{"version":3,"file":"zOrderCurveEncoder.js","sourceRoot":"","sources":["../../src/encoding/zOrderCurveEncoder.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,CAAS,EAAE,CAAS,EAAE,OAAe,EAAE,eAAuB;IAC5F,MAAM,QAAQ,GAAG,CAAC,GAAG,eAAe,CAAC;IACrC,MAAM,QAAQ,GAAG,CAAC,GAAG,eAAe,CAAC;IACrC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC","sourcesContent":["export function encodeZOrderCurve(x: number, y: number, numBits: number, coordinateShift: number): number {\n const shiftedX = x + coordinateShift;\n const shiftedY = y + coordinateShift;\n let code = 0;\n for (let i = 0; i < numBits; i++) {\n code |= ((shiftedX & (1 << i)) << i) | ((shiftedY & (1 << i)) << (i + 1));\n }\n return code;\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import type { DictionaryType } from "./dictionaryType";
|
|
2
|
+
import type { OffsetType } from "./offsetType";
|
|
3
|
+
import type { LengthType } from "./lengthType";
|
|
4
4
|
export declare class LogicalStreamType {
|
|
5
5
|
private readonly _dictionaryType?;
|
|
6
6
|
private readonly _offsetType?;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logicalStreamType.js","sourceRoot":"","sources":["../../../src/metadata/tile/logicalStreamType.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,iBAAiB;IAEL;IACA;IACA;IAHrB,YACqB,eAAgC,EAChC,WAAwB,EACxB,WAAwB;QAFxB,oBAAe,GAAf,eAAe,CAAiB;QAChC,gBAAW,GAAX,WAAW,CAAa;QACxB,gBAAW,GAAX,WAAW,CAAa;IAC1C,CAAC;IAEJ,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;CACJ","sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"logicalStreamType.js","sourceRoot":"","sources":["../../../src/metadata/tile/logicalStreamType.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,iBAAiB;IAEL;IACA;IACA;IAHrB,YACqB,eAAgC,EAChC,WAAwB,EACxB,WAAwB;QAFxB,oBAAe,GAAf,eAAe,CAAiB;QAChC,gBAAW,GAAX,WAAW,CAAa;QACxB,gBAAW,GAAX,WAAW,CAAa;IAC1C,CAAC;IAEJ,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;CACJ","sourcesContent":["import type { DictionaryType } from \"./dictionaryType\";\nimport type { OffsetType } from \"./offsetType\";\nimport type { LengthType } from \"./lengthType\";\n\nexport class LogicalStreamType {\n constructor(\n private readonly _dictionaryType?: DictionaryType,\n private readonly _offsetType?: OffsetType,\n private readonly _lengthType?: LengthType,\n ) {}\n\n get dictionaryType(): DictionaryType | undefined {\n return this._dictionaryType;\n }\n\n get offsetType(): OffsetType | undefined {\n return this._offsetType;\n }\n\n get lengthType(): LengthType | undefined {\n return this._lengthType;\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type IntWrapper from "../../decoding/intWrapper";
|
|
2
|
-
import {
|
|
2
|
+
import type { Field, TileSetMetadata } from "./tilesetMetadata";
|
|
3
3
|
/**
|
|
4
4
|
* Decodes a Field used as part of complex types (STRUCT children).
|
|
5
5
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embeddedTilesetMetadataDecoder.js","sourceRoot":"","sources":["../../../src/metadata/tileset/embeddedTilesetMetadataDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import type IntWrapper from \"../../decoding/intWrapper\";\nimport { decodeVarintInt32 } from \"../../decoding/integerDecodingUtils\";\nimport {
|
|
1
|
+
{"version":3,"file":"embeddedTilesetMetadataDecoder.js","sourceRoot":"","sources":["../../../src/metadata/tileset/embeddedTilesetMetadataDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import type IntWrapper from \"../../decoding/intWrapper\";\nimport { decodeVarintInt32 } from \"../../decoding/integerDecodingUtils\";\nimport type { Column, FeatureTableSchema, Field, TileSetMetadata } from \"./tilesetMetadata\";\nimport { columnTypeHasChildren, columnTypeHasName, decodeColumnType } from \"./typeMap\";\n\nconst textDecoder = new TextDecoder();\n\nconst SUPPORTED_COLUMN_TYPES = \"0-3(ID), 4(GEOMETRY), 10-29(scalars), 30(STRUCT)\";\nconst SUPPORTED_FIELD_TYPES = \"10-29(scalars), 30(STRUCT)\";\n\n/**\n * Decodes a length-prefixed UTF-8 string.\n * Layout: [len: varint32][bytes: len]\n */\nfunction decodeString(src: Uint8Array, offset: IntWrapper): string {\n const length = decodeVarintInt32(src, offset, 1)[0];\n if (length === 0) {\n return \"\";\n }\n const start = offset.get();\n const end = start + length;\n const view = src.subarray(start, end);\n offset.add(length);\n return textDecoder.decode(view);\n}\n\n/**\n * Converts a Column to a Field.\n * Used when decoding Field metadata which has the same format as Column.\n */\nfunction columnToField(column: Column): Field {\n return {\n name: column.name,\n nullable: column.nullable,\n scalarField: column.scalarType,\n complexField: column.complexType,\n type: column.type === \"scalarType\" ? \"scalarField\" : \"complexField\",\n };\n}\n\n/**\n * Decodes a Field used as part of complex types (STRUCT children).\n */\nexport function decodeField(src: Uint8Array, offset: IntWrapper): Field {\n const typeCode = decodeVarintInt32(src, offset, 1)[0] >>> 0;\n\n if (typeCode < 10 || typeCode > 30) {\n throw new Error(`Unsupported field type code ${typeCode}. Supported: ${SUPPORTED_FIELD_TYPES}`);\n }\n\n const column = decodeColumnType(typeCode);\n\n if (columnTypeHasName(typeCode)) {\n column.name = decodeString(src, offset);\n }\n\n if (columnTypeHasChildren(typeCode)) {\n const childCount = decodeVarintInt32(src, offset, 1)[0] >>> 0;\n column.complexType.children = new Array(childCount);\n for (let i = 0; i < childCount; i++) {\n column.complexType.children[i] = decodeField(src, offset);\n }\n }\n\n return columnToField(column);\n}\n\n/**\n * The typeCode encodes the column type, nullable flag, and whether it has name/children.\n */\nfunction decodeColumn(src: Uint8Array, offset: IntWrapper): Column {\n const typeCode = decodeVarintInt32(src, offset, 1)[0] >>> 0;\n const column = decodeColumnType(typeCode);\n\n if (!column) {\n throw new Error(`Unsupported column type code ${typeCode}. Supported: ${SUPPORTED_COLUMN_TYPES}`);\n }\n\n if (columnTypeHasName(typeCode)) {\n column.name = decodeString(src, offset);\n } else {\n // ID and GEOMETRY columns have implicit names\n if (typeCode >= 0 && typeCode <= 3) {\n column.name = \"id\";\n } else if (typeCode === 4) {\n column.name = \"geometry\";\n }\n }\n\n if (columnTypeHasChildren(typeCode)) {\n // Only STRUCT (typeCode 30) has children\n const childCount = decodeVarintInt32(src, offset, 1)[0] >>> 0;\n const complexCol = column.complexType;\n complexCol.children = new Array(childCount);\n for (let i = 0; i < childCount; i++) {\n complexCol.children[i] = decodeField(src, offset);\n }\n }\n\n return column;\n}\n\n/**\n * Top-level decoder for embedded tileset metadata.\n * Reads exactly ONE FeatureTableSchema from the stream.\n *\n * @param bytes The byte array containing the metadata\n * @param offset The current offset in the byte array (will be advanced)\n */\nexport function decodeEmbeddedTileSetMetadata(bytes: Uint8Array, offset: IntWrapper): [TileSetMetadata, number] {\n const meta = {} as TileSetMetadata;\n meta.featureTables = [];\n\n const table = {} as FeatureTableSchema;\n table.name = decodeString(bytes, offset);\n const extent = decodeVarintInt32(bytes, offset, 1)[0] >>> 0;\n\n const columnCount = decodeVarintInt32(bytes, offset, 1)[0] >>> 0;\n table.columns = new Array(columnCount);\n for (let j = 0; j < columnCount; j++) {\n table.columns[j] = decodeColumn(bytes, offset);\n }\n\n meta.featureTables.push(table);\n\n return [meta, extent];\n}\n"]}
|
|
@@ -9,7 +9,13 @@ import { type Column } from "./tilesetMetadata";
|
|
|
9
9
|
*/
|
|
10
10
|
/**
|
|
11
11
|
* Decodes a type code into a Column structure.
|
|
12
|
-
*
|
|
12
|
+
*
|
|
13
|
+
* ID type codes (0..3):
|
|
14
|
+
* - Bit 0: nullable
|
|
15
|
+
* - Bit 1: longID (0/1 -> uint32 IDs, 2/3 -> uint64 IDs)
|
|
16
|
+
*
|
|
17
|
+
* ID columns are kept as logical types so they remain distinguishable
|
|
18
|
+
* from feature properties that may also be named "id".
|
|
13
19
|
*/
|
|
14
20
|
export declare function decodeColumnType(typeCode: number): Column | null;
|
|
15
21
|
/**
|
|
@@ -25,6 +31,8 @@ export declare function columnTypeHasName(typeCode: number): boolean;
|
|
|
25
31
|
export declare function columnTypeHasChildren(typeCode: number): boolean;
|
|
26
32
|
/**
|
|
27
33
|
* Determines if a stream count needs to be read for this column.
|
|
28
|
-
* Mirrors the logic in cpp/include/mlt/metadata/type_map.hpp lines
|
|
34
|
+
* Mirrors the logic in cpp/include/mlt/metadata/type_map.hpp lines 85-122
|
|
29
35
|
*/
|
|
30
36
|
export declare function hasStreamCount(column: Column): boolean;
|
|
37
|
+
export declare function isLogicalIdColumn(column: Column): boolean;
|
|
38
|
+
export declare function isGeometryColumn(column: Column): boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ColumnScope, ComplexType, ScalarType, } from "./tilesetMetadata";
|
|
1
|
+
import { ColumnScope, ComplexType, LogicalScalarType, ScalarType, } from "./tilesetMetadata";
|
|
2
2
|
/**
|
|
3
3
|
* The type code is a single varint32 that encodes:
|
|
4
4
|
* - Physical or logical type
|
|
@@ -9,7 +9,13 @@ import { ColumnScope, ComplexType, ScalarType, } from "./tilesetMetadata";
|
|
|
9
9
|
*/
|
|
10
10
|
/**
|
|
11
11
|
* Decodes a type code into a Column structure.
|
|
12
|
-
*
|
|
12
|
+
*
|
|
13
|
+
* ID type codes (0..3):
|
|
14
|
+
* - Bit 0: nullable
|
|
15
|
+
* - Bit 1: longID (0/1 -> uint32 IDs, 2/3 -> uint64 IDs)
|
|
16
|
+
*
|
|
17
|
+
* ID columns are kept as logical types so they remain distinguishable
|
|
18
|
+
* from feature properties that may also be named "id".
|
|
13
19
|
*/
|
|
14
20
|
export function decodeColumnType(typeCode) {
|
|
15
21
|
switch (typeCode) {
|
|
@@ -17,15 +23,13 @@ export function decodeColumnType(typeCode) {
|
|
|
17
23
|
case 1:
|
|
18
24
|
case 2:
|
|
19
25
|
case 3: {
|
|
20
|
-
// ID columns: 0=uint32, 1=uint64, 2=nullable uint32, 3=nullable uint64
|
|
21
26
|
const column = {};
|
|
22
|
-
column.nullable = (typeCode & 1) !== 0;
|
|
27
|
+
column.nullable = (typeCode & 1) !== 0;
|
|
23
28
|
column.columnScope = ColumnScope.FEATURE;
|
|
24
29
|
const scalarCol = {};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
scalarCol.
|
|
28
|
-
scalarCol.type = "physicalType";
|
|
30
|
+
scalarCol.type = "logicalType";
|
|
31
|
+
scalarCol.logicalType = LogicalScalarType.ID;
|
|
32
|
+
scalarCol.longID = (typeCode & 2) !== 0;
|
|
29
33
|
column.scalarType = scalarCol;
|
|
30
34
|
column.type = "scalarType";
|
|
31
35
|
return column;
|
|
@@ -75,13 +79,9 @@ export function columnTypeHasChildren(typeCode) {
|
|
|
75
79
|
}
|
|
76
80
|
/**
|
|
77
81
|
* Determines if a stream count needs to be read for this column.
|
|
78
|
-
* Mirrors the logic in cpp/include/mlt/metadata/type_map.hpp lines
|
|
82
|
+
* Mirrors the logic in cpp/include/mlt/metadata/type_map.hpp lines 85-122
|
|
79
83
|
*/
|
|
80
84
|
export function hasStreamCount(column) {
|
|
81
|
-
// ID columns don't have stream count (identified by name)
|
|
82
|
-
if (column.name === "id") {
|
|
83
|
-
return false;
|
|
84
|
-
}
|
|
85
85
|
if (column.type === "scalarType") {
|
|
86
86
|
const scalarCol = column.scalarType;
|
|
87
87
|
if (scalarCol.type === "physicalType") {
|
|
@@ -103,7 +103,7 @@ export function hasStreamCount(column) {
|
|
|
103
103
|
return false;
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
|
-
|
|
106
|
+
if (scalarCol.type === "logicalType") {
|
|
107
107
|
return false;
|
|
108
108
|
}
|
|
109
109
|
}
|
|
@@ -123,13 +123,23 @@ export function hasStreamCount(column) {
|
|
|
123
123
|
console.warn("Unexpected column type in hasStreamCount", column);
|
|
124
124
|
return false;
|
|
125
125
|
}
|
|
126
|
+
export function isLogicalIdColumn(column) {
|
|
127
|
+
return (column.type === "scalarType" &&
|
|
128
|
+
column.scalarType?.type === "logicalType" &&
|
|
129
|
+
column.scalarType.logicalType === LogicalScalarType.ID);
|
|
130
|
+
}
|
|
131
|
+
export function isGeometryColumn(column) {
|
|
132
|
+
return (column.type === "complexType" &&
|
|
133
|
+
column.complexType?.type === "physicalType" &&
|
|
134
|
+
column.complexType.physicalType === ComplexType.GEOMETRY);
|
|
135
|
+
}
|
|
126
136
|
/**
|
|
127
137
|
* Maps a scalar type code to a Column with ScalarType.
|
|
128
138
|
* Type codes 10-29 encode scalar types with nullable flag.
|
|
129
139
|
* Even codes are non-nullable, odd codes are nullable.
|
|
130
140
|
*/
|
|
131
141
|
function mapScalarType(typeCode) {
|
|
132
|
-
let scalarType
|
|
142
|
+
let scalarType;
|
|
133
143
|
switch (typeCode) {
|
|
134
144
|
case 10:
|
|
135
145
|
case 11:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeMap.js","sourceRoot":"","sources":["../../../src/metadata/tileset/typeMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,WAAW,EAEX,WAAW,EAEX,UAAU,GACb,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;GAOG;AAEH;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC7C,QAAQ,QAAQ,EAAE,CAAC;QACf,KAAK,CAAC,CAAC;QACP,KAAK,CAAC,CAAC;QACP,KAAK,CAAC,CAAC;QACP,KAAK,CAAC,CAAC,CAAC,CAAC;YACL,uEAAuE;YACvE,MAAM,MAAM,GAAG,EAAY,CAAC;YAC5B,MAAM,CAAC,QAAQ,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB;YAC5D,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;YACzC,MAAM,SAAS,GAAG,EAAkB,CAAC;YACrC,yEAAyE;YACzE,MAAM,YAAY,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,iBAAiB;YAC9F,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC;YACtC,SAAS,CAAC,IAAI,GAAG,cAAc,CAAC;YAChC,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;YAC9B,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC;YAC3B,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,KAAK,CAAC,CAAC,CAAC,CAAC;YACL,uCAAuC;YACvC,MAAM,MAAM,GAAG,EAAY,CAAC;YAC5B,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;YACzC,MAAM,UAAU,GAAG,EAAmB,CAAC;YACvC,UAAU,CAAC,IAAI,GAAG,cAAc,CAAC;YACjC,UAAU,CAAC,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC;YAC/C,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC;YAC5B,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC;YAChC,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,KAAK,EAAE,CAAC,CAAC,CAAC;YACN,sCAAsC;YACtC,MAAM,MAAM,GAAG,EAAY,CAAC;YAC5B,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;YACzC,MAAM,UAAU,GAAG,EAAmB,CAAC;YACvC,UAAU,CAAC,IAAI,GAAG,cAAc,CAAC;YACjC,UAAU,CAAC,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC;YAC7C,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC;YAC5B,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC;YAChC,OAAO,MAAM,CAAC;QAClB,CAAC;QACD;YACI,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAC9C,OAAO,QAAQ,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IAClD,OAAO,QAAQ,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IACzC,0DAA0D;IAC1D,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;QAEpC,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACpC,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;YAC5C,QAAQ,YAAY,EAAE,CAAC;gBACnB,KAAK,UAAU,CAAC,OAAO,CAAC;gBACxB,KAAK,UAAU,CAAC,KAAK,CAAC;gBACtB,KAAK,UAAU,CAAC,MAAM,CAAC;gBACvB,KAAK,UAAU,CAAC,MAAM,CAAC;gBACvB,KAAK,UAAU,CAAC,OAAO,CAAC;gBACxB,KAAK,UAAU,CAAC,MAAM,CAAC;gBACvB,KAAK,UAAU,CAAC,OAAO,CAAC;gBACxB,KAAK,UAAU,CAAC,KAAK,CAAC;gBACtB,KAAK,UAAU,CAAC,MAAM;oBAClB,OAAO,KAAK,CAAC;gBACjB,KAAK,UAAU,CAAC,MAAM;oBAClB,OAAO,IAAI,CAAC;gBAChB;oBACI,OAAO,KAAK,CAAC;YACrB,CAAC;QACL,CAAC;aAAM,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QAEtC,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;YAC7C,QAAQ,YAAY,EAAE,CAAC;gBACnB,KAAK,WAAW,CAAC,QAAQ,CAAC;gBAC1B,KAAK,WAAW,CAAC,MAAM;oBACnB,OAAO,IAAI,CAAC;gBAChB;oBACI,OAAO,KAAK,CAAC;YACrB,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,0CAA0C,EAAE,MAAM,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,QAAgB;IACnC,IAAI,UAAU,GAAkB,IAAI,CAAC;IAErC,QAAQ,QAAQ,EAAE,CAAC;QACf,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;YAChC,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;YAC9B,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;YAC/B,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;YAC/B,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;YAChC,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;YAC/B,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;YAChC,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;YAC9B,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;YAC/B,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;YAC/B,MAAM;QACV;YACI,OAAO,IAAI,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,GAAG,EAAY,CAAC;IAC5B,MAAM,CAAC,QAAQ,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;IACzC,MAAM,SAAS,GAAG,EAAkB,CAAC;IACrC,SAAS,CAAC,IAAI,GAAG,cAAc,CAAC;IAChC,SAAS,CAAC,YAAY,GAAG,UAAU,CAAC;IACpC,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,OAAO,MAAM,CAAC;AAClB,CAAC","sourcesContent":["import {\n type Column,\n ColumnScope,\n type ComplexColumn,\n ComplexType,\n type ScalarColumn,\n ScalarType,\n} from \"./tilesetMetadata\";\n\n/**\n * The type code is a single varint32 that encodes:\n * - Physical or logical type\n * - Nullable flag\n * - Whether the column has a name (typeCode >= 10)\n * - Whether the column has children (typeCode == 30 for STRUCT)\n * - For ID types: whether it uses long (64-bit) IDs\n */\n\n/**\n * Decodes a type code into a Column structure.\n * ID columns (0-3) are represented as physical UINT_32 or UINT_64 types in TypeScript\n */\nexport function decodeColumnType(typeCode: number): Column | null {\n switch (typeCode) {\n case 0:\n case 1:\n case 2:\n case 3: {\n // ID columns: 0=uint32, 1=uint64, 2=nullable uint32, 3=nullable uint64\n const column = {} as Column;\n column.nullable = (typeCode & 1) !== 0; // Bit 0 = nullable;\n column.columnScope = ColumnScope.FEATURE;\n const scalarCol = {} as ScalarColumn;\n // Map to physical type since TS schema doesn't have LogicalScalarType.ID\n const physicalType = typeCode > 1 ? ScalarType.UINT_64 : ScalarType.UINT_32; // Bit 1 = longID\n scalarCol.physicalType = physicalType;\n scalarCol.type = \"physicalType\";\n column.scalarType = scalarCol;\n column.type = \"scalarType\";\n return column;\n }\n case 4: {\n // GEOMETRY (non-nullable, no children)\n const column = {} as Column;\n column.nullable = false;\n column.columnScope = ColumnScope.FEATURE;\n const complexCol = {} as ComplexColumn;\n complexCol.type = \"physicalType\";\n complexCol.physicalType = ComplexType.GEOMETRY;\n column.type = \"complexType\";\n column.complexType = complexCol;\n return column;\n }\n case 30: {\n // STRUCT (non-nullable with children)\n const column = {} as Column;\n column.nullable = false;\n column.columnScope = ColumnScope.FEATURE;\n const complexCol = {} as ComplexColumn;\n complexCol.type = \"physicalType\";\n complexCol.physicalType = ComplexType.STRUCT;\n column.type = \"complexType\";\n column.complexType = complexCol;\n return column;\n }\n default:\n return mapScalarType(typeCode);\n }\n}\n\n/**\n * Returns true if this type code requires a name to be stored.\n * ID (0-3) and GEOMETRY (4) columns have implicit names.\n * All other types (>= 10) require explicit names.\n */\nexport function columnTypeHasName(typeCode: number): boolean {\n return typeCode >= 10;\n}\n\n/**\n * Returns true if this type code has child fields.\n * Only STRUCT (typeCode 30) has children.\n */\nexport function columnTypeHasChildren(typeCode: number): boolean {\n return typeCode === 30;\n}\n\n/**\n * Determines if a stream count needs to be read for this column.\n * Mirrors the logic in cpp/include/mlt/metadata/type_map.hpp lines 81-118\n */\nexport function hasStreamCount(column: Column): boolean {\n // ID columns don't have stream count (identified by name)\n if (column.name === \"id\") {\n return false;\n }\n\n if (column.type === \"scalarType\") {\n const scalarCol = column.scalarType;\n\n if (scalarCol.type === \"physicalType\") {\n const physicalType = scalarCol.physicalType;\n switch (physicalType) {\n case ScalarType.BOOLEAN:\n case ScalarType.INT_8:\n case ScalarType.UINT_8:\n case ScalarType.INT_32:\n case ScalarType.UINT_32:\n case ScalarType.INT_64:\n case ScalarType.UINT_64:\n case ScalarType.FLOAT:\n case ScalarType.DOUBLE:\n return false;\n case ScalarType.STRING:\n return true;\n default:\n return false;\n }\n } else if (scalarCol.type === \"logicalType\") {\n return false;\n }\n } else if (column.type === \"complexType\") {\n const complexCol = column.complexType;\n\n if (complexCol.type === \"physicalType\") {\n const physicalType = complexCol.physicalType;\n switch (physicalType) {\n case ComplexType.GEOMETRY:\n case ComplexType.STRUCT:\n return true;\n default:\n return false;\n }\n }\n }\n\n console.warn(\"Unexpected column type in hasStreamCount\", column);\n return false;\n}\n\n/**\n * Maps a scalar type code to a Column with ScalarType.\n * Type codes 10-29 encode scalar types with nullable flag.\n * Even codes are non-nullable, odd codes are nullable.\n */\nfunction mapScalarType(typeCode: number): Column | null {\n let scalarType: number | null = null;\n\n switch (typeCode) {\n case 10:\n case 11:\n scalarType = ScalarType.BOOLEAN;\n break;\n case 12:\n case 13:\n scalarType = ScalarType.INT_8;\n break;\n case 14:\n case 15:\n scalarType = ScalarType.UINT_8;\n break;\n case 16:\n case 17:\n scalarType = ScalarType.INT_32;\n break;\n case 18:\n case 19:\n scalarType = ScalarType.UINT_32;\n break;\n case 20:\n case 21:\n scalarType = ScalarType.INT_64;\n break;\n case 22:\n case 23:\n scalarType = ScalarType.UINT_64;\n break;\n case 24:\n case 25:\n scalarType = ScalarType.FLOAT;\n break;\n case 26:\n case 27:\n scalarType = ScalarType.DOUBLE;\n break;\n case 28:\n case 29:\n scalarType = ScalarType.STRING;\n break;\n default:\n return null;\n }\n\n const column = {} as Column;\n column.nullable = (typeCode & 1) !== 0;\n column.columnScope = ColumnScope.FEATURE;\n const scalarCol = {} as ScalarColumn;\n scalarCol.type = \"physicalType\";\n scalarCol.physicalType = scalarType;\n column.type = \"scalarType\";\n column.scalarType = scalarCol;\n return column;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"typeMap.js","sourceRoot":"","sources":["../../../src/metadata/tileset/typeMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,WAAW,EAEX,WAAW,EACX,iBAAiB,EAEjB,UAAU,GACb,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;GAOG;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC7C,QAAQ,QAAQ,EAAE,CAAC;QACf,KAAK,CAAC,CAAC;QACP,KAAK,CAAC,CAAC;QACP,KAAK,CAAC,CAAC;QACP,KAAK,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,MAAM,GAAG,EAAY,CAAC;YAC5B,MAAM,CAAC,QAAQ,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;YACzC,MAAM,SAAS,GAAG,EAAkB,CAAC;YACrC,SAAS,CAAC,IAAI,GAAG,aAAa,CAAC;YAC/B,SAAS,CAAC,WAAW,GAAG,iBAAiB,CAAC,EAAE,CAAC;YAC7C,SAAS,CAAC,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;YAC9B,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC;YAC3B,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,KAAK,CAAC,CAAC,CAAC,CAAC;YACL,uCAAuC;YACvC,MAAM,MAAM,GAAG,EAAY,CAAC;YAC5B,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;YACzC,MAAM,UAAU,GAAG,EAAmB,CAAC;YACvC,UAAU,CAAC,IAAI,GAAG,cAAc,CAAC;YACjC,UAAU,CAAC,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC;YAC/C,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC;YAC5B,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC;YAChC,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,KAAK,EAAE,CAAC,CAAC,CAAC;YACN,sCAAsC;YACtC,MAAM,MAAM,GAAG,EAAY,CAAC;YAC5B,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;YACzC,MAAM,UAAU,GAAG,EAAmB,CAAC;YACvC,UAAU,CAAC,IAAI,GAAG,cAAc,CAAC;YACjC,UAAU,CAAC,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC;YAC7C,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC;YAC5B,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC;YAChC,OAAO,MAAM,CAAC;QAClB,CAAC;QACD;YACI,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAC9C,OAAO,QAAQ,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IAClD,OAAO,QAAQ,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IACzC,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;QAEpC,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACpC,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;YAC5C,QAAQ,YAAY,EAAE,CAAC;gBACnB,KAAK,UAAU,CAAC,OAAO,CAAC;gBACxB,KAAK,UAAU,CAAC,KAAK,CAAC;gBACtB,KAAK,UAAU,CAAC,MAAM,CAAC;gBACvB,KAAK,UAAU,CAAC,MAAM,CAAC;gBACvB,KAAK,UAAU,CAAC,OAAO,CAAC;gBACxB,KAAK,UAAU,CAAC,MAAM,CAAC;gBACvB,KAAK,UAAU,CAAC,OAAO,CAAC;gBACxB,KAAK,UAAU,CAAC,KAAK,CAAC;gBACtB,KAAK,UAAU,CAAC,MAAM;oBAClB,OAAO,KAAK,CAAC;gBACjB,KAAK,UAAU,CAAC,MAAM;oBAClB,OAAO,IAAI,CAAC;gBAChB;oBACI,OAAO,KAAK,CAAC;YACrB,CAAC;QACL,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QAEtC,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;YAC7C,QAAQ,YAAY,EAAE,CAAC;gBACnB,KAAK,WAAW,CAAC,QAAQ,CAAC;gBAC1B,KAAK,WAAW,CAAC,MAAM;oBACnB,OAAO,IAAI,CAAC;gBAChB;oBACI,OAAO,KAAK,CAAC;YACrB,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,0CAA0C,EAAE,MAAM,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC5C,OAAO,CACH,MAAM,CAAC,IAAI,KAAK,YAAY;QAC5B,MAAM,CAAC,UAAU,EAAE,IAAI,KAAK,aAAa;QACzC,MAAM,CAAC,UAAU,CAAC,WAAW,KAAK,iBAAiB,CAAC,EAAE,CACzD,CAAC;AACN,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC3C,OAAO,CACH,MAAM,CAAC,IAAI,KAAK,aAAa;QAC7B,MAAM,CAAC,WAAW,EAAE,IAAI,KAAK,cAAc;QAC3C,MAAM,CAAC,WAAW,CAAC,YAAY,KAAK,WAAW,CAAC,QAAQ,CAC3D,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,QAAgB;IACnC,IAAI,UAAyB,CAAC;IAE9B,QAAQ,QAAQ,EAAE,CAAC;QACf,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;YAChC,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;YAC9B,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;YAC/B,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;YAC/B,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;YAChC,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;YAC/B,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;YAChC,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;YAC9B,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;YAC/B,MAAM;QACV,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACH,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;YAC/B,MAAM;QACV;YACI,OAAO,IAAI,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,GAAG,EAAY,CAAC;IAC5B,MAAM,CAAC,QAAQ,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;IACzC,MAAM,SAAS,GAAG,EAAkB,CAAC;IACrC,SAAS,CAAC,IAAI,GAAG,cAAc,CAAC;IAChC,SAAS,CAAC,YAAY,GAAG,UAAU,CAAC;IACpC,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,OAAO,MAAM,CAAC;AAClB,CAAC","sourcesContent":["import {\n type Column,\n ColumnScope,\n type ComplexColumn,\n ComplexType,\n LogicalScalarType,\n type ScalarColumn,\n ScalarType,\n} from \"./tilesetMetadata\";\n\n/**\n * The type code is a single varint32 that encodes:\n * - Physical or logical type\n * - Nullable flag\n * - Whether the column has a name (typeCode >= 10)\n * - Whether the column has children (typeCode == 30 for STRUCT)\n * - For ID types: whether it uses long (64-bit) IDs\n */\n\n/**\n * Decodes a type code into a Column structure.\n *\n * ID type codes (0..3):\n * - Bit 0: nullable\n * - Bit 1: longID (0/1 -> uint32 IDs, 2/3 -> uint64 IDs)\n *\n * ID columns are kept as logical types so they remain distinguishable\n * from feature properties that may also be named \"id\".\n */\nexport function decodeColumnType(typeCode: number): Column | null {\n switch (typeCode) {\n case 0:\n case 1:\n case 2:\n case 3: {\n const column = {} as Column;\n column.nullable = (typeCode & 1) !== 0;\n column.columnScope = ColumnScope.FEATURE;\n const scalarCol = {} as ScalarColumn;\n scalarCol.type = \"logicalType\";\n scalarCol.logicalType = LogicalScalarType.ID;\n scalarCol.longID = (typeCode & 2) !== 0;\n column.scalarType = scalarCol;\n column.type = \"scalarType\";\n return column;\n }\n case 4: {\n // GEOMETRY (non-nullable, no children)\n const column = {} as Column;\n column.nullable = false;\n column.columnScope = ColumnScope.FEATURE;\n const complexCol = {} as ComplexColumn;\n complexCol.type = \"physicalType\";\n complexCol.physicalType = ComplexType.GEOMETRY;\n column.type = \"complexType\";\n column.complexType = complexCol;\n return column;\n }\n case 30: {\n // STRUCT (non-nullable with children)\n const column = {} as Column;\n column.nullable = false;\n column.columnScope = ColumnScope.FEATURE;\n const complexCol = {} as ComplexColumn;\n complexCol.type = \"physicalType\";\n complexCol.physicalType = ComplexType.STRUCT;\n column.type = \"complexType\";\n column.complexType = complexCol;\n return column;\n }\n default:\n return mapScalarType(typeCode);\n }\n}\n\n/**\n * Returns true if this type code requires a name to be stored.\n * ID (0-3) and GEOMETRY (4) columns have implicit names.\n * All other types (>= 10) require explicit names.\n */\nexport function columnTypeHasName(typeCode: number): boolean {\n return typeCode >= 10;\n}\n\n/**\n * Returns true if this type code has child fields.\n * Only STRUCT (typeCode 30) has children.\n */\nexport function columnTypeHasChildren(typeCode: number): boolean {\n return typeCode === 30;\n}\n\n/**\n * Determines if a stream count needs to be read for this column.\n * Mirrors the logic in cpp/include/mlt/metadata/type_map.hpp lines 85-122\n */\nexport function hasStreamCount(column: Column): boolean {\n if (column.type === \"scalarType\") {\n const scalarCol = column.scalarType;\n\n if (scalarCol.type === \"physicalType\") {\n const physicalType = scalarCol.physicalType;\n switch (physicalType) {\n case ScalarType.BOOLEAN:\n case ScalarType.INT_8:\n case ScalarType.UINT_8:\n case ScalarType.INT_32:\n case ScalarType.UINT_32:\n case ScalarType.INT_64:\n case ScalarType.UINT_64:\n case ScalarType.FLOAT:\n case ScalarType.DOUBLE:\n return false;\n case ScalarType.STRING:\n return true;\n default:\n return false;\n }\n }\n if (scalarCol.type === \"logicalType\") {\n return false;\n }\n } else if (column.type === \"complexType\") {\n const complexCol = column.complexType;\n\n if (complexCol.type === \"physicalType\") {\n const physicalType = complexCol.physicalType;\n switch (physicalType) {\n case ComplexType.GEOMETRY:\n case ComplexType.STRUCT:\n return true;\n default:\n return false;\n }\n }\n }\n\n console.warn(\"Unexpected column type in hasStreamCount\", column);\n return false;\n}\n\nexport function isLogicalIdColumn(column: Column): boolean {\n return (\n column.type === \"scalarType\" &&\n column.scalarType?.type === \"logicalType\" &&\n column.scalarType.logicalType === LogicalScalarType.ID\n );\n}\n\nexport function isGeometryColumn(column: Column): boolean {\n return (\n column.type === \"complexType\" &&\n column.complexType?.type === \"physicalType\" &&\n column.complexType.physicalType === ComplexType.GEOMETRY\n );\n}\n\n/**\n * Maps a scalar type code to a Column with ScalarType.\n * Type codes 10-29 encode scalar types with nullable flag.\n * Even codes are non-nullable, odd codes are nullable.\n */\nfunction mapScalarType(typeCode: number): Column | null {\n let scalarType: number | null;\n\n switch (typeCode) {\n case 10:\n case 11:\n scalarType = ScalarType.BOOLEAN;\n break;\n case 12:\n case 13:\n scalarType = ScalarType.INT_8;\n break;\n case 14:\n case 15:\n scalarType = ScalarType.UINT_8;\n break;\n case 16:\n case 17:\n scalarType = ScalarType.INT_32;\n break;\n case 18:\n case 19:\n scalarType = ScalarType.UINT_32;\n break;\n case 20:\n case 21:\n scalarType = ScalarType.INT_64;\n break;\n case 22:\n case 23:\n scalarType = ScalarType.UINT_64;\n break;\n case 24:\n case 25:\n scalarType = ScalarType.FLOAT;\n break;\n case 26:\n case 27:\n scalarType = ScalarType.DOUBLE;\n break;\n case 28:\n case 29:\n scalarType = ScalarType.STRING;\n break;\n default:\n return null;\n }\n\n const column = {} as Column;\n column.nullable = (typeCode & 1) !== 0;\n column.columnScope = ColumnScope.FEATURE;\n const scalarCol = {} as ScalarColumn;\n scalarCol.type = \"physicalType\";\n scalarCol.physicalType = scalarType;\n column.type = \"scalarType\";\n column.scalarType = scalarCol;\n return column;\n}\n"]}
|