@maplibre/mlt 1.1.6 → 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 (221) hide show
  1. package/dist/decoding/bigEndianDecode.d.ts +13 -0
  2. package/dist/decoding/bigEndianDecode.js +50 -0
  3. package/dist/decoding/bigEndianDecode.js.map +1 -0
  4. package/dist/decoding/decodingTestUtils.d.ts +2 -2
  5. package/dist/decoding/decodingTestUtils.js +20 -21
  6. package/dist/decoding/decodingTestUtils.js.map +1 -1
  7. package/dist/decoding/decodingUtils.js +4 -2
  8. package/dist/decoding/decodingUtils.js.map +1 -1
  9. package/dist/decoding/fastPforDecoder.d.ts +47 -0
  10. package/dist/decoding/fastPforDecoder.js +482 -0
  11. package/dist/decoding/fastPforDecoder.js.map +1 -0
  12. package/dist/decoding/fastPforShared.d.ts +7 -0
  13. package/dist/decoding/fastPforShared.js +29 -0
  14. package/dist/decoding/fastPforShared.js.map +1 -0
  15. package/dist/decoding/fastPforUnpack.d.ts +23 -0
  16. package/dist/decoding/fastPforUnpack.js +910 -0
  17. package/dist/decoding/fastPforUnpack.js.map +1 -0
  18. package/dist/decoding/geometryDecoder.d.ts +2 -2
  19. package/dist/decoding/geometryDecoder.js +52 -49
  20. package/dist/decoding/geometryDecoder.js.map +1 -1
  21. package/dist/decoding/intWrapper.js +0 -1
  22. package/dist/decoding/intWrapper.js.map +1 -1
  23. package/dist/decoding/integerDecodingUtils.d.ts +33 -25
  24. package/dist/decoding/integerDecodingUtils.js +115 -52
  25. package/dist/decoding/integerDecodingUtils.js.map +1 -1
  26. package/dist/decoding/integerStreamDecoder.d.ts +15 -11
  27. package/dist/decoding/integerStreamDecoder.js +159 -65
  28. package/dist/decoding/integerStreamDecoder.js.map +1 -1
  29. package/dist/decoding/propertyDecoder.js +38 -36
  30. package/dist/decoding/propertyDecoder.js.map +1 -1
  31. package/dist/decoding/stringDecoder.js +19 -23
  32. package/dist/decoding/stringDecoder.js.map +1 -1
  33. package/dist/decoding/unpackNullableUtils.d.ts +2 -2
  34. package/dist/decoding/unpackNullableUtils.js.map +1 -1
  35. package/dist/encoding/bigEndianEncode.d.ts +7 -0
  36. package/dist/encoding/bigEndianEncode.js +16 -0
  37. package/dist/encoding/bigEndianEncode.js.map +1 -0
  38. package/dist/encoding/constGeometryVectorEncoder.d.ts +19 -0
  39. package/dist/encoding/constGeometryVectorEncoder.js +248 -0
  40. package/dist/encoding/constGeometryVectorEncoder.js.map +1 -0
  41. package/dist/encoding/encodingUtils.d.ts +2 -2
  42. package/dist/encoding/encodingUtils.js +3 -3
  43. package/dist/encoding/encodingUtils.js.map +1 -1
  44. package/dist/encoding/fastPforEncoder.d.ts +18 -0
  45. package/dist/encoding/fastPforEncoder.js +310 -0
  46. package/dist/encoding/fastPforEncoder.js.map +1 -0
  47. package/dist/encoding/integerEncodingUtils.d.ts +20 -20
  48. package/dist/encoding/integerEncodingUtils.js +64 -48
  49. package/dist/encoding/integerEncodingUtils.js.map +1 -1
  50. package/dist/encoding/integerStreamEncoder.d.ts +3 -2
  51. package/dist/encoding/integerStreamEncoder.js +57 -23
  52. package/dist/encoding/integerStreamEncoder.js.map +1 -1
  53. package/dist/encoding/packNullableUtils.d.ts +1 -1
  54. package/dist/encoding/packNullableUtils.js.map +1 -1
  55. package/dist/encoding/propertyEncoder.d.ts +1 -1
  56. package/dist/encoding/propertyEncoder.js +17 -24
  57. package/dist/encoding/propertyEncoder.js.map +1 -1
  58. package/dist/encoding/stringEncoder.js +9 -42
  59. package/dist/encoding/stringEncoder.js.map +1 -1
  60. package/dist/encoding/zOrderCurveEncoder.js +1 -1
  61. package/dist/encoding/zOrderCurveEncoder.js.map +1 -1
  62. package/dist/metadata/tile/logicalStreamType.d.ts +8 -12
  63. package/dist/metadata/tile/logicalStreamType.js +1 -19
  64. package/dist/metadata/tile/logicalStreamType.js.map +1 -1
  65. package/dist/metadata/tile/streamMetadataDecoder.d.ts +1 -1
  66. package/dist/metadata/tile/streamMetadataDecoder.js +9 -4
  67. package/dist/metadata/tile/streamMetadataDecoder.js.map +1 -1
  68. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.d.ts +1 -1
  69. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -1
  70. package/dist/metadata/tileset/typeMap.d.ts +10 -2
  71. package/dist/metadata/tileset/typeMap.js +25 -15
  72. package/dist/metadata/tileset/typeMap.js.map +1 -1
  73. package/dist/mltDecoder.js +46 -47
  74. package/dist/mltDecoder.js.map +1 -1
  75. package/dist/mltMetadata.js.map +1 -1
  76. package/dist/vector/constant/int32ConstVector.d.ts +6 -0
  77. package/dist/vector/constant/int32ConstVector.js +10 -0
  78. package/dist/vector/constant/int32ConstVector.js.map +1 -0
  79. package/dist/vector/constant/int64ConstVector.d.ts +6 -0
  80. package/dist/vector/constant/int64ConstVector.js +10 -0
  81. package/dist/vector/constant/int64ConstVector.js.map +1 -0
  82. package/dist/vector/dictionary/stringDictionaryVector.d.ts +1 -2
  83. package/dist/vector/dictionary/stringDictionaryVector.js +0 -3
  84. package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
  85. package/dist/vector/featureTable.d.ts +7 -8
  86. package/dist/vector/featureTable.js +10 -42
  87. package/dist/vector/featureTable.js.map +1 -1
  88. package/dist/vector/filter/flatSelectionVector.d.ts +1 -1
  89. package/dist/vector/filter/flatSelectionVector.js +0 -2
  90. package/dist/vector/filter/flatSelectionVector.js.map +1 -1
  91. package/dist/vector/filter/selectionVectorUtils.d.ts +1 -1
  92. package/dist/vector/filter/selectionVectorUtils.js.map +1 -1
  93. package/dist/vector/filter/sequenceSelectionVector.d.ts +1 -1
  94. package/dist/vector/filter/sequenceSelectionVector.js +1 -5
  95. package/dist/vector/filter/sequenceSelectionVector.js.map +1 -1
  96. package/dist/vector/flat/bitVector.js +0 -2
  97. package/dist/vector/flat/bitVector.js.map +1 -1
  98. package/dist/vector/flat/booleanFlatVector.js +0 -1
  99. package/dist/vector/flat/booleanFlatVector.js.map +1 -1
  100. package/dist/vector/flat/{intFlatVector.d.ts → int32FlatVector.d.ts} +1 -1
  101. package/dist/vector/flat/{intFlatVector.js → int32FlatVector.js} +2 -2
  102. package/dist/vector/flat/int32FlatVector.js.map +1 -0
  103. package/dist/vector/flat/{longFlatVector.d.ts → int64FlatVector.d.ts} +1 -1
  104. package/dist/vector/flat/{longFlatVector.js → int64FlatVector.js} +2 -2
  105. package/dist/vector/flat/int64FlatVector.js.map +1 -0
  106. package/dist/vector/flat/stringFlatVector.d.ts +0 -1
  107. package/dist/vector/flat/stringFlatVector.js +0 -2
  108. package/dist/vector/flat/stringFlatVector.js.map +1 -1
  109. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +1 -3
  110. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js +0 -42
  111. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
  112. package/dist/vector/geometry/constGeometryVector.d.ts +5 -5
  113. package/dist/vector/geometry/constGeometryVector.js +1 -3
  114. package/dist/vector/geometry/constGeometryVector.js.map +1 -1
  115. package/dist/vector/geometry/constGpuVector.d.ts +4 -4
  116. package/dist/vector/geometry/constGpuVector.js +1 -3
  117. package/dist/vector/geometry/constGpuVector.js.map +1 -1
  118. package/dist/vector/geometry/flatGeometryVector.d.ts +4 -4
  119. package/dist/vector/geometry/flatGeometryVector.js +1 -5
  120. package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
  121. package/dist/vector/geometry/flatGpuVector.d.ts +3 -3
  122. package/dist/vector/geometry/flatGpuVector.js +0 -1
  123. package/dist/vector/geometry/flatGpuVector.js.map +1 -1
  124. package/dist/vector/geometry/geometryType.js.map +1 -1
  125. package/dist/vector/geometry/geometryVector.d.ts +7 -8
  126. package/dist/vector/geometry/geometryVector.js +0 -13
  127. package/dist/vector/geometry/geometryVector.js.map +1 -1
  128. package/dist/vector/geometry/geometryVectorConverter.d.ts +1 -1
  129. package/dist/vector/geometry/geometryVectorConverter.js +167 -211
  130. package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
  131. package/dist/vector/geometry/gpuVector.d.ts +6 -6
  132. package/dist/vector/geometry/gpuVector.js +0 -4
  133. package/dist/vector/geometry/gpuVector.js.map +1 -1
  134. package/dist/vector/geometry/topologyVector.d.ts +5 -9
  135. package/dist/vector/geometry/topologyVector.js +1 -19
  136. package/dist/vector/geometry/topologyVector.js.map +1 -1
  137. package/dist/vector/geometry/vertexBufferType.js.map +1 -1
  138. package/dist/vector/idVector.d.ts +8 -0
  139. package/dist/vector/idVector.js +2 -0
  140. package/dist/vector/idVector.js.map +1 -0
  141. package/dist/vector/sequence/{intSequenceVector.d.ts → int32SequenceVector.d.ts} +1 -1
  142. package/dist/vector/sequence/{intSequenceVector.js → int32SequenceVector.js} +2 -2
  143. package/dist/vector/sequence/int32SequenceVector.js.map +1 -0
  144. package/dist/vector/sequence/{longSequenceVector.d.ts → int64SequenceVector.d.ts} +1 -1
  145. package/dist/vector/sequence/{longSequenceVector.js → int64SequenceVector.js} +2 -2
  146. package/dist/vector/sequence/int64SequenceVector.js.map +1 -0
  147. package/dist/vector/sequence/sequenceVector.js +0 -1
  148. package/dist/vector/sequence/sequenceVector.js.map +1 -1
  149. package/dist/vector/variableSizeVector.js +0 -1
  150. package/dist/vector/variableSizeVector.js.map +1 -1
  151. package/dist/vector/vector.js +1 -5
  152. package/dist/vector/vector.js.map +1 -1
  153. package/dist/vector/vectorType.js.map +1 -1
  154. package/package.json +9 -10
  155. package/dist/decoding/decodingUtils.spec.d.ts +0 -1
  156. package/dist/decoding/decodingUtils.spec.js +0 -141
  157. package/dist/decoding/decodingUtils.spec.js.map +0 -1
  158. package/dist/decoding/fsstDecoder.spec.d.ts +0 -1
  159. package/dist/decoding/fsstDecoder.spec.js +0 -57
  160. package/dist/decoding/fsstDecoder.spec.js.map +0 -1
  161. package/dist/decoding/integerDecodingUtils.spec.d.ts +0 -1
  162. package/dist/decoding/integerDecodingUtils.spec.js +0 -300
  163. package/dist/decoding/integerDecodingUtils.spec.js.map +0 -1
  164. package/dist/decoding/integerStreamDecoder.spec.d.ts +0 -1
  165. package/dist/decoding/integerStreamDecoder.spec.js +0 -402
  166. package/dist/decoding/integerStreamDecoder.spec.js.map +0 -1
  167. package/dist/decoding/propertyDecoder.spec.d.ts +0 -1
  168. package/dist/decoding/propertyDecoder.spec.js +0 -448
  169. package/dist/decoding/propertyDecoder.spec.js.map +0 -1
  170. package/dist/decoding/stringDecoder.spec.d.ts +0 -1
  171. package/dist/decoding/stringDecoder.spec.js +0 -387
  172. package/dist/decoding/stringDecoder.spec.js.map +0 -1
  173. package/dist/decoding/unpackNullableUtils.spec.d.ts +0 -1
  174. package/dist/decoding/unpackNullableUtils.spec.js +0 -71
  175. package/dist/decoding/unpackNullableUtils.spec.js.map +0 -1
  176. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.d.ts +0 -1
  177. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js +0 -142
  178. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.spec.js.map +0 -1
  179. package/dist/mltDecoder.spec.d.ts +0 -1
  180. package/dist/mltDecoder.spec.js +0 -152
  181. package/dist/mltDecoder.spec.js.map +0 -1
  182. package/dist/vector/constant/intConstVector.d.ts +0 -6
  183. package/dist/vector/constant/intConstVector.js +0 -10
  184. package/dist/vector/constant/intConstVector.js.map +0 -1
  185. package/dist/vector/constant/longConstVector.d.ts +0 -6
  186. package/dist/vector/constant/longConstVector.js +0 -10
  187. package/dist/vector/constant/longConstVector.js.map +0 -1
  188. package/dist/vector/filter/flatSelectionVector.spec.d.ts +0 -1
  189. package/dist/vector/filter/flatSelectionVector.spec.js +0 -51
  190. package/dist/vector/filter/flatSelectionVector.spec.js.map +0 -1
  191. package/dist/vector/filter/selectionVectorUtil.spec.d.ts +0 -1
  192. package/dist/vector/filter/selectionVectorUtil.spec.js +0 -154
  193. package/dist/vector/filter/selectionVectorUtil.spec.js.map +0 -1
  194. package/dist/vector/filter/sequenceSelectionVector.spec.d.ts +0 -1
  195. package/dist/vector/filter/sequenceSelectionVector.spec.js +0 -115
  196. package/dist/vector/filter/sequenceSelectionVector.spec.js.map +0 -1
  197. package/dist/vector/flat/floatFlatVector.spec.d.ts +0 -1
  198. package/dist/vector/flat/floatFlatVector.spec.js +0 -14
  199. package/dist/vector/flat/floatFlatVector.spec.js.map +0 -1
  200. package/dist/vector/flat/intFlatVector.js.map +0 -1
  201. package/dist/vector/flat/intFlatVector.spec.d.ts +0 -1
  202. package/dist/vector/flat/intFlatVector.spec.js +0 -15
  203. package/dist/vector/flat/intFlatVector.spec.js.map +0 -1
  204. package/dist/vector/flat/longFlatVector.js.map +0 -1
  205. package/dist/vector/flat/longFlatVector.spec.d.ts +0 -1
  206. package/dist/vector/flat/longFlatVector.spec.js +0 -14
  207. package/dist/vector/flat/longFlatVector.spec.js.map +0 -1
  208. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.d.ts +0 -1
  209. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js +0 -28
  210. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js.map +0 -1
  211. package/dist/vector/geometry/zOrderCurve.spec.d.ts +0 -1
  212. package/dist/vector/geometry/zOrderCurve.spec.js +0 -25
  213. package/dist/vector/geometry/zOrderCurve.spec.js.map +0 -1
  214. package/dist/vector/intVector.d.ts +0 -8
  215. package/dist/vector/intVector.js +0 -2
  216. package/dist/vector/intVector.js.map +0 -1
  217. package/dist/vector/sequence/intSequenceVector.js.map +0 -1
  218. package/dist/vector/sequence/longSequenceVector.js.map +0 -1
  219. package/dist/vector/sequence/longSequenceVektor.spec.d.ts +0 -1
  220. package/dist/vector/sequence/longSequenceVektor.spec.js +0 -11
  221. package/dist/vector/sequence/longSequenceVektor.spec.js.map +0 -1
