@maplibre/mlt 1.1.0 → 1.1.1

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 (115) hide show
  1. package/LICENSE.txt +231 -0
  2. package/dist/decoding/decodingUtils.js.map +1 -1
  3. package/dist/decoding/decodingUtils.spec.js +2 -2
  4. package/dist/decoding/decodingUtils.spec.js.map +1 -1
  5. package/dist/decoding/fsstDecoder.js.map +1 -1
  6. package/dist/decoding/fsstDecoder.spec.js +14 -10
  7. package/dist/decoding/fsstDecoder.spec.js.map +1 -1
  8. package/dist/decoding/geometryDecoder.js +32 -192
  9. package/dist/decoding/geometryDecoder.js.map +1 -1
  10. package/dist/decoding/geometryDecoder.spec.js.map +1 -1
  11. package/dist/decoding/geometryScaling.js.map +1 -1
  12. package/dist/decoding/intWrapper.js.map +1 -1
  13. package/dist/decoding/integerDecodingUtils.js.map +1 -1
  14. package/dist/decoding/integerDecodingUtils.spec.js.map +1 -1
  15. package/dist/decoding/integerStreamDecoder.d.ts +12 -21
  16. package/dist/decoding/integerStreamDecoder.js +234 -237
  17. package/dist/decoding/integerStreamDecoder.js.map +1 -1
  18. package/dist/decoding/integerStreamDecoder.spec.js +55 -35
  19. package/dist/decoding/integerStreamDecoder.spec.js.map +1 -1
  20. package/dist/decoding/propertyDecoder.js +11 -11
  21. package/dist/decoding/propertyDecoder.js.map +1 -1
  22. package/dist/decoding/propertyDecoder.spec.js +157 -197
  23. package/dist/decoding/propertyDecoder.spec.js.map +1 -1
  24. package/dist/decoding/stringDecoder.js +14 -13
  25. package/dist/decoding/stringDecoder.js.map +1 -1
  26. package/dist/decoding/stringDecoder.spec.js +56 -57
  27. package/dist/decoding/stringDecoder.spec.js.map +1 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/metadata/tile/dictionaryType.js.map +1 -1
  30. package/dist/metadata/tile/lengthType.js.map +1 -1
  31. package/dist/metadata/tile/logicalLevelTechnique.js.map +1 -1
  32. package/dist/metadata/tile/logicalStreamType.js.map +1 -1
  33. package/dist/metadata/tile/mortonEncodedStreamMetadata.js.map +1 -1
  34. package/dist/metadata/tile/offsetType.js.map +1 -1
  35. package/dist/metadata/tile/physicalLevelTechnique.js.map +1 -1
  36. package/dist/metadata/tile/physicalStreamType.js.map +1 -1
  37. package/dist/metadata/tile/rleEncodedStreamMetadata.js.map +1 -1
  38. package/dist/metadata/tile/scalarType.js.map +1 -1
  39. package/dist/metadata/tile/streamMetadata.js.map +1 -1
  40. package/dist/metadata/tile/streamMetadataDecoder.js.map +1 -1
  41. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -1
  42. package/dist/metadata/tileset/tilesetMetadata.js.map +1 -1
  43. package/dist/metadata/tileset/typeMap.js.map +1 -1
  44. package/dist/mltDecoder.js +9 -9
  45. package/dist/mltDecoder.js.map +1 -1
  46. package/dist/mltDecoder.spec.js.map +1 -1
  47. package/dist/mltMetadata.js.map +1 -1
  48. package/dist/vector/constant/intConstVector.js.map +1 -1
  49. package/dist/vector/constant/longConstVector.js.map +1 -1
  50. package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
  51. package/dist/vector/featureTable.js.map +1 -1
  52. package/dist/vector/filter/flatSelectionVector.d.ts +27 -0
  53. package/dist/vector/filter/flatSelectionVector.js +54 -0
  54. package/dist/vector/filter/flatSelectionVector.js.map +1 -0
  55. package/dist/vector/filter/flatSelectionVector.spec.d.ts +1 -0
  56. package/dist/vector/filter/flatSelectionVector.spec.js +51 -0
  57. package/dist/vector/filter/flatSelectionVector.spec.js.map +1 -0
  58. package/dist/vector/filter/selectionVector.d.ts +8 -0
  59. package/dist/vector/filter/selectionVector.js +2 -0
  60. package/dist/vector/filter/selectionVector.js.map +1 -0
  61. package/dist/vector/filter/selectionVectorUtil.spec.d.ts +1 -0
  62. package/dist/vector/filter/selectionVectorUtil.spec.js +154 -0
  63. package/dist/vector/filter/selectionVectorUtil.spec.js.map +1 -0
  64. package/dist/vector/filter/selectionVectorUtils.d.ts +16 -0
  65. package/dist/vector/filter/selectionVectorUtils.js +37 -0
  66. package/dist/vector/filter/selectionVectorUtils.js.map +1 -0
  67. package/dist/vector/filter/sequenceSelectionVector.d.ts +26 -0
  68. package/dist/vector/filter/sequenceSelectionVector.js +67 -0
  69. package/dist/vector/filter/sequenceSelectionVector.js.map +1 -0
  70. package/dist/vector/filter/sequenceSelectionVector.spec.d.ts +1 -0
  71. package/dist/vector/filter/sequenceSelectionVector.spec.js +115 -0
  72. package/dist/vector/filter/sequenceSelectionVector.spec.js.map +1 -0
  73. package/dist/vector/fixedSizeVector.js.map +1 -1
  74. package/dist/vector/flat/bitVector.js.map +1 -1
  75. package/dist/vector/flat/booleanFlatVector.js.map +1 -1
  76. package/dist/vector/flat/doubleFlatVector.js.map +1 -1
  77. package/dist/vector/flat/floatFlatVector.js.map +1 -1
  78. package/dist/vector/flat/floatFlatVector.spec.js.map +1 -1
  79. package/dist/vector/flat/intFlatVector.js.map +1 -1
  80. package/dist/vector/flat/intFlatVector.spec.js.map +1 -1
  81. package/dist/vector/flat/longFlatVector.js.map +1 -1
  82. package/dist/vector/flat/longFlatVector.spec.js.map +1 -1
  83. package/dist/vector/flat/stringFlatVector.js.map +1 -1
  84. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
  85. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js.map +1 -1
  86. package/dist/vector/geometry/constGeometryVector.d.ts +2 -2
  87. package/dist/vector/geometry/constGeometryVector.js +6 -6
  88. package/dist/vector/geometry/constGeometryVector.js.map +1 -1
  89. package/dist/vector/geometry/constGpuVector.d.ts +1 -1
  90. package/dist/vector/geometry/constGpuVector.js +3 -24
  91. package/dist/vector/geometry/constGpuVector.js.map +1 -1
  92. package/dist/vector/geometry/flatGeometryVector.d.ts +2 -2
  93. package/dist/vector/geometry/flatGeometryVector.js +7 -7
  94. package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
  95. package/dist/vector/geometry/flatGpuVector.d.ts +1 -1
  96. package/dist/vector/geometry/flatGpuVector.js +3 -22
  97. package/dist/vector/geometry/flatGpuVector.js.map +1 -1
  98. package/dist/vector/geometry/geometryType.js.map +1 -1
  99. package/dist/vector/geometry/geometryVector.js.map +1 -1
  100. package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
  101. package/dist/vector/geometry/gpuVector.js.map +1 -1
  102. package/dist/vector/geometry/spaceFillingCurve.js.map +1 -1
  103. package/dist/vector/geometry/topologyVector.js.map +1 -1
  104. package/dist/vector/geometry/vertexBufferType.js.map +1 -1
  105. package/dist/vector/geometry/zOrderCurve.js.map +1 -1
  106. package/dist/vector/geometry/zOrderCurve.spec.js.map +1 -1
  107. package/dist/vector/intVector.js.map +1 -1
  108. package/dist/vector/sequence/intSequenceVector.js.map +1 -1
  109. package/dist/vector/sequence/longSequenceVector.js.map +1 -1
  110. package/dist/vector/sequence/longSequenceVektor.spec.js.map +1 -1
  111. package/dist/vector/sequence/sequenceVector.js.map +1 -1
  112. package/dist/vector/variableSizeVector.js.map +1 -1
  113. package/dist/vector/vector.js.map +1 -1
  114. package/dist/vector/vectorType.js.map +1 -1
  115. package/package.json +5 -5
