@maplibre/mlt 1.1.7 → 1.1.9

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 (137) 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 +3 -2
  4. package/dist/decoding/decodingTestUtils.js +21 -22
  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 +33 -27
  24. package/dist/decoding/propertyDecoder.js.map +1 -1
  25. package/dist/decoding/stringDecoder.d.ts +1 -1
  26. package/dist/decoding/stringDecoder.js +32 -30
  27. package/dist/decoding/stringDecoder.js.map +1 -1
  28. package/dist/decoding/unpackNullableUtils.d.ts +2 -2
  29. package/dist/decoding/unpackNullableUtils.js.map +1 -1
  30. package/dist/encoding/bigEndianEncode.d.ts +1 -1
  31. package/dist/encoding/bigEndianEncode.js.map +1 -1
  32. package/dist/encoding/constGeometryVectorEncoder.js +9 -9
  33. package/dist/encoding/constGeometryVectorEncoder.js.map +1 -1
  34. package/dist/encoding/encodingUtils.d.ts +1 -1
  35. package/dist/encoding/encodingUtils.js +1 -1
  36. package/dist/encoding/encodingUtils.js.map +1 -1
  37. package/dist/encoding/fastPforEncoder.d.ts +4 -5
  38. package/dist/encoding/fastPforEncoder.js +4 -4
  39. package/dist/encoding/fastPforEncoder.js.map +1 -1
  40. package/dist/encoding/integerEncodingUtils.d.ts +14 -14
  41. package/dist/encoding/integerEncodingUtils.js +39 -31
  42. package/dist/encoding/integerEncodingUtils.js.map +1 -1
  43. package/dist/encoding/integerStreamEncoder.d.ts +2 -1
  44. package/dist/encoding/integerStreamEncoder.js +52 -18
  45. package/dist/encoding/integerStreamEncoder.js.map +1 -1
  46. package/dist/encoding/propertyEncoder.js +9 -16
  47. package/dist/encoding/propertyEncoder.js.map +1 -1
  48. package/dist/encoding/stringEncoder.js +9 -42
  49. package/dist/encoding/stringEncoder.js.map +1 -1
  50. package/dist/metadata/tile/logicalStreamType.d.ts +5 -9
  51. package/dist/metadata/tile/logicalStreamType.js +1 -19
  52. package/dist/metadata/tile/logicalStreamType.js.map +1 -1
  53. package/dist/metadata/tile/physicalLevelTechnique.d.ts +1 -5
  54. package/dist/metadata/tile/physicalLevelTechnique.js +0 -4
  55. package/dist/metadata/tile/physicalLevelTechnique.js.map +1 -1
  56. package/dist/metadata/tile/streamMetadataDecoder.d.ts +1 -1
  57. package/dist/metadata/tile/streamMetadataDecoder.js +9 -4
  58. package/dist/metadata/tile/streamMetadataDecoder.js.map +1 -1
  59. package/dist/mltDecoder.js +25 -29
  60. package/dist/mltDecoder.js.map +1 -1
  61. package/dist/vector/constant/{intConstVector.d.ts → int32ConstVector.d.ts} +2 -2
  62. package/dist/vector/constant/int32ConstVector.js +10 -0
  63. package/dist/vector/constant/int32ConstVector.js.map +1 -0
  64. package/dist/vector/constant/{longConstVector.d.ts → int64ConstVector.d.ts} +2 -2
  65. package/dist/vector/constant/int64ConstVector.js +10 -0
  66. package/dist/vector/constant/int64ConstVector.js.map +1 -0
  67. package/dist/vector/dictionary/stringDictionaryVector.d.ts +1 -1
  68. package/dist/vector/dictionary/stringDictionaryVector.js +0 -1
  69. package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
  70. package/dist/vector/featureTable.d.ts +4 -4
  71. package/dist/vector/featureTable.js +9 -14
  72. package/dist/vector/featureTable.js.map +1 -1
  73. package/dist/vector/filter/flatSelectionVector.js +0 -2
  74. package/dist/vector/filter/flatSelectionVector.js.map +1 -1
  75. package/dist/vector/filter/sequenceSelectionVector.js +1 -5
  76. package/dist/vector/filter/sequenceSelectionVector.js.map +1 -1
  77. package/dist/vector/flat/bitVector.js +0 -2
  78. package/dist/vector/flat/bitVector.js.map +1 -1
  79. package/dist/vector/flat/booleanFlatVector.js +0 -1
  80. package/dist/vector/flat/booleanFlatVector.js.map +1 -1
  81. package/dist/vector/flat/{intFlatVector.d.ts → int32FlatVector.d.ts} +1 -1
  82. package/dist/vector/flat/{intFlatVector.js → int32FlatVector.js} +2 -2
  83. package/dist/vector/flat/int32FlatVector.js.map +1 -0
  84. package/dist/vector/flat/{longFlatVector.d.ts → int64FlatVector.d.ts} +1 -1
  85. package/dist/vector/flat/{longFlatVector.js → int64FlatVector.js} +2 -2
  86. package/dist/vector/flat/int64FlatVector.js.map +1 -0
  87. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +1 -1
  88. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js +1 -7
  89. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
  90. package/dist/vector/geometry/constGeometryVector.d.ts +3 -3
  91. package/dist/vector/geometry/constGeometryVector.js +0 -2
  92. package/dist/vector/geometry/constGeometryVector.js.map +1 -1
  93. package/dist/vector/geometry/constGpuVector.d.ts +2 -2
  94. package/dist/vector/geometry/constGpuVector.js +0 -2
  95. package/dist/vector/geometry/constGpuVector.js.map +1 -1
  96. package/dist/vector/geometry/flatGeometryVector.d.ts +3 -3
  97. package/dist/vector/geometry/flatGeometryVector.js +1 -5
  98. package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
  99. package/dist/vector/geometry/flatGpuVector.d.ts +2 -2
  100. package/dist/vector/geometry/flatGpuVector.js +0 -1
  101. package/dist/vector/geometry/flatGpuVector.js.map +1 -1
  102. package/dist/vector/geometry/geometryVector.d.ts +3 -3
  103. package/dist/vector/geometry/geometryVector.js +0 -5
  104. package/dist/vector/geometry/geometryVector.js.map +1 -1
  105. package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
  106. package/dist/vector/geometry/gpuVector.d.ts +4 -4
  107. package/dist/vector/geometry/gpuVector.js +0 -4
  108. package/dist/vector/geometry/gpuVector.js.map +1 -1
  109. package/dist/vector/geometry/topologyVector.d.ts +3 -3
  110. package/dist/vector/geometry/topologyVector.js.map +1 -1
  111. package/dist/vector/idVector.d.ts +8 -0
  112. package/dist/vector/idVector.js +2 -0
  113. package/dist/vector/idVector.js.map +1 -0
  114. package/dist/vector/sequence/{intSequenceVector.d.ts → int32SequenceVector.d.ts} +1 -1
  115. package/dist/vector/sequence/{intSequenceVector.js → int32SequenceVector.js} +2 -2
  116. package/dist/vector/sequence/int32SequenceVector.js.map +1 -0
  117. package/dist/vector/sequence/{longSequenceVector.d.ts → int64SequenceVector.d.ts} +1 -1
  118. package/dist/vector/sequence/{longSequenceVector.js → int64SequenceVector.js} +2 -2
  119. package/dist/vector/sequence/int64SequenceVector.js.map +1 -0
  120. package/dist/vector/sequence/sequenceVector.js +0 -1
  121. package/dist/vector/sequence/sequenceVector.js.map +1 -1
  122. package/dist/vector/variableSizeVector.js +0 -1
  123. package/dist/vector/variableSizeVector.js.map +1 -1
  124. package/dist/vector/vector.js +0 -4
  125. package/dist/vector/vector.js.map +1 -1
  126. package/package.json +7 -7
  127. package/dist/vector/constant/intConstVector.js +0 -10
  128. package/dist/vector/constant/intConstVector.js.map +0 -1
  129. package/dist/vector/constant/longConstVector.js +0 -10
  130. package/dist/vector/constant/longConstVector.js.map +0 -1
  131. package/dist/vector/flat/intFlatVector.js.map +0 -1
  132. package/dist/vector/flat/longFlatVector.js.map +0 -1
  133. package/dist/vector/intVector.d.ts +0 -8
  134. package/dist/vector/intVector.js +0 -2
  135. package/dist/vector/intVector.js.map +0 -1
  136. package/dist/vector/sequence/intSequenceVector.js.map +0 -1
  137. package/dist/vector/sequence/longSequenceVector.js.map +0 -1
@@ -1,19 +1,15 @@
1
1
  import { LogicalLevelTechnique } from "../metadata/tile/logicalLevelTechnique";
2
2
  import { PhysicalLevelTechnique } from "../metadata/tile/physicalLevelTechnique";
3
3
  import { PhysicalStreamType } from "../metadata/tile/physicalStreamType";
4
- import { LogicalStreamType } from "../metadata/tile/logicalStreamType";
5
4
  import { DictionaryType } from "../metadata/tile/dictionaryType";
6
5
  import IntWrapper from "../decoding/intWrapper";
7
6
  import { encodeBooleanRle, encodeFloatsLE, encodeDoubleLE } from "./encodingUtils";
8
- import { encodeVarintInt32Value, encodeVarintInt32, encodeVarintInt64, encodeZigZagInt32Value, encodeZigZagInt64Value, } from "./integerEncodingUtils";
7
+ import { encodeVarintInt32Value, encodeVarintInt32, encodeVarintInt64, encodeZigZagInt32Value, encodeZigZagInt64Value, encodeZigZagInt32, } from "./integerEncodingUtils";
9
8
  /**
10
9
  * Encodes INT_32 values with NONE encoding (no delta, no RLE)
11
10
  */
12
11
  export function encodeInt32NoneColumn(values) {
13
- const zigzagEncoded = new Int32Array(values.length);
14
- for (let i = 0; i < values.length; i++) {
15
- zigzagEncoded[i] = encodeZigZagInt32Value(values[i]);
16
- }
12
+ const zigzagEncoded = encodeZigZagInt32(values);
17
13
  const encodedData = encodeVarintInt32(zigzagEncoded);
18
14
  const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);