@@ -1,9 +1,13 @@
1
1
  import { LogicalLevelTechnique } from "../metadata/tile/logicalLevelTechnique";
2
- import { encodeDeltaRleInt32, encodeZigZagInt32, encodeZigZagRleInt32, encodeUnsignedRleInt32, encodeDeltaInt32, encodeUnsignedRleFloat64, encodeZigZagDeltaFloat64, encodeZigZagFloat64, encodeZigZagRleFloat64, encodeVarintInt32, encodeVarintInt64, encodeZigZagInt64Value, encodeFastPfor, encodeComponentwiseDeltaVec2, encodeComponentwiseDeltaVec2Scaled, } from "./integerEncodingUtils";
2
+ import { encodeDeltaRleInt32, encodeZigZagInt32, encodeZigZagRleInt32, encodeUnsignedRleInt32, encodeDeltaInt32, encodeUnsignedRleFloat64, encodeZigZagDeltaFloat64, encodeZigZagFloat64, encodeZigZagRleFloat64, encodeVarintInt32, encodeVarintInt64, encodeZigZagInt64Value, encodeFastPfor, encodeComponentwiseDeltaVec2, encodeComponentwiseDeltaVec2Scaled, encodeZigZagDeltaInt32, } from "./integerEncodingUtils";
3
3
  import { packNullable } from "./packNullableUtils";
