@maplibre/mlt 1.1.7 → 1.1.8

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.
Files changed (133) hide show
  1. package/dist/decoding/bigEndianDecode.d.ts +1 -1
  2. package/dist/decoding/bigEndianDecode.js.map +1 -1
  3. package/dist/decoding/decodingTestUtils.d.ts +2 -2
  4. package/dist/decoding/decodingTestUtils.js +20 -21
  5. package/dist/decoding/decodingTestUtils.js.map +1 -1
  6. package/dist/decoding/fastPforDecoder.d.ts +5 -6
  7. package/dist/decoding/fastPforDecoder.js +6 -6
  8. package/dist/decoding/fastPforDecoder.js.map +1 -1
  9. package/dist/decoding/fastPforShared.d.ts +0 -2
  10. package/dist/decoding/fastPforShared.js.map +1 -1
  11. package/dist/decoding/fastPforUnpack.d.ts +23 -23
  12. package/dist/decoding/fastPforUnpack.js.map +1 -1
  13. package/dist/decoding/geometryDecoder.js +41 -41
  14. package/dist/decoding/geometryDecoder.js.map +1 -1
  15. package/dist/decoding/intWrapper.js +0 -1
  16. package/dist/decoding/intWrapper.js.map +1 -1
  17. package/dist/decoding/integerDecodingUtils.d.ts +21 -17
  18. package/dist/decoding/integerDecodingUtils.js +71 -30
  19. package/dist/decoding/integerDecodingUtils.js.map +1 -1
  20. package/dist/decoding/integerStreamDecoder.d.ts +14 -10
  21. package/dist/decoding/integerStreamDecoder.js +150 -63
  22. package/dist/decoding/integerStreamDecoder.js.map +1 -1
  23. package/dist/decoding/propertyDecoder.js +32 -26
  24. package/dist/decoding/propertyDecoder.js.map +1 -1
  25. package/dist/decoding/stringDecoder.js +18 -19
  26. package/dist/decoding/stringDecoder.js.map +1 -1
  27. package/dist/decoding/unpackNullableUtils.d.ts +2 -2
  28. package/dist/decoding/unpackNullableUtils.js.map +1 -1
  29. package/dist/encoding/bigEndianEncode.d.ts +1 -1
  30. package/dist/encoding/bigEndianEncode.js.map +1 -1
  31. package/dist/encoding/constGeometryVectorEncoder.js +9 -9
  32. package/dist/encoding/constGeometryVectorEncoder.js.map +1 -1
  33. package/dist/encoding/encodingUtils.d.ts +1 -1
  34. package/dist/encoding/encodingUtils.js +1 -1
  35. package/dist/encoding/encodingUtils.js.map +1 -1
  36. package/dist/encoding/fastPforEncoder.d.ts +4 -5
  37. package/dist/encoding/fastPforEncoder.js +4 -4
  38. package/dist/encoding/fastPforEncoder.js.map +1 -1
  39. package/dist/encoding/integerEncodingUtils.d.ts +14 -14
  40. package/dist/encoding/integerEncodingUtils.js +39 -31
  41. package/dist/encoding/integerEncodingUtils.js.map +1 -1
  42. package/dist/encoding/integerStreamEncoder.d.ts +2 -1
  43. package/dist/encoding/integerStreamEncoder.js +52 -18
  44. package/dist/encoding/integerStreamEncoder.js.map +1 -1
  45. package/dist/encoding/propertyEncoder.js +9 -16
  46. package/dist/encoding/propertyEncoder.js.map +1 -1
  47. package/dist/encoding/stringEncoder.js +9 -42
  48. package/dist/encoding/stringEncoder.js.map +1 -1
  49. package/dist/metadata/tile/logicalStreamType.d.ts +5 -9
  50. package/dist/metadata/tile/logicalStreamType.js +1 -19
  51. package/dist/metadata/tile/logicalStreamType.js.map +1 -1
  52. package/dist/metadata/tile/streamMetadataDecoder.d.ts +1 -1
  53. package/dist/metadata/tile/streamMetadataDecoder.js +9 -4
  54. package/dist/metadata/tile/streamMetadataDecoder.js.map +1 -1
  55. package/dist/mltDecoder.js +25 -29
  56. package/dist/mltDecoder.js.map +1 -1
  57. package/dist/vector/constant/{intConstVector.d.ts → int32ConstVector.d.ts} +2 -2
  58. package/dist/vector/constant/int32ConstVector.js +10 -0
  59. package/dist/vector/constant/int32ConstVector.js.map +1 -0
  60. package/dist/vector/constant/{longConstVector.d.ts → int64ConstVector.d.ts} +2 -2
  61. package/dist/vector/constant/int64ConstVector.js +10 -0
  62. package/dist/vector/constant/int64ConstVector.js.map +1 -0
  63. package/dist/vector/dictionary/stringDictionaryVector.d.ts +1 -1
  64. package/dist/vector/dictionary/stringDictionaryVector.js +0 -1
  65. package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
  66. package/dist/vector/featureTable.d.ts +4 -4
  67. package/dist/vector/featureTable.js +9 -14
  68. package/dist/vector/featureTable.js.map +1 -1
  69. package/dist/vector/filter/flatSelectionVector.js +0 -2
  70. package/dist/vector/filter/flatSelectionVector.js.map +1 -1
  71. package/dist/vector/filter/sequenceSelectionVector.js +1 -5
  72. package/dist/vector/filter/sequenceSelectionVector.js.map +1 -1
  73. package/dist/vector/flat/bitVector.js +0 -2
  74. package/dist/vector/flat/bitVector.js.map +1 -1
  75. package/dist/vector/flat/booleanFlatVector.js +0 -1
  76. package/dist/vector/flat/booleanFlatVector.js.map +1 -1
  77. package/dist/vector/flat/{intFlatVector.d.ts → int32FlatVector.d.ts} +1 -1
  78. package/dist/vector/flat/{intFlatVector.js → int32FlatVector.js} +2 -2
  79. package/dist/vector/flat/int32FlatVector.js.map +1 -0
  80. package/dist/vector/flat/{longFlatVector.d.ts → int64FlatVector.d.ts} +1 -1
  81. package/dist/vector/flat/{longFlatVector.js → int64FlatVector.js} +2 -2
  82. package/dist/vector/flat/int64FlatVector.js.map +1 -0
  83. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +1 -1
  84. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js +0 -6
  85. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
  86. package/dist/vector/geometry/constGeometryVector.d.ts +3 -3
  87. package/dist/vector/geometry/constGeometryVector.js +0 -2
  88. package/dist/vector/geometry/constGeometryVector.js.map +1 -1
  89. package/dist/vector/geometry/constGpuVector.d.ts +2 -2
  90. package/dist/vector/geometry/constGpuVector.js +0 -2
  91. package/dist/vector/geometry/constGpuVector.js.map +1 -1
  92. package/dist/vector/geometry/flatGeometryVector.d.ts +3 -3
  93. package/dist/vector/geometry/flatGeometryVector.js +1 -5
  94. package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
  95. package/dist/vector/geometry/flatGpuVector.d.ts +2 -2
  96. package/dist/vector/geometry/flatGpuVector.js +0 -1
  97. package/dist/vector/geometry/flatGpuVector.js.map +1 -1
  98. package/dist/vector/geometry/geometryVector.d.ts +3 -3
  99. package/dist/vector/geometry/geometryVector.js +0 -5
  100. package/dist/vector/geometry/geometryVector.js.map +1 -1
  101. package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
  102. package/dist/vector/geometry/gpuVector.d.ts +4 -4
  103. package/dist/vector/geometry/gpuVector.js +0 -4
  104. package/dist/vector/geometry/gpuVector.js.map +1 -1
  105. package/dist/vector/geometry/topologyVector.d.ts +3 -3
  106. package/dist/vector/geometry/topologyVector.js.map +1 -1
  107. package/dist/vector/idVector.d.ts +8 -0
  108. package/dist/vector/idVector.js +2 -0
  109. package/dist/vector/idVector.js.map +1 -0
  110. package/dist/vector/sequence/{intSequenceVector.d.ts → int32SequenceVector.d.ts} +1 -1
  111. package/dist/vector/sequence/{intSequenceVector.js → int32SequenceVector.js} +2 -2
  112. package/dist/vector/sequence/int32SequenceVector.js.map +1 -0
  113. package/dist/vector/sequence/{longSequenceVector.d.ts → int64SequenceVector.d.ts} +1 -1
  114. package/dist/vector/sequence/{longSequenceVector.js → int64SequenceVector.js} +2 -2
  115. package/dist/vector/sequence/int64SequenceVector.js.map +1 -0
  116. package/dist/vector/sequence/sequenceVector.js +0 -1
  117. package/dist/vector/sequence/sequenceVector.js.map +1 -1
  118. package/dist/vector/variableSizeVector.js +0 -1
  119. package/dist/vector/variableSizeVector.js.map +1 -1
  120. package/dist/vector/vector.js +0 -4
  121. package/dist/vector/vector.js.map +1 -1
  122. package/package.json +6 -6
  123. package/dist/vector/constant/intConstVector.js +0 -10
  124. package/dist/vector/constant/intConstVector.js.map +0 -1
  125. package/dist/vector/constant/longConstVector.js +0 -10
  126. package/dist/vector/constant/longConstVector.js.map +0 -1
  127. package/dist/vector/flat/intFlatVector.js.map +0 -1
  128. package/dist/vector/flat/longFlatVector.js.map +0 -1
  129. package/dist/vector/intVector.d.ts +0 -8
  130. package/dist/vector/intVector.js +0 -2
  131. package/dist/vector/intVector.js.map +0 -1
  132. package/dist/vector/sequence/intSequenceVector.js.map +0 -1
  133. package/dist/vector/sequence/longSequenceVector.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"integerStreamDecoder.js","sourceRoot":"","sources":["../../src/decoding/integerStreamDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport type IntWrapper from \"./intWrapper\";\nimport {\n decodeComponentwiseDeltaVec2,\n decodeComponentwiseDeltaVec2Scaled,\n decodeDeltaRleInt32,\n decodeDeltaRleInt64,\n decodeFastPfor,\n decodeUnsignedConstRleInt32,\n decodeUnsignedConstRleInt64,\n decodeUnsignedRleInt32,\n decodeUnsignedRleInt64,\n decodeUnsignedRleFloat64,\n decodeVarintInt32,\n decodeVarintInt64,\n decodeVarintFloat64,\n decodeZigZagInt32,\n decodeZigZagInt64,\n decodeZigZagFloat64,\n decodeZigZagConstRleInt32,\n decodeZigZagConstRleInt64,\n decodeZigZagDeltaInt32,\n decodeZigZagDeltaInt64,\n decodeZigZagDeltaFloat64,\n decodeZigZagSequenceRleInt32,\n decodeZigZagSequenceRleInt64,\n decodeZigZagInt32Value,\n decodeZigZagInt64Value,\n fastInverseDelta,\n inverseDelta,\n decodeRleDeltaInt32,\n decodeZigZagDeltaOfDeltaInt32,\n decodeZigZagRleDeltaInt32,\n decodeZigZagRleInt32,\n decodeZigZagRleInt64,\n decodeZigZagRleFloat64,\n} from \"./integerDecodingUtils\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport type { StreamMetadata, RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport { VectorType } from \"../vector/vectorType\";\nimport type GeometryScaling from \"./geometryScaling\";\nimport { unpackNullable } from \"./unpackNullableUtils\";\n\nexport function decodeIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Int32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeInt32(values, streamMetadata, isSigned, scalingData, nullabilityBuffer);\n}\n\nexport function decodeLengthStreamToOffsetBuffer(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Uint32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeLengthToOffsetBuffer(values, streamMetadata);\n}\n\nfunction decodePhysicalLevelTechnique(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Int32Array {\n const physicalLevelTechnique = streamMetadata.physicalLevelTechnique;\n if (physicalLevelTechnique === PhysicalLevelTechnique.FAST_PFOR) {\n return decodeFastPfor(data, streamMetadata.numValues, streamMetadata.byteLength, offset);\n }\n if (physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n return decodeVarintInt32(data, offset, streamMetadata.numValues);\n }\n\n if (physicalLevelTechnique === PhysicalLevelTechnique.NONE) {\n const dataOffset = offset.get();\n const byteLength = streamMetadata.byteLength;\n offset.add(byteLength);\n //TODO: use Byte Rle for geometry type encoding\n const slice = data.subarray(dataOffset, offset.get());\n return new Int32Array(slice);\n }\n\n throw new Error(\"Specified physicalLevelTechnique is not supported (yet).\");\n}\n\nexport function decodeConstIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): number {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n\n if (values.length === 1) {\n const value = values[0];\n return isSigned ? decodeZigZagInt32Value(value) : value;\n }\n\n return isSigned ? decodeZigZagConstRleInt32(values) : decodeUnsignedConstRleInt32(values);\n}\n\nexport function decodeSequenceIntStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: number, delta: number] {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeZigZagSequenceRleInt32(values);\n}\n\nexport function decodeSequenceLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: bigint, delta: bigint] {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeZigZagSequenceRleInt64(values);\n}\n\nexport function decodeLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n nullabilityBuffer?: BitVector,\n): BigInt64Array {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeInt64(values, streamMetadata, isSigned, nullabilityBuffer);\n}\n\nexport function decodeLongFloat64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): Float64Array {\n const values = decodeVarintFloat64(data, offset, streamMetadata.numValues);\n return decodeFloat64(values, streamMetadata, isSigned);\n}\n\nexport function decodeConstLongStream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n): bigint {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n\n if (values.length === 1) {\n const value = values[0];\n return isSigned ? decodeZigZagInt64Value(value) : value;\n }\n\n return isSigned ? decodeZigZagConstRleInt64(values) : decodeUnsignedConstRleInt64(values);\n}\n\n/**\n * This method decodes integer streams.\n * Currently the encoder uses only fixed combinations of encodings.\n * For performance reasons it is also uses a fixed combination of the encodings on the decoding side.\n * The following encodings and combinations are used:\n * - Morton Delta -> always sorted so not ZigZag encoding needed\n * - Delta -> currently always in combination with ZigZag encoding\n * - Rle -> in combination with ZigZag encoding if data type is signed\n * - Delta Rle\n * - Componentwise Delta -> always ZigZag encoding is used\n */\nfunction decodeInt32(\n values: Int32Array,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Int32Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n if (!nullabilityBuffer) {\n return decodeDeltaRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n values = decodeUnsignedRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaInt32(values);\n break;\n case LogicalLevelTechnique.RLE:\n values = decodeRleInt32(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n break;\n case LogicalLevelTechnique.MORTON:\n fastInverseDelta(values);\n break;\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !nullabilityBuffer) {\n decodeComponentwiseDeltaVec2Scaled(values, scalingData.scale, scalingData.min, scalingData.max);\n return values;\n }\n decodeComponentwiseDeltaVec2(values);\n break;\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagInt32(values);\n }\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(values, nullabilityBuffer, 0);\n }\n return values;\n}\n\nfunction decodeInt64(\n values: BigUint64Array,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n nullabilityBuffer?: BitVector,\n): BigInt64Array {\n let decodedValues: BigInt64Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n if (!nullabilityBuffer) {\n return decodeDeltaRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n values = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n decodedValues = decodeZigZagDeltaInt64(values);\n } else {\n decodedValues = decodeZigZagDeltaInt64(values);\n }\n break;\n case LogicalLevelTechnique.RLE:\n decodedValues = decodeRleInt64(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n break;\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodedValues = decodeZigZagInt64(values);\n } else {\n decodedValues = new BigInt64Array(values);\n }\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(decodedValues, nullabilityBuffer, 0n);\n }\n return decodedValues;\n}\n\nexport function decodeFloat64(values: Float64Array, streamMetadata: StreamMetadata, isSigned: boolean): Float64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n values = decodeUnsignedRleFloat64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaFloat64(values);\n return values;\n case LogicalLevelTechnique.RLE:\n return decodeRleFloat64(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagFloat64(values);\n }\n return values;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n}\n\nfunction decodeLengthToOffsetBuffer(values: Int32Array, streamMetadata: StreamMetadata): Uint32Array {\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n return decodeZigZagDeltaOfDeltaInt32(values);\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.RLE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n return decodeRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.NONE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n //TODO: use fastInverseDelta again and check what are the performance problems in zoom 14\n //fastInverseDelta(values);\n inverseDelta(values);\n const offsets = new Uint32Array(streamMetadata.numValues + 1);\n offsets[0] = 0;\n offsets.set(values, 1);\n return offsets;\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const decodedValues = decodeZigZagRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n fastInverseDelta(decodedValues);\n return decodedValues;\n }\n\n throw new Error(\"Only delta encoding is supported for transforming length to offset streams yet.\");\n}\n\nexport function getVectorType(\n streamMetadata: StreamMetadata,\n sizeOrNullabilityBuffer: number | BitVector,\n data: Uint8Array,\n offset: IntWrapper,\n): VectorType {\n const logicalLevelTechnique1 = streamMetadata.logicalLevelTechnique1;\n if (logicalLevelTechnique1 === LogicalLevelTechnique.RLE) {\n return (streamMetadata as RleEncodedStreamMetadata).runs === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n\n if (\n logicalLevelTechnique1 !== LogicalLevelTechnique.DELTA ||\n streamMetadata.logicalLevelTechnique2 !== LogicalLevelTechnique.RLE\n ) {\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n const numFeatures =\n sizeOrNullabilityBuffer instanceof BitVector ? sizeOrNullabilityBuffer.size() : sizeOrNullabilityBuffer;\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n\n if (rleMetadata.numRleValues !== numFeatures) {\n return VectorType.FLAT;\n }\n // Single run is always a sequence\n if (rleMetadata.runs === 1) {\n return VectorType.SEQUENCE;\n }\n\n if (rleMetadata.runs !== 2) {\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n // Two runs can be a sequence if both deltas are equal to 1\n const savedOffset = offset.get();\n\n let values: Int32Array;\n if (streamMetadata.physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n values = decodeVarintInt32(data, offset, 4);\n } else {\n const byteOffset = offset.get();\n values = new Int32Array(data.buffer, data.byteOffset + byteOffset, 4);\n }\n offset.set(savedOffset);\n // Check if both deltas are encoded 1\n const zigZagOne = 2;\n if (values[2] === zigZagOne && values[3] === zigZagOne) {\n return VectorType.SEQUENCE;\n }\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n}\n\nfunction decodeRleInt32(data: Int32Array, streamMetadata: RleEncodedStreamMetadata, isSigned: boolean): Int32Array {\n return isSigned\n ? decodeZigZagRleInt32(data, streamMetadata.runs, streamMetadata.numRleValues)\n : decodeUnsignedRleInt32(data, streamMetadata.runs, streamMetadata.numRleValues);\n}\n\nfunction decodeRleInt64(\n data: BigUint64Array,\n streamMetadata: RleEncodedStreamMetadata,\n isSigned: boolean,\n): BigInt64Array {\n return isSigned\n ? decodeZigZagRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues)\n : new BigInt64Array(decodeUnsignedRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues));\n}\n\nfunction decodeRleFloat64(\n data: Float64Array,\n streamMetadata: RleEncodedStreamMetadata,\n isSigned: boolean,\n): Float64Array {\n return isSigned\n ? decodeZigZagRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues)\n : decodeUnsignedRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues);\n}\n"]}