19
15
  return buildEncodedStream(streamMetadata, encodedData);
@@ -28,10 +24,7 @@ export function encodeInt32DeltaColumn(values) {
28
24
  for (let i = 1; i < values.length; i++) {
29
25
  deltaEncoded[i] = values[i] - values[i - 1];
30
26
  }
31
- const zigzagEncoded = new Int32Array(deltaEncoded.length);
32
- for (let i = 0; i < deltaEncoded.length; i++) {
33
- zigzagEncoded[i] = encodeZigZagInt32Value(deltaEncoded[i]);
34
- }
27
+ const zigzagEncoded = encodeZigZagInt32(deltaEncoded);
35
28
  const encodedData = encodeVarintInt32(zigzagEncoded);
36
29
  const streamMetadata = createStreamMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.NONE, values.length);
37
30
  return buildEncodedStream(streamMetadata, encodedData);
@@ -50,7 +43,7 @@ export function encodeInt32RleColumn(runs) {
50
43
  totalValues += runLength;
51
44
  }
52
45
  const rleValues = [...runLengths, ...values];
53
- const encodedData = encodeVarintInt32(new Int32Array(rleValues));
46
+ const encodedData = encodeVarintInt32(new Uint32Array(rleValues));
54
47
  const streamMetadata = createRleMetadata(LogicalLevelTechnique.RLE, LogicalLevelTechnique.NONE, runs.length, totalValues);
55
48
  return buildEncodedStream(streamMetadata, encodedData);
56
49
  }
@@ -68,7 +61,7 @@ export function encodeInt32DeltaRleColumn(runs) {
68
61
  totalValues += runLength;
69
62
  }
70
63
  const rleValues = [...runLengths, ...values];
71
- const encodedData = encodeVarintInt32(new Int32Array(rleValues));
64
+ const encodedData = encodeVarintInt32(new Uint32Array(rleValues));
72
65
  const streamMetadata = createRleMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.RLE, runs.length, totalValues);
73
66
  return buildEncodedStream(streamMetadata, encodedData);
74
67
  }
@@ -77,7 +70,7 @@ export function encodeInt32DeltaRleColumn(runs) {
77
70
  */
78
71
  export function encodeInt32NullableColumn(values) {
79
72
  const nonNullValues = values.filter((v) => v !== null);
80
- const zigzagEncoded = new Int32Array(nonNullValues.map((v) => encodeZigZagInt32Value(v)));
73
+ const zigzagEncoded = new Uint32Array(nonNullValues.map((v) => encodeZigZagInt32Value(v)));
81
74
  const encodedData = encodeVarintInt32(zigzagEncoded);
82
75
  const dataStreamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, nonNullValues.length);
83
76
  const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);
@@ -92,7 +85,7 @@ export function encodeInt32NullableColumn(values) {
92
85
  * Encodes UINT_32 values (no zigzag encoding)
93
86
  */
94
87
  export function encodeUint32Column(values) {
95
- const encodedData = encodeVarintInt32(new Int32Array(values));
88
+ const encodedData = encodeVarintInt32(values);
96
89
  const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);
97
90
  return buildEncodedStream(streamMetadata, encodedData);
98
91
  }