@@ -1,6 +1,6 @@
1
- import { afterEach, describe, expect, it, vi } from 'vitest';
1
+ import { afterEach, describe, expect, it, vi } from "vitest";
2
2
  import { StreamMetadataDecoder } from "../metadata/tile/streamMetadataDecoder";
3
- import IntegerStreamDecoder from "./integerStreamDecoder";
3
+ import * as IntegerStreamDecoder from "./integerStreamDecoder";
4
4
  import { decodePropertyColumn } from "./propertyDecoder";
5
5
  import { ScalarType } from "../metadata/tile/scalarType";
6
6
  import IntWrapper from "./intWrapper";
@@ -12,7 +12,7 @@ import { IntConstVector } from "../vector/constant/intConstVector";
12
12
  import { LongConstVector } from "../vector/constant/longConstVector";
13
13
  import { VectorType } from "../vector/vectorType";
14
14
  import { StringDecoder } from "./stringDecoder";
15
- import * as decodingUtils from './decodingUtils';
15
+ import * as decodingUtils from "./decodingUtils";
16
16
  import { BooleanFlatVector } from "../vector/flat/booleanFlatVector";
17
17
  import { FloatFlatVector } from "../vector/flat/floatFlatVector";
18
18
  import { DoubleFlatVector } from "../vector/flat/doubleFlatVector";
@@ -21,22 +21,22 @@ const TEST_DATA = {
21
21
  BYTE_LENGTH: 12,
22
22
  NUM_VALUES: 3,
23
23
  NULLABILITY_BYTE_LENGTH: 1,
24
- BUFFER_SIZE: 100
24
+ BUFFER_SIZE: 100,
25
25
  };
26
26
  // Helper: Create column with specific configuration
27
27
  function createColumn(scalarType, nullable = false) {
28
28
  return {
29
- name: 'age',
29
+ name: "age",
30
30
  nullable,
31
31
  columnScope: null,
32
- type: 'scalarType',
32
+ type: "scalarType",
33
33
  scalarType: {
34
34
  longID: false,
35
35
  physicalType: scalarType,
36
36
  logicalType: null,
37
- type: 'physicalType'
37
+ type: "physicalType",
38
38
  },
39
- complexType: null
39
+ complexType: null,
40
40
  };
41
41
  }
42
42
  // Helper: Setup stream metadata mock
@@ -62,81 +62,65 @@ function mockRleStreamMetadata(byteLength = TEST_DATA.BYTE_LENGTH, numValues = T
62
62
  }
63
63
  // Helper: Mock integer decoders (INT_32 or INT_64)
64
64
  function mockIntegerDecoder(scalarType) {
65
- vi.spyOn(IntegerStreamDecoder, 'getVectorType')
66
- .mockReturnValue(VectorType.FLAT);
65
+ vi.spyOn(IntegerStreamDecoder, "getVectorType").mockReturnValue(VectorType.FLAT);
67
66
  if (scalarType === ScalarType.INT_64 || scalarType === ScalarType.UINT_64) {
68
- vi.spyOn(IntegerStreamDecoder, 'decodeLongStream')
69
- .mockReturnValue(new BigInt64Array([100n, 200n, 300n]));
67
+ vi.spyOn(IntegerStreamDecoder, "decodeLongStream").mockReturnValue(new BigInt64Array([100n, 200n, 300n]));
70
68
  }
71
69
  else {
72
- vi.spyOn(IntegerStreamDecoder, 'decodeIntStream')
73
- .mockReturnValue(new Int32Array([100, 200, 300]));
70
+ vi.spyOn(IntegerStreamDecoder, "decodeIntStream").mockReturnValue(new Int32Array([100, 200, 300]));
74
71
  }
75
72
  }
76
73
  // Helper: Mock integer sequence decoders