1
+ {"version":3,"file":"integerStreamDecoder.js","sourceRoot":"","sources":["../../src/decoding/integerStreamDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport IntWrapper from \"./intWrapper\";\nimport {\n decodeComponentwiseDeltaVec2,\n decodeComponentwiseDeltaVec2Scaled,\n decodeDeltaRleInt32,\n decodeDeltaRleInt64,\n decodeFastPfor,\n decodeUnsignedComponentwiseDeltaVec2,\n decodeUnsignedComponentwiseDeltaVec2Scaled,\n decodeUnsignedConstRleInt32,\n decodeUnsignedConstRleInt64,\n decodeUnsignedRleInt32,\n decodeUnsignedRleInt64,\n decodeUnsignedRleFloat64,\n decodeUnsignedZigZagDeltaInt32,\n decodeUnsignedZigZagDeltaInt64,\n decodeVarintInt32,\n decodeVarintInt64,\n decodeVarintFloat64,\n decodeZigZagInt32,\n decodeZigZagInt64,\n decodeZigZagFloat64,\n decodeZigZagConstRleInt32,\n decodeZigZagConstRleInt64,\n decodeZigZagDeltaInt32,\n decodeZigZagDeltaInt64,\n decodeZigZagDeltaFloat64,\n decodeZigZagSequenceRleInt32,\n decodeZigZagSequenceRleInt64,\n decodeZigZagInt32Value,\n decodeZigZagInt64Value,\n fastInverseDelta,\n inverseDelta,\n decodeRleDeltaInt32,\n decodeZigZagDeltaOfDeltaInt32,\n decodeZigZagRleDeltaInt32,\n decodeZigZagRleInt32,\n decodeZigZagRleInt64,\n decodeZigZagRleFloat64,\n} from \"./integerDecodingUtils\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport type { StreamMetadata, RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport { VectorType } from \"../vector/vectorType\";\nimport type GeometryScaling from \"./geometryScaling\";\nimport { unpackNullable } from \"./unpackNullableUtils\";\n\nexport function decodeSignedInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Int32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeSignedInt32(values, streamMetadata, scalingData, nullabilityBuffer);\n}\n\nexport function decodeUnsignedInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Uint32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeUnsignedInt32(values, streamMetadata, scalingData, nullabilityBuffer);\n}\n\nexport function decodeLengthStreamToOffsetBuffer(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Uint32Array {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeLengthToOffsetBuffer(values, streamMetadata);\n}\n\nfunction decodePhysicalLevelTechnique(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Uint32Array {\n const physicalLevelTechnique = streamMetadata.physicalLevelTechnique;\n switch (physicalLevelTechnique) {\n case PhysicalLevelTechnique.FAST_PFOR:\n return decodeFastPfor(data, streamMetadata.numValues, streamMetadata.byteLength, offset);\n case PhysicalLevelTechnique.VARINT:\n return decodeVarintInt32(data, offset, streamMetadata.numValues);\n case PhysicalLevelTechnique.NONE: {\n const dataOffset = offset.get();\n const byteLength = streamMetadata.byteLength;\n offset.add(byteLength);\n const slice = data.subarray(dataOffset, offset.get());\n return new Uint32Array(slice);\n }\n default:\n throw new Error(`Specified physicalLevelTechnique ${physicalLevelTechnique} is not supported (yet).`);\n }\n}\n\nexport function decodeSignedConstInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): number {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n\n if (values.length === 1) {\n return decodeZigZagInt32Value(values[0]);\n }\n\n return decodeZigZagConstRleInt32(values);\n}\n\nexport function decodeUnsignedConstInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): number {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n\n if (values.length === 1) {\n return values[0];\n }\n\n return decodeUnsignedConstRleInt32(values);\n}\n\nexport function decodeSequenceInt32Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: number, delta: number] {\n const values = decodePhysicalLevelTechnique(data, offset, streamMetadata);\n return decodeZigZagSequenceRleInt32(values);\n}\n\nexport function decodeSequenceInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): [baseValue: bigint, delta: bigint] {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeZigZagSequenceRleInt64(values);\n}\n\nexport function decodeSignedInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n nullabilityBuffer?: BitVector,\n): BigInt64Array {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeSignedInt64(values, streamMetadata, nullabilityBuffer);\n}\n\nexport function decodeUnsignedInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n nullabilityBuffer?: BitVector,\n): BigUint64Array {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n return decodeUnsignedInt64(values, streamMetadata, nullabilityBuffer);\n}\n\nexport function decodeSignedInt64AsFloat64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Float64Array {\n const values = decodeVarintFloat64(data, offset, streamMetadata.numValues);\n return decodeFloat64Values(values, streamMetadata, true);\n}\n\nexport function decodeUnsignedInt64AsFloat64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): Float64Array {\n const values = decodeVarintFloat64(data, offset, streamMetadata.numValues);\n return decodeFloat64Values(values, streamMetadata, false);\n}\n\nexport function decodeSignedConstInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): bigint {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n\n if (values.length === 1) {\n return decodeZigZagInt64Value(values[0]);\n }\n\n return decodeZigZagConstRleInt64(values);\n}\n\nexport function decodeUnsignedConstInt64Stream(\n data: Uint8Array,\n offset: IntWrapper,\n streamMetadata: StreamMetadata,\n): bigint {\n const values = decodeVarintInt64(data, offset, streamMetadata.numValues);\n\n if (values.length === 1) {\n return values[0];\n }\n\n return decodeUnsignedConstRleInt64(values);\n}\n\n/**\n * This method decodes integer streams.\n * Currently the encoder uses only fixed combinations of encodings.\n * For performance reasons it is also uses a fixed combination of the encodings on the decoding side.\n * The following encodings and combinations are used:\n * - Morton Delta -> always sorted so not ZigZag encoding needed\n * - Delta -> currently always in combination with ZigZag encoding\n * - Rle -> in combination with ZigZag encoding if data type is signed\n * - Delta Rle\n * - Componentwise Delta -> always ZigZag encoding is used\n */\nfunction decodeSignedInt32(\n values: Uint32Array,\n streamMetadata: StreamMetadata,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Int32Array {\n let decodedValues: Int32Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n if (!nullabilityBuffer) {\n return decodeDeltaRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n values = decodeUnsignedRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n decodedValues = decodeZigZagDeltaInt32(values);\n } else {\n decodedValues = decodeZigZagDeltaInt32(values);\n }\n break;\n case LogicalLevelTechnique.RLE:\n decodedValues = decodeZigZagRleInt32(\n values,\n (streamMetadata as RleEncodedStreamMetadata).runs,\n (streamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n break;\n case LogicalLevelTechnique.MORTON:\n fastInverseDelta(values);\n decodedValues = new Int32Array(values);\n break;\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !nullabilityBuffer) {\n return decodeComponentwiseDeltaVec2Scaled(values, scalingData.scale, scalingData.min, scalingData.max);\n }\n decodedValues = decodeComponentwiseDeltaVec2(values);\n break;\n case LogicalLevelTechnique.NONE:\n decodedValues = decodeZigZagInt32(values);\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(decodedValues, nullabilityBuffer, 0);\n }\n return decodedValues;\n}\n\nfunction decodeUnsignedInt32(\n values: Uint32Array,\n streamMetadata: StreamMetadata,\n scalingData?: GeometryScaling,\n nullabilityBuffer?: BitVector,\n): Uint32Array {\n let decodedValues: Uint32Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const deltaValues = decodeUnsignedRleInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n decodedValues = decodeUnsignedZigZagDeltaInt32(deltaValues);\n } else {\n decodedValues = decodeUnsignedZigZagDeltaInt32(values);\n }\n break;\n case LogicalLevelTechnique.RLE:\n decodedValues = decodeUnsignedRleInt32(\n values,\n (streamMetadata as RleEncodedStreamMetadata).runs,\n (streamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n break;\n case LogicalLevelTechnique.MORTON:\n fastInverseDelta(values);\n decodedValues = values;\n break;\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !nullabilityBuffer) {\n decodedValues = decodeUnsignedComponentwiseDeltaVec2Scaled(\n values,\n scalingData.scale,\n scalingData.min,\n scalingData.max,\n );\n } else {\n decodedValues = decodeUnsignedComponentwiseDeltaVec2(values);\n }\n break;\n case LogicalLevelTechnique.NONE:\n decodedValues = values;\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(decodedValues, nullabilityBuffer, 0);\n }\n return decodedValues;\n}\n\nfunction decodeSignedInt64(\n values: BigUint64Array,\n streamMetadata: StreamMetadata,\n nullabilityBuffer?: BitVector,\n): BigInt64Array {\n let decodedValues: BigInt64Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n if (!nullabilityBuffer) {\n return decodeDeltaRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n values = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n decodedValues = decodeZigZagDeltaInt64(values);\n } else {\n decodedValues = decodeZigZagDeltaInt64(values);\n }\n break;\n case LogicalLevelTechnique.RLE:\n decodedValues = decodeZigZagRleInt64(\n values,\n (streamMetadata as RleEncodedStreamMetadata).runs,\n (streamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n break;\n case LogicalLevelTechnique.NONE:\n decodedValues = decodeZigZagInt64(values);\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(decodedValues, nullabilityBuffer, 0n);\n }\n return decodedValues;\n}\n\nfunction decodeUnsignedInt64(\n values: BigUint64Array,\n streamMetadata: StreamMetadata,\n nullabilityBuffer?: BitVector,\n): BigUint64Array {\n let decodedValues: BigUint64Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const deltaValues = decodeUnsignedRleInt64(values, rleMetadata.runs, rleMetadata.numRleValues);\n decodedValues = decodeUnsignedZigZagDeltaInt64(deltaValues);\n } else {\n decodedValues = decodeUnsignedZigZagDeltaInt64(values);\n }\n break;\n case LogicalLevelTechnique.RLE:\n decodedValues = decodeUnsignedRleInt64(\n values,\n (streamMetadata as RleEncodedStreamMetadata).runs,\n (streamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n break;\n case LogicalLevelTechnique.NONE:\n decodedValues = values;\n break;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n\n if (nullabilityBuffer) {\n return unpackNullable(decodedValues, nullabilityBuffer, 0n);\n }\n return decodedValues;\n}\n\nfunction decodeFloat64Values(values: Float64Array, streamMetadata: StreamMetadata, isSigned: boolean): Float64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n values = decodeUnsignedRleFloat64(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n decodeZigZagDeltaFloat64(values);\n return values;\n case LogicalLevelTechnique.RLE:\n return decodeRleFloat64(values, streamMetadata as RleEncodedStreamMetadata, isSigned);\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n decodeZigZagFloat64(values);\n }\n return values;\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n}\n\nfunction decodeLengthToOffsetBuffer(values: Uint32Array, streamMetadata: StreamMetadata): Uint32Array {\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n return decodeZigZagDeltaOfDeltaInt32(values);\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.RLE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n return decodeRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.NONE &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.NONE\n ) {\n //TODO: use fastInverseDelta again and check what are the performance problems in zoom 14\n //fastInverseDelta(values);\n inverseDelta(values);\n const offsets = new Uint32Array(streamMetadata.numValues + 1);\n offsets[0] = 0;\n offsets.set(values, 1);\n return offsets;\n }\n\n if (\n streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.DELTA &&\n streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE\n ) {\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n const decodedValues = decodeZigZagRleDeltaInt32(values, rleMetadata.runs, rleMetadata.numRleValues);\n fastInverseDelta(decodedValues);\n return new Uint32Array(decodedValues);\n }\n\n throw new Error(\"Only delta encoding is supported for transforming length to offset streams yet.\");\n}\n\nexport function getVectorType(\n streamMetadata: StreamMetadata,\n sizeOrNullabilityBuffer: number | BitVector,\n data: Uint8Array,\n offset: IntWrapper,\n varintWidth: \"int32\" | \"int64\" = \"int32\",\n): VectorType {\n const logicalLevelTechnique1 = streamMetadata.logicalLevelTechnique1;\n if (logicalLevelTechnique1 === LogicalLevelTechnique.RLE) {\n return (streamMetadata as RleEncodedStreamMetadata).runs === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n\n if (\n logicalLevelTechnique1 !== LogicalLevelTechnique.DELTA ||\n streamMetadata.logicalLevelTechnique2 !== LogicalLevelTechnique.RLE\n ) {\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n const numFeatures =\n sizeOrNullabilityBuffer instanceof BitVector ? sizeOrNullabilityBuffer.size() : sizeOrNullabilityBuffer;\n const rleMetadata = streamMetadata as RleEncodedStreamMetadata;\n\n if (rleMetadata.numRleValues !== numFeatures) {\n return VectorType.FLAT;\n }\n // Single run is always a sequence\n if (rleMetadata.runs === 1) {\n return VectorType.SEQUENCE;\n }\n\n if (rleMetadata.runs !== 2) {\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n // Two runs can be a sequence if both deltas are equal to 1\n const savedOffset = offset.get();\n\n if (streamMetadata.physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n if (isDeltaRleSequenceVarintWidth(data, offset, varintWidth)) {\n return VectorType.SEQUENCE;\n }\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n }\n\n const byteOffset = offset.get();\n const values = new Int32Array(data.buffer, data.byteOffset + byteOffset, 4);\n offset.set(savedOffset);\n // Check if both deltas are encoded 1\n const zigZagOne = 2;\n if (values[2] === zigZagOne && values[3] === zigZagOne) {\n return VectorType.SEQUENCE;\n }\n return streamMetadata.numValues === 1 ? VectorType.CONST : VectorType.FLAT;\n}\n\nfunction isDeltaRleSequenceVarintWidth(data: Uint8Array, offset: IntWrapper, varintWidth: \"int32\" | \"int64\"): boolean {\n const peekOffset = new IntWrapper(offset.get());\n\n if (varintWidth === \"int64\") {\n const values = decodeVarintInt64(data, peekOffset, 4);\n return values[2] === 2n && values[3] === 2n;\n }\n\n const values = decodeVarintInt32(data, peekOffset, 4);\n return values[2] === 2 && values[3] === 2;\n}\n\nfunction decodeRleFloat64(\n data: Float64Array,\n streamMetadata: RleEncodedStreamMetadata,\n isSigned: boolean,\n): Float64Array {\n return isSigned\n ? decodeZigZagRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues)\n : decodeUnsignedRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues);\n}\n"]}
@@ -5,14 +5,14 @@ import { VectorType } from "../vector/vectorType";
5
5
  import { BooleanFlatVector } from "../vector/flat/booleanFlatVector";