@@ -262,7 +255,7 @@ export function encodeBooleanNullableColumn(values) {
262
255
  function createStreamMetadata(logicalTechnique1, logicalTechnique2 = LogicalLevelTechnique.NONE, numValues = 3) {
263
256
  return {
264
257
  physicalStreamType: PhysicalStreamType.DATA,
265
- logicalStreamType: new LogicalStreamType(DictionaryType.NONE),
258
+ logicalStreamType: { dictionaryType: DictionaryType.NONE },
266
259
  logicalLevelTechnique1: logicalTechnique1,
267
260
  logicalLevelTechnique2: logicalTechnique2,
268
261
  physicalLevelTechnique: PhysicalLevelTechnique.VARINT,
@@ -274,7 +267,7 @@ function createStreamMetadata(logicalTechnique1, logicalTechnique2 = LogicalLeve
274
267
  function createRleMetadata(logicalTechnique1, logicalTechnique2, runs, numRleValues) {
275
268
  return {
276
269
  physicalStreamType: PhysicalStreamType.DATA,
277
- logicalStreamType: new LogicalStreamType(DictionaryType.NONE),
270
+ logicalStreamType: { dictionaryType: DictionaryType.NONE },
278
271
  logicalLevelTechnique1: logicalTechnique1,
279
272
  logicalLevelTechnique2: logicalTechnique2,
280
273
  physicalLevelTechnique: PhysicalLevelTechnique.VARINT,
@@ -1 +1 @@
1
- {"version":3,"file":"propertyEncoder.js","sourceRoot":"","sources":["../../src/encoding/propertyEncoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { LogicalStreamType } from \"../metadata/tile/logicalStreamType\";\nimport { DictionaryType } from \"../metadata/tile/dictionaryType\";\nimport type { StreamMetadata, RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport IntWrapper from \"../decoding/intWrapper\";\nimport { encodeBooleanRle, encodeFloatsLE, encodeDoubleLE } from \"./encodingUtils\";\nimport {\n encodeVarintInt32Value,\n encodeVarintInt32,\n encodeVarintInt64,\n encodeZigZagInt32Value,\n encodeZigZagInt64Value,\n} from \"./integerEncodingUtils\";\n\n/**\n * Encodes INT_32 values with NONE encoding (no delta, no RLE)\n */\nexport function encodeInt32NoneColumn(values: Int32Array): Uint8Array {\n const zigzagEncoded = new Int32Array(values.length);\n for (let i = 0; i < values.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt32Value(values[i]);\n }\n const encodedData = encodeVarintInt32(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_32 values with DELTA encoding\n */\nexport function encodeInt32DeltaColumn(values: Int32Array): Uint8Array {\n // Delta encode: store deltas\n const deltaEncoded = new Int32Array(values.length);\n deltaEncoded[0] = values[0];\n for (let i = 1; i < values.length; i++) {\n deltaEncoded[i] = values[i] - values[i - 1];\n }\n\n const zigzagEncoded = new Int32Array(deltaEncoded.length);\n for (let i = 0; i < deltaEncoded.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt32Value(deltaEncoded[i]);\n }\n const encodedData = encodeVarintInt32(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_32 values with RLE encoding\n * @param runs - Array of [runLength, value] pairs\n */\nexport function encodeInt32RleColumn(runs: Array<[number, number]>): Uint8Array {\n const runLengths: number[] = [];\n const values: number[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(runLength);\n values.push(encodeZigZagInt32Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt32(new Int32Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.RLE,\n LogicalLevelTechnique.NONE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_32 values with DELTA+RLE encoding\n * @param runs - Array of [runLength, deltaValue] pairs, where first value is the base\n */\nexport function encodeInt32DeltaRleColumn(runs: Array<[number, number]>): Uint8Array {\n const runLengths: number[] = [];\n const values: number[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(runLength);\n values.push(encodeZigZagInt32Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt32(new Int32Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.DELTA,\n LogicalLevelTechnique.RLE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable INT_32 values\n */\nexport function encodeInt32NullableColumn(values: (number | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is number => v !== null);\n const zigzagEncoded = new Int32Array(nonNullValues.map((v) => encodeZigZagInt32Value(v)));\n const encodedData = encodeVarintInt32(zigzagEncoded);\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n // Nullability stream\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes UINT_32 values (no zigzag encoding)\n */\nexport function encodeUint32Column(values: Uint32Array): Uint8Array {\n const encodedData = encodeVarintInt32(new Int32Array(values));\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with NONE encoding\n */\nexport function encodeInt64NoneColumn(values: BigInt64Array): Uint8Array {\n const zigzagEncoded = new BigUint64Array(Array.from(values, (val) => encodeZigZagInt64Value(val)));\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with DELTA encoding\n */\nexport function encodeInt64DeltaColumn(values: BigInt64Array): Uint8Array {\n const deltaEncoded = new BigInt64Array(values.length);\n deltaEncoded[0] = values[0];\n for (let i = 1; i < values.length; i++) {\n deltaEncoded[i] = values[i] - values[i - 1];\n }\n\n const zigzagEncoded = new BigUint64Array(deltaEncoded.length);\n for (let i = 0; i < deltaEncoded.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt64Value(deltaEncoded[i]);\n }\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with RLE encoding\n */\nexport function encodeInt64RleColumn(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt64(new BigUint64Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.RLE,\n LogicalLevelTechnique.NONE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with DELTA+RLE encoding\n */\nexport function encodeInt64DeltaRleColumn(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt64(new BigUint64Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.DELTA,\n LogicalLevelTechnique.RLE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable INT_64 values\n */\nexport function encodeInt64NullableColumn(values: (bigint | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is bigint => v !== null);\n const zigzagEncoded = new BigUint64Array(Array.from(nonNullValues, (val) => encodeZigZagInt64Value(val)));\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes UINT_64 values (no zigzag encoding)\n */\nexport function encodeUint64Column(values: BigUint64Array): Uint8Array {\n const encodedData = encodeVarintInt64(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable UINT_64 values\n */\nexport function encodeUint64NullableColumn(values: (bigint | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is bigint => v !== null);\n const encodedData = encodeVarintInt64(new BigUint64Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes FLOAT values\n */\nexport function encodeFloatColumn(values: Float32Array): Uint8Array {\n const encodedData = encodeFloatsLE(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable FLOAT values\n */\nexport function encodeFloatNullableColumn(values: (number | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is number => v !== null);\n const encodedData = encodeFloatsLE(new Float32Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes DOUBLE values\n */\nexport function encodeDoubleColumn(values: Float64Array): Uint8Array {\n const encodedData = encodeDoubleLE(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable DOUBLE values\n */\nexport function encodeDoubleNullableColumn(values: (number | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is number => v !== null);\n const encodedData = encodeDoubleLE(new Float64Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes BOOLEAN values\n */\nexport function encodeBooleanColumn(values: boolean[]): Uint8Array {\n const encodedData = encodeBooleanRle(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable BOOLEAN values\n */\nexport function encodeBooleanNullableColumn(values: (boolean | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is boolean => v !== null);\n const encodedData = encodeBooleanRle(nonNullValues);\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\nfunction createStreamMetadata(\n logicalTechnique1: LogicalLevelTechnique,\n logicalTechnique2: LogicalLevelTechnique = LogicalLevelTechnique.NONE,\n numValues = 3,\n): StreamMetadata {\n return {\n physicalStreamType: PhysicalStreamType.DATA,\n logicalStreamType: new LogicalStreamType(DictionaryType.NONE),\n logicalLevelTechnique1: logicalTechnique1,\n logicalLevelTechnique2: logicalTechnique2,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues,\n byteLength: 10,\n decompressedCount: numValues,\n };\n}\n\nfunction createRleMetadata(\n logicalTechnique1: LogicalLevelTechnique,\n logicalTechnique2: LogicalLevelTechnique,\n runs: number,\n numRleValues: number,\n): RleEncodedStreamMetadata {\n return {\n physicalStreamType: PhysicalStreamType.DATA,\n logicalStreamType: new LogicalStreamType(DictionaryType.NONE),\n logicalLevelTechnique1: logicalTechnique1,\n logicalLevelTechnique2: logicalTechnique2,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues: runs * 2,\n byteLength: 10,\n decompressedCount: numRleValues,\n runs,\n numRleValues,\n };\n}\n\nfunction buildEncodedStream(\n streamMetadata: StreamMetadata | RleEncodedStreamMetadata,\n encodedData: Uint8Array,\n): Uint8Array {\n const updatedMetadata = {\n ...streamMetadata,\n byteLength: encodedData.length,\n };\n\n const metadataBuffer = encodeStreamMetadata(updatedMetadata);\n const result = new Uint8Array(metadataBuffer.length + encodedData.length);\n result.set(metadataBuffer, 0);\n result.set(encodedData, metadataBuffer.length);\n\n return result;\n}\n\nfunction encodeStreamMetadata(metadata: StreamMetadata | RleEncodedStreamMetadata): Uint8Array {\n const buffer = new Uint8Array(100);\n let writeOffset = 0;\n\n // Byte 1: Stream type\n const physicalTypeIndex = Object.values(PhysicalStreamType).indexOf(metadata.physicalStreamType);\n const lowerNibble = 0; // For DATA stream with NONE dictionary type\n buffer[writeOffset++] = (physicalTypeIndex << 4) | lowerNibble;\n\n // Byte 2: Encoding techniques\n const llt1Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique1);\n const llt2Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique2);\n const pltIndex = Object.values(PhysicalLevelTechnique).indexOf(metadata.physicalLevelTechnique);\n buffer[writeOffset++] = (llt1Index << 5) | (llt2Index << 2) | pltIndex;\n\n // Variable-length fields\n const offset = new IntWrapper(writeOffset);\n encodeVarintInt32Value(metadata.numValues, buffer, offset);\n encodeVarintInt32Value(metadata.byteLength, buffer, offset);\n\n // RLE-specific fields\n if (isRleMetadata(metadata)) {\n encodeVarintInt32Value(metadata.runs, buffer, offset);\n encodeVarintInt32Value(metadata.numRleValues, buffer, offset);\n }\n\n return buffer.slice(0, offset.get());\n}\n\nfunction isRleMetadata(metadata: StreamMetadata | RleEncodedStreamMetadata): metadata is RleEncodedStreamMetadata {\n return \"runs\" in metadata && \"numRleValues\" in metadata;\n}\n\nfunction concatenateBuffers(...buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((sum, buf) => sum + buf.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n\n for (const buffer of buffers) {\n result.set(buffer, offset);\n offset += buffer.length;\n }\n\n return result;\n}\n"]}
1
+ {"version":3,"file":"propertyEncoder.js","sourceRoot":"","sources":["../../src/encoding/propertyEncoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { DictionaryType } from \"../metadata/tile/dictionaryType\";\nimport type { StreamMetadata, RleEncodedStreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport IntWrapper from \"../decoding/intWrapper\";\nimport { encodeBooleanRle, encodeFloatsLE, encodeDoubleLE } from \"./encodingUtils\";\nimport {\n encodeVarintInt32Value,\n encodeVarintInt32,\n encodeVarintInt64,\n encodeZigZagInt32Value,\n encodeZigZagInt64Value,\n encodeZigZagInt32,\n} from \"./integerEncodingUtils\";\n\n/**\n * Encodes INT_32 values with NONE encoding (no delta, no RLE)\n */\nexport function encodeInt32NoneColumn(values: Int32Array): Uint8Array {\n const zigzagEncoded = encodeZigZagInt32(values);\n const encodedData = encodeVarintInt32(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_32 values with DELTA encoding\n */\nexport function encodeInt32DeltaColumn(values: Int32Array): Uint8Array {\n // Delta encode: store deltas\n const deltaEncoded = new Int32Array(values.length);\n deltaEncoded[0] = values[0];\n for (let i = 1; i < values.length; i++) {\n deltaEncoded[i] = values[i] - values[i - 1];\n }\n\n const zigzagEncoded = encodeZigZagInt32(deltaEncoded);\n const encodedData = encodeVarintInt32(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_32 values with RLE encoding\n * @param runs - Array of [runLength, value] pairs\n */\nexport function encodeInt32RleColumn(runs: Array<[number, number]>): Uint8Array {\n const runLengths: number[] = [];\n const values: number[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(runLength);\n values.push(encodeZigZagInt32Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt32(new Uint32Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.RLE,\n LogicalLevelTechnique.NONE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_32 values with DELTA+RLE encoding\n * @param runs - Array of [runLength, deltaValue] pairs, where first value is the base\n */\nexport function encodeInt32DeltaRleColumn(runs: Array<[number, number]>): Uint8Array {\n const runLengths: number[] = [];\n const values: number[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(runLength);\n values.push(encodeZigZagInt32Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt32(new Uint32Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.DELTA,\n LogicalLevelTechnique.RLE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable INT_32 values\n */\nexport function encodeInt32NullableColumn(values: (number | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is number => v !== null);\n const zigzagEncoded = new Uint32Array(nonNullValues.map((v) => encodeZigZagInt32Value(v)));\n const encodedData = encodeVarintInt32(zigzagEncoded);\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n // Nullability stream\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes UINT_32 values (no zigzag encoding)\n */\nexport function encodeUint32Column(values: Uint32Array): Uint8Array {\n const encodedData = encodeVarintInt32(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with NONE encoding\n */\nexport function encodeInt64NoneColumn(values: BigInt64Array): Uint8Array {\n const zigzagEncoded = new BigUint64Array(Array.from(values, (val) => encodeZigZagInt64Value(val)));\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with DELTA encoding\n */\nexport function encodeInt64DeltaColumn(values: BigInt64Array): Uint8Array {\n const deltaEncoded = new BigInt64Array(values.length);\n deltaEncoded[0] = values[0];\n for (let i = 1; i < values.length; i++) {\n deltaEncoded[i] = values[i] - values[i - 1];\n }\n\n const zigzagEncoded = new BigUint64Array(deltaEncoded.length);\n for (let i = 0; i < deltaEncoded.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt64Value(deltaEncoded[i]);\n }\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with RLE encoding\n */\nexport function encodeInt64RleColumn(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt64(new BigUint64Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.RLE,\n LogicalLevelTechnique.NONE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with DELTA+RLE encoding\n */\nexport function encodeInt64DeltaRleColumn(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt64(new BigUint64Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.DELTA,\n LogicalLevelTechnique.RLE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable INT_64 values\n */\nexport function encodeInt64NullableColumn(values: (bigint | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is bigint => v !== null);\n const zigzagEncoded = new BigUint64Array(Array.from(nonNullValues, (val) => encodeZigZagInt64Value(val)));\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes UINT_64 values (no zigzag encoding)\n */\nexport function encodeUint64Column(values: BigUint64Array): Uint8Array {\n const encodedData = encodeVarintInt64(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable UINT_64 values\n */\nexport function encodeUint64NullableColumn(values: (bigint | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is bigint => v !== null);\n const encodedData = encodeVarintInt64(new BigUint64Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes FLOAT values\n */\nexport function encodeFloatColumn(values: Float32Array): Uint8Array {\n const encodedData = encodeFloatsLE(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable FLOAT values\n */\nexport function encodeFloatNullableColumn(values: (number | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is number => v !== null);\n const encodedData = encodeFloatsLE(new Float32Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes DOUBLE values\n */\nexport function encodeDoubleColumn(values: Float64Array): Uint8Array {\n const encodedData = encodeDoubleLE(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable DOUBLE values\n */\nexport function encodeDoubleNullableColumn(values: (number | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is number => v !== null);\n const encodedData = encodeDoubleLE(new Float64Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes BOOLEAN values\n */\nexport function encodeBooleanColumn(values: boolean[]): Uint8Array {\n const encodedData = encodeBooleanRle(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable BOOLEAN values\n */\nexport function encodeBooleanNullableColumn(values: (boolean | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is boolean => v !== null);\n const encodedData = encodeBooleanRle(nonNullValues);\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\nfunction createStreamMetadata(\n logicalTechnique1: LogicalLevelTechnique,\n logicalTechnique2: LogicalLevelTechnique = LogicalLevelTechnique.NONE,\n numValues = 3,\n): StreamMetadata {\n return {\n physicalStreamType: PhysicalStreamType.DATA,\n logicalStreamType: { dictionaryType: DictionaryType.NONE },\n logicalLevelTechnique1: logicalTechnique1,\n logicalLevelTechnique2: logicalTechnique2,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues,\n byteLength: 10,\n decompressedCount: numValues,\n };\n}\n\nfunction createRleMetadata(\n logicalTechnique1: LogicalLevelTechnique,\n logicalTechnique2: LogicalLevelTechnique,\n runs: number,\n numRleValues: number,\n): RleEncodedStreamMetadata {\n return {\n physicalStreamType: PhysicalStreamType.DATA,\n logicalStreamType: { dictionaryType: DictionaryType.NONE },\n logicalLevelTechnique1: logicalTechnique1,\n logicalLevelTechnique2: logicalTechnique2,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues: runs * 2,\n byteLength: 10,\n decompressedCount: numRleValues,\n runs,\n numRleValues,\n };\n}\n\nfunction buildEncodedStream(\n streamMetadata: StreamMetadata | RleEncodedStreamMetadata,\n encodedData: Uint8Array,\n): Uint8Array {\n const updatedMetadata = {\n ...streamMetadata,\n byteLength: encodedData.length,\n };\n\n const metadataBuffer = encodeStreamMetadata(updatedMetadata);\n const result = new Uint8Array(metadataBuffer.length + encodedData.length);\n result.set(metadataBuffer, 0);\n result.set(encodedData, metadataBuffer.length);\n\n return result;\n}\n\nfunction encodeStreamMetadata(metadata: StreamMetadata | RleEncodedStreamMetadata): Uint8Array {\n const buffer = new Uint8Array(100);\n let writeOffset = 0;\n\n // Byte 1: Stream type\n const physicalTypeIndex = Object.values(PhysicalStreamType).indexOf(metadata.physicalStreamType);\n const lowerNibble = 0; // For DATA stream with NONE dictionary type\n buffer[writeOffset++] = (physicalTypeIndex << 4) | lowerNibble;\n\n // Byte 2: Encoding techniques\n const llt1Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique1);\n const llt2Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique2);\n const pltIndex = Object.values(PhysicalLevelTechnique).indexOf(metadata.physicalLevelTechnique);\n buffer[writeOffset++] = (llt1Index << 5) | (llt2Index << 2) | pltIndex;\n\n // Variable-length fields\n const offset = new IntWrapper(writeOffset);\n encodeVarintInt32Value(metadata.numValues, buffer, offset);\n encodeVarintInt32Value(metadata.byteLength, buffer, offset);\n\n // RLE-specific fields\n if (isRleMetadata(metadata)) {\n encodeVarintInt32Value(metadata.runs, buffer, offset);\n encodeVarintInt32Value(metadata.numRleValues, buffer, offset);\n }\n\n return buffer.slice(0, offset.get());\n}\n\nfunction isRleMetadata(metadata: StreamMetadata | RleEncodedStreamMetadata): metadata is RleEncodedStreamMetadata {\n return \"runs\" in metadata && \"numRleValues\" in metadata;\n}\n\nfunction concatenateBuffers(...buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((sum, buf) => sum + buf.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n\n for (const buffer of buffers) {\n result.set(buffer, offset);\n offset += buffer.length;\n }\n\n return result;\n}\n"]}
@@ -1,5 +1,4 @@
1
1
  import { PhysicalStreamType } from "../metadata/tile/physicalStreamType";
2
- import { LogicalStreamType } from "../metadata/tile/logicalStreamType";
3
2
  import { DictionaryType } from "../metadata/tile/dictionaryType";
4
3
  import { LengthType } from "../metadata/tile/lengthType";
5
4
  import { OffsetType } from "../metadata/tile/offsetType";
@@ -28,14 +27,14 @@ export function encodePlainStrings(strings) {
28
27
  }
29
28
  // Add LENGTH stream
30
29
  const lengths = createStringLengths(nonNullStrings);
31
- streams.push(createStream(PhysicalStreamType.LENGTH, encodeVarintInt32(new Int32Array(lengths)), {
32
- logical: new LogicalStreamType(undefined, undefined, LengthType.VAR_BINARY),
30
+ streams.push(createStream(PhysicalStreamType.LENGTH, encodeVarintInt32(lengths), {
31
+ logical: { lengthType: LengthType.VAR_BINARY },
33
32
  technique: PhysicalLevelTechnique.VARINT,
34
33
  count: lengths.length,
35
34
  }));
36
35
  // Add DATA stream
37
36
  streams.push(createStream(PhysicalStreamType.DATA, stringBytes, {
38
- logical: new LogicalStreamType(DictionaryType.NONE),
37
+ logical: { dictionaryType: DictionaryType.NONE },
39
38
  }));
40
39
  return concatenateBuffers(...streams);
41
40
  }
@@ -69,20 +68,20 @@ export function encodeDictionaryStrings(strings) {
69
68
  }));
70
69
  }
71
70
  // Add OFFSET stream
72
- streams.push(createStream(PhysicalStreamType.OFFSET, encodeVarintInt32(new Int32Array(offsets)), {
73
- logical: new LogicalStreamType(undefined, OffsetType.STRING),
71
+ streams.push(createStream(PhysicalStreamType.OFFSET, encodeVarintInt32(new Uint32Array(offsets)), {
72
+ logical: { offsetType: OffsetType.STRING },
74
73
  technique: PhysicalLevelTechnique.VARINT,
75
74
  count: offsets.length,
76
75
  }));
77
76
  // Add LENGTH stream (for dictionary)
78
- streams.push(createStream(PhysicalStreamType.LENGTH, encodeVarintInt32(new Int32Array(lengths)), {
79
- logical: new LogicalStreamType(undefined, undefined, LengthType.DICTIONARY),
77
+ streams.push(createStream(PhysicalStreamType.LENGTH, encodeVarintInt32(lengths), {
78
+ logical: { lengthType: LengthType.DICTIONARY },
80
79
  technique: PhysicalLevelTechnique.VARINT,
81
80
  count: lengths.length,
82
81
  }));
83
82
  // Add DATA stream
84
83
  streams.push(createStream(PhysicalStreamType.DATA, stringBytes, {
85
- logical: new LogicalStreamType(DictionaryType.SINGLE),
84
+ logical: { dictionaryType: DictionaryType.SINGLE },
86
85
  }));
87
86
  return concatenateBuffers(...streams);
88
87
  }
@@ -90,7 +89,7 @@ function createStream(physicalType, data, options = {}) {
90
89
  const count = options.count ?? 0;
91
90
  return buildEncodedStream({
92
91
  physicalStreamType: physicalType,
93
- logicalStreamType: options.logical ?? new LogicalStreamType(),
92
+ logicalStreamType: options.logical ?? {},
94
93
  logicalLevelTechnique1: LogicalLevelTechnique.NONE,
95
94
  logicalLevelTechnique2: LogicalLevelTechnique.NONE,
96
95
  physicalLevelTechnique: options.technique ?? PhysicalLevelTechnique.NONE,
@@ -147,36 +146,4 @@ function getLogicalSubtypeValue(metadata) {
147
146
  return 0;
148
147
  }
149
148
  }
150
- function _encodeNumStreams(numStreams) {
151
- const buffer = new Uint8Array(5);
152
- const offset = new IntWrapper(0);
153
- encodeVarintInt32Value(numStreams, buffer, offset);
154
- return buffer.slice(0, offset.get());
155
- }
156
- function _createPresentStream(presentValues) {
157
- const metadata = {
158
- physicalStreamType: PhysicalStreamType.PRESENT,
159
- logicalStreamType: new LogicalStreamType(DictionaryType.NONE),
160
- logicalLevelTechnique1: LogicalLevelTechnique.NONE,
161
- logicalLevelTechnique2: LogicalLevelTechnique.NONE,
162
- physicalLevelTechnique: PhysicalLevelTechnique.VARINT,
163
- numValues: presentValues.length,
164
- byteLength: 0,
165
- decompressedCount: presentValues.length,
166
- };
167
- return buildEncodedStream(metadata, encodeBooleanRle(presentValues));
168
- }
169
- function _createOffsetStream(offsetIndices) {
170
- const metadata = {
171
- physicalStreamType: PhysicalStreamType.OFFSET,
172
- logicalStreamType: new LogicalStreamType(undefined, OffsetType.STRING),
173
- logicalLevelTechnique1: LogicalLevelTechnique.NONE,
174
- logicalLevelTechnique2: LogicalLevelTechnique.NONE,
175
- physicalLevelTechnique: PhysicalLevelTechnique.VARINT,
176
- numValues: offsetIndices.length,
177
- byteLength: 0,
178
- decompressedCount: offsetIndices.length,
179
- };
180
- return buildEncodedStream(metadata, encodeVarintInt32(new Int32Array(offsetIndices)));
181
- }
182
149
  //# sourceMappingURL=stringEncoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stringEncoder.js","sourceRoot":"","sources":["../../src/encoding/stringEncoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { LogicalStreamType } from \"../metadata/tile/logicalStreamType\";\nimport { DictionaryType } from \"../metadata/tile/dictionaryType\";\nimport { LengthType } from \"../metadata/tile/lengthType\";\nimport { OffsetType } from \"../metadata/tile/offsetType\";\nimport { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport type { StreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport IntWrapper from \"../decoding/intWrapper\";\nimport { encodeBooleanRle, encodeStrings, createStringLengths, concatenateBuffers } from \"./encodingUtils\";\nimport { encodeVarintInt32Value, encodeVarintInt32 } from \"./integerEncodingUtils\";\n\n/**\n * Encodes plain strings into a complete stream with PRESENT (if needed), LENGTH, and DATA streams.\n * @param strings - Array of strings (can include null values)\n * @returns Encoded Uint8Array that can be passed to decodeString\n */\nexport function encodePlainStrings(strings: (string | null)[]): Uint8Array {\n const hasNull = strings.some((s) => s === null);\n const nonNullStrings = strings.filter((s): s is string => s !== null);\n const stringBytes = encodeStrings(nonNullStrings);\n\n const streams: Uint8Array[] = [];\n\n // Add PRESENT stream if nulls exist\n if (hasNull) {\n const nullabilityValues = strings.map((s) => s !== null);\n streams.push(\n createStream(PhysicalStreamType.PRESENT, encodeBooleanRle(nullabilityValues), {\n technique: PhysicalLevelTechnique.VARINT,\n count: nullabilityValues.length,\n }),\n );\n }\n\n // Add LENGTH stream\n const lengths = createStringLengths(nonNullStrings);\n streams.push(\n createStream(PhysicalStreamType.LENGTH, encodeVarintInt32(new Int32Array(lengths)), {\n logical: new LogicalStreamType(undefined, undefined, LengthType.VAR_BINARY),\n technique: PhysicalLevelTechnique.VARINT,\n count: lengths.length,\n }),\n );\n\n // Add DATA stream\n streams.push(\n createStream(PhysicalStreamType.DATA, stringBytes, {\n logical: new LogicalStreamType(DictionaryType.NONE),\n }),\n );\n\n return concatenateBuffers(...streams);\n}\n\n/**\n * Encodes dictionary-compressed strings into a complete stream.\n * @param strings - Array of strings (can include null values)\n * @returns Encoded Uint8Array that can be passed to decodeString\n */\nexport function encodeDictionaryStrings(strings: (string | null)[]): Uint8Array {\n const hasNull = strings.some((s) => s === null);\n const nonNullStrings = strings.filter((s): s is string => s !== null);\n\n // Create dictionary of unique strings\n const uniqueStrings = Array.from(new Set(nonNullStrings));\n const stringMap = new Map(uniqueStrings.map((s, i) => [s, i]));\n const offsets = nonNullStrings.map((s) => {\n const offset = stringMap.get(s);\n if (offset === undefined) {\n throw new Error(`String not found in dictionary: ${s}`);\n }\n return offset;\n });\n\n const stringBytes = encodeStrings(uniqueStrings);\n const lengths = createStringLengths(uniqueStrings);\n\n const streams: Uint8Array[] = [];\n\n // Add PRESENT stream if nulls exist\n if (hasNull) {\n const nullabilityValues = strings.map((s) => s !== null);\n streams.push(\n createStream(PhysicalStreamType.PRESENT, encodeBooleanRle(nullabilityValues), {\n technique: PhysicalLevelTechnique.VARINT,\n count: nullabilityValues.length,\n }),\n );\n }\n\n // Add OFFSET stream\n streams.push(\n createStream(PhysicalStreamType.OFFSET, encodeVarintInt32(new Int32Array(offsets)), {\n logical: new LogicalStreamType(undefined, OffsetType.STRING),\n technique: PhysicalLevelTechnique.VARINT,\n count: offsets.length,\n }),\n );\n\n // Add LENGTH stream (for dictionary)\n streams.push(\n createStream(PhysicalStreamType.LENGTH, encodeVarintInt32(new Int32Array(lengths)), {\n logical: new LogicalStreamType(undefined, undefined, LengthType.DICTIONARY),\n technique: PhysicalLevelTechnique.VARINT,\n count: lengths.length,\n }),\n );\n\n // Add DATA stream\n streams.push(\n createStream(PhysicalStreamType.DATA, stringBytes, {\n logical: new LogicalStreamType(DictionaryType.SINGLE),\n }),\n );\n\n return concatenateBuffers(...streams);\n}\n\nfunction createStream(\n physicalType: PhysicalStreamType,\n data: Uint8Array,\n options: {\n logical?: LogicalStreamType;\n technique?: PhysicalLevelTechnique;\n count?: number;\n } = {},\n): Uint8Array {\n const count = options.count ?? 0;\n return buildEncodedStream(\n {\n physicalStreamType: physicalType,\n logicalStreamType: options.logical ?? new LogicalStreamType(),\n logicalLevelTechnique1: LogicalLevelTechnique.NONE,\n logicalLevelTechnique2: LogicalLevelTechnique.NONE,\n physicalLevelTechnique: options.technique ?? PhysicalLevelTechnique.NONE,\n numValues: count,\n byteLength: data.length,\n decompressedCount: count,\n },\n data,\n );\n}\n\nfunction buildEncodedStream(streamMetadata: StreamMetadata, encodedData: Uint8Array): Uint8Array {\n const updatedMetadata = {\n ...streamMetadata,\n byteLength: encodedData.length,\n };\n\n const metadataBuffer = encodeStreamMetadata(updatedMetadata);\n const result = new Uint8Array(metadataBuffer.length + encodedData.length);\n result.set(metadataBuffer, 0);\n result.set(encodedData, metadataBuffer.length);\n\n return result;\n}\n\nfunction encodeStreamMetadata(metadata: StreamMetadata): Uint8Array {\n const buffer = new Uint8Array(100);\n let writeOffset = 0;\n\n // Byte 1: Stream type\n const physicalTypeIndex = Object.values(PhysicalStreamType).indexOf(metadata.physicalStreamType);\n const lowerNibble = getLogicalSubtypeValue(metadata);\n buffer[writeOffset++] = (physicalTypeIndex << 4) | lowerNibble;\n\n // Byte 2: Encoding techniques\n const llt1Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique1);\n const llt2Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique2);\n const pltIndex = Object.values(PhysicalLevelTechnique).indexOf(metadata.physicalLevelTechnique);\n buffer[writeOffset++] = (llt1Index << 5) | (llt2Index << 2) | pltIndex;\n\n // Variable-length fields\n const offset = new IntWrapper(writeOffset);\n encodeVarintInt32Value(metadata.numValues, buffer, offset);\n encodeVarintInt32Value(metadata.byteLength, buffer, offset);\n\n return buffer.slice(0, offset.get());\n}\n\nfunction getLogicalSubtypeValue(metadata: StreamMetadata): number {\n const { physicalStreamType, logicalStreamType } = metadata;\n\n switch (physicalStreamType) {\n case PhysicalStreamType.DATA:\n return logicalStreamType.dictionaryType !== undefined\n ? Object.values(DictionaryType).indexOf(logicalStreamType.dictionaryType)\n : 0;\n case PhysicalStreamType.OFFSET:\n return logicalStreamType.offsetType !== undefined\n ? Object.values(OffsetType).indexOf(logicalStreamType.offsetType)\n : 0;\n case PhysicalStreamType.LENGTH:\n return logicalStreamType.lengthType !== undefined\n ? Object.values(LengthType).indexOf(logicalStreamType.lengthType)\n : 0;\n default:\n return 0;\n }\n}\n\nfunction _encodeNumStreams(numStreams: number): Uint8Array {\n const buffer = new Uint8Array(5);\n const offset = new IntWrapper(0);\n encodeVarintInt32Value(numStreams, buffer, offset);\n return buffer.slice(0, offset.get());\n}\n\nfunction _createPresentStream(presentValues: boolean[]): Uint8Array {\n const metadata: StreamMetadata = {\n physicalStreamType: PhysicalStreamType.PRESENT,\n logicalStreamType: new LogicalStreamType(DictionaryType.NONE),\n logicalLevelTechnique1: LogicalLevelTechnique.NONE,\n logicalLevelTechnique2: LogicalLevelTechnique.NONE,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues: presentValues.length,\n byteLength: 0,\n decompressedCount: presentValues.length,\n };\n return buildEncodedStream(metadata, encodeBooleanRle(presentValues));\n}\n\nfunction _createOffsetStream(offsetIndices: number[]): Uint8Array {\n const metadata: StreamMetadata = {\n physicalStreamType: PhysicalStreamType.OFFSET,\n logicalStreamType: new LogicalStreamType(undefined, OffsetType.STRING),\n logicalLevelTechnique1: LogicalLevelTechnique.NONE,\n logicalLevelTechnique2: LogicalLevelTechnique.NONE,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues: offsetIndices.length,\n byteLength: 0,\n decompressedCount: offsetIndices.length,\n };\n return buildEncodedStream(metadata, encodeVarintInt32(new Int32Array(offsetIndices)));\n}\n"]}
1
+ {"version":3,"file":"stringEncoder.js","sourceRoot":"","sources":["../../src/encoding/stringEncoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { DictionaryType } from \"../metadata/tile/dictionaryType\";\nimport { LengthType } from \"../metadata/tile/lengthType\";\nimport { OffsetType } from \"../metadata/tile/offsetType\";\nimport { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport IntWrapper from \"../decoding/intWrapper\";\nimport { encodeBooleanRle, encodeStrings, createStringLengths, concatenateBuffers } from \"./encodingUtils\";\nimport { encodeVarintInt32Value, encodeVarintInt32 } from \"./integerEncodingUtils\";\nimport type { StreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport type { LogicalStreamType } from \"../metadata/tile/logicalStreamType\";\n\n/**\n * Encodes plain strings into a complete stream with PRESENT (if needed), LENGTH, and DATA streams.\n * @param strings - Array of strings (can include null values)\n * @returns Encoded Uint8Array that can be passed to decodeString\n */\nexport function encodePlainStrings(strings: (string | null)[]): Uint8Array {\n const hasNull = strings.some((s) => s === null);\n const nonNullStrings = strings.filter((s): s is string => s !== null);\n const stringBytes = encodeStrings(nonNullStrings);\n\n const streams: Uint8Array[] = [];\n\n // Add PRESENT stream if nulls exist\n if (hasNull) {\n const nullabilityValues = strings.map((s) => s !== null);\n streams.push(\n createStream(PhysicalStreamType.PRESENT, encodeBooleanRle(nullabilityValues), {\n technique: PhysicalLevelTechnique.VARINT,\n count: nullabilityValues.length,\n }),\n );\n }\n\n // Add LENGTH stream\n const lengths = createStringLengths(nonNullStrings);\n streams.push(\n createStream(PhysicalStreamType.LENGTH, encodeVarintInt32(lengths), {\n logical: { lengthType: LengthType.VAR_BINARY },\n technique: PhysicalLevelTechnique.VARINT,\n count: lengths.length,\n }),\n );\n\n // Add DATA stream\n streams.push(\n createStream(PhysicalStreamType.DATA, stringBytes, {\n logical: { dictionaryType: DictionaryType.NONE },\n }),\n );\n\n return concatenateBuffers(...streams);\n}\n\n/**\n * Encodes dictionary-compressed strings into a complete stream.\n * @param strings - Array of strings (can include null values)\n * @returns Encoded Uint8Array that can be passed to decodeString\n */\nexport function encodeDictionaryStrings(strings: (string | null)[]): Uint8Array {\n const hasNull = strings.some((s) => s === null);\n const nonNullStrings = strings.filter((s): s is string => s !== null);\n\n // Create dictionary of unique strings\n const uniqueStrings = Array.from(new Set(nonNullStrings));\n const stringMap = new Map(uniqueStrings.map((s, i) => [s, i]));\n const offsets = nonNullStrings.map((s) => {\n const offset = stringMap.get(s);\n if (offset === undefined) {\n throw new Error(`String not found in dictionary: ${s}`);\n }\n return offset;\n });\n\n const stringBytes = encodeStrings(uniqueStrings);\n const lengths = createStringLengths(uniqueStrings);\n\n const streams: Uint8Array[] = [];\n\n // Add PRESENT stream if nulls exist\n if (hasNull) {\n const nullabilityValues = strings.map((s) => s !== null);\n streams.push(\n createStream(PhysicalStreamType.PRESENT, encodeBooleanRle(nullabilityValues), {\n technique: PhysicalLevelTechnique.VARINT,\n count: nullabilityValues.length,\n }),\n );\n }\n\n // Add OFFSET stream\n streams.push(\n createStream(PhysicalStreamType.OFFSET, encodeVarintInt32(new Uint32Array(offsets)), {\n logical: { offsetType: OffsetType.STRING },\n technique: PhysicalLevelTechnique.VARINT,\n count: offsets.length,\n }),\n );\n\n // Add LENGTH stream (for dictionary)\n streams.push(\n createStream(PhysicalStreamType.LENGTH, encodeVarintInt32(lengths), {\n logical: { lengthType: LengthType.DICTIONARY },\n technique: PhysicalLevelTechnique.VARINT,\n count: lengths.length,\n }),\n );\n\n // Add DATA stream\n streams.push(\n createStream(PhysicalStreamType.DATA, stringBytes, {\n logical: { dictionaryType: DictionaryType.SINGLE },\n }),\n );\n\n return concatenateBuffers(...streams);\n}\n\nfunction createStream(\n physicalType: PhysicalStreamType,\n data: Uint8Array,\n options: {\n logical?: LogicalStreamType;\n technique?: PhysicalLevelTechnique;\n count?: number;\n } = {},\n): Uint8Array {\n const count = options.count ?? 0;\n return buildEncodedStream(\n {\n physicalStreamType: physicalType,\n logicalStreamType: options.logical ?? {},\n logicalLevelTechnique1: LogicalLevelTechnique.NONE,\n logicalLevelTechnique2: LogicalLevelTechnique.NONE,\n physicalLevelTechnique: options.technique ?? PhysicalLevelTechnique.NONE,\n numValues: count,\n byteLength: data.length,\n decompressedCount: count,\n },\n data,\n );\n}\n\nfunction buildEncodedStream(streamMetadata: StreamMetadata, encodedData: Uint8Array): Uint8Array {\n const updatedMetadata = {\n ...streamMetadata,\n byteLength: encodedData.length,\n };\n\n const metadataBuffer = encodeStreamMetadata(updatedMetadata);\n const result = new Uint8Array(metadataBuffer.length + encodedData.length);\n result.set(metadataBuffer, 0);\n result.set(encodedData, metadataBuffer.length);\n\n return result;\n}\n\nfunction encodeStreamMetadata(metadata: StreamMetadata): Uint8Array {\n const buffer = new Uint8Array(100);\n let writeOffset = 0;\n\n // Byte 1: Stream type\n const physicalTypeIndex = Object.values(PhysicalStreamType).indexOf(metadata.physicalStreamType);\n const lowerNibble = getLogicalSubtypeValue(metadata);\n buffer[writeOffset++] = (physicalTypeIndex << 4) | lowerNibble;\n\n // Byte 2: Encoding techniques\n const llt1Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique1);\n const llt2Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique2);\n const pltIndex = Object.values(PhysicalLevelTechnique).indexOf(metadata.physicalLevelTechnique);\n buffer[writeOffset++] = (llt1Index << 5) | (llt2Index << 2) | pltIndex;\n\n // Variable-length fields\n const offset = new IntWrapper(writeOffset);\n encodeVarintInt32Value(metadata.numValues, buffer, offset);\n encodeVarintInt32Value(metadata.byteLength, buffer, offset);\n\n return buffer.slice(0, offset.get());\n}\n\nfunction getLogicalSubtypeValue(metadata: StreamMetadata): number {\n const { physicalStreamType, logicalStreamType } = metadata;\n\n switch (physicalStreamType) {\n case PhysicalStreamType.DATA:\n return logicalStreamType.dictionaryType !== undefined\n ? Object.values(DictionaryType).indexOf(logicalStreamType.dictionaryType)\n : 0;\n case PhysicalStreamType.OFFSET:\n return logicalStreamType.offsetType !== undefined\n ? Object.values(OffsetType).indexOf(logicalStreamType.offsetType)\n : 0;\n case PhysicalStreamType.LENGTH:\n return logicalStreamType.lengthType !== undefined\n ? Object.values(LengthType).indexOf(logicalStreamType.lengthType)\n : 0;\n default:\n return 0;\n }\n}\n"]}
@@ -1,12 +1,8 @@
1
1
  import type { DictionaryType } from "./dictionaryType";
2
2
  import type { OffsetType } from "./offsetType";
3
3
  import type { LengthType } from "./lengthType";
4
- export declare class LogicalStreamType {
5
- private readonly _dictionaryType?;
6
- private readonly _offsetType?;
7
- private readonly _lengthType?;
8
- constructor(_dictionaryType?: DictionaryType, _offsetType?: OffsetType, _lengthType?: LengthType);
9
- get dictionaryType(): DictionaryType | undefined;
10
- get offsetType(): OffsetType | undefined;
11
- get lengthType(): LengthType | undefined;
12
- }
4
+ export type LogicalStreamType = {
5
+ readonly dictionaryType?: DictionaryType;
6
+ readonly offsetType?: OffsetType;
7
+ readonly lengthType?: LengthType;
8
+ };
@@ -1,20 +1,2 @@
1
- export class LogicalStreamType {
2
- _dictionaryType;
3
- _offsetType;
4
- _lengthType;
5
- constructor(_dictionaryType, _offsetType, _lengthType) {
6
- this._dictionaryType = _dictionaryType;
7
- this._offsetType = _offsetType;
8
- this._lengthType = _lengthType;
9
- }
10
- get dictionaryType() {
11
- return this._dictionaryType;
12
- }
13
- get offsetType() {
14
- return this._offsetType;
15
- }
16
- get lengthType() {
17
- return this._lengthType;
18
- }
19
- }
1
+ export {};
20
2
  //# sourceMappingURL=logicalStreamType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logicalStreamType.js","sourceRoot":"","sources":["../../../src/metadata/tile/logicalStreamType.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,iBAAiB;IAEL;IACA;IACA;IAHrB,YACqB,eAAgC,EAChC,WAAwB,EACxB,WAAwB;QAFxB,oBAAe,GAAf,eAAe,CAAiB;QAChC,gBAAW,GAAX,WAAW,CAAa;QACxB,gBAAW,GAAX,WAAW,CAAa;IAC1C,CAAC;IAEJ,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;CACJ","sourcesContent":["import type { DictionaryType } from \"./dictionaryType\";\nimport type { OffsetType } from \"./offsetType\";\nimport type { LengthType } from \"./lengthType\";\n\nexport class LogicalStreamType {\n constructor(\n private readonly _dictionaryType?: DictionaryType,\n private readonly _offsetType?: OffsetType,\n private readonly _lengthType?: LengthType,\n ) {}\n\n get dictionaryType(): DictionaryType | undefined {\n return this._dictionaryType;\n }\n\n get offsetType(): OffsetType | undefined {\n return this._offsetType;\n }\n\n get lengthType(): LengthType | undefined {\n return this._lengthType;\n }\n}\n"]}
1
+ {"version":3,"file":"logicalStreamType.js","sourceRoot":"","sources":["../../../src/metadata/tile/logicalStreamType.ts"],"names":[],"mappings":"","sourcesContent":["import type { DictionaryType } from \"./dictionaryType\";\nimport type { OffsetType } from \"./offsetType\";\nimport type { LengthType } from \"./lengthType\";\n\nexport type LogicalStreamType = {\n readonly dictionaryType?: DictionaryType;\n readonly offsetType?: OffsetType;\n readonly lengthType?: LengthType;\n};\n"]}
@@ -9,9 +9,5 @@ export declare enum PhysicalLevelTechnique {
9
9
  * Can produce better results in combination with a heavyweight compression scheme like Gzip.
10
10
  * Simple compression scheme where the decoder are easier to implement compared to FastPfor.
11
11
  */
12
- VARINT = "VARINT",
13
- /**
14
- * Adaptive Lossless floating-Point Compression
15
- */
16
- ALP = "ALP"
12
+ VARINT = "VARINT"
17
13
  }
@@ -11,9 +11,5 @@ export var PhysicalLevelTechnique;
11
11
  * Simple compression scheme where the decoder are easier to implement compared to FastPfor.
12
12
  */
13
13
  PhysicalLevelTechnique["VARINT"] = "VARINT";
14
- /**
15
- * Adaptive Lossless floating-Point Compression
16
- */
17
- PhysicalLevelTechnique["ALP"] = "ALP";
18
14
  })(PhysicalLevelTechnique || (PhysicalLevelTechnique = {}));
19
15
  //# sourceMappingURL=physicalLevelTechnique.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"physicalLevelTechnique.js","sourceRoot":"","sources":["../../../src/metadata/tile/physicalLevelTechnique.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,sBAgBX;AAhBD,WAAY,sBAAsB;IAC9B,uCAAa,CAAA;IACb;;;OAGG;IACH,iDAAuB,CAAA;IACvB;;;OAGG;IACH,2CAAiB,CAAA;IACjB;;OAEG;IACH,qCAAW,CAAA;AACf,CAAC,EAhBW,sBAAsB,KAAtB,sBAAsB,QAgBjC","sourcesContent":["export enum PhysicalLevelTechnique {\n NONE = \"NONE\",\n /**\n * Preferred option, tends to produce the best compression ratio and decoding performance.\n * But currently only limited to 32 bit integer.\n */\n FAST_PFOR = \"FAST_PFOR\",\n /**\n * Can produce better results in combination with a heavyweight compression scheme like Gzip.\n * Simple compression scheme where the decoder are easier to implement compared to FastPfor.\n */\n VARINT = \"VARINT\",\n /**\n * Adaptive Lossless floating-Point Compression\n */\n ALP = \"ALP\",\n}\n"]}
1
+ {"version":3,"file":"physicalLevelTechnique.js","sourceRoot":"","sources":["../../../src/metadata/tile/physicalLevelTechnique.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,sBAYX;AAZD,WAAY,sBAAsB;IAC9B,uCAAa,CAAA;IACb;;;OAGG;IACH,iDAAuB,CAAA;IACvB;;;OAGG;IACH,2CAAiB,CAAA;AACrB,CAAC,EAZW,sBAAsB,KAAtB,sBAAsB,QAYjC","sourcesContent":["export enum PhysicalLevelTechnique {\n NONE = \"NONE\",\n /**\n * Preferred option, tends to produce the best compression ratio and decoding performance.\n * But currently only limited to 32 bit integer.\n */\n FAST_PFOR = \"FAST_PFOR\",\n /**\n * Can produce better results in combination with a heavyweight compression scheme like Gzip.\n * Simple compression scheme where the decoder are easier to implement compared to FastPfor.\n */\n VARINT = \"VARINT\",\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { LogicalLevelTechnique } from "./logicalLevelTechnique";
2
2
  import { PhysicalLevelTechnique } from "./physicalLevelTechnique";
3
3
  import { PhysicalStreamType } from "./physicalStreamType";
4
- import { LogicalStreamType } from "./logicalStreamType";
4
+ import type { LogicalStreamType } from "./logicalStreamType";
5
5
  import type IntWrapper from "../../decoding/intWrapper";
6
6
  export type StreamMetadata = {
7
7
  readonly physicalStreamType: PhysicalStreamType;
@@ -2,7 +2,6 @@ import { LogicalLevelTechnique } from "./logicalLevelTechnique";
2
2
  import { PhysicalLevelTechnique } from "./physicalLevelTechnique";
3
3
  import { decodeVarintInt32 } from "../../decoding/integerDecodingUtils";
4
4
  import { PhysicalStreamType } from "./physicalStreamType";
5
- import { LogicalStreamType } from "./logicalStreamType";
6
5
  import { DictionaryType } from "./dictionaryType";
7
6
  import { OffsetType } from "./offsetType";
8
7
  import { LengthType } from "./lengthType";
@@ -54,13 +53,19 @@ function decodeStreamMetadataInternal(tile, offset) {
54
53
  let logicalStreamType = null;
55
54
  switch (physicalStreamType) {
56
55
  case PhysicalStreamType.DATA:
57
- logicalStreamType = new LogicalStreamType(Object.values(DictionaryType)[stream_type & 0xf]);
56
+ logicalStreamType = {
57
+ dictionaryType: Object.values(DictionaryType)[stream_type & 0xf],
58
+ };
58
59
  break;
59
60
  case PhysicalStreamType.OFFSET:
60
- logicalStreamType = new LogicalStreamType(null, Object.values(OffsetType)[stream_type & 0xf]);
61
+ logicalStreamType = {
62
+ offsetType: Object.values(OffsetType)[stream_type & 0xf],
63
+ };
61
64
  break;
62
65
  case PhysicalStreamType.LENGTH:
63
- logicalStreamType = new LogicalStreamType(null, null, Object.values(LengthType)[stream_type & 0xf]);
66
+ logicalStreamType = {
67
+ lengthType: Object.values(LengthType)[stream_type & 0xf],
68
+ };
64
69
  break;
65
70
  }
66
71
  offset.increment();
@@ -1 +1 @@
1
- {"version":3,"file":"streamMetadataDecoder.js","sourceRoot":"","sources":["../../../src/metadata/tile/streamMetadataDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { LogicalLevelTechnique } from \"./logicalLevelTechnique\";\nimport { PhysicalLevelTechnique } from \"./physicalLevelTechnique\";\nimport { decodeVarintInt32 } from \"../../decoding/integerDecodingUtils\";\nimport { PhysicalStreamType } from \"./physicalStreamType\";\nimport { LogicalStreamType } from \"./logicalStreamType\";\nimport { DictionaryType } from \"./dictionaryType\";\nimport { OffsetType } from \"./offsetType\";\nimport { LengthType } from \"./lengthType\";\nimport type IntWrapper from \"../../decoding/intWrapper\";\n\nexport type StreamMetadata = {\n readonly physicalStreamType: PhysicalStreamType;\n readonly logicalStreamType: LogicalStreamType;\n readonly logicalLevelTechnique1: LogicalLevelTechnique;\n readonly logicalLevelTechnique2: LogicalLevelTechnique;\n readonly physicalLevelTechnique: PhysicalLevelTechnique;\n readonly numValues: number;\n readonly byteLength: number;\n /**\n * Returns the number of decompressed values.\n * For non-RLE streams, this is the same as numValues.\n * For RLE streams, this is overridden to return numRleValues.\n */\n readonly decompressedCount: number;\n};\n\nexport type MortonEncodedStreamMetadata = StreamMetadata & {\n readonly numBits: number;\n readonly coordinateShift: number;\n};\n\nexport type RleEncodedStreamMetadata = StreamMetadata & {\n readonly runs: number;\n readonly numRleValues: number;\n};\n\nexport function decodeStreamMetadata(tile: Uint8Array, offset: IntWrapper): StreamMetadata {\n const streamMetadata = decodeStreamMetadataInternal(tile, offset);\n if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.MORTON) {\n return decodePartialMortonEncodedStreamMetadata(streamMetadata, tile, offset);\n }\n\n if (\n (LogicalLevelTechnique.RLE === streamMetadata.logicalLevelTechnique1 ||\n LogicalLevelTechnique.RLE === streamMetadata.logicalLevelTechnique2) &&\n PhysicalLevelTechnique.NONE !== streamMetadata.physicalLevelTechnique\n ) {\n return decodePartialRleEncodedStreamMetadata(streamMetadata, tile, offset);\n }\n\n return streamMetadata;\n}\n\nfunction decodePartialMortonEncodedStreamMetadata(\n streamMetadata: StreamMetadata,\n tile: Uint8Array,\n offset: IntWrapper,\n): MortonEncodedStreamMetadata {\n const mortonInfo = decodeVarintInt32(tile, offset, 2);\n return {\n physicalStreamType: streamMetadata.physicalStreamType,\n logicalStreamType: streamMetadata.logicalStreamType,\n logicalLevelTechnique1: streamMetadata.logicalLevelTechnique1,\n logicalLevelTechnique2: streamMetadata.logicalLevelTechnique2,\n physicalLevelTechnique: streamMetadata.physicalLevelTechnique,\n numValues: streamMetadata.numValues,\n byteLength: streamMetadata.byteLength,\n decompressedCount: streamMetadata.decompressedCount,\n numBits: mortonInfo[0],\n coordinateShift: mortonInfo[1],\n };\n}\n\nfunction decodePartialRleEncodedStreamMetadata(\n streamMetadata: StreamMetadata,\n tile: Uint8Array,\n offset: IntWrapper,\n): RleEncodedStreamMetadata {\n const rleInfo = decodeVarintInt32(tile, offset, 2);\n return {\n physicalStreamType: streamMetadata.physicalStreamType,\n logicalStreamType: streamMetadata.logicalStreamType,\n logicalLevelTechnique1: streamMetadata.logicalLevelTechnique1,\n logicalLevelTechnique2: streamMetadata.logicalLevelTechnique2,\n physicalLevelTechnique: streamMetadata.physicalLevelTechnique,\n numValues: streamMetadata.numValues,\n byteLength: streamMetadata.byteLength,\n decompressedCount: rleInfo[1],\n runs: rleInfo[0],\n numRleValues: rleInfo[1],\n };\n}\n\nfunction decodeStreamMetadataInternal(tile: Uint8Array, offset: IntWrapper): StreamMetadata {\n const stream_type = tile[offset.get()];\n const physicalStreamType = Object.values(PhysicalStreamType)[stream_type >> 4] as PhysicalStreamType;\n let logicalStreamType: LogicalStreamType | null = null;\n\n switch (physicalStreamType) {\n case PhysicalStreamType.DATA:\n logicalStreamType = new LogicalStreamType(\n Object.values(DictionaryType)[stream_type & 0xf] as DictionaryType,\n );\n break;\n case PhysicalStreamType.OFFSET:\n logicalStreamType = new LogicalStreamType(null, Object.values(OffsetType)[stream_type & 0xf] as OffsetType);\n break;\n case PhysicalStreamType.LENGTH:\n logicalStreamType = new LogicalStreamType(\n null,\n null,\n Object.values(LengthType)[stream_type & 0xf] as LengthType,\n );\n break;\n }\n offset.increment();\n\n const encodings_header = tile[offset.get()];\n const llt1 = Object.values(LogicalLevelTechnique)[encodings_header >> 5] as LogicalLevelTechnique;\n const llt2 = Object.values(LogicalLevelTechnique)[(encodings_header >> 2) & 0x7] as LogicalLevelTechnique;\n const plt = Object.values(PhysicalLevelTechnique)[encodings_header & 0x3] as PhysicalLevelTechnique;\n offset.increment();\n\n const sizeInfo = decodeVarintInt32(tile, offset, 2);\n const numValues = sizeInfo[0];\n const byteLength = sizeInfo[1];\n\n return {\n physicalStreamType,\n logicalStreamType,\n logicalLevelTechnique1: llt1,\n logicalLevelTechnique2: llt2,\n physicalLevelTechnique: plt,\n numValues,\n byteLength,\n decompressedCount: numValues,\n };\n}\n"]}
1
+ {"version":3,"file":"streamMetadataDecoder.js","sourceRoot":"","sources":["../../../src/metadata/tile/streamMetadataDecoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA8B1C,MAAM,UAAU,oBAAoB,CAAC,IAAgB,EAAE,MAAkB;IACrE,MAAM,cAAc,GAAG,4BAA4B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClE,IAAI,cAAc,CAAC,sBAAsB,KAAK,qBAAqB,CAAC,MAAM,EAAE,CAAC;QACzE,OAAO,wCAAwC,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,IACI,CAAC,qBAAqB,CAAC,GAAG,KAAK,cAAc,CAAC,sBAAsB;QAChE,qBAAqB,CAAC,GAAG,KAAK,cAAc,CAAC,sBAAsB,CAAC;QACxE,sBAAsB,CAAC,IAAI,KAAK,cAAc,CAAC,sBAAsB,EACvE,CAAC;QACC,OAAO,qCAAqC,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,cAAc,CAAC;AAC1B,CAAC;AAED,SAAS,wCAAwC,CAC7C,cAA8B,EAC9B,IAAgB,EAChB,MAAkB;IAElB,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACtD,OAAO;QACH,kBAAkB,EAAE,cAAc,CAAC,kBAAkB;QACrD,iBAAiB,EAAE,cAAc,CAAC,iBAAiB;QACnD,sBAAsB,EAAE,cAAc,CAAC,sBAAsB;QAC7D,sBAAsB,EAAE,cAAc,CAAC,sBAAsB;QAC7D,sBAAsB,EAAE,cAAc,CAAC,sBAAsB;QAC7D,SAAS,EAAE,cAAc,CAAC,SAAS;QACnC,UAAU,EAAE,cAAc,CAAC,UAAU;QACrC,iBAAiB,EAAE,cAAc,CAAC,iBAAiB;QACnD,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QACtB,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC;KACjC,CAAC;AACN,CAAC;AAED,SAAS,qCAAqC,CAC1C,cAA8B,EAC9B,IAAgB,EAChB,MAAkB;IAElB,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO;QACH,kBAAkB,EAAE,cAAc,CAAC,kBAAkB;QACrD,iBAAiB,EAAE,cAAc,CAAC,iBAAiB;QACnD,sBAAsB,EAAE,cAAc,CAAC,sBAAsB;QAC7D,sBAAsB,EAAE,cAAc,CAAC,sBAAsB;QAC7D,sBAAsB,EAAE,cAAc,CAAC,sBAAsB;QAC7D,SAAS,EAAE,cAAc,CAAC,SAAS;QACnC,UAAU,EAAE,cAAc,CAAC,UAAU;QACrC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAChB,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;KAC3B,CAAC;AACN,CAAC;AAED,SAAS,4BAA4B,CAAC,IAAgB,EAAE,MAAkB;IACtE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW,IAAI,CAAC,CAAuB,CAAC;IACrG,IAAI,iBAAiB,GAA6B,IAAI,CAAC;IAEvD,QAAQ,kBAAkB,EAAE,CAAC;QACzB,KAAK,kBAAkB,CAAC,IAAI;YACxB,iBAAiB,GAAG;gBAChB,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;aACnE,CAAC;YACF,MAAM;QACV,KAAK,kBAAkB,CAAC,MAAM;YAC1B,iBAAiB,GAAG;gBAChB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;aAC3D,CAAC;YACF,MAAM;QACV,KAAK,kBAAkB,CAAC,MAAM;YAC1B,iBAAiB,GAAG;gBAChB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;aAC3D,CAAC;YACF,MAAM;IACd,CAAC;IACD,MAAM,CAAC,SAAS,EAAE,CAAC;IAEnB,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAA0B,CAAC;IAClG,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,GAAG,CAA0B,CAAC;IAC1G,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,gBAAgB,GAAG,GAAG,CAA2B,CAAC;IACpG,MAAM,CAAC,SAAS,EAAE,CAAC;IAEnB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE/B,OAAO;QACH,kBAAkB;QAClB,iBAAiB;QACjB,sBAAsB,EAAE,IAAI;QAC5B,sBAAsB,EAAE,IAAI;QAC5B,sBAAsB,EAAE,GAAG;QAC3B,SAAS;QACT,UAAU;QACV,iBAAiB,EAAE,SAAS;KAC/B,CAAC;AACN,CAAC","sourcesContent":["import { LogicalLevelTechnique } from \"./logicalLevelTechnique\";\nimport { PhysicalLevelTechnique } from \"./physicalLevelTechnique\";\nimport { decodeVarintInt32 } from \"../../decoding/integerDecodingUtils\";\nimport { PhysicalStreamType } from \"./physicalStreamType\";\nimport { DictionaryType } from \"./dictionaryType\";\nimport { OffsetType } from \"./offsetType\";\nimport { LengthType } from \"./lengthType\";\nimport type { LogicalStreamType } from \"./logicalStreamType\";\nimport type IntWrapper from \"../../decoding/intWrapper\";\n\nexport type StreamMetadata = {\n readonly physicalStreamType: PhysicalStreamType;\n readonly logicalStreamType: LogicalStreamType;\n readonly logicalLevelTechnique1: LogicalLevelTechnique;\n readonly logicalLevelTechnique2: LogicalLevelTechnique;\n readonly physicalLevelTechnique: PhysicalLevelTechnique;\n readonly numValues: number;\n readonly byteLength: number;\n /**\n * Returns the number of decompressed values.\n * For non-RLE streams, this is the same as numValues.\n * For RLE streams, this is overridden to return numRleValues.\n */\n readonly decompressedCount: number;\n};\n\nexport type MortonEncodedStreamMetadata = StreamMetadata & {\n readonly numBits: number;\n readonly coordinateShift: number;\n};\n\nexport type RleEncodedStreamMetadata = StreamMetadata & {\n readonly runs: number;\n readonly numRleValues: number;\n};\n\nexport function decodeStreamMetadata(tile: Uint8Array, offset: IntWrapper): StreamMetadata {\n const streamMetadata = decodeStreamMetadataInternal(tile, offset);\n if (streamMetadata.logicalLevelTechnique1 === LogicalLevelTechnique.MORTON) {\n return decodePartialMortonEncodedStreamMetadata(streamMetadata, tile, offset);\n }\n\n if (\n (LogicalLevelTechnique.RLE === streamMetadata.logicalLevelTechnique1 ||\n LogicalLevelTechnique.RLE === streamMetadata.logicalLevelTechnique2) &&\n PhysicalLevelTechnique.NONE !== streamMetadata.physicalLevelTechnique\n ) {\n return decodePartialRleEncodedStreamMetadata(streamMetadata, tile, offset);\n }\n\n return streamMetadata;\n}\n\nfunction decodePartialMortonEncodedStreamMetadata(\n streamMetadata: StreamMetadata,\n tile: Uint8Array,\n offset: IntWrapper,\n): MortonEncodedStreamMetadata {\n const mortonInfo = decodeVarintInt32(tile, offset, 2);\n return {\n physicalStreamType: streamMetadata.physicalStreamType,\n logicalStreamType: streamMetadata.logicalStreamType,\n logicalLevelTechnique1: streamMetadata.logicalLevelTechnique1,\n logicalLevelTechnique2: streamMetadata.logicalLevelTechnique2,\n physicalLevelTechnique: streamMetadata.physicalLevelTechnique,\n numValues: streamMetadata.numValues,\n byteLength: streamMetadata.byteLength,\n decompressedCount: streamMetadata.decompressedCount,\n numBits: mortonInfo[0],\n coordinateShift: mortonInfo[1],\n };\n}\n\nfunction decodePartialRleEncodedStreamMetadata(\n streamMetadata: StreamMetadata,\n tile: Uint8Array,\n offset: IntWrapper,\n): RleEncodedStreamMetadata {\n const rleInfo = decodeVarintInt32(tile, offset, 2);\n return {\n physicalStreamType: streamMetadata.physicalStreamType,\n logicalStreamType: streamMetadata.logicalStreamType,\n logicalLevelTechnique1: streamMetadata.logicalLevelTechnique1,\n logicalLevelTechnique2: streamMetadata.logicalLevelTechnique2,\n physicalLevelTechnique: streamMetadata.physicalLevelTechnique,\n numValues: streamMetadata.numValues,\n byteLength: streamMetadata.byteLength,\n decompressedCount: rleInfo[1],\n runs: rleInfo[0],\n numRleValues: rleInfo[1],\n };\n}\n\nfunction decodeStreamMetadataInternal(tile: Uint8Array, offset: IntWrapper): StreamMetadata {\n const stream_type = tile[offset.get()];\n const physicalStreamType = Object.values(PhysicalStreamType)[stream_type >> 4] as PhysicalStreamType;\n let logicalStreamType: LogicalStreamType | null = null;\n\n switch (physicalStreamType) {\n case PhysicalStreamType.DATA:\n logicalStreamType = {\n dictionaryType: Object.values(DictionaryType)[stream_type & 0xf],\n };\n break;\n case PhysicalStreamType.OFFSET:\n logicalStreamType = {\n offsetType: Object.values(OffsetType)[stream_type & 0xf],\n };\n break;\n case PhysicalStreamType.LENGTH:\n logicalStreamType = {\n lengthType: Object.values(LengthType)[stream_type & 0xf],\n };\n break;\n }\n offset.increment();\n\n const encodings_header = tile[offset.get()];\n const llt1 = Object.values(LogicalLevelTechnique)[encodings_header >> 5] as LogicalLevelTechnique;\n const llt2 = Object.values(LogicalLevelTechnique)[(encodings_header >> 2) & 0x7] as LogicalLevelTechnique;\n const plt = Object.values(PhysicalLevelTechnique)[encodings_header & 0x3] as PhysicalLevelTechnique;\n offset.increment();\n\n const sizeInfo = decodeVarintInt32(tile, offset, 2);\n const numValues = sizeInfo[0];\n const byteLength = sizeInfo[1];\n\n return {\n physicalStreamType,\n logicalStreamType,\n logicalLevelTechnique1: llt1,\n logicalLevelTechnique2: llt2,\n physicalLevelTechnique: plt,\n numValues,\n byteLength,\n decompressedCount: numValues,\n };\n}\n"]}