77
74
  function mockIntegerSequenceDecoder(scalarType) {
78
- vi.spyOn(IntegerStreamDecoder, 'getVectorType')
79
- .mockReturnValue(VectorType.SEQUENCE);
75
+ vi.spyOn(IntegerStreamDecoder, "getVectorType").mockReturnValue(VectorType.SEQUENCE);
80
76
  if (scalarType === ScalarType.INT_64 || scalarType === ScalarType.UINT_64) {
81
- vi.spyOn(IntegerStreamDecoder, 'decodeSequenceLongStream')
82
- .mockReturnValue([10n, 20n]);
77
+ vi.spyOn(IntegerStreamDecoder, "decodeSequenceLongStream").mockReturnValue([10n, 20n]);
83
78
  }
84
79
  else {
85
- vi.spyOn(IntegerStreamDecoder, 'decodeSequenceIntStream')
86
- .mockReturnValue([10, 20]);
80
+ vi.spyOn(IntegerStreamDecoder, "decodeSequenceIntStream").mockReturnValue([10, 20]);
87
81
  }
88
82
  }
89
83
  // Helper: Mock integer const decoders
90
84
  function mockIntegerConstDecoder(scalarType) {
91
- vi.spyOn(IntegerStreamDecoder, 'getVectorType')
92
- .mockReturnValue(VectorType.CONST);
85
+ vi.spyOn(IntegerStreamDecoder, "getVectorType").mockReturnValue(VectorType.CONST);
93
86
  if (scalarType === ScalarType.INT_64 || scalarType === ScalarType.UINT_64) {
94
- vi.spyOn(IntegerStreamDecoder, 'decodeConstLongStream')
95
- .mockReturnValue(42n);
87
+ vi.spyOn(IntegerStreamDecoder, "decodeConstLongStream").mockReturnValue(42n);
96
88
  }
97
89
  else {
98
- vi.spyOn(IntegerStreamDecoder, 'decodeConstIntStream')
99
- .mockReturnValue(42);
90
+ vi.spyOn(IntegerStreamDecoder, "decodeConstIntStream").mockReturnValue(42);
100
91
  }
101
92
  }
102
93
  // Helper: Mock float decoders (FLOAT or DOUBLE)
103
94
  function mockFloatDecoder(scalarType) {
104
95
  if (scalarType === ScalarType.FLOAT) {
105
- vi.spyOn(decodingUtils, 'decodeFloatsLE')
106
- .mockReturnValue(new Float32Array([100.5, 200.5, 300.5]));
96
+ vi.spyOn(decodingUtils, "decodeFloatsLE").mockReturnValue(new Float32Array([100.5, 200.5, 300.5]));
107
97
  }
108
98
  else if (scalarType === ScalarType.DOUBLE) {
109
- vi.spyOn(decodingUtils, 'decodeDoublesLE')
110
- .mockReturnValue(new Float64Array([100.5, 200.5, 300.5]));
99
+ vi.spyOn(decodingUtils, "decodeDoublesLE").mockReturnValue(new Float64Array([100.5, 200.5, 300.5]));
111
100
  }
112
101
  }
113
102
  // Helper: Mock nullable float decoders
114
103
  function mockNullableFloatDecoder(scalarType) {
115
104
  if (scalarType === ScalarType.FLOAT) {
116
- vi.spyOn(decodingUtils, 'decodeNullableFloatsLE')
117
- .mockReturnValue(new Float32Array([100.5, 200.5, 300.5]));
105
+ vi.spyOn(decodingUtils, "decodeNullableFloatsLE").mockReturnValue(new Float32Array([100.5, 200.5, 300.5]));
118
106
  }
119
107
  else if (scalarType === ScalarType.DOUBLE) {
120
- vi.spyOn(decodingUtils, 'decodeNullableDoublesLE')
121
- .mockReturnValue(new Float64Array([100.5, 200.5, 300.5]));
108
+ vi.spyOn(decodingUtils, "decodeNullableDoublesLE").mockReturnValue(new Float64Array([100.5, 200.5, 300.5]));
122
109
  }
123
110
  }
124
111
  // Helper: Mock nullable integer decoders
125
112
  function mockNullableIntegerDecoder(scalarType) {
126
- vi.spyOn(IntegerStreamDecoder, 'getVectorType')
127
- .mockReturnValue(VectorType.FLAT);
113
+ vi.spyOn(IntegerStreamDecoder, "getVectorType").mockReturnValue(VectorType.FLAT);
128
114
  if (scalarType === ScalarType.INT_64 || scalarType === ScalarType.UINT_64) {
129
- vi.spyOn(IntegerStreamDecoder, 'decodeNullableLongStream')
130
- .mockReturnValue(new BigInt64Array([100n, 200n, 300n]));
115
+ vi.spyOn(IntegerStreamDecoder, "decodeNullableLongStream").mockReturnValue(new BigInt64Array([100n, 200n, 300n]));
131
116
  }
132
117
  else {
133
- vi.spyOn(IntegerStreamDecoder, 'decodeNullableIntStream')
134
- .mockReturnValue(new Int32Array([100, 200, 300]));
118
+ vi.spyOn(IntegerStreamDecoder, "decodeNullableIntStream").mockReturnValue(new Int32Array([100, 200, 300]));
135
119
  }
136
120
  }
137
121
  // Helper: Setup nullable column with separate nullability stream