4
4
  import { PhysicalLevelTechnique } from "../metadata/tile/physicalLevelTechnique";
5
- export function encodeIntStream(values, metadata, isSigned, bitVector, scalingData) {
6
- const { data } = encodeInt32(values, metadata, isSigned, bitVector, scalingData);
5
+ export function encodeSignedInt32Stream(values, metadata, bitVector, scalingData) {
6
+ const { data } = encodeSignedInt32(values, metadata, bitVector, scalingData);
7
+ return encodePhysicalLevelTechnique(data, metadata);
8
+ }
9
+ export function encodeUnsignedInt32Stream(values, metadata, bitVector, scalingData) {
10
+ const { data } = encodeUnsignedInt32(values, metadata, bitVector, scalingData);
7
11
  return encodePhysicalLevelTechnique(data, metadata);
8
12
  }
9
13
  function encodePhysicalLevelTechnique(data, streamMetadata) {
@@ -20,39 +24,69 @@ function encodePhysicalLevelTechnique(data, streamMetadata) {
20
24
  }
21
25
  throw new Error("Specified physicalLevelTechnique is not supported (yet).");
22
26
  }
23
- function encodeInt32(values, streamMetadata, isSigned, bitVector, scalingData) {
24
- const data = bitVector ? packNullable(values, bitVector) : new Int32Array(values);
27
+ function encodeSignedInt32(values, streamMetadata, bitVector, scalingData) {
28
+ values = bitVector ? packNullable(values, bitVector) : new Int32Array(values);
29
+ let data;
25
30
  switch (streamMetadata.logicalLevelTechnique1) {
26
31
  case LogicalLevelTechnique.DELTA:
27
32
  if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
28
- const encoded = encodeDeltaRleInt32(data);
33
+ const encoded = encodeDeltaRleInt32(values);
29
34
  return { data: encoded.data, runs: encoded.runs };
30
35
  }
31
- encodeDeltaInt32(data);
32
- encodeZigZagInt32(data);
33
- return { data };
36
+ else {
37
+ data = encodeZigZagDeltaInt32(values);
38
+ return { data };
39
+ }
34
40
  case LogicalLevelTechnique.RLE: {
35
- if (isSigned) {
36
- const encoded = encodeZigZagRleInt32(data);
41
+ const encoded = encodeZigZagRleInt32(values);
42
+ return { data: encoded.data, runs: encoded.runs };
43
+ }
44
+ case LogicalLevelTechnique.MORTON:
45
+ encodeDeltaInt32(values);
46
+ data = new Uint32Array(values);
47
+ return { data };
48
+ case LogicalLevelTechnique.COMPONENTWISE_DELTA:
49
+ if (scalingData && !bitVector) {
50
+ const data = encodeComponentwiseDeltaVec2Scaled(values, scalingData.scale);
51
+ return { data };
52
+ }
53
+ data = encodeComponentwiseDeltaVec2(values);
54
+ return { data };
55
+ case LogicalLevelTechnique.NONE:
56
+ data = encodeZigZagInt32(values);
57
+ return { data };
58
+ default:
59
+ throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
60
+ }
61
+ }
62
+ function encodeUnsignedInt32(values, streamMetadata, bitVector, scalingData) {
63
+ values = bitVector ? packNullable(values, bitVector) : new Uint32Array(values);
64
+ let data;
65
+ switch (streamMetadata.logicalLevelTechnique1) {
66
+ case LogicalLevelTechnique.DELTA:
67
+ if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {
68
+ const encoded = encodeDeltaRleInt32(new Int32Array(values.buffer, values.byteOffset, values.length));
37
69
  return { data: encoded.data, runs: encoded.runs };
38
70
  }
39
- const encoded = encodeUnsignedRleInt32(data);
71
+ data = encodeZigZagDeltaInt32(new Int32Array(values.buffer, values.byteOffset, values.length));
72
+ return { data };
73
+ case LogicalLevelTechnique.RLE: {
74
+ const encoded = encodeUnsignedRleInt32(values);
40
75
  return { data: encoded.data, runs: encoded.runs };
41
76
  }
42
77
  case LogicalLevelTechnique.MORTON:
43
- encodeDeltaInt32(data);
78
+ encodeDeltaInt32(values);
79
+ data = values;
44
80
  return { data };
45
81
  case LogicalLevelTechnique.COMPONENTWISE_DELTA:
46
82
  if (scalingData && !bitVector) {
47
- encodeComponentwiseDeltaVec2Scaled(data, scalingData.scale);
83
+ const data = encodeComponentwiseDeltaVec2Scaled(new Int32Array(values), scalingData.scale);
48
84
  return { data };
49
85
  }
50
- encodeComponentwiseDeltaVec2(data);
86
+ data = encodeComponentwiseDeltaVec2(new Int32Array(values));
51
87
  return { data };
52
88
  case LogicalLevelTechnique.NONE:
53
- if (isSigned) {
54
- encodeZigZagInt32(data);
55
- }
89
+ data = values;
56
90
  return { data };
57
91
  default:
58
92
  throw new Error(`The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`);
@@ -84,7 +118,7 @@ function encodeRleFloat64(data, isSigned) {
84
118
  * Encodes BigInt64 values with zigzag encoding and varint compression
85
119
  */
86
120
  export function encodeInt64SignedNone(values) {
87
- const zigzagEncoded = new BigInt64Array(Array.from(values, (val) => encodeZigZagInt64Value(val)));
121
+ const zigzagEncoded = new BigUint64Array(Array.from(values, (val) => encodeZigZagInt64Value(val)));
88
122
  return encodeVarintInt64(zigzagEncoded);
89
123
  }
90
124
  /**
@@ -96,7 +130,7 @@ export function encodeInt64SignedDelta(values) {
96
130
  for (let i = 1; i < values.length; i++) {
97
131
  deltaEncoded[i] = values[i] - values[i - 1];
98
132
  }
99
- const zigzagEncoded = new BigInt64Array(deltaEncoded.length);
133
+ const zigzagEncoded = new BigUint64Array(deltaEncoded.length);
100
134
  for (let i = 0; i < deltaEncoded.length; i++) {
101
135
  zigzagEncoded[i] = encodeZigZagInt64Value(deltaEncoded[i]);
102
136
  }
@@ -114,7 +148,7 @@ export function encodeInt64SignedRle(runs) {
114
148
  values.push(encodeZigZagInt64Value(value));
115
149
  }
116
150
  const rleValues = [...runLengths, ...values];
117
- return encodeVarintInt64(new BigInt64Array(rleValues));
151
+ return encodeVarintInt64(new BigUint64Array(rleValues));
118
152
  }
119
153
  /**
120
154
  * Encodes BigInt64 values with delta+RLE, zigzag, and varint
@@ -128,12 +162,12 @@ export function encodeInt64SignedDeltaRle(runs) {
128
162
  values.push(encodeZigZagInt64Value(value));
129
163
  }
130
164
  const rleValues = [...runLengths, ...values];
131
- return encodeVarintInt64(new BigInt64Array(rleValues));
165
+ return encodeVarintInt64(new BigUint64Array(rleValues));
132
166
  }
133
167
  /**
134
168
  * Encodes unsigned BigInt64 values with varint compression (no zigzag)
135
169
  */
136
170
  export function encodeInt64UnsignedNone(values) {
137
- return encodeVarintInt64(values);
171
+ return encodeVarintInt64(new BigUint64Array(values));
138
172
  }
139
173
  //# sourceMappingURL=integerStreamEncoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"integerStreamEncoder.js","sourceRoot":"","sources":["../../src/encoding/integerStreamEncoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { type StreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport {\n encodeDeltaRleInt32,\n encodeZigZagInt32,\n encodeZigZagRleInt32,\n encodeUnsignedRleInt32,\n encodeDeltaInt32,\n encodeUnsignedRleFloat64,\n encodeZigZagDeltaFloat64,\n encodeZigZagFloat64,\n encodeZigZagRleFloat64,\n encodeVarintInt32,\n encodeVarintInt64,\n encodeZigZagInt64Value,\n encodeFastPfor,\n encodeComponentwiseDeltaVec2,\n encodeComponentwiseDeltaVec2Scaled,\n} from \"./integerEncodingUtils\";\nimport type BitVector from \"../vector/flat/bitVector\";\nimport { packNullable } from \"./packNullableUtils\";\nimport { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport type GeometryScaling from \"../decoding/geometryScaling\";\n\nexport function encodeIntStream(\n values: Int32Array,\n metadata: StreamMetadata,\n isSigned: boolean,\n bitVector?: BitVector,\n scalingData?: GeometryScaling,\n): Uint8Array {\n const { data } = encodeInt32(values, metadata, isSigned, bitVector, scalingData);\n return encodePhysicalLevelTechnique(data, metadata);\n}\n\nfunction encodePhysicalLevelTechnique(data: Int32Array, streamMetadata: StreamMetadata): Uint8Array {\n const physicalLevelTechnique = streamMetadata.physicalLevelTechnique;\n if (physicalLevelTechnique === PhysicalLevelTechnique.FAST_PFOR) {\n return encodeFastPfor(data);\n }\n if (physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n return encodeVarintInt32(data);\n }\n\n if (physicalLevelTechnique === PhysicalLevelTechnique.NONE) {\n const slice = data.subarray(0, streamMetadata.byteLength);\n return new Uint8Array(slice);\n }\n\n throw new Error(\"Specified physicalLevelTechnique is not supported (yet).\");\n}\n\nfunction encodeInt32(\n values: Int32Array,\n streamMetadata: StreamMetadata,\n isSigned: boolean,\n bitVector?: BitVector,\n scalingData?: GeometryScaling,\n): { data: Int32Array; runs?: number } {\n const data = bitVector ? packNullable(values, bitVector) : new Int32Array(values);\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const encoded = encodeDeltaRleInt32(data);\n return { data: encoded.data, runs: encoded.runs };\n }\n encodeDeltaInt32(data);\n encodeZigZagInt32(data);\n return { data };\n case LogicalLevelTechnique.RLE: {\n if (isSigned) {\n const encoded = encodeZigZagRleInt32(data);\n return { data: encoded.data, runs: encoded.runs };\n }\n const encoded = encodeUnsignedRleInt32(data);\n return { data: encoded.data, runs: encoded.runs };\n }\n case LogicalLevelTechnique.MORTON:\n encodeDeltaInt32(data);\n return { data };\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !bitVector) {\n encodeComponentwiseDeltaVec2Scaled(data, scalingData.scale);\n return { data };\n }\n encodeComponentwiseDeltaVec2(data);\n return { data };\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n encodeZigZagInt32(data);\n }\n return { data };\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n}\n\nexport function encodeFloat64(values: Float64Array, streamMetadata: StreamMetadata, isSigned: boolean): Float64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n encodeZigZagDeltaFloat64(values);\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n values = encodeUnsignedRleFloat64(values).data;\n }\n return values;\n case LogicalLevelTechnique.RLE:\n return encodeRleFloat64(values, isSigned);\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n encodeZigZagFloat64(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 encodeRleFloat64(data: Float64Array, isSigned: boolean): Float64Array {\n return isSigned ? encodeZigZagRleFloat64(data).data : encodeUnsignedRleFloat64(data).data;\n}\n\n/**\n * Encodes BigInt64 values with zigzag encoding and varint compression\n */\nexport function encodeInt64SignedNone(values: BigInt64Array): Uint8Array {\n const zigzagEncoded = new BigInt64Array(Array.from(values, (val) => encodeZigZagInt64Value(val)));\n return encodeVarintInt64(zigzagEncoded);\n}\n\n/**\n * Encodes BigInt64 values with delta encoding, zigzag, and varint\n */\nexport function encodeInt64SignedDelta(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 const zigzagEncoded = new BigInt64Array(deltaEncoded.length);\n for (let i = 0; i < deltaEncoded.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt64Value(deltaEncoded[i]);\n }\n return encodeVarintInt64(zigzagEncoded);\n}\n\n/**\n * Encodes BigInt64 values with RLE, zigzag, and varint\n * @param runs - Array of [runLength, value] pairs\n */\nexport function encodeInt64SignedRle(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n }\n\n const rleValues = [...runLengths, ...values];\n return encodeVarintInt64(new BigInt64Array(rleValues));\n}\n\n/**\n * Encodes BigInt64 values with delta+RLE, zigzag, and varint\n * @param runs - Array of [runLength, deltaValue] pairs representing RLE-encoded delta values\n */\nexport function encodeInt64SignedDeltaRle(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n }\n\n const rleValues = [...runLengths, ...values];\n return encodeVarintInt64(new BigInt64Array(rleValues));\n}\n\n/**\n * Encodes unsigned BigInt64 values with varint compression (no zigzag)\n */\nexport function encodeInt64UnsignedNone(values: BigInt64Array): Uint8Array {\n return encodeVarintInt64(values);\n}\n"]}
1
+ {"version":3,"file":"integerStreamEncoder.js","sourceRoot":"","sources":["../../src/encoding/integerStreamEncoder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StreamMetadata } from \"../metadata/tile/streamMetadataDecoder\";\nimport { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport {\n encodeDeltaRleInt32,\n encodeZigZagInt32,\n encodeZigZagRleInt32,\n encodeUnsignedRleInt32,\n encodeDeltaInt32,\n encodeUnsignedRleFloat64,\n encodeZigZagDeltaFloat64,\n encodeZigZagFloat64,\n encodeZigZagRleFloat64,\n encodeVarintInt32,\n encodeVarintInt64,\n encodeZigZagInt64Value,\n encodeFastPfor,\n encodeComponentwiseDeltaVec2,\n encodeComponentwiseDeltaVec2Scaled,\n encodeZigZagDeltaInt32,\n} from \"./integerEncodingUtils\";\nimport type BitVector from \"../vector/flat/bitVector\";\nimport { packNullable } from \"./packNullableUtils\";\nimport { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport type GeometryScaling from \"../decoding/geometryScaling\";\n\nexport function encodeSignedInt32Stream(\n values: Int32Array,\n metadata: StreamMetadata,\n bitVector?: BitVector,\n scalingData?: GeometryScaling,\n): Uint8Array {\n const { data } = encodeSignedInt32(values, metadata, bitVector, scalingData);\n return encodePhysicalLevelTechnique(data, metadata);\n}\n\nexport function encodeUnsignedInt32Stream(\n values: Uint32Array,\n metadata: StreamMetadata,\n bitVector?: BitVector,\n scalingData?: GeometryScaling,\n): Uint8Array {\n const { data } = encodeUnsignedInt32(values, metadata, bitVector, scalingData);\n return encodePhysicalLevelTechnique(data, metadata);\n}\n\nfunction encodePhysicalLevelTechnique(data: Uint32Array, streamMetadata: StreamMetadata): Uint8Array {\n const physicalLevelTechnique = streamMetadata.physicalLevelTechnique;\n if (physicalLevelTechnique === PhysicalLevelTechnique.FAST_PFOR) {\n return encodeFastPfor(data);\n }\n if (physicalLevelTechnique === PhysicalLevelTechnique.VARINT) {\n return encodeVarintInt32(data);\n }\n\n if (physicalLevelTechnique === PhysicalLevelTechnique.NONE) {\n const slice = data.subarray(0, streamMetadata.byteLength);\n return new Uint8Array(slice);\n }\n\n throw new Error(\"Specified physicalLevelTechnique is not supported (yet).\");\n}\n\nfunction encodeSignedInt32(\n values: Int32Array,\n streamMetadata: StreamMetadata,\n bitVector?: BitVector,\n scalingData?: GeometryScaling,\n): { data: Uint32Array; runs?: number } {\n values = bitVector ? packNullable(values, bitVector) : new Int32Array(values);\n let data: Uint32Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const encoded = encodeDeltaRleInt32(values);\n return { data: encoded.data, runs: encoded.runs };\n } else {\n data = encodeZigZagDeltaInt32(values);\n return { data };\n }\n case LogicalLevelTechnique.RLE: {\n const encoded = encodeZigZagRleInt32(values);\n return { data: encoded.data, runs: encoded.runs };\n }\n case LogicalLevelTechnique.MORTON:\n encodeDeltaInt32(values);\n data = new Uint32Array(values);\n return { data };\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !bitVector) {\n const data = encodeComponentwiseDeltaVec2Scaled(values, scalingData.scale);\n return { data };\n }\n data = encodeComponentwiseDeltaVec2(values);\n return { data };\n case LogicalLevelTechnique.NONE:\n data = encodeZigZagInt32(values);\n return { data };\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n}\n\nfunction encodeUnsignedInt32(\n values: Uint32Array,\n streamMetadata: StreamMetadata,\n bitVector?: BitVector,\n scalingData?: GeometryScaling,\n): { data: Uint32Array; runs?: number } {\n values = bitVector ? packNullable(values, bitVector) : new Uint32Array(values);\n let data: Uint32Array;\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n const encoded = encodeDeltaRleInt32(new Int32Array(values.buffer, values.byteOffset, values.length));\n return { data: encoded.data, runs: encoded.runs };\n }\n data = encodeZigZagDeltaInt32(new Int32Array(values.buffer, values.byteOffset, values.length));\n return { data };\n case LogicalLevelTechnique.RLE: {\n const encoded = encodeUnsignedRleInt32(values);\n return { data: encoded.data, runs: encoded.runs };\n }\n case LogicalLevelTechnique.MORTON:\n encodeDeltaInt32(values);\n data = values;\n return { data };\n case LogicalLevelTechnique.COMPONENTWISE_DELTA:\n if (scalingData && !bitVector) {\n const data = encodeComponentwiseDeltaVec2Scaled(new Int32Array(values), scalingData.scale);\n return { data };\n }\n data = encodeComponentwiseDeltaVec2(new Int32Array(values));\n return { data };\n case LogicalLevelTechnique.NONE:\n data = values;\n return { data };\n default:\n throw new Error(\n `The specified Logical level technique is not supported: ${streamMetadata.logicalLevelTechnique1}`,\n );\n }\n}\n\nexport function encodeFloat64(values: Float64Array, streamMetadata: StreamMetadata, isSigned: boolean): Float64Array {\n switch (streamMetadata.logicalLevelTechnique1) {\n case LogicalLevelTechnique.DELTA:\n encodeZigZagDeltaFloat64(values);\n if (streamMetadata.logicalLevelTechnique2 === LogicalLevelTechnique.RLE) {\n values = encodeUnsignedRleFloat64(values).data;\n }\n return values;\n case LogicalLevelTechnique.RLE:\n return encodeRleFloat64(values, isSigned);\n case LogicalLevelTechnique.NONE:\n if (isSigned) {\n encodeZigZagFloat64(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 encodeRleFloat64(data: Float64Array, isSigned: boolean): Float64Array {\n return isSigned ? encodeZigZagRleFloat64(data).data : encodeUnsignedRleFloat64(data).data;\n}\n\n/**\n * Encodes BigInt64 values with zigzag encoding and varint compression\n */\nexport function encodeInt64SignedNone(values: BigInt64Array): Uint8Array {\n const zigzagEncoded = new BigUint64Array(Array.from(values, (val) => encodeZigZagInt64Value(val)));\n return encodeVarintInt64(zigzagEncoded);\n}\n\n/**\n * Encodes BigInt64 values with delta encoding, zigzag, and varint\n */\nexport function encodeInt64SignedDelta(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 const zigzagEncoded = new BigUint64Array(deltaEncoded.length);\n for (let i = 0; i < deltaEncoded.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt64Value(deltaEncoded[i]);\n }\n return encodeVarintInt64(zigzagEncoded);\n}\n\n/**\n * Encodes BigInt64 values with RLE, zigzag, and varint\n * @param runs - Array of [runLength, value] pairs\n */\nexport function encodeInt64SignedRle(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n }\n\n const rleValues = [...runLengths, ...values];\n return encodeVarintInt64(new BigUint64Array(rleValues));\n}\n\n/**\n * Encodes BigInt64 values with delta+RLE, zigzag, and varint\n * @param runs - Array of [runLength, deltaValue] pairs representing RLE-encoded delta values\n */\nexport function encodeInt64SignedDeltaRle(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n }\n\n const rleValues = [...runLengths, ...values];\n return encodeVarintInt64(new BigUint64Array(rleValues));\n}\n\n/**\n * Encodes unsigned BigInt64 values with varint compression (no zigzag)\n */\nexport function encodeInt64UnsignedNone(values: BigInt64Array): Uint8Array {\n return encodeVarintInt64(new BigUint64Array(values));\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { type TypedArrayInstance } from "../decoding/unpackNullableUtils";
1
+ import type { TypedArrayInstance } from "../decoding/unpackNullableUtils";
2
2
  import BitVector from "../vector/flat/bitVector";
3
3
  export declare function packNullable<T extends TypedArrayInstance>(data: T, presentBits: BitVector | null): T;
4
4
  export declare function packNullableBoolean(data: Uint8Array, dataSize: number, presentBits: BitVector | null): Uint8Array;
@@ -1 +1 @@
1
- {"version":3,"file":"packNullableUtils.js","sourceRoot":"","sources":["../../src/encoding/packNullableUtils.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,0BAA0B,CAAC;AAEjD,MAAM,UAAU,YAAY,CAA+B,IAAO,EAAE,WAA6B;IAC7F,0EAA0E;IAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IAEzB,8DAA8D;IAC9D,mEAAmE;IACnE,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,WAAW,EAAE,CAAC;QAClB,CAAC;IACL,CAAC;IAED,+DAA+D;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAoC,CAAC;IAC9D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,WAAW,CAAM,CAAC;IAEjD,0DAA0D;IAC1D,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAgB,EAAE,QAAgB,EAAE,WAA6B;IACjG,0EAA0E;IAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAErD,8DAA8D;IAC9D,uDAAuD;IACvD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,WAAW,EAAE,CAAC;QAClB,CAAC;IACL,CAAC;IAED,sEAAsE;IACtE,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAEjE,4DAA4D;IAC5D,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;IAED,OAAO,eAAe,CAAC,SAAS,EAAE,CAAC;AACvC,CAAC","sourcesContent":["import { type TypedArrayConstructor, type TypedArrayInstance } from \"../decoding/unpackNullableUtils\";\nimport BitVector from \"../vector/flat/bitVector\";\n\nexport function packNullable<T extends TypedArrayInstance>(data: T, presentBits: BitVector | null): T {\n // Non-nullable case: if no mask is provided, the data is already \"packed\"\n if (!presentBits) {\n return data;\n }\n\n const size = data.length;\n\n // 1. First pass: Count how many elements are actually present\n // This is required to allocate the correct size for the TypedArray\n let packedCount = 0;\n for (let i = 0; i < size; i++) {\n if (presentBits.get(i)) {\n packedCount++;\n }\n }\n\n // 2. Create a new array of the same type with the reduced size\n const constructor = data.constructor as TypedArrayConstructor;\n const result = new constructor(packedCount) as T;\n\n // 3. Second pass: Fill the result array with valid values\n let counter = 0;\n for (let i = 0; i < size; i++) {\n if (presentBits.get(i)) {\n result[counter++] = data[i];\n }\n }\n\n return result;\n}\n\nexport function packNullableBoolean(data: Uint8Array, dataSize: number, presentBits: BitVector | null): Uint8Array {\n // Non-nullable case: if no mask is provided, the data is already \"packed\"\n if (!presentBits) {\n return data;\n }\n\n const inputBitVector = new BitVector(data, dataSize);\n\n // 1. Calculate how many bits are actually marked as 'present'\n // This determines the size of the final packed buffer.\n let packedCount = 0;\n for (let i = 0; i < dataSize; i++) {\n if (presentBits.get(i)) {\n packedCount++;\n }\n }\n\n // 2. Initialize the result BitVector with the correct compressed size\n const resultBuffer = new Uint8Array(Math.ceil(packedCount / 8));\n const resultBitVector = new BitVector(resultBuffer, packedCount);\n\n // 3. Fill the result: only copy bits where the mask is true\n let targetIndex = 0;\n for (let i = 0; i < dataSize; i++) {\n if (presentBits.get(i)) {\n const value = inputBitVector.get(i);\n resultBitVector.set(targetIndex++, value);\n }\n }\n\n return resultBitVector.getBuffer();\n}\n"]}
1
+ {"version":3,"file":"packNullableUtils.js","sourceRoot":"","sources":["../../src/encoding/packNullableUtils.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,0BAA0B,CAAC;AAEjD,MAAM,UAAU,YAAY,CAA+B,IAAO,EAAE,WAA6B;IAC7F,0EAA0E;IAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IAEzB,8DAA8D;IAC9D,mEAAmE;IACnE,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,WAAW,EAAE,CAAC;QAClB,CAAC;IACL,CAAC;IAED,+DAA+D;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAoC,CAAC;IAC9D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,WAAW,CAAM,CAAC;IAEjD,0DAA0D;IAC1D,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAgB,EAAE,QAAgB,EAAE,WAA6B;IACjG,0EAA0E;IAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAErD,8DAA8D;IAC9D,uDAAuD;IACvD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,WAAW,EAAE,CAAC;QAClB,CAAC;IACL,CAAC;IAED,sEAAsE;IACtE,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAEjE,4DAA4D;IAC5D,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;IAED,OAAO,eAAe,CAAC,SAAS,EAAE,CAAC;AACvC,CAAC","sourcesContent":["import type { TypedArrayConstructor, TypedArrayInstance } from \"../decoding/unpackNullableUtils\";\nimport BitVector from \"../vector/flat/bitVector\";\n\nexport function packNullable<T extends TypedArrayInstance>(data: T, presentBits: BitVector | null): T {\n // Non-nullable case: if no mask is provided, the data is already \"packed\"\n if (!presentBits) {\n return data;\n }\n\n const size = data.length;\n\n // 1. First pass: Count how many elements are actually present\n // This is required to allocate the correct size for the TypedArray\n let packedCount = 0;\n for (let i = 0; i < size; i++) {\n if (presentBits.get(i)) {\n packedCount++;\n }\n }\n\n // 2. Create a new array of the same type with the reduced size\n const constructor = data.constructor as TypedArrayConstructor;\n const result = new constructor(packedCount) as T;\n\n // 3. Second pass: Fill the result array with valid values\n let counter = 0;\n for (let i = 0; i < size; i++) {\n if (presentBits.get(i)) {\n result[counter++] = data[i];\n }\n }\n\n return result;\n}\n\nexport function packNullableBoolean(data: Uint8Array, dataSize: number, presentBits: BitVector | null): Uint8Array {\n // Non-nullable case: if no mask is provided, the data is already \"packed\"\n if (!presentBits) {\n return data;\n }\n\n const inputBitVector = new BitVector(data, dataSize);\n\n // 1. Calculate how many bits are actually marked as 'present'\n // This determines the size of the final packed buffer.\n let packedCount = 0;\n for (let i = 0; i < dataSize; i++) {\n if (presentBits.get(i)) {\n packedCount++;\n }\n }\n\n // 2. Initialize the result BitVector with the correct compressed size\n const resultBuffer = new Uint8Array(Math.ceil(packedCount / 8));\n const resultBitVector = new BitVector(resultBuffer, packedCount);\n\n // 3. Fill the result: only copy bits where the mask is true\n let targetIndex = 0;\n for (let i = 0; i < dataSize; i++) {\n if (presentBits.get(i)) {\n const value = inputBitVector.get(i);\n resultBitVector.set(targetIndex++, value);\n }\n }\n\n return resultBitVector.getBuffer();\n}\n"]}
@@ -63,7 +63,7 @@ export declare function encodeFloatNullableColumn(values: (number | null)[]): Ui
63
63
  /**
64
64
  * Encodes DOUBLE values
65
65
  */
66
- export declare function encodeDoubleColumn(values: Float32Array): Uint8Array;
66
+ export declare function encodeDoubleColumn(values: Float64Array): Uint8Array;
67
67
  /**
68
68
  * Encodes nullable DOUBLE values
69
69
  */
@@ -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
  }
@@ -100,7 +93,7 @@ export function encodeUint32Column(values) {
100
93
  * Encodes INT_64 values with NONE encoding
101
94
  */
102
95
  export function encodeInt64NoneColumn(values) {
103
- const zigzagEncoded = new BigInt64Array(Array.from(values, (val) => encodeZigZagInt64Value(val)));
96
+ const zigzagEncoded = new BigUint64Array(Array.from(values, (val) => encodeZigZagInt64Value(val)));
104
97
  const encodedData = encodeVarintInt64(zigzagEncoded);
105
98
  const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);
106
99
  return buildEncodedStream(streamMetadata, encodedData);
@@ -114,7 +107,7 @@ export function encodeInt64DeltaColumn(values) {
114
107
  for (let i = 1; i < values.length; i++) {
115
108
  deltaEncoded[i] = values[i] - values[i - 1];
116
109
  }
117
- const zigzagEncoded = new BigInt64Array(deltaEncoded.length);
110
+ const zigzagEncoded = new BigUint64Array(deltaEncoded.length);
118
111
  for (let i = 0; i < deltaEncoded.length; i++) {
119
112
  zigzagEncoded[i] = encodeZigZagInt64Value(deltaEncoded[i]);
120
113
  }
@@ -135,7 +128,7 @@ export function encodeInt64RleColumn(runs) {
135
128
  totalValues += runLength;
136
129
  }
137
130
  const rleValues = [...runLengths, ...values];
138
- const encodedData = encodeVarintInt64(new BigInt64Array(rleValues));
131
+ const encodedData = encodeVarintInt64(new BigUint64Array(rleValues));
139
132
  const streamMetadata = createRleMetadata(LogicalLevelTechnique.RLE, LogicalLevelTechnique.NONE, runs.length, totalValues);
140
133
  return buildEncodedStream(streamMetadata, encodedData);
141
134
  }
@@ -152,7 +145,7 @@ export function encodeInt64DeltaRleColumn(runs) {
152
145
  totalValues += runLength;
153
146
  }
154
147
  const rleValues = [...runLengths, ...values];
155
- const encodedData = encodeVarintInt64(new BigInt64Array(rleValues));
148
+ const encodedData = encodeVarintInt64(new BigUint64Array(rleValues));
156
149
  const streamMetadata = createRleMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.RLE, runs.length, totalValues);
157
150
  return buildEncodedStream(streamMetadata, encodedData);
158
151
  }
@@ -161,7 +154,7 @@ export function encodeInt64DeltaRleColumn(runs) {
161
154
  */
162
155
  export function encodeInt64NullableColumn(values) {
163
156
  const nonNullValues = values.filter((v) => v !== null);
164
- const zigzagEncoded = new BigInt64Array(Array.from(nonNullValues, (val) => encodeZigZagInt64Value(val)));
157
+ const zigzagEncoded = new BigUint64Array(Array.from(nonNullValues, (val) => encodeZigZagInt64Value(val)));
165
158
  const encodedData = encodeVarintInt64(zigzagEncoded);
166
159
  const dataStreamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, nonNullValues.length);
167
160
  const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);
@@ -175,7 +168,7 @@ export function encodeInt64NullableColumn(values) {
175
168
  * Encodes UINT_64 values (no zigzag encoding)
176
169
  */
177
170
  export function encodeUint64Column(values) {
178
- const encodedData = encodeVarintInt64(new BigInt64Array(values));
171
+ const encodedData = encodeVarintInt64(values);
179
172
  const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);
180
173
  return buildEncodedStream(streamMetadata, encodedData);
181
174
  }
@@ -184,7 +177,7 @@ export function encodeUint64Column(values) {
184
177
  */
185
178
  export function encodeUint64NullableColumn(values) {
186
179
  const nonNullValues = values.filter((v) => v !== null);
187
- const encodedData = encodeVarintInt64(new BigInt64Array(nonNullValues));
180
+ const encodedData = encodeVarintInt64(new BigUint64Array(nonNullValues));
188
181
  const dataStreamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, nonNullValues.length);
189
182
  const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);
190
183
  const nullabilityValues = values.map((v) => v !== null);
@@ -228,7 +221,7 @@ export function encodeDoubleColumn(values) {
228
221
  */
229
222
  export function encodeDoubleNullableColumn(values) {
230
223
  const nonNullValues = values.filter((v) => v !== null);
231
- const encodedData = encodeDoubleLE(new Float32Array(nonNullValues));
224
+ const encodedData = encodeDoubleLE(new Float64Array(nonNullValues));
232
225
  const dataStreamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, nonNullValues.length);
233
226
  const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);
234
227
  const nullabilityValues = values.map((v) => v !== null);
@@ -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 BigInt64Array(Array.from(values, (val) => encodeZigZagInt64Value(val)));\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with DELTA encoding\n */\nexport function encodeInt64DeltaColumn(values: BigInt64Array): Uint8Array {\n const deltaEncoded = new BigInt64Array(values.length);\n deltaEncoded[0] = values[0];\n for (let i = 1; i < values.length; i++) {\n deltaEncoded[i] = values[i] - values[i - 1];\n }\n\n const zigzagEncoded = new BigInt64Array(deltaEncoded.length);\n for (let i = 0; i < deltaEncoded.length; i++) {\n zigzagEncoded[i] = encodeZigZagInt64Value(deltaEncoded[i]);\n }\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.DELTA, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with RLE encoding\n */\nexport function encodeInt64RleColumn(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt64(new BigInt64Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.RLE,\n LogicalLevelTechnique.NONE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes INT_64 values with DELTA+RLE encoding\n */\nexport function encodeInt64DeltaRleColumn(runs: Array<[number, bigint]>): Uint8Array {\n const runLengths: bigint[] = [];\n const values: bigint[] = [];\n let totalValues = 0;\n\n for (const [runLength, value] of runs) {\n runLengths.push(BigInt(runLength));\n values.push(encodeZigZagInt64Value(value));\n totalValues += runLength;\n }\n\n const rleValues = [...runLengths, ...values];\n const encodedData = encodeVarintInt64(new BigInt64Array(rleValues));\n const streamMetadata = createRleMetadata(\n LogicalLevelTechnique.DELTA,\n LogicalLevelTechnique.RLE,\n runs.length,\n totalValues,\n );\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable INT_64 values\n */\nexport function encodeInt64NullableColumn(values: (bigint | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is bigint => v !== null);\n const zigzagEncoded = new BigInt64Array(Array.from(nonNullValues, (val) => encodeZigZagInt64Value(val)));\n const encodedData = encodeVarintInt64(zigzagEncoded);\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes UINT_64 values (no zigzag encoding)\n */\nexport function encodeUint64Column(values: BigUint64Array): Uint8Array {\n const encodedData = encodeVarintInt64(new BigInt64Array(values));\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable UINT_64 values\n */\nexport function encodeUint64NullableColumn(values: (bigint | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is bigint => v !== null);\n const encodedData = encodeVarintInt64(new BigInt64Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes FLOAT values\n */\nexport function encodeFloatColumn(values: Float32Array): Uint8Array {\n const encodedData = encodeFloatsLE(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable FLOAT values\n */\nexport function encodeFloatNullableColumn(values: (number | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is number => v !== null);\n const encodedData = encodeFloatsLE(new Float32Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes DOUBLE values\n */\nexport function encodeDoubleColumn(values: Float32Array): Uint8Array {\n const encodedData = encodeDoubleLE(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable DOUBLE values\n */\nexport function encodeDoubleNullableColumn(values: (number | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is number => v !== null);\n const encodedData = encodeDoubleLE(new Float32Array(nonNullValues));\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\n/**\n * Encodes BOOLEAN values\n */\nexport function encodeBooleanColumn(values: boolean[]): Uint8Array {\n const encodedData = encodeBooleanRle(values);\n const streamMetadata = createStreamMetadata(LogicalLevelTechnique.NONE, LogicalLevelTechnique.NONE, values.length);\n return buildEncodedStream(streamMetadata, encodedData);\n}\n\n/**\n * Encodes nullable BOOLEAN values\n */\nexport function encodeBooleanNullableColumn(values: (boolean | null)[]): Uint8Array {\n const nonNullValues = values.filter((v): v is boolean => v !== null);\n const encodedData = encodeBooleanRle(nonNullValues);\n const dataStreamMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nonNullValues.length,\n );\n const dataStream = buildEncodedStream(dataStreamMetadata, encodedData);\n\n const nullabilityValues = values.map((v) => v !== null);\n const nullabilityEncoded = encodeBooleanRle(nullabilityValues);\n const nullabilityMetadata = createStreamMetadata(\n LogicalLevelTechnique.NONE,\n LogicalLevelTechnique.NONE,\n nullabilityValues.length,\n );\n const nullabilityStream = buildEncodedStream(nullabilityMetadata, nullabilityEncoded);\n\n return concatenateBuffers(nullabilityStream, dataStream);\n}\n\nfunction createStreamMetadata(\n logicalTechnique1: LogicalLevelTechnique,\n logicalTechnique2: LogicalLevelTechnique = LogicalLevelTechnique.NONE,\n numValues: number = 3,\n): StreamMetadata {\n return {\n physicalStreamType: PhysicalStreamType.DATA,\n logicalStreamType: new LogicalStreamType(DictionaryType.NONE),\n logicalLevelTechnique1: logicalTechnique1,\n logicalLevelTechnique2: logicalTechnique2,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues,\n byteLength: 10,\n decompressedCount: numValues,\n };\n}\n\nfunction createRleMetadata(\n logicalTechnique1: LogicalLevelTechnique,\n logicalTechnique2: LogicalLevelTechnique,\n runs: number,\n numRleValues: number,\n): RleEncodedStreamMetadata {\n return {\n physicalStreamType: PhysicalStreamType.DATA,\n logicalStreamType: new LogicalStreamType(DictionaryType.NONE),\n logicalLevelTechnique1: logicalTechnique1,\n logicalLevelTechnique2: logicalTechnique2,\n physicalLevelTechnique: PhysicalLevelTechnique.VARINT,\n numValues: runs * 2,\n byteLength: 10,\n decompressedCount: numRleValues,\n runs,\n numRleValues,\n };\n}\n\nfunction buildEncodedStream(\n streamMetadata: StreamMetadata | RleEncodedStreamMetadata,\n encodedData: Uint8Array,\n): Uint8Array {\n const updatedMetadata = {\n ...streamMetadata,\n byteLength: encodedData.length,\n };\n\n const metadataBuffer = encodeStreamMetadata(updatedMetadata);\n const result = new Uint8Array(metadataBuffer.length + encodedData.length);\n result.set(metadataBuffer, 0);\n result.set(encodedData, metadataBuffer.length);\n\n return result;\n}\n\nfunction encodeStreamMetadata(metadata: StreamMetadata | RleEncodedStreamMetadata): Uint8Array {\n const buffer = new Uint8Array(100);\n let writeOffset = 0;\n\n // Byte 1: Stream type\n const physicalTypeIndex = Object.values(PhysicalStreamType).indexOf(metadata.physicalStreamType);\n const lowerNibble = 0; // For DATA stream with NONE dictionary type\n buffer[writeOffset++] = (physicalTypeIndex << 4) | lowerNibble;\n\n // Byte 2: Encoding techniques\n const llt1Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique1);\n const llt2Index = Object.values(LogicalLevelTechnique).indexOf(metadata.logicalLevelTechnique2);\n const pltIndex = Object.values(PhysicalLevelTechnique).indexOf(metadata.physicalLevelTechnique);\n buffer[writeOffset++] = (llt1Index << 5) | (llt2Index << 2) | pltIndex;\n\n // Variable-length fields\n const offset = new IntWrapper(writeOffset);\n encodeVarintInt32Value(metadata.numValues, buffer, offset);\n encodeVarintInt32Value(metadata.byteLength, buffer, offset);\n\n // RLE-specific fields\n if (isRleMetadata(metadata)) {\n encodeVarintInt32Value(metadata.runs, buffer, offset);\n encodeVarintInt32Value(metadata.numRleValues, buffer, offset);\n }\n\n return buffer.slice(0, offset.get());\n}\n\nfunction isRleMetadata(metadata: StreamMetadata | RleEncodedStreamMetadata): metadata is RleEncodedStreamMetadata {\n return \"runs\" in metadata && \"numRleValues\" in metadata;\n}\n\nfunction concatenateBuffers(...buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((sum, buf) => sum + buf.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n\n for (const buffer of buffers) {\n result.set(buffer, offset);\n offset += buffer.length;\n }\n\n return result;\n}\n"]}
1
+ {"version":3,"file":"propertyEncoder.js","sourceRoot":"","sources":["../../src/encoding/propertyEncoder.ts"],"names":[],"mappings":"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","sourcesContent":["import { LogicalLevelTechnique } from \"../metadata/tile/logicalLevelTechnique\";\nimport { PhysicalLevelTechnique } from \"../metadata/tile/physicalLevelTechnique\";\nimport { PhysicalStreamType } from \"../metadata/tile/physicalStreamType\";\nimport { 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"]}