6
6
  import { DoubleFlatVector } from "../vector/flat/doubleFlatVector";
7
7
  import { FloatFlatVector } from "../vector/flat/floatFlatVector";
8
- import { LongConstVector } from "../vector/constant/longConstVector";
9
- import { LongFlatVector } from "../vector/flat/longFlatVector";
10
- import { IntFlatVector } from "../vector/flat/intFlatVector";
11
- import { IntConstVector } from "../vector/constant/intConstVector";
8
+ import { Int64ConstVector } from "../vector/constant/int64ConstVector";
9
+ import { Int64FlatVector } from "../vector/flat/int64FlatVector";
10
+ import { Int32FlatVector } from "../vector/flat/int32FlatVector";
11
+ import { Int32ConstVector } from "../vector/constant/int32ConstVector";
12
12
  import { decodeBooleanRle, decodeDoublesLE, decodeFloatsLE, skipColumn } from "./decodingUtils";
13
- import { decodeConstIntStream, decodeConstLongStream, decodeIntStream, decodeLongStream, decodeSequenceIntStream, decodeSequenceLongStream, getVectorType, } from "./integerStreamDecoder";
14
- import { IntSequenceVector } from "../vector/sequence/intSequenceVector";
15
- import { LongSequenceVector } from "../vector/sequence/longSequenceVector";
13
+ import { decodeSignedConstInt32Stream, decodeSignedConstInt64Stream, decodeSignedInt32Stream, decodeSignedInt64Stream, decodeUnsignedInt32Stream, decodeUnsignedConstInt32Stream, decodeUnsignedConstInt64Stream, decodeUnsignedInt64Stream, decodeSequenceInt32Stream, decodeSequenceInt64Stream, getVectorType, } from "./integerStreamDecoder";
14
+ import { Int32SequenceVector } from "../vector/sequence/int32SequenceVector";
15
+ import { Int64SequenceVector } from "../vector/sequence/int64SequenceVector";
16
16
  import { decodeSharedDictionary, decodeString } from "./stringDecoder";