138
122
  function setupNullableStreamMocks() {
139
- const metadataSpy = vi.spyOn(StreamMetadataDecoder, 'decode');
123
+ const metadataSpy = vi.spyOn(StreamMetadataDecoder, "decode");
140
124
  // First call: nullability stream
141
125
  metadataSpy.mockReturnValueOnce({
142
126
  byteLength: TEST_DATA.NULLABILITY_BYTE_LENGTH,
@@ -148,29 +132,28 @@ function setupNullableStreamMocks() {
148
132
  // Subsequent calls: data stream
149
133
  metadataSpy.mockReturnValue(mockStreamMetadata());
150
134
  // Mock the nullability bitmap decoding
151
- vi.spyOn(decodingUtils, 'decodeBooleanRle')
152
- .mockReturnValue(new Uint8Array([0b00000111]));
135
+ vi.spyOn(decodingUtils, "decodeBooleanRle").mockReturnValue(new Uint8Array([0b00000111]));
153
136
  }
154
- describe('decodePropertyColumn', () => {
137
+ describe("decodePropertyColumn", () => {
155
138
  afterEach(() => vi.restoreAllMocks());
156
- describe('Number Columns - Non-Nullable - Signed Types', () => {
139
+ describe("Number Columns - Non-Nullable - Signed Types", () => {
157
140
  const numberTypes = [
158
141
  {
159
142
  scalarType: ScalarType.INT_32,
160
143
  vectorClass: IntFlatVector,
161
144
  mockFn: mockIntegerDecoder,
162
- testName: 'INT_32'
145
+ testName: "INT_32",
163
146
  },
164
147
  {
165
148
  scalarType: ScalarType.INT_64,
166
149
  vectorClass: LongFlatVector,
167
150
  mockFn: mockIntegerDecoder,
168
- testName: 'INT_64'
169
- }
151
+ testName: "INT_64",
152
+ },
170
153
  ];
171
- it.each(numberTypes)('should decode $testName column', ({ scalarType, vectorClass, mockFn }) => {
154
+ it.each(numberTypes)("should decode $testName column", ({ scalarType, vectorClass, mockFn }) => {
172
155
  // Arrange
173
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
156
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
174
157
  mockFn(scalarType);
175
158
  const column = createColumn(scalarType, false);
176
159
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
@@ -179,28 +162,28 @@ describe('decodePropertyColumn', () => {
179
162
  const result = decodePropertyColumn(data, offset, column, 1, TEST_DATA.NUM_VALUES);
180
163
  // Assert
181
164
  expect(result).toBeInstanceOf(vectorClass);
182
- expect(result._name).toBe('age');
165
+ expect(result._name).toBe("age");
183
166
  expect(result.dataBuffer).toHaveLength(TEST_DATA.NUM_VALUES);
184
167
  });
185
168
  });
186
- describe('Number Columns - Non-Nullable - Unsigned Types', () => {
169
+ describe("Number Columns - Non-Nullable - Unsigned Types", () => {
187
170
  const numberTypes = [
188
171
  {
189
172
  scalarType: ScalarType.UINT_32,
190
173
  vectorClass: IntFlatVector,
191
174
  mockFn: mockIntegerDecoder,
192
- testName: 'UINT_32'
175
+ testName: "UINT_32",
193
176
  },
194
177
  {
195
178
  scalarType: ScalarType.UINT_64,
196
179
  vectorClass: LongFlatVector,
197
180
  mockFn: mockIntegerDecoder,
198
- testName: 'UINT_64'
199
- }
181
+ testName: "UINT_64",
182
+ },
200
183
  ];
201
- it.each(numberTypes)('should decode $testName column', ({ scalarType, vectorClass, mockFn }) => {
184
+ it.each(numberTypes)("should decode $testName column", ({ scalarType, vectorClass, mockFn }) => {
202
185
  // Arrange
203
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
186
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
204
187
  mockFn(scalarType);
205
188
  const column = createColumn(scalarType, false);
206
189
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
@@ -209,16 +192,16 @@ describe('decodePropertyColumn', () => {
209
192
  const result = decodePropertyColumn(data, offset, column, 1, TEST_DATA.NUM_VALUES);
210
193
  // Assert
211
194
  expect(result).toBeInstanceOf(vectorClass);
212
- expect(result._name).toBe('age');
195
+ expect(result._name).toBe("age");
213
196
  expect(result.dataBuffer).toHaveLength(TEST_DATA.NUM_VALUES);
214
197
  });
215
198
  });
216
- describe('Number Columns - Nullable - Signed Types', () => {
199
+ describe("Number Columns - Nullable - Signed Types", () => {
217
200
  const numberTypes = [
218
- { scalarType: ScalarType.INT_32, mockFn: mockNullableIntegerDecoder, testName: 'INT_32' },
219
- { scalarType: ScalarType.INT_64, mockFn: mockNullableIntegerDecoder, testName: 'INT_64' }
201
+ { scalarType: ScalarType.INT_32, mockFn: mockNullableIntegerDecoder, testName: "INT_32" },
202
+ { scalarType: ScalarType.INT_64, mockFn: mockNullableIntegerDecoder, testName: "INT_64" },
220
203
  ];
221
- it.each(numberTypes)('should decode nullable $testName column with null mask', ({ scalarType, mockFn }) => {
204
+ it.each(numberTypes)("should decode nullable $testName column with null mask", ({ scalarType, mockFn }) => {
222
205
  // Arrange
223
206
  setupNullableStreamMocks();
224
207
  mockFn(scalarType);
@@ -229,15 +212,15 @@ describe('decodePropertyColumn', () => {
229
212
  const result = decodePropertyColumn(data, offset, column, 2, TEST_DATA.NUM_VALUES);
230
213
  // Assert
231
214
  expect(result).toBeDefined();
232
- expect(result._name).toBe('age');
215
+ expect(result._name).toBe("age");
233
216
  });
234
217
  });
235
- describe('Number Columns - Nullable - Unsigned Types', () => {
218
+ describe("Number Columns - Nullable - Unsigned Types", () => {
236
219
  const numberTypes = [
237
- { scalarType: ScalarType.UINT_32, mockFn: mockNullableIntegerDecoder, testName: 'UINT_32' },
238
- { scalarType: ScalarType.UINT_64, mockFn: mockNullableIntegerDecoder, testName: 'UINT_64' }
220
+ { scalarType: ScalarType.UINT_32, mockFn: mockNullableIntegerDecoder, testName: "UINT_32" },
221
+ { scalarType: ScalarType.UINT_64, mockFn: mockNullableIntegerDecoder, testName: "UINT_64" },
239
222
  ];
240
- it.each(numberTypes)('should decode nullable $testName column with null mask', ({ scalarType, mockFn }) => {
223
+ it.each(numberTypes)("should decode nullable $testName column with null mask", ({ scalarType, mockFn }) => {
241
224
  // Arrange
242
225
  setupNullableStreamMocks();
243
226
  mockFn(scalarType);
@@ -248,27 +231,27 @@ describe('decodePropertyColumn', () => {
248
231
  const result = decodePropertyColumn(data, offset, column, 2, TEST_DATA.NUM_VALUES);
249
232
  // Assert
250
233
  expect(result).toBeDefined();
251
- expect(result._name).toBe('age');
234
+ expect(result._name).toBe("age");
252
235
  });
253
236
  });
254
- describe('Integer Vector Encoding Types - SEQUENCE', () => {
237
+ describe("Integer Vector Encoding Types - SEQUENCE", () => {
255
238
  const numberTypes = [
256
239
  {
257
240
  scalarType: ScalarType.INT_32,
258
241
  vectorClass: IntSequenceVector,
259
242
  mockFn: mockIntegerSequenceDecoder,
260
- testName: 'INT_32'
243
+ testName: "INT_32",
261
244
  },
262
245
  {
263
246
  scalarType: ScalarType.INT_64,
264
247
  vectorClass: LongSequenceVector,
265
248
  mockFn: mockIntegerSequenceDecoder,
266
- testName: 'INT_64'
267
- }
249
+ testName: "INT_64",
250
+ },
268
251
  ];
269
- it.each(numberTypes)('should decode $testName with SEQUENCE encoding', ({ scalarType, vectorClass, mockFn }) => {
252
+ it.each(numberTypes)("should decode $testName with SEQUENCE encoding", ({ scalarType, vectorClass, mockFn }) => {
270
253
  // Arrange
271
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockRleStreamMetadata());
254
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockRleStreamMetadata());
272
255
  mockFn(scalarType);
273
256
  const column = createColumn(scalarType, false);
274
257
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
@@ -277,27 +260,27 @@ describe('decodePropertyColumn', () => {
277
260
  const result = decodePropertyColumn(data, offset, column, 1, TEST_DATA.NUM_VALUES);
278
261
  // Assert
279
262
  expect(result).toBeInstanceOf(vectorClass);
280
- expect(result._name).toBe('age');
263
+ expect(result._name).toBe("age");
281
264
  });
282
265
  });
283
- describe('Integer Vector Encoding Types - CONST', () => {
266
+ describe("Integer Vector Encoding Types - CONST", () => {
284
267
  const numberTypes = [
285
268
  {
286
269
  scalarType: ScalarType.INT_32,
287
270
  vectorClass: IntConstVector,
288
271
  mockFn: mockIntegerConstDecoder,
289
- testName: 'INT_32'
272
+ testName: "INT_32",
290
273
  },
291
274
  {
292
275
  scalarType: ScalarType.INT_64,
293
276
  vectorClass: LongConstVector,
294
277
  mockFn: mockIntegerConstDecoder,
295
- testName: 'INT_64'
296
- }
278
+ testName: "INT_64",
279
+ },
297
280
  ];
298
- it.each(numberTypes)('should decode $testName with CONST encoding', ({ scalarType, vectorClass, mockFn }) => {
281
+ it.each(numberTypes)("should decode $testName with CONST encoding", ({ scalarType, vectorClass, mockFn }) => {
299
282
  // Arrange
300
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
283
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
301
284
  mockFn(scalarType);
302
285
  const column = createColumn(scalarType, false);
303
286
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
@@ -306,27 +289,27 @@ describe('decodePropertyColumn', () => {
306
289
  const result = decodePropertyColumn(data, offset, column, 1, TEST_DATA.NUM_VALUES);
307
290
  // Assert
308
291
  expect(result).toBeInstanceOf(vectorClass);
309
- expect(result._name).toBe('age');
292
+ expect(result._name).toBe("age");
310
293
  });
311
294
  });
312
- describe('Float Columns - Non-Nullable', () => {
295
+ describe("Float Columns - Non-Nullable", () => {
313
296
  const numberTypes = [
314
297
  {
315
298
  scalarType: ScalarType.FLOAT,
316
299
  vectorClass: FloatFlatVector,
317
300
  mockFn: mockFloatDecoder,
318
- testName: 'FLOAT'
301
+ testName: "FLOAT",
319
302
  },
320
303
  {
321
304
  scalarType: ScalarType.DOUBLE,
322
305
  vectorClass: DoubleFlatVector,
323
306
  mockFn: mockFloatDecoder,
324
- testName: 'DOUBLE'
325
- }
307
+ testName: "DOUBLE",
308
+ },
326
309
  ];
327
- it.each(numberTypes)('should decode $testName column', ({ scalarType, vectorClass, mockFn }) => {
310
+ it.each(numberTypes)("should decode $testName column", ({ scalarType, vectorClass, mockFn }) => {
328
311
  // Arrange
329
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
312
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
330
313
  mockFn(scalarType);
331
314
  const column = createColumn(scalarType, false);
332
315
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
@@ -335,26 +318,26 @@ describe('decodePropertyColumn', () => {
335
318
  const result = decodePropertyColumn(data, offset, column, 1, TEST_DATA.NUM_VALUES);
336
319
  // Assert
337
320
  expect(result).toBeInstanceOf(vectorClass);
338
- expect(result._name).toBe('age');
321
+ expect(result._name).toBe("age");
339
322
  expect(result.dataBuffer).toHaveLength(TEST_DATA.NUM_VALUES);
340
323
  });
341
324
  });
342
- describe('Float Columns - Nullable', () => {
325
+ describe("Float Columns - Nullable", () => {
343
326
  const numberTypes = [
344
327
  {
345
328
  scalarType: ScalarType.FLOAT,
346
329
  vectorClass: FloatFlatVector,
347
330
  mockFn: mockNullableFloatDecoder,
348
- testName: 'FLOAT'
331
+ testName: "FLOAT",
349
332
  },
350
333
  {
351
334
  scalarType: ScalarType.DOUBLE,
352
335
  vectorClass: DoubleFlatVector,
353
336
  mockFn: mockNullableFloatDecoder,
354
- testName: 'DOUBLE'
355
- }
337
+ testName: "DOUBLE",
338
+ },
356
339
  ];
357
- it.each(numberTypes)('should decode nullable $testName column with null mask', ({ scalarType, vectorClass, mockFn }) => {
340
+ it.each(numberTypes)("should decode nullable $testName column with null mask", ({ scalarType, vectorClass, mockFn }) => {
358
341
  // Arrange
359
342
  setupNullableStreamMocks();
360
343
  mockFn(scalarType);
@@ -365,15 +348,14 @@ describe('decodePropertyColumn', () => {
365
348
  const result = decodePropertyColumn(data, offset, column, 2, TEST_DATA.NUM_VALUES);
366
349
  // Assert
367
350
  expect(result).toBeInstanceOf(vectorClass);
368
- expect(result._name).toBe('age');
351
+ expect(result._name).toBe("age");
369
352
  });
370
353
  });
371
- describe('Boolean Columns', () => {
372
- it('should decode non-nullable BOOLEAN column', () => {
354
+ describe("Boolean Columns", () => {
355
+ it("should decode non-nullable BOOLEAN column", () => {
373
356
  // Arrange
374
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
375
- vi.spyOn(decodingUtils, 'decodeBooleanRle')
376
- .mockReturnValue(new Uint8Array([0b00000111]));
357
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
358
+ vi.spyOn(decodingUtils, "decodeBooleanRle").mockReturnValue(new Uint8Array([0b00000111]));
377
359
  const column = createColumn(ScalarType.BOOLEAN, false);
378
360
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
379
361
  const offset = new IntWrapper(0);
@@ -381,13 +363,12 @@ describe('decodePropertyColumn', () => {
381
363
  const result = decodePropertyColumn(data, offset, column, 1, TEST_DATA.NUM_VALUES);
382
364
  // Assert
383
365
  expect(result).toBeInstanceOf(BooleanFlatVector);
384
- expect(result._name).toBe('age');
366
+ expect(result._name).toBe("age");
385
367
  });
386
- it('should decode nullable BOOLEAN column with null mask', () => {
368
+ it("should decode nullable BOOLEAN column with null mask", () => {
387
369
  // Arrange
388
370
  setupNullableStreamMocks();
389
- vi.spyOn(decodingUtils, 'decodeNullableBooleanRle')
390
- .mockReturnValue(new Uint8Array([0b00000111]));
371
+ vi.spyOn(decodingUtils, "decodeNullableBooleanRle").mockReturnValue(new Uint8Array([0b00000111]));
391
372
  const column = createColumn(ScalarType.BOOLEAN, true);
392
373
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
393
374
  const offset = new IntWrapper(0);
@@ -395,20 +376,19 @@ describe('decodePropertyColumn', () => {
395
376
  const result = decodePropertyColumn(data, offset, column, 2, TEST_DATA.NUM_VALUES);
396
377
  // Assert
397
378
  expect(result).toBeInstanceOf(BooleanFlatVector);
398
- expect(result._name).toBe('age');
379
+ expect(result._name).toBe("age");
399
380
  });
400
381
  });
401
- describe('String Columns - Nullable', () => {
382
+ describe("String Columns - Nullable", () => {
402
383
  const streamConfigs = [
403
- { totalStreams: 2, description: 'single data stream' },
404
- { totalStreams: 4, description: 'multiple data streams' }
384
+ { totalStreams: 2, description: "single data stream" },
385
+ { totalStreams: 4, description: "multiple data streams" },
405
386
  ];
406
- it.each(streamConfigs)('should decode nullable STRING with $description', ({ totalStreams }) => {
387
+ it.each(streamConfigs)("should decode nullable STRING with $description", ({ totalStreams }) => {
407
388
  // Arrange
408
389
  setupNullableStreamMocks();
409
- const mockStringVector = { name: 'age' };
410
- const stringDecodeSpy = vi.spyOn(StringDecoder, 'decode')
411
- .mockReturnValue(mockStringVector);
390
+ const mockStringVector = { name: "age" };
391
+ const stringDecodeSpy = vi.spyOn(StringDecoder, "decode").mockReturnValue(mockStringVector);
412
392
  const column = createColumn(ScalarType.STRING, true);
413
393
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
414
394
  const offset = new IntWrapper(0);
@@ -418,13 +398,13 @@ describe('decodePropertyColumn', () => {
418
398
  expect(result.name).toBe(mockStringVector.name);
419
399
  });
420
400
  });
421
- describe('Column Filtering', () => {
422
- it('should return null when column NOT in propertyColumnNames filter', () => {
401
+ describe("Column Filtering", () => {
402
+ it("should return null when column NOT in propertyColumnNames filter", () => {
423
403
  // Arrange
424
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
425
- const skipColumnSpy = vi.spyOn(decodingUtils, 'skipColumn');
404
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
405
+ const skipColumnSpy = vi.spyOn(decodingUtils, "skipColumn");
426
406
  const column = createColumn(ScalarType.STRING);
427
- const filterList = new Set(['name', 'value']);
407
+ const filterList = new Set(["name", "value"]);
428
408
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
429
409
  const offset = new IntWrapper(0);
430
410
  // Act
@@ -433,13 +413,12 @@ describe('decodePropertyColumn', () => {
433
413
  expect(result).toBeNull();
434
414
  expect(skipColumnSpy).toHaveBeenCalledWith(1, data, offset);
435
415
  });
436
- it('should decode column when it IS in propertyColumnNames filter', () => {
416
+ it("should decode column when it IS in propertyColumnNames filter", () => {
437
417
  // Arrange
438
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
439
- vi.spyOn(decodingUtils, 'decodeBooleanRle')
440
- .mockReturnValue(new Uint8Array([0b00000111]));
418
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
419
+ vi.spyOn(decodingUtils, "decodeBooleanRle").mockReturnValue(new Uint8Array([0b00000111]));
441
420
  const column = createColumn(ScalarType.BOOLEAN);
442
- const filterList = new Set(['age', 'name']);
421
+ const filterList = new Set(["age", "name"]);
443
422
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
444
423
  const offset = new IntWrapper(0);
445
424
  // Act
@@ -447,11 +426,10 @@ describe('decodePropertyColumn', () => {
447
426
  // Assert
448
427
  expect(result).toBeInstanceOf(BooleanFlatVector);
449
428
  });
450
- it('should ignore filter when propertyColumnNames is undefined', () => {
429
+ it("should ignore filter when propertyColumnNames is undefined", () => {
451
430
  // Arrange
452
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
453
- vi.spyOn(decodingUtils, 'decodeBooleanRle')
454
- .mockReturnValue(new Uint8Array([0b00000111]));
431
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
432
+ vi.spyOn(decodingUtils, "decodeBooleanRle").mockReturnValue(new Uint8Array([0b00000111]));
455
433
  const column = createColumn(ScalarType.BOOLEAN);
456
434
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
457
435
  const offset = new IntWrapper(0);
@@ -460,10 +438,10 @@ describe('decodePropertyColumn', () => {
460
438
  // Assert
461
439
  expect(result).toBeInstanceOf(BooleanFlatVector);
462
440
  });
463
- it('should handle empty filter set', () => {
441
+ it("should handle empty filter set", () => {
464
442
  // Arrange
465
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
466
- const skipColumnSpy = vi.spyOn(decodingUtils, 'skipColumn');
443
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
444
+ const skipColumnSpy = vi.spyOn(decodingUtils, "skipColumn");
467
445
  const column = createColumn(ScalarType.BOOLEAN);
468
446
  const filterList = new Set();
469
447
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
@@ -475,15 +453,12 @@ describe('decodePropertyColumn', () => {
475
453
  expect(skipColumnSpy).toHaveBeenCalled();
476
454
  });
477
455
  });
478
- describe('Edge Cases', () => {
479
- it('should handle single value column', () => {
456
+ describe("Edge Cases", () => {
457
+ it("should handle single value column", () => {
480
458
  // Arrange
481
- vi.spyOn(StreamMetadataDecoder, 'decode')
482
- .mockReturnValue(mockStreamMetadata(12, 1));
483
- vi.spyOn(IntegerStreamDecoder, 'getVectorType')
484
- .mockReturnValue(VectorType.FLAT);
485
- vi.spyOn(IntegerStreamDecoder, 'decodeIntStream')
486
- .mockReturnValue(new Int32Array([42]));
459
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata(12, 1));
460
+ vi.spyOn(IntegerStreamDecoder, "getVectorType").mockReturnValue(VectorType.FLAT);
461
+ vi.spyOn(IntegerStreamDecoder, "decodeIntStream").mockReturnValue(new Int32Array([42]));
487
462
  const column = createColumn(ScalarType.INT_32);
488
463
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
489
464
  const offset = new IntWrapper(0);
@@ -493,19 +468,16 @@ describe('decodePropertyColumn', () => {
493
468
  expect(result).toBeInstanceOf(IntFlatVector);
494
469
  expect(result.dataBuffer).toHaveLength(1);
495
470
  });
496
- it('should handle large column with many values', () => {
471
+ it("should handle large column with many values", () => {
497
472
  // Arrange
498
473
  const largeNumValues = 100000;
499
- vi.spyOn(StreamMetadataDecoder, 'decode')
500
- .mockReturnValue(mockStreamMetadata(400000, largeNumValues));
501
- vi.spyOn(IntegerStreamDecoder, 'getVectorType')
502
- .mockReturnValue(VectorType.FLAT);
474
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata(400000, largeNumValues));
475
+ vi.spyOn(IntegerStreamDecoder, "getVectorType").mockReturnValue(VectorType.FLAT);
503
476
  const largeArray = new Int32Array(largeNumValues);
504
477
  for (let i = 0; i < largeNumValues; i++) {
505
478
  largeArray[i] = i;
506
479
  }
507
- vi.spyOn(IntegerStreamDecoder, 'decodeIntStream')
508
- .mockReturnValue(largeArray);
480
+ vi.spyOn(IntegerStreamDecoder, "decodeIntStream").mockReturnValue(largeArray);
509
481
  const column = createColumn(ScalarType.INT_32);
510
482
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
511
483
  const offset = new IntWrapper(0);
@@ -515,14 +487,11 @@ describe('decodePropertyColumn', () => {
515
487
  expect(result).toBeInstanceOf(IntFlatVector);
516
488
  expect(result.dataBuffer).toHaveLength(largeNumValues);
517
489
  });
518
- it('should handle zero numValues gracefully', () => {
490
+ it("should handle zero numValues gracefully", () => {
519
491
  // Arrange
520
- vi.spyOn(StreamMetadataDecoder, 'decode')
521
- .mockReturnValue({ ...mockStreamMetadata(), numValues: 0 });
522
- vi.spyOn(IntegerStreamDecoder, 'getVectorType')
523
- .mockReturnValue(VectorType.FLAT);
524
- vi.spyOn(IntegerStreamDecoder, 'decodeIntStream')
525
- .mockReturnValue(new Int32Array(0));
492
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue({ ...mockStreamMetadata(), numValues: 0 });
493
+ vi.spyOn(IntegerStreamDecoder, "getVectorType").mockReturnValue(VectorType.FLAT);
494
+ vi.spyOn(IntegerStreamDecoder, "decodeIntStream").mockReturnValue(new Int32Array(0));
526
495
  const column = createColumn(ScalarType.INT_32);
527
496
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
528
497
  const offset = new IntWrapper(0);
@@ -532,14 +501,11 @@ describe('decodePropertyColumn', () => {
532
501
  expect(result).toBeInstanceOf(IntFlatVector);
533
502
  expect(result.dataBuffer).toHaveLength(0);
534
503
  });
535
- it('should handle multiple sequential columns with offset advancement', () => {
504
+ it("should handle multiple sequential columns with offset advancement", () => {
536
505
  // Arrange
537
- vi.spyOn(StreamMetadataDecoder, 'decode')
538
- .mockReturnValue(mockStreamMetadata(12, 3));
539
- vi.spyOn(IntegerStreamDecoder, 'getVectorType')
540
- .mockReturnValue(VectorType.FLAT);
541
- vi.spyOn(IntegerStreamDecoder, 'decodeIntStream')
542
- .mockReturnValue(new Int32Array([100, 200, 300]));
506
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata(12, 3));
507
+ vi.spyOn(IntegerStreamDecoder, "getVectorType").mockReturnValue(VectorType.FLAT);
508
+ vi.spyOn(IntegerStreamDecoder, "decodeIntStream").mockReturnValue(new Int32Array([100, 200, 300]));
543
509
  const column1 = createColumn(ScalarType.INT_32);
544
510
  const column2 = createColumn(ScalarType.INT_32);
545
511
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
@@ -554,15 +520,15 @@ describe('decodePropertyColumn', () => {
554
520
  expect(result2).toBeInstanceOf(IntFlatVector);
555
521
  expect(offsetAfterSecond).toEqual(offsetAfterFirst);
556
522
  });
557
- it('should handle non-scalar column type returning null', () => {
523
+ it("should handle non-scalar column type returning null", () => {
558
524
  // Arrange
559
525
  const column = {
560
- name: 'complex',
526
+ name: "complex",
561
527
  nullable: false,
562
528
  columnScope: null,
563
- type: 'complexType',
564
- complexType: { type: 'arrayType' },
565
- scalarType: null
529
+ type: "complexType",
530
+ complexType: { type: "arrayType" },
531
+ scalarType: null,
566
532
  };
567
533
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
568
534
  const offset = new IntWrapper(0);
@@ -572,14 +538,12 @@ describe('decodePropertyColumn', () => {
572
538
  expect(result).toBeNull();
573
539
  });
574
540
  });
575
- describe('Offset Management', () => {
576
- it('should handle offset at non-zero starting position', () => {
541
+ describe("Offset Management", () => {
542
+ it("should handle offset at non-zero starting position", () => {
577
543
  // Arrange
578
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
579
- vi.spyOn(IntegerStreamDecoder, 'getVectorType')
580
- .mockReturnValue(VectorType.FLAT);
581
- vi.spyOn(IntegerStreamDecoder, 'decodeIntStream')
582
- .mockReturnValue(new Int32Array([100, 200, 300]));
544
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
545
+ vi.spyOn(IntegerStreamDecoder, "getVectorType").mockReturnValue(VectorType.FLAT);
546
+ vi.spyOn(IntegerStreamDecoder, "decodeIntStream").mockReturnValue(new Int32Array([100, 200, 300]));
583
547
  const column = createColumn(ScalarType.INT_32);
584
548
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
585
549
  const startOffset = 50;
@@ -590,15 +554,16 @@ describe('decodePropertyColumn', () => {
590
554
  expect(result).toBeInstanceOf(IntFlatVector);
591
555
  expect(offset.get()).toEqual(startOffset);
592
556
  });
593
- it('should correctly skip columns with filterList and advance offset', () => {
557
+ it("should correctly skip columns with filterList and advance offset", () => {
594
558
  // Arrange
595
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
596
- const skipColumnSpy = vi.spyOn(decodingUtils, 'skipColumn')
559
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
560
+ const skipColumnSpy = vi
561
+ .spyOn(decodingUtils, "skipColumn")
597
562
  .mockImplementation((numStreams, data, offset) => {
598
563
  offset.add(12 * numStreams); // Simulate skipping
599
564
  });
600
565
  const column = createColumn(ScalarType.INT_32);
601
- const filterList = new Set(['other_column']);
566
+ const filterList = new Set(["other_column"]);
602
567
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
603
568
  const offset = new IntWrapper(0);
604
569
  const startOffset = offset.get();
@@ -610,14 +575,12 @@ describe('decodePropertyColumn', () => {
610
575
  expect(skipColumnSpy).toHaveBeenCalledWith(3, data, offset);
611
576
  });
612
577
  });
613
- describe('Type Consistency Checks', () => {
614
- it('should preserve column metadata in returned vector', () => {
578
+ describe("Type Consistency Checks", () => {
579
+ it("should preserve column metadata in returned vector", () => {
615
580
  // Arrange
616
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
617
- vi.spyOn(IntegerStreamDecoder, 'getVectorType')
618
- .mockReturnValue(VectorType.FLAT);
619
- vi.spyOn(IntegerStreamDecoder, 'decodeIntStream')
620
- .mockReturnValue(new Int32Array([10, 20, 30]));
581
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
582
+ vi.spyOn(IntegerStreamDecoder, "getVectorType").mockReturnValue(VectorType.FLAT);
583
+ vi.spyOn(IntegerStreamDecoder, "decodeIntStream").mockReturnValue(new Int32Array([10, 20, 30]));
621
584
  const column = createColumn(ScalarType.INT_32);
622
585
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
623
586
  const offset = new IntWrapper(0);
@@ -626,14 +589,11 @@ describe('decodePropertyColumn', () => {
626
589
  // Assert
627
590
  expect(result._name).toBe(column.name);
628
591
  });
629
- it('should handle all signed and unsigned type combinations', () => {
592
+ it("should handle all signed and unsigned type combinations", () => {
630
593
  // Arrange
631
- const types = [
632
- ScalarType.INT_32, ScalarType.UINT_32,
633
- ScalarType.INT_64, ScalarType.UINT_64
634
- ];
635
- types.forEach(scalarType => {
636
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
594
+ const types = [ScalarType.INT_32, ScalarType.UINT_32, ScalarType.INT_64, ScalarType.UINT_64];
595
+ types.forEach((scalarType) => {
596
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
637
597
  mockIntegerDecoder(scalarType);
638
598
  const column = createColumn(scalarType, false);
639
599
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
@@ -642,15 +602,15 @@ describe('decodePropertyColumn', () => {
642
602
  const result = decodePropertyColumn(data, offset, column, 1, TEST_DATA.NUM_VALUES);
643
603
  // Assert
644
604
  expect(result).toBeDefined();
645
- expect(result._name).toBe('age');
605
+ expect(result._name).toBe("age");
646
606
  vi.restoreAllMocks();
647
607
  });
648
608
  });
649
609
  });
650
- describe('Error Scenarios', () => {
651
- it('should handle invalid scalar type gracefully', () => {
610
+ describe("Error Scenarios", () => {
611
+ it("should handle invalid scalar type gracefully", () => {
652
612
  // Arrange
653
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
613
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
654
614
  const column = createColumn(999); // Invalid type
655
615
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
656
616
  const offset = new IntWrapper(0);
@@ -659,16 +619,16 @@ describe('decodePropertyColumn', () => {
659
619
  decodePropertyColumn(data, offset, column, 1, TEST_DATA.NUM_VALUES);
660
620
  }).toThrow();
661
621
  });
662
- it('should handle mismatched numStreams for string type', () => {
622
+ it("should handle mismatched numStreams for string type", () => {
663
623
  // Arrange
664
- vi.spyOn(StreamMetadataDecoder, 'decode').mockReturnValue(mockStreamMetadata());
624
+ vi.spyOn(StreamMetadataDecoder, "decode").mockReturnValue(mockStreamMetadata());
665
625
  const column = {
666
- name: 'stringCol',
626
+ name: "stringCol",
667
627
  nullable: false,
668
628
  columnScope: null,
669
- type: 'stringType',
629
+ type: "stringType",
670
630
  scalarType: null,
671
- complexType: null
631
+ complexType: null,
672
632
  };
673
633
  const data = new Uint8Array(TEST_DATA.BUFFER_SIZE);
674
634
  const offset = new IntWrapper(0);