17
17
  export function decodePropertyColumn(data, offset, columnMetadata, numStreams, numFeatures, propertyColumnNames) {
18
18
  if (columnMetadata.type === "scalarType") {
@@ -30,10 +30,8 @@ export function decodePropertyColumn(data, offset, columnMetadata, numStreams, n
30
30
  function decodeScalarPropertyColumn(numStreams, data, offset, numFeatures, column, columnMetadata) {
31
31
  let nullabilityBuffer = null;
32
32
  if (numStreams === 0) {
33
- /* Skip since this column has no values */
34
33
  return null;
35
34
  }
36
- // Read nullability stream if column is nullable
37
35
  if (columnMetadata.nullable) {
38
36
  const presentStreamMetadata = decodeStreamMetadata(data, offset);
39
37
  const numValues = presentStreamMetadata.numValues;
@@ -47,7 +45,7 @@ function decodeScalarPropertyColumn(numStreams, data, offset, numFeatures, colum
47
45
  switch (scalarType) {
48
46
  case ScalarType.UINT_32:
49
47
  case ScalarType.INT_32:
50
- return decodeIntColumn(data, offset, columnMetadata, column, sizeOrNullabilityBuffer);
48
+ return decodeInt32Column(data, offset, columnMetadata, column, sizeOrNullabilityBuffer);
51
49
  case ScalarType.STRING: {
52
50
  // In embedded format: numStreams includes nullability stream if column is nullable
53
51
  const stringDataStreams = columnMetadata.nullable ? numStreams - 1 : numStreams;
@@ -57,7 +55,7 @@ function decodeScalarPropertyColumn(numStreams, data, offset, numFeatures, colum
57
55
  return decodeBooleanColumn(data, offset, columnMetadata, numFeatures, sizeOrNullabilityBuffer);
58
56
  case ScalarType.UINT_64:
59
57
  case ScalarType.INT_64:
60
- return decodeLongColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer, column);
58
+ return decodeInt64Column(data, offset, columnMetadata, sizeOrNullabilityBuffer, column);
61
59
  case ScalarType.FLOAT:
62
60
  return decodeFloatColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer);
63
61
  case ScalarType.DOUBLE:
@@ -88,37 +86,45 @@ function decodeDoubleColumn(data, offset, column, sizeOrNullabilityBuffer) {
88
86
  const dataStream = decodeDoublesLE(data, offset, dataStreamMetadata.numValues, nullabilityBuffer);
89
87
  return new DoubleFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);
90
88
  }
91
- function decodeLongColumn(data, offset, column, sizeOrNullabilityBuffer, scalarColumn) {
89
+ function decodeInt64Column(data, offset, column, sizeOrNullabilityBuffer, scalarColumn) {
92
90
  const dataStreamMetadata = decodeStreamMetadata(data, offset);
93
- const vectorType = getVectorType(dataStreamMetadata, sizeOrNullabilityBuffer, data, offset);
91
+ const vectorType = getVectorType(dataStreamMetadata, sizeOrNullabilityBuffer, data, offset, "int64");
94
92
  const isSigned = scalarColumn.physicalType === ScalarType.INT_64;
95
93
  if (vectorType === VectorType.FLAT) {
96
94
  const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;
97
- const dataStream = decodeLongStream(data, offset, dataStreamMetadata, isSigned, nullabilityBuffer);
98
- return new LongFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);
95
+ const dataStream = isSigned
96
+ ? decodeSignedInt64Stream(data, offset, dataStreamMetadata, nullabilityBuffer)
97
+ : decodeUnsignedInt64Stream(data, offset, dataStreamMetadata, nullabilityBuffer);
98
+ return new Int64FlatVector(column.name, dataStream, sizeOrNullabilityBuffer);
99
99
  }
100
100
  if (vectorType === VectorType.SEQUENCE) {
101
- const id = decodeSequenceLongStream(data, offset, dataStreamMetadata);
102
- return new LongSequenceVector(column.name, id[0], id[1], dataStreamMetadata.numRleValues);
101
+ const id = decodeSequenceInt64Stream(data, offset, dataStreamMetadata);
102
+ return new Int64SequenceVector(column.name, id[0], id[1], dataStreamMetadata.numRleValues);
103
103
  }
104
- const constValue = decodeConstLongStream(data, offset, dataStreamMetadata, isSigned);
105
- return new LongConstVector(column.name, constValue, sizeOrNullabilityBuffer);
104
+ const constValue = isSigned
105
+ ? decodeSignedConstInt64Stream(data, offset, dataStreamMetadata)
106
+ : decodeUnsignedConstInt64Stream(data, offset, dataStreamMetadata);
107
+ return new Int64ConstVector(column.name, constValue, sizeOrNullabilityBuffer, isSigned);
106
108
  }
107
- function decodeIntColumn(data, offset, column, scalarColumn, sizeOrNullabilityBuffer) {
109
+ function decodeInt32Column(data, offset, column, scalarColumn, sizeOrNullabilityBuffer) {
108
110
  const dataStreamMetadata = decodeStreamMetadata(data, offset);
109
111
  const vectorType = getVectorType(dataStreamMetadata, sizeOrNullabilityBuffer, data, offset);
110
112
  const isSigned = scalarColumn.physicalType === ScalarType.INT_32;
111
113
  if (vectorType === VectorType.FLAT) {
112
114
  const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;
113
- const dataStream = decodeIntStream(data, offset, dataStreamMetadata, isSigned, undefined, nullabilityBuffer);
114
- return new IntFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);
115
+ const dataStream = isSigned
116
+ ? decodeSignedInt32Stream(data, offset, dataStreamMetadata, undefined, nullabilityBuffer)
117
+ : decodeUnsignedInt32Stream(data, offset, dataStreamMetadata, undefined, nullabilityBuffer);
118
+ return new Int32FlatVector(column.name, dataStream, sizeOrNullabilityBuffer);
115
119
  }
116
120
  if (vectorType === VectorType.SEQUENCE) {
117
- const id = decodeSequenceIntStream(data, offset, dataStreamMetadata);
118
- return new IntSequenceVector(column.name, id[0], id[1], dataStreamMetadata.numRleValues);
121
+ const id = decodeSequenceInt32Stream(data, offset, dataStreamMetadata);
122
+ return new Int32SequenceVector(column.name, id[0], id[1], dataStreamMetadata.numRleValues);
119
123
  }
120
- const constValue = decodeConstIntStream(data, offset, dataStreamMetadata, isSigned);
121
- return new IntConstVector(column.name, constValue, sizeOrNullabilityBuffer);
124
+ const constValue = isSigned
125
+ ? decodeSignedConstInt32Stream(data, offset, dataStreamMetadata)
126
+ : decodeUnsignedConstInt32Stream(data, offset, dataStreamMetadata);
127
+ return new Int32ConstVector(column.name, constValue, sizeOrNullabilityBuffer, isSigned);
122
128
  }
123
129
  function isNullabilityBuffer(sizeOrNullabilityBuffer) {
124
130
  return sizeOrNullabilityBuffer instanceof BitVector;
@@ -1 +1 @@
1
- {"version":3,"file":"propertyDecoder.js","sourceRoot":"","sources":["../../src/decoding/propertyDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import type IntWrapper from \"./intWrapper\";\nimport { type Column, type ScalarColumn, ScalarType } from \"../metadata/tileset/tilesetMetadata\";\nimport type Vector from \"../vector/vector\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport { decodeStreamMetadata, type RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport { VectorType } from \"../vector/vectorType\";\nimport { BooleanFlatVector } from \"../vector/flat/booleanFlatVector\";\nimport { DoubleFlatVector } from \"../vector/flat/doubleFlatVector\";\nimport { FloatFlatVector } from \"../vector/flat/floatFlatVector\";\nimport { LongConstVector } from \"../vector/constant/longConstVector\";\nimport { LongFlatVector } from \"../vector/flat/longFlatVector\";\nimport { IntFlatVector } from \"../vector/flat/intFlatVector\";\nimport { IntConstVector } from \"../vector/constant/intConstVector\";\nimport { decodeBooleanRle, decodeDoublesLE, decodeFloatsLE, skipColumn } from \"./decodingUtils\";\nimport {\n decodeConstIntStream,\n decodeConstLongStream,\n decodeIntStream,\n decodeLongStream,\n decodeSequenceIntStream,\n decodeSequenceLongStream,\n getVectorType,\n} from \"./integerStreamDecoder\";\nimport { IntSequenceVector } from \"../vector/sequence/intSequenceVector\";\nimport { LongSequenceVector } from \"../vector/sequence/longSequenceVector\";\nimport { decodeSharedDictionary, decodeString } from \"./stringDecoder\";\n\nexport function decodePropertyColumn(\n data: Uint8Array,\n offset: IntWrapper,\n columnMetadata: Column,\n numStreams: number,\n numFeatures: number,\n propertyColumnNames?: Set<string>,\n): Vector | Vector[] {\n if (columnMetadata.type === \"scalarType\") {\n if (propertyColumnNames && !propertyColumnNames.has(columnMetadata.name)) {\n skipColumn(numStreams, data, offset);\n return null;\n }\n\n return decodeScalarPropertyColumn(\n numStreams,\n data,\n offset,\n numFeatures,\n columnMetadata.scalarType,\n columnMetadata,\n );\n }\n\n if (numStreams === 0) {\n return null;\n }\n\n return decodeSharedDictionary(data, offset, columnMetadata, numFeatures, propertyColumnNames);\n}\n\nfunction decodeScalarPropertyColumn(\n numStreams: number,\n data: Uint8Array,\n offset: IntWrapper,\n numFeatures: number,\n column: ScalarColumn,\n columnMetadata: Column,\n) {\n let nullabilityBuffer: BitVector = null;\n if (numStreams === 0) {\n /* Skip since this column has no values */\n return null;\n }\n\n // Read nullability stream if column is nullable\n if (columnMetadata.nullable) {\n const presentStreamMetadata = decodeStreamMetadata(data, offset);\n const numValues = presentStreamMetadata.numValues;\n const streamDataStart = offset.get();\n const presentVector = decodeBooleanRle(data, numValues, presentStreamMetadata.byteLength, offset);\n offset.set(streamDataStart + presentStreamMetadata.byteLength);\n nullabilityBuffer = new BitVector(presentVector, presentStreamMetadata.numValues);\n }\n\n const sizeOrNullabilityBuffer = nullabilityBuffer ?? numFeatures;\n const scalarType = column.physicalType;\n switch (scalarType) {\n case ScalarType.UINT_32:\n case ScalarType.INT_32:\n return decodeIntColumn(data, offset, columnMetadata, column, sizeOrNullabilityBuffer);\n case ScalarType.STRING: {\n // In embedded format: numStreams includes nullability stream if column is nullable\n const stringDataStreams = columnMetadata.nullable ? numStreams - 1 : numStreams;\n return decodeString(columnMetadata.name, data, offset, stringDataStreams, nullabilityBuffer);\n }\n case ScalarType.BOOLEAN:\n return decodeBooleanColumn(data, offset, columnMetadata, numFeatures, sizeOrNullabilityBuffer);\n case ScalarType.UINT_64:\n case ScalarType.INT_64:\n return decodeLongColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer, column);\n case ScalarType.FLOAT:\n return decodeFloatColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer);\n case ScalarType.DOUBLE:\n return decodeDoubleColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer);\n default:\n throw new Error(`The specified data type for the field is currently not supported: ${column}`);\n }\n}\n\nfunction decodeBooleanColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n _numFeatures: number,\n sizeOrNullabilityBuffer: number | BitVector,\n): BooleanFlatVector {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const numValues = dataStreamMetadata.numValues;\n const streamDataStart = offset.get();\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeBooleanRle(data, numValues, dataStreamMetadata.byteLength, offset, nullabilityBuffer);\n offset.set(streamDataStart + dataStreamMetadata.byteLength);\n const dataVector = new BitVector(dataStream, numValues);\n return new BooleanFlatVector(column.name, dataVector, sizeOrNullabilityBuffer);\n}\n\nfunction decodeFloatColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n sizeOrNullabilityBuffer: number | BitVector,\n): FloatFlatVector {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeFloatsLE(data, offset, dataStreamMetadata.numValues, nullabilityBuffer);\n return new FloatFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n}\n\nfunction decodeDoubleColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n sizeOrNullabilityBuffer: number | BitVector,\n): DoubleFlatVector {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeDoublesLE(data, offset, dataStreamMetadata.numValues, nullabilityBuffer);\n return new DoubleFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n}\n\nfunction decodeLongColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n sizeOrNullabilityBuffer: number | BitVector,\n scalarColumn: ScalarColumn,\n): Vector<BigInt64Array, bigint> {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const vectorType = getVectorType(dataStreamMetadata, sizeOrNullabilityBuffer, data, offset);\n const isSigned = scalarColumn.physicalType === ScalarType.INT_64;\n if (vectorType === VectorType.FLAT) {\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeLongStream(data, offset, dataStreamMetadata, isSigned, nullabilityBuffer);\n return new LongFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n }\n if (vectorType === VectorType.SEQUENCE) {\n const id = decodeSequenceLongStream(data, offset, dataStreamMetadata);\n return new LongSequenceVector(\n column.name,\n id[0],\n id[1],\n (dataStreamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n }\n const constValue = decodeConstLongStream(data, offset, dataStreamMetadata, isSigned);\n return new LongConstVector(column.name, constValue, sizeOrNullabilityBuffer);\n}\n\nfunction decodeIntColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n scalarColumn: ScalarColumn,\n sizeOrNullabilityBuffer: number | BitVector,\n): Vector<Int32Array, number> {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const vectorType = getVectorType(dataStreamMetadata, sizeOrNullabilityBuffer, data, offset);\n const isSigned = scalarColumn.physicalType === ScalarType.INT_32;\n\n if (vectorType === VectorType.FLAT) {\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeIntStream(data, offset, dataStreamMetadata, isSigned, undefined, nullabilityBuffer);\n return new IntFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n }\n if (vectorType === VectorType.SEQUENCE) {\n const id = decodeSequenceIntStream(data, offset, dataStreamMetadata);\n return new IntSequenceVector(\n column.name,\n id[0],\n id[1],\n (dataStreamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n }\n const constValue = decodeConstIntStream(data, offset, dataStreamMetadata, isSigned);\n return new IntConstVector(column.name, constValue, sizeOrNullabilityBuffer);\n}\n\nfunction isNullabilityBuffer(sizeOrNullabilityBuffer: number | BitVector): sizeOrNullabilityBuffer is BitVector {\n return sizeOrNullabilityBuffer instanceof BitVector;\n}\n"]}
1
+ {"version":3,"file":"propertyDecoder.js","sourceRoot":"","sources":["../../src/decoding/propertyDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import type IntWrapper from \"./intWrapper\";\nimport { type Column, type ScalarColumn, ScalarType } from \"../metadata/tileset/tilesetMetadata\";\nimport type Vector from \"../vector/vector\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport { decodeStreamMetadata, type RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport { VectorType } from \"../vector/vectorType\";\nimport { BooleanFlatVector } from \"../vector/flat/booleanFlatVector\";\nimport { DoubleFlatVector } from \"../vector/flat/doubleFlatVector\";\nimport { FloatFlatVector } from \"../vector/flat/floatFlatVector\";\nimport { Int64ConstVector } from \"../vector/constant/int64ConstVector\";\nimport { Int64FlatVector } from \"../vector/flat/int64FlatVector\";\nimport { Int32FlatVector } from \"../vector/flat/int32FlatVector\";\nimport { Int32ConstVector } from \"../vector/constant/int32ConstVector\";\nimport { decodeBooleanRle, decodeDoublesLE, decodeFloatsLE, skipColumn } from \"./decodingUtils\";\nimport {\n decodeSignedConstInt32Stream,\n decodeSignedConstInt64Stream,\n decodeSignedInt32Stream,\n decodeSignedInt64Stream,\n decodeUnsignedInt32Stream,\n decodeUnsignedConstInt32Stream,\n decodeUnsignedConstInt64Stream,\n decodeUnsignedInt64Stream,\n decodeSequenceInt32Stream,\n decodeSequenceInt64Stream,\n getVectorType,\n} from \"./integerStreamDecoder\";\nimport { Int32SequenceVector } from \"../vector/sequence/int32SequenceVector\";\nimport { Int64SequenceVector } from \"../vector/sequence/int64SequenceVector\";\nimport { decodeSharedDictionary, decodeString } from \"./stringDecoder\";\n\nexport function decodePropertyColumn(\n data: Uint8Array,\n offset: IntWrapper,\n columnMetadata: Column,\n numStreams: number,\n numFeatures: number,\n propertyColumnNames?: Set<string>,\n): Vector | Vector[] {\n if (columnMetadata.type === \"scalarType\") {\n if (propertyColumnNames && !propertyColumnNames.has(columnMetadata.name)) {\n skipColumn(numStreams, data, offset);\n return null;\n }\n\n return decodeScalarPropertyColumn(\n numStreams,\n data,\n offset,\n numFeatures,\n columnMetadata.scalarType,\n columnMetadata,\n );\n }\n\n if (numStreams === 0) {\n return null;\n }\n\n return decodeSharedDictionary(data, offset, columnMetadata, numFeatures, propertyColumnNames);\n}\n\nfunction decodeScalarPropertyColumn(\n numStreams: number,\n data: Uint8Array,\n offset: IntWrapper,\n numFeatures: number,\n column: ScalarColumn,\n columnMetadata: Column,\n) {\n let nullabilityBuffer: BitVector = null;\n if (numStreams === 0) {\n return null;\n }\n\n if (columnMetadata.nullable) {\n const presentStreamMetadata = decodeStreamMetadata(data, offset);\n const numValues = presentStreamMetadata.numValues;\n const streamDataStart = offset.get();\n const presentVector = decodeBooleanRle(data, numValues, presentStreamMetadata.byteLength, offset);\n offset.set(streamDataStart + presentStreamMetadata.byteLength);\n nullabilityBuffer = new BitVector(presentVector, presentStreamMetadata.numValues);\n }\n\n const sizeOrNullabilityBuffer = nullabilityBuffer ?? numFeatures;\n const scalarType = column.physicalType;\n switch (scalarType) {\n case ScalarType.UINT_32:\n case ScalarType.INT_32:\n return decodeInt32Column(data, offset, columnMetadata, column, sizeOrNullabilityBuffer);\n case ScalarType.STRING: {\n // In embedded format: numStreams includes nullability stream if column is nullable\n const stringDataStreams = columnMetadata.nullable ? numStreams - 1 : numStreams;\n return decodeString(columnMetadata.name, data, offset, stringDataStreams, nullabilityBuffer);\n }\n case ScalarType.BOOLEAN:\n return decodeBooleanColumn(data, offset, columnMetadata, numFeatures, sizeOrNullabilityBuffer);\n case ScalarType.UINT_64:\n case ScalarType.INT_64:\n return decodeInt64Column(data, offset, columnMetadata, sizeOrNullabilityBuffer, column);\n case ScalarType.FLOAT:\n return decodeFloatColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer);\n case ScalarType.DOUBLE:\n return decodeDoubleColumn(data, offset, columnMetadata, sizeOrNullabilityBuffer);\n default:\n throw new Error(`The specified data type for the field is currently not supported: ${column}`);\n }\n}\n\nfunction decodeBooleanColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n _numFeatures: number,\n sizeOrNullabilityBuffer: number | BitVector,\n): BooleanFlatVector {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const numValues = dataStreamMetadata.numValues;\n const streamDataStart = offset.get();\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeBooleanRle(data, numValues, dataStreamMetadata.byteLength, offset, nullabilityBuffer);\n offset.set(streamDataStart + dataStreamMetadata.byteLength);\n const dataVector = new BitVector(dataStream, numValues);\n return new BooleanFlatVector(column.name, dataVector, sizeOrNullabilityBuffer);\n}\n\nfunction decodeFloatColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n sizeOrNullabilityBuffer: number | BitVector,\n): FloatFlatVector {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeFloatsLE(data, offset, dataStreamMetadata.numValues, nullabilityBuffer);\n return new FloatFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n}\n\nfunction decodeDoubleColumn(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n sizeOrNullabilityBuffer: number | BitVector,\n): DoubleFlatVector {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = decodeDoublesLE(data, offset, dataStreamMetadata.numValues, nullabilityBuffer);\n return new DoubleFlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n}\n\nfunction decodeInt64Column(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n sizeOrNullabilityBuffer: number | BitVector,\n scalarColumn: ScalarColumn,\n): Vector<BigInt64Array | BigUint64Array, bigint> {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const vectorType = getVectorType(dataStreamMetadata, sizeOrNullabilityBuffer, data, offset, \"int64\");\n const isSigned = scalarColumn.physicalType === ScalarType.INT_64;\n if (vectorType === VectorType.FLAT) {\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = isSigned\n ? decodeSignedInt64Stream(data, offset, dataStreamMetadata, nullabilityBuffer)\n : decodeUnsignedInt64Stream(data, offset, dataStreamMetadata, nullabilityBuffer);\n return new Int64FlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n }\n if (vectorType === VectorType.SEQUENCE) {\n const id = decodeSequenceInt64Stream(data, offset, dataStreamMetadata);\n return new Int64SequenceVector(\n column.name,\n id[0],\n id[1],\n (dataStreamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n }\n const constValue = isSigned\n ? decodeSignedConstInt64Stream(data, offset, dataStreamMetadata)\n : decodeUnsignedConstInt64Stream(data, offset, dataStreamMetadata);\n return new Int64ConstVector(column.name, constValue, sizeOrNullabilityBuffer, isSigned);\n}\n\nfunction decodeInt32Column(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n scalarColumn: ScalarColumn,\n sizeOrNullabilityBuffer: number | BitVector,\n): Vector<Int32Array | Uint32Array, number> {\n const dataStreamMetadata = decodeStreamMetadata(data, offset);\n const vectorType = getVectorType(dataStreamMetadata, sizeOrNullabilityBuffer, data, offset);\n const isSigned = scalarColumn.physicalType === ScalarType.INT_32;\n\n if (vectorType === VectorType.FLAT) {\n const nullabilityBuffer = isNullabilityBuffer(sizeOrNullabilityBuffer) ? sizeOrNullabilityBuffer : undefined;\n const dataStream = isSigned\n ? decodeSignedInt32Stream(data, offset, dataStreamMetadata, undefined, nullabilityBuffer)\n : decodeUnsignedInt32Stream(data, offset, dataStreamMetadata, undefined, nullabilityBuffer);\n return new Int32FlatVector(column.name, dataStream, sizeOrNullabilityBuffer);\n }\n if (vectorType === VectorType.SEQUENCE) {\n const id = decodeSequenceInt32Stream(data, offset, dataStreamMetadata);\n return new Int32SequenceVector(\n column.name,\n id[0],\n id[1],\n (dataStreamMetadata as RleEncodedStreamMetadata).numRleValues,\n );\n }\n const constValue = isSigned\n ? decodeSignedConstInt32Stream(data, offset, dataStreamMetadata)\n : decodeUnsignedConstInt32Stream(data, offset, dataStreamMetadata);\n return new Int32ConstVector(column.name, constValue, sizeOrNullabilityBuffer, isSigned);\n}\n\nfunction isNullabilityBuffer(sizeOrNullabilityBuffer: number | BitVector): sizeOrNullabilityBuffer is BitVector {\n return sizeOrNullabilityBuffer instanceof BitVector;\n}\n"]}
@@ -5,7 +5,7 @@ import BitVector from "../vector/flat/bitVector";
5
5
  import { PhysicalStreamType } from "../metadata/tile/physicalStreamType";
6
6
  import { DictionaryType } from "../metadata/tile/dictionaryType";
7
7
  import { LengthType } from "../metadata/tile/lengthType";
8
- import { decodeIntStream, decodeLengthStreamToOffsetBuffer } from "./integerStreamDecoder";
8
+ import { decodeUnsignedInt32Stream, decodeLengthStreamToOffsetBuffer } from "./integerStreamDecoder";
9
9
  import { ScalarType } from "../metadata/tileset/tilesetMetadata";
10
10
  import { decodeVarintInt32 } from "./integerDecodingUtils";
11
11
  import { decodeBooleanRle, skipColumn } from "./decodingUtils";
@@ -16,7 +16,7 @@ export function decodeString(name, data, offset, numStreams, bitVector) {
16
16
  let dictionaryStream = null;
17
17
  let symbolLengthStream = null;
18
18
  let symbolTableStream = null;
19
- let presentStream = null;
19
+ let nullabilityBuffer = bitVector ?? null;
20
20
  let plainLengthStream = null;
21
21
  let plainDataStream = null;
22
22
  for (let i = 0; i < numStreams; i++) {
@@ -24,49 +24,48 @@ export function decodeString(name, data, offset, numStreams, bitVector) {
24
24
  switch (streamMetadata.physicalStreamType) {
25
25
  case PhysicalStreamType.PRESENT: {
26
26
  const presentData = decodeBooleanRle(data, streamMetadata.numValues, streamMetadata.byteLength, offset);
27
- presentStream = new BitVector(presentData, streamMetadata.numValues);
27
+ const presentStream = new BitVector(presentData, streamMetadata.numValues);
28
+ nullabilityBuffer = bitVector ?? presentStream;
28
29
  break;
29
30
  }
30
31
  case PhysicalStreamType.OFFSET: {
31
- const isNullable = bitVector != null || presentStream != null;
32
- const nullabilityBuffer = bitVector ?? presentStream;
33
- offsetStream = decodeIntStream(data, offset, streamMetadata, false, undefined, isNullable ? nullabilityBuffer : undefined);
32
+ offsetStream = decodeUnsignedInt32Stream(data, offset, streamMetadata, undefined, nullabilityBuffer);
34
33
  break;
35
34
  }
36
35
  case PhysicalStreamType.LENGTH: {
37
- const ls = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);
36
+ const lengthStream = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);
38
37
  if (LengthType.DICTIONARY === streamMetadata.logicalStreamType.lengthType) {
39
- dictionaryLengthStream = ls;
38
+ dictionaryLengthStream = lengthStream;
40
39
  }
41
40
  else if (LengthType.SYMBOL === streamMetadata.logicalStreamType.lengthType) {
42
- symbolLengthStream = ls;
41
+ symbolLengthStream = lengthStream;
43
42
  }
44
43
  else {
45
44
  // Plain string encoding uses VAR_BINARY length type
46
- plainLengthStream = ls;
45
+ plainLengthStream = lengthStream;
47
46
  }
48
47
  break;
49
48
  }
50
49
  case PhysicalStreamType.DATA: {
51
- const ds = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);
50
+ const dataStream = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);
52
51
  offset.add(streamMetadata.byteLength);
53
52
  const dictType = streamMetadata.logicalStreamType.dictionaryType;
54
53
  if (DictionaryType.FSST === dictType) {
55
- symbolTableStream = ds;
54
+ symbolTableStream = dataStream;
56
55
  }
57
56
  else if (DictionaryType.SINGLE === dictType || DictionaryType.SHARED === dictType) {
58
- dictionaryStream = ds;
57
+ dictionaryStream = dataStream;
59
58
  }
60
59
  else if (DictionaryType.NONE === dictType) {
61
- plainDataStream = ds;
60
+ plainDataStream = dataStream;
62
61
  }
63
62
  break;
64
63
  }
65
64
  }
66
65
  }
67
- return (decodeFsstDictionaryVector(name, symbolTableStream, offsetStream, dictionaryLengthStream, dictionaryStream, symbolLengthStream, bitVector ?? presentStream) ??
68
- decodeDictionaryVector(name, dictionaryStream, offsetStream, dictionaryLengthStream, bitVector ?? presentStream) ??
69
- decodePlainStringVector(name, plainLengthStream, plainDataStream, offsetStream, bitVector ?? presentStream));
66
+ return (decodeFsstDictionaryVector(name, symbolTableStream, offsetStream, dictionaryLengthStream, dictionaryStream, symbolLengthStream, nullabilityBuffer) ??
67
+ decodeDictionaryVector(name, dictionaryStream, offsetStream, dictionaryLengthStream, nullabilityBuffer) ??
68
+ decodePlainStringVector(name, plainLengthStream, plainDataStream, offsetStream, nullabilityBuffer));
70
69
  }
71
70
  function decodeFsstDictionaryVector(name, symbolTableStream, offsetStream, dictionaryLengthStream, dictionaryStream, symbolLengthStream, nullabilityBuffer) {
72
71
  if (!symbolTableStream) {
@@ -92,7 +91,7 @@ function decodePlainStringVector(name, plainLengthStream, plainDataStream, offse
92
91
  : new StringDictionaryVector(name, offsetStream, plainLengthStream, plainDataStream);
93
92
  }
94
93
  if (nullabilityBuffer && nullabilityBuffer.size() !== plainLengthStream.length - 1) {
95
- const sparseOffsetStream = new Int32Array(nullabilityBuffer.size());
94
+ const sparseOffsetStream = new Uint32Array(nullabilityBuffer.size());
96
95
  let valueIndex = 0;
97
96
  for (let i = 0; i < nullabilityBuffer.size(); i++) {
98
97
  if (nullabilityBuffer.get(i)) {
@@ -165,7 +164,7 @@ export function decodeSharedDictionary(data, offset, column, numFeatures, proper
165
164
  const offsetStreamMetadata = decodeStreamMetadata(data, offset);
166
165
  const offsetCount = offsetStreamMetadata.decompressedCount;
167
166
  const isNullable = offsetCount !== numFeatures;
168
- const offsetStream = decodeIntStream(data, offset, offsetStreamMetadata, false, undefined, isNullable ? new BitVector(presentStream, presentStreamMetadata.numValues) : undefined);
167
+ const offsetStream = decodeUnsignedInt32Stream(data, offset, offsetStreamMetadata, undefined, isNullable ? new BitVector(presentStream, presentStreamMetadata.numValues) : undefined);
169
168
  stringDictionaryVectors[i++] = symbolTableBuffer
170
169
  ? new StringFsstDictionaryVector(columnName, offsetStream, dictionaryOffsetBuffer, dictionaryBuffer, symbolOffsetBuffer, symbolTableBuffer, new BitVector(presentStream, presentStreamMetadata.numValues))
171
170
  : new StringDictionaryVector(columnName, offsetStream, dictionaryOffsetBuffer, dictionaryBuffer, new BitVector(presentStream, presentStreamMetadata.numValues));
@@ -1 +1 @@
1
- {"version":3,"file":"stringDecoder.js","sourceRoot":"","sources":["../../src/decoding/stringDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { decodeStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport { StringFlatVector } from \"../vector/flat/stringFlatVector\";\nimport { StringDictionaryVector } from \"../vector/dictionary/stringDictionaryVector\";\nimport type IntWrapper from \"./intWrapper\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport type Vector from \"../vector/vector\";\nimport { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { DictionaryType } from \"../metadata/tile/dictionaryType\";\nimport { LengthType } from \"../metadata/tile/lengthType\";\nimport { decodeIntStream, decodeLengthStreamToOffsetBuffer } from \"./integerStreamDecoder\";\nimport { type Column, ScalarType } from \"../metadata/tileset/tilesetMetadata\";\nimport { decodeVarintInt32 } from \"./integerDecodingUtils\";\nimport { decodeBooleanRle, skipColumn } from \"./decodingUtils\";\nimport { StringFsstDictionaryVector } from \"../vector/fsst-dictionary/stringFsstDictionaryVector\";\n\nexport function decodeString(\n name: string,\n data: Uint8Array,\n offset: IntWrapper,\n numStreams: number,\n bitVector?: BitVector,\n): Vector {\n let dictionaryLengthStream: Uint32Array = null;\n let offsetStream: Int32Array = null;\n let dictionaryStream: Uint8Array = null;\n let symbolLengthStream: Uint32Array = null;\n let symbolTableStream: Uint8Array = null;\n let presentStream: BitVector = null;\n let plainLengthStream: Uint32Array = null;\n let plainDataStream: Uint8Array = null;\n\n for (let i = 0; i < numStreams; i++) {\n const streamMetadata = decodeStreamMetadata(data, offset);\n\n switch (streamMetadata.physicalStreamType) {\n case PhysicalStreamType.PRESENT: {\n const presentData = decodeBooleanRle(data, streamMetadata.numValues, streamMetadata.byteLength, offset);\n presentStream = new BitVector(presentData, streamMetadata.numValues);\n break;\n }\n case PhysicalStreamType.OFFSET: {\n const isNullable = bitVector != null || presentStream != null;\n const nullabilityBuffer = bitVector ?? presentStream;\n offsetStream = decodeIntStream(\n data,\n offset,\n streamMetadata,\n false,\n undefined,\n isNullable ? nullabilityBuffer : undefined,\n );\n break;\n }\n case PhysicalStreamType.LENGTH: {\n const ls = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);\n if (LengthType.DICTIONARY === streamMetadata.logicalStreamType.lengthType) {\n dictionaryLengthStream = ls;\n } else if (LengthType.SYMBOL === streamMetadata.logicalStreamType.lengthType) {\n symbolLengthStream = ls;\n } else {\n // Plain string encoding uses VAR_BINARY length type\n plainLengthStream = ls;\n }\n break;\n }\n case PhysicalStreamType.DATA: {\n const ds = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);\n offset.add(streamMetadata.byteLength);\n const dictType = streamMetadata.logicalStreamType.dictionaryType;\n if (DictionaryType.FSST === dictType) {\n symbolTableStream = ds;\n } else if (DictionaryType.SINGLE === dictType || DictionaryType.SHARED === dictType) {\n dictionaryStream = ds;\n } else if (DictionaryType.NONE === dictType) {\n plainDataStream = ds;\n }\n break;\n }\n }\n }\n\n return (\n decodeFsstDictionaryVector(\n name,\n symbolTableStream,\n offsetStream,\n dictionaryLengthStream,\n dictionaryStream,\n symbolLengthStream,\n bitVector ?? presentStream,\n ) ??\n decodeDictionaryVector(\n name,\n dictionaryStream,\n offsetStream,\n dictionaryLengthStream,\n bitVector ?? presentStream,\n ) ??\n decodePlainStringVector(name, plainLengthStream, plainDataStream, offsetStream, bitVector ?? presentStream)\n );\n}\n\nfunction decodeFsstDictionaryVector(\n name: string,\n symbolTableStream: Uint8Array | null,\n offsetStream: Int32Array | null,\n dictionaryLengthStream: Uint32Array | null,\n dictionaryStream: Uint8Array | null,\n symbolLengthStream: Uint32Array | null,\n nullabilityBuffer: BitVector | null,\n): Vector | null {\n if (!symbolTableStream) {\n return null;\n }\n return new StringFsstDictionaryVector(\n name,\n offsetStream,\n dictionaryLengthStream,\n dictionaryStream,\n symbolLengthStream,\n symbolTableStream,\n nullabilityBuffer,\n );\n}\n\nfunction decodeDictionaryVector(\n name: string,\n dictionaryStream: Uint8Array | null,\n offsetStream: Int32Array | null,\n dictionaryLengthStream: Uint32Array | null,\n nullabilityBuffer: BitVector | null,\n): Vector | null {\n if (!dictionaryStream) {\n return null;\n }\n return nullabilityBuffer\n ? new StringDictionaryVector(name, offsetStream, dictionaryLengthStream, dictionaryStream, nullabilityBuffer)\n : new StringDictionaryVector(name, offsetStream, dictionaryLengthStream, dictionaryStream);\n}\n\nfunction decodePlainStringVector(\n name: string,\n plainLengthStream: Uint32Array | null,\n plainDataStream: Uint8Array | null,\n offsetStream: Int32Array | null,\n nullabilityBuffer: BitVector | null,\n): Vector | null {\n if (!plainLengthStream || !plainDataStream) {\n return null;\n }\n\n if (offsetStream) {\n return nullabilityBuffer\n ? new StringDictionaryVector(name, offsetStream, plainLengthStream, plainDataStream, nullabilityBuffer)\n : new StringDictionaryVector(name, offsetStream, plainLengthStream, plainDataStream);\n }\n\n if (nullabilityBuffer && nullabilityBuffer.size() !== plainLengthStream.length - 1) {\n const sparseOffsetStream = new Int32Array(nullabilityBuffer.size());\n let valueIndex = 0;\n for (let i = 0; i < nullabilityBuffer.size(); i++) {\n if (nullabilityBuffer.get(i)) {\n sparseOffsetStream[i] = valueIndex++;\n } else {\n sparseOffsetStream[i] = 0;\n }\n }\n return new StringDictionaryVector(\n name,\n sparseOffsetStream,\n plainLengthStream,\n plainDataStream,\n nullabilityBuffer,\n );\n }\n\n return nullabilityBuffer\n ? new StringFlatVector(name, plainLengthStream, plainDataStream, nullabilityBuffer)\n : new StringFlatVector(name, plainLengthStream, plainDataStream);\n}\n\nexport function decodeSharedDictionary(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n numFeatures: number,\n propertyColumnNames?: Set<string>,\n): Vector[] {\n let dictionaryOffsetBuffer: Uint32Array = null;\n let dictionaryBuffer: Uint8Array = null;\n let symbolOffsetBuffer: Uint32Array = null;\n let symbolTableBuffer: Uint8Array = null;\n\n let dictionaryStreamDecoded = false;\n while (!dictionaryStreamDecoded) {\n const streamMetadata = decodeStreamMetadata(data, offset);\n switch (streamMetadata.physicalStreamType) {\n case PhysicalStreamType.LENGTH:\n if (LengthType.DICTIONARY === streamMetadata.logicalStreamType.lengthType) {\n dictionaryOffsetBuffer = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);\n } else {\n symbolOffsetBuffer = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);\n }\n break;\n case PhysicalStreamType.DATA:\n if (\n DictionaryType.SINGLE === streamMetadata.logicalStreamType.dictionaryType ||\n DictionaryType.SHARED === streamMetadata.logicalStreamType.dictionaryType\n ) {\n dictionaryBuffer = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);\n dictionaryStreamDecoded = true;\n } else {\n symbolTableBuffer = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);\n }\n offset.add(streamMetadata.byteLength);\n break;\n }\n }\n\n const childFields = column.complexType.children;\n const stringDictionaryVectors = [];\n let i = 0;\n for (const childField of childFields) {\n const numStreams = decodeVarintInt32(data, offset, 1)[0];\n if (numStreams === 0) {\n /* Column is not present in the tile */\n continue;\n }\n\n const columnName = childField.name ? `${column.name}${childField.name}` : column.name;\n if (propertyColumnNames) {\n if (!propertyColumnNames.has(columnName)) {\n //TODO: add size of sub column to Mlt for faster skipping\n skipColumn(numStreams, data, offset);\n continue;\n }\n }\n\n if (\n numStreams !== 2 ||\n childField.type !== \"scalarField\" ||\n childField.scalarField.physicalType !== ScalarType.STRING\n ) {\n throw new Error(\"Currently only optional string fields are implemented for a struct.\");\n }\n\n const presentStreamMetadata = decodeStreamMetadata(data, offset);\n const presentStream = decodeBooleanRle(\n data,\n presentStreamMetadata.numValues,\n presentStreamMetadata.byteLength,\n offset,\n );\n const offsetStreamMetadata = decodeStreamMetadata(data, offset);\n const offsetCount = offsetStreamMetadata.decompressedCount;\n const isNullable = offsetCount !== numFeatures;\n const offsetStream = decodeIntStream(\n data,\n offset,\n offsetStreamMetadata,\n false,\n undefined,\n isNullable ? new BitVector(presentStream, presentStreamMetadata.numValues) : undefined,\n );\n\n stringDictionaryVectors[i++] = symbolTableBuffer\n ? new StringFsstDictionaryVector(\n columnName,\n offsetStream,\n dictionaryOffsetBuffer,\n dictionaryBuffer,\n symbolOffsetBuffer,\n symbolTableBuffer,\n new BitVector(presentStream, presentStreamMetadata.numValues),\n )\n : new StringDictionaryVector(\n columnName,\n offsetStream,\n dictionaryOffsetBuffer,\n dictionaryBuffer,\n new BitVector(presentStream, presentStreamMetadata.numValues),\n );\n }\n\n return stringDictionaryVectors;\n}\n"]}
1
+ {"version":3,"file":"stringDecoder.js","sourceRoot":"","sources":["../../src/decoding/stringDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { decodeStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport { StringFlatVector } from \"../vector/flat/stringFlatVector\";\nimport { StringDictionaryVector } from \"../vector/dictionary/stringDictionaryVector\";\nimport type IntWrapper from \"./intWrapper\";\nimport BitVector from \"../vector/flat/bitVector\";\nimport type Vector from \"../vector/vector\";\nimport { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { DictionaryType } from \"../metadata/tile/dictionaryType\";\nimport { LengthType } from \"../metadata/tile/lengthType\";\nimport { decodeUnsignedInt32Stream, decodeLengthStreamToOffsetBuffer } from \"./integerStreamDecoder\";\nimport { type Column, ScalarType } from \"../metadata/tileset/tilesetMetadata\";\nimport { decodeVarintInt32 } from \"./integerDecodingUtils\";\nimport { decodeBooleanRle, skipColumn } from \"./decodingUtils\";\nimport { StringFsstDictionaryVector } from \"../vector/fsst-dictionary/stringFsstDictionaryVector\";\n\nexport function decodeString(\n name: string,\n data: Uint8Array,\n offset: IntWrapper,\n numStreams: number,\n bitVector?: BitVector,\n): Vector {\n let dictionaryLengthStream: Uint32Array = null;\n let offsetStream: Uint32Array = null;\n let dictionaryStream: Uint8Array = null;\n let symbolLengthStream: Uint32Array = null;\n let symbolTableStream: Uint8Array = null;\n let nullabilityBuffer: BitVector = bitVector ?? null;\n let plainLengthStream: Uint32Array = null;\n let plainDataStream: Uint8Array = null;\n\n for (let i = 0; i < numStreams; i++) {\n const streamMetadata = decodeStreamMetadata(data, offset);\n\n switch (streamMetadata.physicalStreamType) {\n case PhysicalStreamType.PRESENT: {\n const presentData = decodeBooleanRle(data, streamMetadata.numValues, streamMetadata.byteLength, offset);\n const presentStream = new BitVector(presentData, streamMetadata.numValues);\n nullabilityBuffer = bitVector ?? presentStream;\n break;\n }\n case PhysicalStreamType.OFFSET: {\n offsetStream = decodeUnsignedInt32Stream(data, offset, streamMetadata, undefined, nullabilityBuffer);\n break;\n }\n case PhysicalStreamType.LENGTH: {\n const lengthStream = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);\n if (LengthType.DICTIONARY === streamMetadata.logicalStreamType.lengthType) {\n dictionaryLengthStream = lengthStream;\n } else if (LengthType.SYMBOL === streamMetadata.logicalStreamType.lengthType) {\n symbolLengthStream = lengthStream;\n } else {\n // Plain string encoding uses VAR_BINARY length type\n plainLengthStream = lengthStream;\n }\n break;\n }\n case PhysicalStreamType.DATA: {\n const dataStream = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);\n offset.add(streamMetadata.byteLength);\n const dictType = streamMetadata.logicalStreamType.dictionaryType;\n if (DictionaryType.FSST === dictType) {\n symbolTableStream = dataStream;\n } else if (DictionaryType.SINGLE === dictType || DictionaryType.SHARED === dictType) {\n dictionaryStream = dataStream;\n } else if (DictionaryType.NONE === dictType) {\n plainDataStream = dataStream;\n }\n break;\n }\n }\n }\n\n return (\n decodeFsstDictionaryVector(\n name,\n symbolTableStream,\n offsetStream,\n dictionaryLengthStream,\n dictionaryStream,\n symbolLengthStream,\n nullabilityBuffer,\n ) ??\n decodeDictionaryVector(name, dictionaryStream, offsetStream, dictionaryLengthStream, nullabilityBuffer) ??\n decodePlainStringVector(name, plainLengthStream, plainDataStream, offsetStream, nullabilityBuffer)\n );\n}\n\nfunction decodeFsstDictionaryVector(\n name: string,\n symbolTableStream: Uint8Array | null,\n offsetStream: Uint32Array | null,\n dictionaryLengthStream: Uint32Array | null,\n dictionaryStream: Uint8Array | null,\n symbolLengthStream: Uint32Array | null,\n nullabilityBuffer: BitVector | null,\n): Vector | null {\n if (!symbolTableStream) {\n return null;\n }\n return new StringFsstDictionaryVector(\n name,\n offsetStream,\n dictionaryLengthStream,\n dictionaryStream,\n symbolLengthStream,\n symbolTableStream,\n nullabilityBuffer,\n );\n}\n\nfunction decodeDictionaryVector(\n name: string,\n dictionaryStream: Uint8Array | null,\n offsetStream: Uint32Array | null,\n dictionaryLengthStream: Uint32Array | null,\n nullabilityBuffer: BitVector | null,\n): Vector | null {\n if (!dictionaryStream) {\n return null;\n }\n return nullabilityBuffer\n ? new StringDictionaryVector(name, offsetStream, dictionaryLengthStream, dictionaryStream, nullabilityBuffer)\n : new StringDictionaryVector(name, offsetStream, dictionaryLengthStream, dictionaryStream);\n}\n\nfunction decodePlainStringVector(\n name: string,\n plainLengthStream: Uint32Array | null,\n plainDataStream: Uint8Array | null,\n offsetStream: Uint32Array | null,\n nullabilityBuffer: BitVector | null,\n): Vector | null {\n if (!plainLengthStream || !plainDataStream) {\n return null;\n }\n\n if (offsetStream) {\n return nullabilityBuffer\n ? new StringDictionaryVector(name, offsetStream, plainLengthStream, plainDataStream, nullabilityBuffer)\n : new StringDictionaryVector(name, offsetStream, plainLengthStream, plainDataStream);\n }\n\n if (nullabilityBuffer && nullabilityBuffer.size() !== plainLengthStream.length - 1) {\n const sparseOffsetStream = new Uint32Array(nullabilityBuffer.size());\n let valueIndex = 0;\n for (let i = 0; i < nullabilityBuffer.size(); i++) {\n if (nullabilityBuffer.get(i)) {\n sparseOffsetStream[i] = valueIndex++;\n } else {\n sparseOffsetStream[i] = 0;\n }\n }\n return new StringDictionaryVector(\n name,\n sparseOffsetStream,\n plainLengthStream,\n plainDataStream,\n nullabilityBuffer,\n );\n }\n\n return nullabilityBuffer\n ? new StringFlatVector(name, plainLengthStream, plainDataStream, nullabilityBuffer)\n : new StringFlatVector(name, plainLengthStream, plainDataStream);\n}\n\nexport function decodeSharedDictionary(\n data: Uint8Array,\n offset: IntWrapper,\n column: Column,\n numFeatures: number,\n propertyColumnNames?: Set<string>,\n): Vector[] {\n let dictionaryOffsetBuffer: Uint32Array = null;\n let dictionaryBuffer: Uint8Array = null;\n let symbolOffsetBuffer: Uint32Array = null;\n let symbolTableBuffer: Uint8Array = null;\n\n let dictionaryStreamDecoded = false;\n while (!dictionaryStreamDecoded) {\n const streamMetadata = decodeStreamMetadata(data, offset);\n switch (streamMetadata.physicalStreamType) {\n case PhysicalStreamType.LENGTH:\n if (LengthType.DICTIONARY === streamMetadata.logicalStreamType.lengthType) {\n dictionaryOffsetBuffer = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);\n } else {\n symbolOffsetBuffer = decodeLengthStreamToOffsetBuffer(data, offset, streamMetadata);\n }\n break;\n case PhysicalStreamType.DATA:\n if (\n DictionaryType.SINGLE === streamMetadata.logicalStreamType.dictionaryType ||\n DictionaryType.SHARED === streamMetadata.logicalStreamType.dictionaryType\n ) {\n dictionaryBuffer = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);\n dictionaryStreamDecoded = true;\n } else {\n symbolTableBuffer = data.subarray(offset.get(), offset.get() + streamMetadata.byteLength);\n }\n offset.add(streamMetadata.byteLength);\n break;\n }\n }\n\n const childFields = column.complexType.children;\n const stringDictionaryVectors = [];\n let i = 0;\n for (const childField of childFields) {\n const numStreams = decodeVarintInt32(data, offset, 1)[0];\n if (numStreams === 0) {\n /* Column is not present in the tile */\n continue;\n }\n\n const columnName = childField.name ? `${column.name}${childField.name}` : column.name;\n if (propertyColumnNames) {\n if (!propertyColumnNames.has(columnName)) {\n //TODO: add size of sub column to Mlt for faster skipping\n skipColumn(numStreams, data, offset);\n continue;\n }\n }\n\n if (\n numStreams !== 2 ||\n childField.type !== \"scalarField\" ||\n childField.scalarField.physicalType !== ScalarType.STRING\n ) {\n throw new Error(\"Currently only optional string fields are implemented for a struct.\");\n }\n\n const presentStreamMetadata = decodeStreamMetadata(data, offset);\n const presentStream = decodeBooleanRle(\n data,\n presentStreamMetadata.numValues,\n presentStreamMetadata.byteLength,\n offset,\n );\n const offsetStreamMetadata = decodeStreamMetadata(data, offset);\n const offsetCount = offsetStreamMetadata.decompressedCount;\n const isNullable = offsetCount !== numFeatures;\n const offsetStream = decodeUnsignedInt32Stream(\n data,\n offset,\n offsetStreamMetadata,\n undefined,\n isNullable ? new BitVector(presentStream, presentStreamMetadata.numValues) : undefined,\n );\n\n stringDictionaryVectors[i++] = symbolTableBuffer\n ? new StringFsstDictionaryVector(\n columnName,\n offsetStream,\n dictionaryOffsetBuffer,\n dictionaryBuffer,\n symbolOffsetBuffer,\n symbolTableBuffer,\n new BitVector(presentStream, presentStreamMetadata.numValues),\n )\n : new StringDictionaryVector(\n columnName,\n offsetStream,\n dictionaryOffsetBuffer,\n dictionaryBuffer,\n new BitVector(presentStream, presentStreamMetadata.numValues),\n );\n }\n\n return stringDictionaryVectors;\n}\n"]}
@@ -2,8 +2,8 @@ import BitVector from "../vector/flat/bitVector.js";
2
2
  /**
3
3
  * Type constraint for TypedArray types that can be unpacked
4
4
  */
5
- export type TypedArrayConstructor = Int32ArrayConstructor | BigInt64ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor;
6
- export type TypedArrayInstance = Int32Array | BigInt64Array | Float32Array | Float64Array;
5
+ export type TypedArrayConstructor = Int32ArrayConstructor | Uint32ArrayConstructor | BigInt64ArrayConstructor | BigUint64ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor;
6
+ export type TypedArrayInstance = Int32Array | Uint32Array | BigInt64Array | BigUint64Array | Float32Array | Float64Array;
7
7
  /**
8
8
  * Generic unpacking function.
9
9
  * Reconstructs the full array by inserting default values at null positions.
@@ -1 +1 @@
1
- {"version":3,"file":"unpackNullableUtils.js","sourceRoot":"","sources":["../../src/decoding/unpackNullableUtils.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,6BAA6B,CAAC;AAapD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC1B,UAAa,EACb,WAA6B,EAC7B,YAA6B;IAE7B,8CAA8C;IAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAChC,+CAA+C;IAC/C,MAAM,WAAW,GAAG,UAAU,CAAC,WAAoC,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAM,CAAC;IAE1C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,wEAAwE;QACxE,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAE,YAAoB,CAAC;IACnF,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACjC,UAAsB,EACtB,cAAsB,EACtB,WAA6B;IAE7B,oBAAoB;IACpB,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAEtF,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,sEAAsE;QACtE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACpE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;AAC9B,CAAC","sourcesContent":["import BitVector from \"../vector/flat/bitVector.js\";\n\n/**\n * Type constraint for TypedArray types that can be unpacked\n */\nexport type TypedArrayConstructor =\n | Int32ArrayConstructor\n | BigInt64ArrayConstructor\n | Float32ArrayConstructor\n | Float64ArrayConstructor;\n\nexport type TypedArrayInstance = Int32Array | BigInt64Array | Float32Array | Float64Array;\n\n/**\n * Generic unpacking function.\n * Reconstructs the full array by inserting default values at null positions.\n *\n * @param dataStream The compact data stream containing only non-null values\n * @param presentBits BitVector indicating which positions have values (null if non-nullable)\n * @param defaultValue The default value to insert at null positions (0, 0n, etc.)\n * @returns Full array with default values at null positions\n */\nexport function unpackNullable<T extends TypedArrayInstance>(\n dataStream: T,\n presentBits: BitVector | null,\n defaultValue: number | bigint,\n): T {\n // Non-nullable case: return data stream as-is\n if (!presentBits) {\n return dataStream;\n }\n\n const size = presentBits.size();\n // Create new array of same type with full size\n const constructor = dataStream.constructor as TypedArrayConstructor;\n const result = new constructor(size) as T;\n\n let counter = 0;\n for (let i = 0; i < size; i++) {\n // If position has a value, take from data stream; otherwise use default\n result[i] = presentBits.get(i) ? dataStream[counter++] : (defaultValue as any);\n }\n\n return result;\n}\n\n/**\n * Special case for boolean columns because BitVector is not directly compatible with TypedArray.\n *\n * @param dataStream The compact BitVector data containing only non-null boolean values\n * @param dataStreamSize The number of actual values in dataStream\n * @param presentBits BitVector indicating which positions have values (null if non-nullable)\n * @returns Uint8Array buffer for BitVector with false at null positions\n */\nexport function unpackNullableBoolean(\n dataStream: Uint8Array,\n dataStreamSize: number,\n presentBits: BitVector | null,\n): Uint8Array {\n // Non-nullable case\n if (!presentBits) {\n return dataStream;\n }\n\n const numFeatures = presentBits.size();\n const bitVector = new BitVector(dataStream, dataStreamSize);\n const result = new BitVector(new Uint8Array(Math.ceil(numFeatures / 8)), numFeatures);\n\n let counter = 0;\n for (let i = 0; i < numFeatures; i++) {\n // If position has a value, take from data stream; otherwise use false\n const value = presentBits.get(i) ? bitVector.get(counter++) : false;\n result.set(i, value);\n }\n\n return result.getBuffer();\n}\n"]}
1
+ {"version":3,"file":"unpackNullableUtils.js","sourceRoot":"","sources":["../../src/decoding/unpackNullableUtils.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,6BAA6B,CAAC;AAqBpD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC1B,UAAa,EACb,WAA6B,EAC7B,YAA6B;IAE7B,8CAA8C;IAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAChC,+CAA+C;IAC/C,MAAM,WAAW,GAAG,UAAU,CAAC,WAAoC,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAM,CAAC;IAE1C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,wEAAwE;QACxE,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAE,YAAoB,CAAC;IACnF,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACjC,UAAsB,EACtB,cAAsB,EACtB,WAA6B;IAE7B,oBAAoB;IACpB,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAEtF,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,sEAAsE;QACtE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACpE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;AAC9B,CAAC","sourcesContent":["import BitVector from \"../vector/flat/bitVector.js\";\n\n/**\n * Type constraint for TypedArray types that can be unpacked\n */\nexport type TypedArrayConstructor =\n | Int32ArrayConstructor\n | Uint32ArrayConstructor\n | BigInt64ArrayConstructor\n | BigUint64ArrayConstructor\n | Float32ArrayConstructor\n | Float64ArrayConstructor;\n\nexport type TypedArrayInstance =\n | Int32Array\n | Uint32Array\n | BigInt64Array\n | BigUint64Array\n | Float32Array\n | Float64Array;\n\n/**\n * Generic unpacking function.\n * Reconstructs the full array by inserting default values at null positions.\n *\n * @param dataStream The compact data stream containing only non-null values\n * @param presentBits BitVector indicating which positions have values (null if non-nullable)\n * @param defaultValue The default value to insert at null positions (0, 0n, etc.)\n * @returns Full array with default values at null positions\n */\nexport function unpackNullable<T extends TypedArrayInstance>(\n dataStream: T,\n presentBits: BitVector | null,\n defaultValue: number | bigint,\n): T {\n // Non-nullable case: return data stream as-is\n if (!presentBits) {\n return dataStream;\n }\n\n const size = presentBits.size();\n // Create new array of same type with full size\n const constructor = dataStream.constructor as TypedArrayConstructor;\n const result = new constructor(size) as T;\n\n let counter = 0;\n for (let i = 0; i < size; i++) {\n // If position has a value, take from data stream; otherwise use default\n result[i] = presentBits.get(i) ? dataStream[counter++] : (defaultValue as any);\n }\n\n return result;\n}\n\n/**\n * Special case for boolean columns because BitVector is not directly compatible with TypedArray.\n *\n * @param dataStream The compact BitVector data containing only non-null boolean values\n * @param dataStreamSize The number of actual values in dataStream\n * @param presentBits BitVector indicating which positions have values (null if non-nullable)\n * @returns Uint8Array buffer for BitVector with false at null positions\n */\nexport function unpackNullableBoolean(\n dataStream: Uint8Array,\n dataStreamSize: number,\n presentBits: BitVector | null,\n): Uint8Array {\n // Non-nullable case\n if (!presentBits) {\n return dataStream;\n }\n\n const numFeatures = presentBits.size();\n const bitVector = new BitVector(dataStream, dataStreamSize);\n const result = new BitVector(new Uint8Array(Math.ceil(numFeatures / 8)), numFeatures);\n\n let counter = 0;\n for (let i = 0; i < numFeatures; i++) {\n // If position has a value, take from data stream; otherwise use false\n const value = presentBits.get(i) ? bitVector.get(counter++) : false;\n result.set(i, value);\n }\n\n return result.getBuffer();\n}\n"]}
@@ -4,4 +4,4 @@
4
4
  * @param values - Int32 words to serialize.
5
5
  * @returns Big-endian byte stream (`values.length * 4` bytes).
6
6
  */
7
- export declare function encodeBigEndianInt32s(values: Int32Array): Uint8Array;
7
+ export declare function encodeBigEndianInt32s(values: Uint32Array): Uint8Array;
@@ -1 +1 @@
1
- {"version":3,"file":"bigEndianEncode.js","sourceRoot":"","sources":["../../src/encoding/bigEndianEncode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAkB;IACpD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAE3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC","sourcesContent":["import { bswap32 } from \"../decoding/fastPforShared\";\n\n/**\n * Serializes an `Int32Array` to a big-endian byte stream.\n *\n * @param values - Int32 words to serialize.\n * @returns Big-endian byte stream (`values.length * 4` bytes).\n */\nexport function encodeBigEndianInt32s(values: Int32Array): Uint8Array {\n const bytes = new Uint8Array(values.length * 4);\n const u32 = new Uint32Array(bytes.buffer, bytes.byteOffset, values.length);\n\n for (let i = 0; i < values.length; i++) {\n u32[i] = bswap32(values[i]);\n }\n return bytes;\n}\n"]}
1
+ {"version":3,"file":"bigEndianEncode.js","sourceRoot":"","sources":["../../src/encoding/bigEndianEncode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAmB;IACrD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAE3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC","sourcesContent":["import { bswap32 } from \"../decoding/fastPforShared\";\n\n/**\n * Serializes an `Int32Array` to a big-endian byte stream.\n *\n * @param values - Int32 words to serialize.\n * @returns Big-endian byte stream (`values.length * 4` bytes).\n */\nexport function encodeBigEndianInt32s(values: Uint32Array): Uint8Array {\n const bytes = new Uint8Array(values.length * 4);\n const u32 = new Uint32Array(bytes.buffer, bytes.byteOffset, values.length);\n\n for (let i = 0; i < values.length; i++) {\n u32[i] = bswap32(values[i]);\n }\n return bytes;\n}\n"]}