@maplibre/mlt 1.1.0 → 1.1.2

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 (136) hide show
  1. package/LICENSE.txt +231 -0
  2. package/dist/decoding/decodingUtils.js +2 -2
  3. package/dist/decoding/decodingUtils.js.map +1 -1
  4. package/dist/decoding/decodingUtils.spec.js +2 -2
  5. package/dist/decoding/decodingUtils.spec.js.map +1 -1
  6. package/dist/decoding/fsstDecoder.js.map +1 -1
  7. package/dist/decoding/fsstDecoder.spec.js +14 -10
  8. package/dist/decoding/fsstDecoder.spec.js.map +1 -1
  9. package/dist/decoding/geometryDecoder.js +40 -200
  10. package/dist/decoding/geometryDecoder.js.map +1 -1
  11. package/dist/decoding/geometryDecoder.spec.js.map +1 -1
  12. package/dist/decoding/geometryScaling.js.map +1 -1
  13. package/dist/decoding/intWrapper.js.map +1 -1
  14. package/dist/decoding/integerDecodingUtils.d.ts +1 -1
  15. package/dist/decoding/integerDecodingUtils.js.map +1 -1
  16. package/dist/decoding/integerDecodingUtils.spec.js.map +1 -1
  17. package/dist/decoding/integerStreamDecoder.d.ts +13 -22
  18. package/dist/decoding/integerStreamDecoder.js +234 -237
  19. package/dist/decoding/integerStreamDecoder.js.map +1 -1
  20. package/dist/decoding/integerStreamDecoder.spec.js +77 -39
  21. package/dist/decoding/integerStreamDecoder.spec.js.map +1 -1
  22. package/dist/decoding/propertyDecoder.js +21 -21
  23. package/dist/decoding/propertyDecoder.js.map +1 -1
  24. package/dist/decoding/propertyDecoder.spec.js +162 -199
  25. package/dist/decoding/propertyDecoder.spec.js.map +1 -1
  26. package/dist/decoding/stringDecoder.d.ts +2 -10
  27. package/dist/decoding/stringDecoder.js +150 -157
  28. package/dist/decoding/stringDecoder.js.map +1 -1
  29. package/dist/decoding/stringDecoder.spec.js +59 -60
  30. package/dist/decoding/stringDecoder.spec.js.map +1 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/metadata/tile/dictionaryType.js.map +1 -1
  33. package/dist/metadata/tile/lengthType.js.map +1 -1
  34. package/dist/metadata/tile/logicalLevelTechnique.js.map +1 -1
  35. package/dist/metadata/tile/logicalStreamType.js.map +1 -1
  36. package/dist/metadata/tile/offsetType.js.map +1 -1
  37. package/dist/metadata/tile/physicalLevelTechnique.js.map +1 -1
  38. package/dist/metadata/tile/physicalStreamType.js.map +1 -1
  39. package/dist/metadata/tile/scalarType.js.map +1 -1
  40. package/dist/metadata/tile/streamMetadataDecoder.d.ts +28 -4
  41. package/dist/metadata/tile/streamMetadataDecoder.js +81 -15
  42. package/dist/metadata/tile/streamMetadataDecoder.js.map +1 -1
  43. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js +4 -4
  44. package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -1
  45. package/dist/metadata/tileset/tilesetMetadata.js.map +1 -1
  46. package/dist/metadata/tileset/typeMap.d.ts +21 -29
  47. package/dist/metadata/tileset/typeMap.js +167 -169
  48. package/dist/metadata/tileset/typeMap.js.map +1 -1
  49. package/dist/mltDecoder.js +20 -18
  50. package/dist/mltDecoder.js.map +1 -1
  51. package/dist/mltDecoder.spec.js.map +1 -1
  52. package/dist/mltMetadata.js.map +1 -1
  53. package/dist/vector/constant/intConstVector.js.map +1 -1
  54. package/dist/vector/constant/longConstVector.js.map +1 -1
  55. package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -1
  56. package/dist/vector/featureTable.js.map +1 -1
  57. package/dist/vector/filter/flatSelectionVector.d.ts +27 -0
  58. package/dist/vector/filter/flatSelectionVector.js +54 -0
  59. package/dist/vector/filter/flatSelectionVector.js.map +1 -0
  60. package/dist/vector/filter/flatSelectionVector.spec.d.ts +1 -0
  61. package/dist/vector/filter/flatSelectionVector.spec.js +51 -0
  62. package/dist/vector/filter/flatSelectionVector.spec.js.map +1 -0
  63. package/dist/vector/filter/selectionVector.d.ts +8 -0
  64. package/dist/vector/filter/selectionVector.js +2 -0
  65. package/dist/vector/filter/selectionVector.js.map +1 -0
  66. package/dist/vector/filter/selectionVectorUtil.spec.d.ts +1 -0
  67. package/dist/vector/filter/selectionVectorUtil.spec.js +154 -0
  68. package/dist/vector/filter/selectionVectorUtil.spec.js.map +1 -0
  69. package/dist/vector/filter/selectionVectorUtils.d.ts +16 -0
  70. package/dist/vector/filter/selectionVectorUtils.js +37 -0
  71. package/dist/vector/filter/selectionVectorUtils.js.map +1 -0
  72. package/dist/vector/filter/sequenceSelectionVector.d.ts +26 -0
  73. package/dist/vector/filter/sequenceSelectionVector.js +67 -0
  74. package/dist/vector/filter/sequenceSelectionVector.js.map +1 -0
  75. package/dist/vector/filter/sequenceSelectionVector.spec.d.ts +1 -0
  76. package/dist/vector/filter/sequenceSelectionVector.spec.js +115 -0
  77. package/dist/vector/filter/sequenceSelectionVector.spec.js.map +1 -0
  78. package/dist/vector/fixedSizeVector.js.map +1 -1
  79. package/dist/vector/flat/bitVector.js.map +1 -1
  80. package/dist/vector/flat/booleanFlatVector.js.map +1 -1
  81. package/dist/vector/flat/doubleFlatVector.js.map +1 -1
  82. package/dist/vector/flat/floatFlatVector.js.map +1 -1
  83. package/dist/vector/flat/floatFlatVector.spec.js.map +1 -1
  84. package/dist/vector/flat/intFlatVector.js.map +1 -1
  85. package/dist/vector/flat/intFlatVector.spec.js.map +1 -1
  86. package/dist/vector/flat/longFlatVector.js.map +1 -1
  87. package/dist/vector/flat/longFlatVector.spec.js.map +1 -1
  88. package/dist/vector/flat/stringFlatVector.js.map +1 -1
  89. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -1
  90. package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.spec.js.map +1 -1
  91. package/dist/vector/geometry/constGeometryVector.d.ts +2 -2
  92. package/dist/vector/geometry/constGeometryVector.js +6 -6
  93. package/dist/vector/geometry/constGeometryVector.js.map +1 -1
  94. package/dist/vector/geometry/constGpuVector.d.ts +1 -1
  95. package/dist/vector/geometry/constGpuVector.js +3 -24
  96. package/dist/vector/geometry/constGpuVector.js.map +1 -1
  97. package/dist/vector/geometry/flatGeometryVector.d.ts +2 -2
  98. package/dist/vector/geometry/flatGeometryVector.js +7 -7
  99. package/dist/vector/geometry/flatGeometryVector.js.map +1 -1
  100. package/dist/vector/geometry/flatGpuVector.d.ts +1 -1
  101. package/dist/vector/geometry/flatGpuVector.js +3 -22
  102. package/dist/vector/geometry/flatGpuVector.js.map +1 -1
  103. package/dist/vector/geometry/geometryType.js.map +1 -1
  104. package/dist/vector/geometry/geometryVector.js +2 -2
  105. package/dist/vector/geometry/geometryVector.js.map +1 -1
  106. package/dist/vector/geometry/geometryVectorConverter.js +4 -4
  107. package/dist/vector/geometry/geometryVectorConverter.js.map +1 -1
  108. package/dist/vector/geometry/gpuVector.js.map +1 -1
  109. package/dist/vector/geometry/topologyVector.js.map +1 -1
  110. package/dist/vector/geometry/vertexBufferType.js.map +1 -1
  111. package/dist/vector/geometry/zOrderCurve.d.ts +4 -17
  112. package/dist/vector/geometry/zOrderCurve.js +10 -35
  113. package/dist/vector/geometry/zOrderCurve.js.map +1 -1
  114. package/dist/vector/geometry/zOrderCurve.spec.js +15 -10
  115. package/dist/vector/geometry/zOrderCurve.spec.js.map +1 -1
  116. package/dist/vector/intVector.js.map +1 -1
  117. package/dist/vector/sequence/intSequenceVector.js.map +1 -1
  118. package/dist/vector/sequence/longSequenceVector.js.map +1 -1
  119. package/dist/vector/sequence/longSequenceVektor.spec.js.map +1 -1
  120. package/dist/vector/sequence/sequenceVector.js.map +1 -1
  121. package/dist/vector/variableSizeVector.js.map +1 -1
  122. package/dist/vector/vector.js.map +1 -1
  123. package/dist/vector/vectorType.js.map +1 -1
  124. package/package.json +5 -5
  125. package/dist/metadata/tile/mortonEncodedStreamMetadata.d.ts +0 -15
  126. package/dist/metadata/tile/mortonEncodedStreamMetadata.js +0 -27
  127. package/dist/metadata/tile/mortonEncodedStreamMetadata.js.map +0 -1
  128. package/dist/metadata/tile/rleEncodedStreamMetadata.d.ts +0 -24
  129. package/dist/metadata/tile/rleEncodedStreamMetadata.js +0 -38
  130. package/dist/metadata/tile/rleEncodedStreamMetadata.js.map +0 -1
  131. package/dist/metadata/tile/streamMetadata.d.ts +0 -29
  132. package/dist/metadata/tile/streamMetadata.js +0 -82
  133. package/dist/metadata/tile/streamMetadata.js.map +0 -1
  134. package/dist/vector/geometry/spaceFillingCurve.d.ts +0 -22
  135. package/dist/vector/geometry/spaceFillingCurve.js +0 -31
  136. package/dist/vector/geometry/spaceFillingCurve.js.map +0 -1
@@ -0,0 +1,154 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { createSelectionVector, createNullableSelectionVector, updateNullableSelectionVector, } from "./selectionVectorUtils";
3
+ import { FlatSelectionVector } from "./flatSelectionVector";
4
+ import { SequenceSelectionVector } from "./sequenceSelectionVector";
5
+ import BitVector from "../flat/bitVector";
6
+ describe("selectionVectorUtils", () => {
7
+ describe("createSelectionVector", () => {
8
+ it("Should create a SequenceSelectionVector with given size", () => {
9
+ const sv = createSelectionVector(5);
10
+ expect(sv).toBeInstanceOf(SequenceSelectionVector);
11
+ expect(sv.limit).toBe(5);
12
+ });
13
+ it("Should handle zero size", () => {
14
+ const sv = createSelectionVector(0);
15
+ expect(sv).toBeInstanceOf(SequenceSelectionVector);
16
+ expect(sv.limit).toBe(0);
17
+ });
18
+ });
19
+ describe("createNullableSelectionVector", () => {
20
+ it("Should return all indices when nullabilityBuffer is not provided", () => {
21
+ const sv = createNullableSelectionVector(5);
22
+ expect(sv).toBeInstanceOf(FlatSelectionVector);
23
+ expect(sv.limit).toBe(5);
24
+ });
25
+ it("Should return empty vector when size is 0 and nullabilityBuffer is not provided", () => {
26
+ const sv = createNullableSelectionVector(0);
27
+ expect(sv).toBeInstanceOf(FlatSelectionVector);
28
+ expect(sv.limit).toBe(0);
29
+ });
30
+ it("Should return empty vector when size is 0 with BitVector provided", () => {
31
+ const buffer = new Uint8Array([0b11111111]);
32
+ const bitVector = new BitVector(buffer, 8);
33
+ const sv = createNullableSelectionVector(0, bitVector);
34
+ expect(sv).toBeInstanceOf(FlatSelectionVector);
35
+ expect(sv.limit).toBe(0);
36
+ });
37
+ it("Should create FlatSelectionVector with only set bits", () => {
38
+ const buffer = new Uint8Array([0b00001011]); // bits 0, 1, 3 are set
39
+ const bitVector = new BitVector(buffer, 8);
40
+ const sv = createNullableSelectionVector(8, bitVector);
41
+ expect(sv).toBeInstanceOf(FlatSelectionVector);
42
+ expect(sv.limit).toBe(3);
43
+ });
44
+ it("Should create empty vector when no bits are set", () => {
45
+ const buffer = new Uint8Array([0b00000000]);
46
+ const bitVector = new BitVector(buffer, 8);
47
+ const sv = createNullableSelectionVector(8, bitVector);
48
+ expect(sv).toBeInstanceOf(FlatSelectionVector);
49
+ expect(sv.limit).toBe(0);
50
+ });
51
+ it("Should handle multiple bytes in BitVector", () => {
52
+ const buffer = new Uint8Array([0b10101010, 0b01010101]);
53
+ const bitVector = new BitVector(buffer, 16);
54
+ const sv = createNullableSelectionVector(16, bitVector);
55
+ expect(sv).toBeInstanceOf(FlatSelectionVector);
56
+ expect(sv.limit).toBe(8);
57
+ });
58
+ });
59
+ describe("updateNullableSelectionVector", () => {
60
+ describe("with FlatSelectionVector", () => {
61
+ it("Should return new instance when filtering with BitVector", () => {
62
+ const selectionVector = new FlatSelectionVector([0, 1, 2, 3, 4, 5, 6, 7]);
63
+ const buffer = new Uint8Array([0b00001011]);
64
+ const bitVector = new BitVector(buffer, 8);
65
+ const result = updateNullableSelectionVector(selectionVector, bitVector);
66
+ expect(result).toBeInstanceOf(FlatSelectionVector);
67
+ expect(result.limit).toBe(3);
68
+ expect(result).not.toBe(selectionVector);
69
+ });
70
+ it("Should return same instance when BitVector is null", () => {
71
+ const selectionVector = new FlatSelectionVector([0, 1, 2, 3, 4, 5, 6, 7]);
72
+ const result = updateNullableSelectionVector(selectionVector, null);
73
+ expect(result).toStrictEqual(selectionVector);
74
+ });
75
+ it("Should return all indices when nullabilityBuffer is undefined", () => {
76
+ const selectionVector = new FlatSelectionVector([0, 2, 4, 6]);
77
+ const result = updateNullableSelectionVector(selectionVector, undefined);
78
+ expect(result).toBeInstanceOf(FlatSelectionVector);
79
+ expect(result.limit).toBe(4);
80
+ });
81
+ it("Should keep all indices when all bits are set", () => {
82
+ const selectionVector = new FlatSelectionVector([0, 2, 4, 6]);
83
+ const buffer = new Uint8Array([0b01010101]);
84
+ const bitVector = new BitVector(buffer, 8);
85
+ const result = updateNullableSelectionVector(selectionVector, bitVector);
86
+ expect(result).toBeInstanceOf(FlatSelectionVector);
87
+ expect(result.limit).toBe(4);
88
+ });
89
+ it("Should filter out null indices from selection vector", () => {
90
+ const selectionVector = new FlatSelectionVector([0, 2, 4, 6]);
91
+ const buffer = new Uint8Array([0b01000101]); // bits at 0, 2, 6
92
+ const bitVector = new BitVector(buffer, 8);
93
+ const result = updateNullableSelectionVector(selectionVector, bitVector);
94
+ expect(result).toBeInstanceOf(FlatSelectionVector);
95
+ expect(result.limit).toBe(3);
96
+ });
97
+ it("Should return empty vector when all selected indices are null", () => {
98
+ const selectionVector = new FlatSelectionVector([1, 3, 5]);
99
+ const buffer = new Uint8Array([0b01010101]); // bits at 0, 2, 4, 6 (not 1, 3, 5)
100
+ const bitVector = new BitVector(buffer, 8);
101
+ const result = updateNullableSelectionVector(selectionVector, bitVector);
102
+ expect(result).toBeInstanceOf(FlatSelectionVector);
103
+ expect(result.limit).toBe(0);
104
+ });
105
+ it("Should handle empty FlatSelectionVector", () => {
106
+ const selectionVector = new FlatSelectionVector([]);
107
+ const buffer = new Uint8Array([0b11111111]);
108
+ const bitVector = new BitVector(buffer, 8);
109
+ const result = updateNullableSelectionVector(selectionVector, bitVector);
110
+ expect(result).toBeInstanceOf(FlatSelectionVector);
111
+ expect(result.limit).toBe(0);
112
+ });
113
+ it("Should filter large index values from selection vector", () => {
114
+ const selectionVector = new FlatSelectionVector([0, 8, 16]);
115
+ const buffer = new Uint8Array([0b00000001, 0b00000000, 0b00000000]);
116
+ const bitVector = new BitVector(buffer, 24);
117
+ const result = updateNullableSelectionVector(selectionVector, bitVector);
118
+ expect(result).toBeInstanceOf(FlatSelectionVector);
119
+ expect(result.limit).toBe(1);
120
+ });
121
+ });
122
+ describe("with SequenceSelectionVector", () => {
123
+ it("Should filter SequenceSelectionVector with all bits set", () => {
124
+ const selectionVector = new SequenceSelectionVector(0, 2, 4); // [0, 2, 4, 6]
125
+ const buffer = new Uint8Array([0b01010101]);
126
+ const bitVector = new BitVector(buffer, 8);
127
+ const result = updateNullableSelectionVector(selectionVector, bitVector);
128
+ expect(result).toBeInstanceOf(FlatSelectionVector);
129
+ expect(result.limit).toBe(4);
130
+ });
131
+ it("Should partially filter SequenceSelectionVector", () => {
132
+ const selectionVector = new SequenceSelectionVector(0, 2, 4); // [0, 2, 4, 6]
133
+ const buffer = new Uint8Array([0b00010001]); // bits at 0, 4
134
+ const bitVector = new BitVector(buffer, 8);
135
+ const result = updateNullableSelectionVector(selectionVector, bitVector);
136
+ expect(result).toBeInstanceOf(FlatSelectionVector);
137
+ expect(result.limit).toBe(2);
138
+ });
139
+ it("Should preserve all SequenceSelectionVector values when nullabilityBuffer is undefined", () => {
140
+ const selectionVector = new SequenceSelectionVector(1, 3, 3); // [1, 4, 7]
141
+ const result = updateNullableSelectionVector(selectionVector, undefined);
142
+ expect(result).toBeInstanceOf(FlatSelectionVector);
143
+ expect(result.limit).toBe(3);
144
+ });
145
+ it("Should create FlatSelectionVector when BitVector is null", () => {
146
+ const selectionVector = new SequenceSelectionVector(0, 2, 4); // [0, 2, 4, 6]
147
+ const result = updateNullableSelectionVector(selectionVector, null);
148
+ expect(result).toBeInstanceOf(FlatSelectionVector);
149
+ expect(result.limit).toBe(4);
150
+ });
151
+ });
152
+ });
153
+ });
154
+ //# sourceMappingURL=selectionVectorUtil.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectionVectorUtil.spec.js","sourceRoot":"","sources":["../../../src/vector/filter/selectionVectorUtil.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport {\n createSelectionVector,\n createNullableSelectionVector,\n updateNullableSelectionVector,\n} from \"./selectionVectorUtils\";\nimport { FlatSelectionVector } from \"./flatSelectionVector\";\nimport { SequenceSelectionVector } from \"./sequenceSelectionVector\";\nimport BitVector from \"../flat/bitVector\";\n\ndescribe(\"selectionVectorUtils\", () => {\n describe(\"createSelectionVector\", () => {\n it(\"Should create a SequenceSelectionVector with given size\", () => {\n const sv = createSelectionVector(5);\n expect(sv).toBeInstanceOf(SequenceSelectionVector);\n expect(sv.limit).toBe(5);\n });\n\n it(\"Should handle zero size\", () => {\n const sv = createSelectionVector(0);\n expect(sv).toBeInstanceOf(SequenceSelectionVector);\n expect(sv.limit).toBe(0);\n });\n });\n\n describe(\"createNullableSelectionVector\", () => {\n it(\"Should return all indices when nullabilityBuffer is not provided\", () => {\n const sv = createNullableSelectionVector(5);\n expect(sv).toBeInstanceOf(FlatSelectionVector);\n expect(sv.limit).toBe(5);\n });\n\n it(\"Should return empty vector when size is 0 and nullabilityBuffer is not provided\", () => {\n const sv = createNullableSelectionVector(0);\n expect(sv).toBeInstanceOf(FlatSelectionVector);\n expect(sv.limit).toBe(0);\n });\n\n it(\"Should return empty vector when size is 0 with BitVector provided\", () => {\n const buffer = new Uint8Array([0b11111111]);\n const bitVector = new BitVector(buffer, 8);\n const sv = createNullableSelectionVector(0, bitVector);\n expect(sv).toBeInstanceOf(FlatSelectionVector);\n expect(sv.limit).toBe(0);\n });\n\n it(\"Should create FlatSelectionVector with only set bits\", () => {\n const buffer = new Uint8Array([0b00001011]); // bits 0, 1, 3 are set\n const bitVector = new BitVector(buffer, 8);\n const sv = createNullableSelectionVector(8, bitVector);\n expect(sv).toBeInstanceOf(FlatSelectionVector);\n expect(sv.limit).toBe(3);\n });\n\n it(\"Should create empty vector when no bits are set\", () => {\n const buffer = new Uint8Array([0b00000000]);\n const bitVector = new BitVector(buffer, 8);\n const sv = createNullableSelectionVector(8, bitVector);\n expect(sv).toBeInstanceOf(FlatSelectionVector);\n expect(sv.limit).toBe(0);\n });\n\n it(\"Should handle multiple bytes in BitVector\", () => {\n const buffer = new Uint8Array([0b10101010, 0b01010101]);\n const bitVector = new BitVector(buffer, 16);\n const sv = createNullableSelectionVector(16, bitVector);\n expect(sv).toBeInstanceOf(FlatSelectionVector);\n expect(sv.limit).toBe(8);\n });\n });\n\n describe(\"updateNullableSelectionVector\", () => {\n describe(\"with FlatSelectionVector\", () => {\n it(\"Should return new instance when filtering with BitVector\", () => {\n const selectionVector = new FlatSelectionVector([0, 1, 2, 3, 4, 5, 6, 7]);\n const buffer = new Uint8Array([0b00001011]);\n const bitVector = new BitVector(buffer, 8);\n const result = updateNullableSelectionVector(selectionVector, bitVector);\n\n expect(result).toBeInstanceOf(FlatSelectionVector);\n expect(result.limit).toBe(3);\n expect(result).not.toBe(selectionVector);\n });\n\n it(\"Should return same instance when BitVector is null\", () => {\n const selectionVector = new FlatSelectionVector([0, 1, 2, 3, 4, 5, 6, 7]);\n const result = updateNullableSelectionVector(selectionVector, null);\n expect(result).toStrictEqual(selectionVector);\n });\n\n it(\"Should return all indices when nullabilityBuffer is undefined\", () => {\n const selectionVector = new FlatSelectionVector([0, 2, 4, 6]);\n const result = updateNullableSelectionVector(selectionVector, undefined);\n expect(result).toBeInstanceOf(FlatSelectionVector);\n expect(result.limit).toBe(4);\n });\n\n it(\"Should keep all indices when all bits are set\", () => {\n const selectionVector = new FlatSelectionVector([0, 2, 4, 6]);\n const buffer = new Uint8Array([0b01010101]);\n const bitVector = new BitVector(buffer, 8);\n const result = updateNullableSelectionVector(selectionVector, bitVector);\n expect(result).toBeInstanceOf(FlatSelectionVector);\n expect(result.limit).toBe(4);\n });\n\n it(\"Should filter out null indices from selection vector\", () => {\n const selectionVector = new FlatSelectionVector([0, 2, 4, 6]);\n const buffer = new Uint8Array([0b01000101]); // bits at 0, 2, 6\n const bitVector = new BitVector(buffer, 8);\n const result = updateNullableSelectionVector(selectionVector, bitVector);\n expect(result).toBeInstanceOf(FlatSelectionVector);\n expect(result.limit).toBe(3);\n });\n\n it(\"Should return empty vector when all selected indices are null\", () => {\n const selectionVector = new FlatSelectionVector([1, 3, 5]);\n const buffer = new Uint8Array([0b01010101]); // bits at 0, 2, 4, 6 (not 1, 3, 5)\n const bitVector = new BitVector(buffer, 8);\n const result = updateNullableSelectionVector(selectionVector, bitVector);\n expect(result).toBeInstanceOf(FlatSelectionVector);\n expect(result.limit).toBe(0);\n });\n\n it(\"Should handle empty FlatSelectionVector\", () => {\n const selectionVector = new FlatSelectionVector([]);\n const buffer = new Uint8Array([0b11111111]);\n const bitVector = new BitVector(buffer, 8);\n const result = updateNullableSelectionVector(selectionVector, bitVector);\n expect(result).toBeInstanceOf(FlatSelectionVector);\n expect(result.limit).toBe(0);\n });\n\n it(\"Should filter large index values from selection vector\", () => {\n const selectionVector = new FlatSelectionVector([0, 8, 16]);\n const buffer = new Uint8Array([0b00000001, 0b00000000, 0b00000000]);\n const bitVector = new BitVector(buffer, 24);\n const result = updateNullableSelectionVector(selectionVector, bitVector);\n expect(result).toBeInstanceOf(FlatSelectionVector);\n expect(result.limit).toBe(1);\n });\n });\n\n describe(\"with SequenceSelectionVector\", () => {\n it(\"Should filter SequenceSelectionVector with all bits set\", () => {\n const selectionVector = new SequenceSelectionVector(0, 2, 4); // [0, 2, 4, 6]\n const buffer = new Uint8Array([0b01010101]);\n const bitVector = new BitVector(buffer, 8);\n const result = updateNullableSelectionVector(selectionVector, bitVector);\n expect(result).toBeInstanceOf(FlatSelectionVector);\n expect(result.limit).toBe(4);\n });\n\n it(\"Should partially filter SequenceSelectionVector\", () => {\n const selectionVector = new SequenceSelectionVector(0, 2, 4); // [0, 2, 4, 6]\n const buffer = new Uint8Array([0b00010001]); // bits at 0, 4\n const bitVector = new BitVector(buffer, 8);\n const result = updateNullableSelectionVector(selectionVector, bitVector);\n expect(result).toBeInstanceOf(FlatSelectionVector);\n expect(result.limit).toBe(2);\n });\n\n it(\"Should preserve all SequenceSelectionVector values when nullabilityBuffer is undefined\", () => {\n const selectionVector = new SequenceSelectionVector(1, 3, 3); // [1, 4, 7]\n const result = updateNullableSelectionVector(selectionVector, undefined);\n expect(result).toBeInstanceOf(FlatSelectionVector);\n expect(result.limit).toBe(3);\n });\n\n it(\"Should create FlatSelectionVector when BitVector is null\", () => {\n const selectionVector = new SequenceSelectionVector(0, 2, 4); // [0, 2, 4, 6]\n const result = updateNullableSelectionVector(selectionVector, null);\n\n expect(result).toBeInstanceOf(FlatSelectionVector);\n expect(result.limit).toBe(4);\n });\n });\n });\n});\n"]}
@@ -0,0 +1,16 @@
1
+ import { type SelectionVector } from "./selectionVector";
2
+ import type BitVector from "../flat/bitVector";
3
+ import { SequenceSelectionVector } from "./sequenceSelectionVector";
4
+ export declare function createSelectionVector(size: number): SequenceSelectionVector;
5
+ /**
6
+ * Creates a selection vector containing indices of non-null values.
7
+ * @param size - The total number of elements to consider
8
+ * @param nullabilityBuffer - Optional bit vector where 1=not null, 0=null. If undefined/null, all values are considered non-null.
9
+ */
10
+ export declare function createNullableSelectionVector(size: number, nullabilityBuffer?: BitVector): SelectionVector;
11
+ /**
12
+ * Filters an existing selection vector to include only non-null values.
13
+ * @param selectionVector - The input selection vector to filter
14
+ * @param nullabilityBuffer - Optional bit vector where 1=not null, 0=null. If undefined/null, all values are considered non-null.
15
+ */
16
+ export declare function updateNullableSelectionVector(selectionVector: SelectionVector, nullabilityBuffer?: BitVector): SelectionVector;
@@ -0,0 +1,37 @@
1
+ import { FlatSelectionVector } from "./flatSelectionVector";
2
+ import { SequenceSelectionVector } from "./sequenceSelectionVector";
3
+ export function createSelectionVector(size) {
4
+ return new SequenceSelectionVector(0, 1, size);
5
+ }
6
+ /**
7
+ * Creates a selection vector containing indices of non-null values.
8
+ * @param size - The total number of elements to consider
9
+ * @param nullabilityBuffer - Optional bit vector where 1=not null, 0=null. If undefined/null, all values are considered non-null.
10
+ */
11
+ export function createNullableSelectionVector(size, nullabilityBuffer) {
12
+ const selectionVector = [];
13
+ for (let i = 0; i < size; i++) {
14
+ // Include index if no nullability buffer (all non-null) OR if bit is set (non-null)
15
+ if (!nullabilityBuffer || nullabilityBuffer.get(i)) {
16
+ selectionVector.push(i);
17
+ }
18
+ }
19
+ return new FlatSelectionVector(selectionVector);
20
+ }
21
+ /**
22
+ * Filters an existing selection vector to include only non-null values.
23
+ * @param selectionVector - The input selection vector to filter
24
+ * @param nullabilityBuffer - Optional bit vector where 1=not null, 0=null. If undefined/null, all values are considered non-null.
25
+ */
26
+ export function updateNullableSelectionVector(selectionVector, nullabilityBuffer) {
27
+ const filteredIndices = [];
28
+ for (let i = 0; i < selectionVector.limit; i++) {
29
+ const vectorIndex = selectionVector.getIndex(i);
30
+ // Include index if no nullability buffer (all non-null) OR if bit is set (non-null)
31
+ if (!nullabilityBuffer || nullabilityBuffer.get(vectorIndex)) {
32
+ filteredIndices.push(vectorIndex);
33
+ }
34
+ }
35
+ return new FlatSelectionVector(filteredIndices);
36
+ }
37
+ //# sourceMappingURL=selectionVectorUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectionVectorUtils.js","sourceRoot":"","sources":["../../../src/vector/filter/selectionVectorUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAC9C,OAAO,IAAI,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,IAAY,EAAE,iBAA6B;IACrF,MAAM,eAAe,GAAG,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,oFAAoF;QACpF,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IACD,OAAO,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CACzC,eAAgC,EAChC,iBAA6B;IAE7B,MAAM,eAAe,GAAG,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChD,oFAAoF;QACpF,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3D,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;AACpD,CAAC","sourcesContent":["import { type SelectionVector } from \"./selectionVector\";\nimport { FlatSelectionVector } from \"./flatSelectionVector\";\nimport type BitVector from \"../flat/bitVector\";\nimport { SequenceSelectionVector } from \"./sequenceSelectionVector\";\n\nexport function createSelectionVector(size: number) {\n return new SequenceSelectionVector(0, 1, size);\n}\n\n/**\n * Creates a selection vector containing indices of non-null values.\n * @param size - The total number of elements to consider\n * @param nullabilityBuffer - Optional bit vector where 1=not null, 0=null. If undefined/null, all values are considered non-null.\n */\nexport function createNullableSelectionVector(size: number, nullabilityBuffer?: BitVector): SelectionVector {\n const selectionVector = [];\n for (let i = 0; i < size; i++) {\n // Include index if no nullability buffer (all non-null) OR if bit is set (non-null)\n if (!nullabilityBuffer || nullabilityBuffer.get(i)) {\n selectionVector.push(i);\n }\n }\n return new FlatSelectionVector(selectionVector);\n}\n\n/**\n * Filters an existing selection vector to include only non-null values.\n * @param selectionVector - The input selection vector to filter\n * @param nullabilityBuffer - Optional bit vector where 1=not null, 0=null. If undefined/null, all values are considered non-null.\n */\nexport function updateNullableSelectionVector(\n selectionVector: SelectionVector,\n nullabilityBuffer?: BitVector,\n): SelectionVector {\n const filteredIndices = [];\n for (let i = 0; i < selectionVector.limit; i++) {\n const vectorIndex = selectionVector.getIndex(i);\n // Include index if no nullability buffer (all non-null) OR if bit is set (non-null)\n if (!nullabilityBuffer || nullabilityBuffer.get(vectorIndex)) {\n filteredIndices.push(vectorIndex);\n }\n }\n return new FlatSelectionVector(filteredIndices);\n}\n"]}
@@ -0,0 +1,26 @@
1
+ import { type SelectionVector } from "./selectionVector";
2
+ /**
3
+ * Memory-efficient SelectionVector for arithmetic sequences (base + index * delta).
4
+ * Calculates values on-demand, only materializes when modified.
5
+ */
6
+ export declare class SequenceSelectionVector implements SelectionVector {
7
+ private readonly _baseValue;
8
+ private readonly _delta;
9
+ private _limit;
10
+ private readonly _capacity;
11
+ private _materializedArray;
12
+ constructor(_baseValue: number, _delta: number, _limit: number, _capacity?: number);
13
+ /** @inheritdoc */
14
+ get limit(): number;
15
+ /** @inheritdoc */
16
+ get capacity(): number;
17
+ /** @inheritdoc */
18
+ selectionValues(): number[];
19
+ private materialize;
20
+ /** @inheritdoc */
21
+ getIndex(index: number): number;
22
+ /** @inheritdoc */
23
+ setIndex(index: number, value: number): void;
24
+ /** @inheritdoc */
25
+ setLimit(limit: number): void;
26
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Memory-efficient SelectionVector for arithmetic sequences (base + index * delta).
3
+ * Calculates values on-demand, only materializes when modified.
4
+ */
5
+ export class SequenceSelectionVector {
6
+ _baseValue;
7
+ _delta;
8
+ _limit;
9
+ _capacity;
10
+ _materializedArray = null;
11
+ constructor(_baseValue, _delta, _limit, _capacity = _limit) {
12
+ this._baseValue = _baseValue;
13
+ this._delta = _delta;
14
+ this._limit = _limit;
15
+ this._capacity = _capacity;
16
+ }
17
+ /** @inheritdoc */
18
+ get limit() {
19
+ return this._limit;
20
+ }
21
+ /** @inheritdoc */
22
+ get capacity() {
23
+ return this._capacity;
24
+ }
25
+ /** @inheritdoc */
26
+ selectionValues() {
27
+ if (!this._materializedArray) {
28
+ this._materializedArray = this.materialize();
29
+ }
30
+ return this._materializedArray;
31
+ }
32
+ materialize() {
33
+ const arr = new Array(this._capacity);
34
+ for (let i = 0; i < this._capacity; i++) {
35
+ arr[i] = this._baseValue + i * this._delta;
36
+ }
37
+ return arr;
38
+ }
39
+ /** @inheritdoc */
40
+ getIndex(index) {
41
+ if (index >= this._limit || index < 0) {
42
+ throw new RangeError("Index out of bounds");
43
+ }
44
+ if (this._materializedArray) {
45
+ return this._materializedArray[index];
46
+ }
47
+ return this._baseValue + index * this._delta;
48
+ }
49
+ /** @inheritdoc */
50
+ setIndex(index, value) {
51
+ if (index >= this._limit || index < 0) {
52
+ throw new RangeError("Index out of bounds");
53
+ }
54
+ if (!this._materializedArray) {
55
+ this._materializedArray = this.materialize();
56
+ }
57
+ this._materializedArray[index] = value;
58
+ }
59
+ /** @inheritdoc */
60
+ setLimit(limit) {
61
+ if (limit < 0 || limit > this.capacity) {
62
+ throw new RangeError("Limit out of bounds");
63
+ }
64
+ this._limit = limit;
65
+ }
66
+ }
67
+ //# sourceMappingURL=sequenceSelectionVector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequenceSelectionVector.js","sourceRoot":"","sources":["../../../src/vector/filter/sequenceSelectionVector.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IAIX;IACA;IACT;IACS;IANb,kBAAkB,GAAoB,IAAI,CAAC;IAEnD,YACqB,UAAkB,EAClB,MAAc,EACvB,MAAc,EACL,YAAoB,MAAM;QAH1B,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAQ;QACvB,WAAM,GAAN,MAAM,CAAQ;QACL,cAAS,GAAT,SAAS,CAAiB;IAC5C,CAAC;IAEJ,kBAAkB;IAClB,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,kBAAkB;IAClB,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,kBAAkB;IAClB,eAAe;QACX,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAEO,WAAW;QACf,MAAM,GAAG,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/C,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,kBAAkB;IAClB,QAAQ,CAAC,KAAa;QAClB,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IACjD,CAAC;IAED,kBAAkB;IAClB,QAAQ,CAAC,KAAa,EAAE,KAAa;QACjC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAC3C,CAAC;IAED,kBAAkB;IAClB,QAAQ,CAAC,KAAa;QAClB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;CACJ","sourcesContent":["import { type SelectionVector } from \"./selectionVector\";\n\n/**\n * Memory-efficient SelectionVector for arithmetic sequences (base + index * delta).\n * Calculates values on-demand, only materializes when modified.\n */\nexport class SequenceSelectionVector implements SelectionVector {\n private _materializedArray: number[] | null = null;\n\n constructor(\n private readonly _baseValue: number,\n private readonly _delta: number,\n private _limit: number,\n private readonly _capacity: number = _limit,\n ) {}\n\n /** @inheritdoc */\n get limit(): number {\n return this._limit;\n }\n\n /** @inheritdoc */\n get capacity(): number {\n return this._capacity;\n }\n\n /** @inheritdoc */\n selectionValues(): number[] {\n if (!this._materializedArray) {\n this._materializedArray = this.materialize();\n }\n return this._materializedArray;\n }\n\n private materialize(): number[] {\n const arr = new Array<number>(this._capacity);\n for (let i = 0; i < this._capacity; i++) {\n arr[i] = this._baseValue + i * this._delta;\n }\n return arr;\n }\n\n /** @inheritdoc */\n getIndex(index: number): number {\n if (index >= this._limit || index < 0) {\n throw new RangeError(\"Index out of bounds\");\n }\n if (this._materializedArray) {\n return this._materializedArray[index];\n }\n return this._baseValue + index * this._delta;\n }\n\n /** @inheritdoc */\n setIndex(index: number, value: number): void {\n if (index >= this._limit || index < 0) {\n throw new RangeError(\"Index out of bounds\");\n }\n if (!this._materializedArray) {\n this._materializedArray = this.materialize();\n }\n this._materializedArray[index] = value;\n }\n\n /** @inheritdoc */\n setLimit(limit: number): void {\n if (limit < 0 || limit > this.capacity) {\n throw new RangeError(\"Limit out of bounds\");\n }\n this._limit = limit;\n }\n}\n"]}
@@ -0,0 +1,115 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { SequenceSelectionVector } from "./sequenceSelectionVector";
3
+ describe("sequenceSelectionVector", () => {
4
+ describe("getIndex Test", () => {
5
+ it("Should return sequential values starting from 0", () => {
6
+ const vector = new SequenceSelectionVector(0, 1, 5);
7
+ expect(vector.getIndex(0)).toBe(0);
8
+ expect(vector.getIndex(2)).toBe(2);
9
+ expect(vector.getIndex(4)).toBe(4);
10
+ });
11
+ it("Should calculate values with custom base and delta", () => {
12
+ const vector = new SequenceSelectionVector(10, 5, 5);
13
+ expect(vector.getIndex(0)).toBe(10);
14
+ expect(vector.getIndex(1)).toBe(15);
15
+ expect(vector.getIndex(2)).toBe(20);
16
+ });
17
+ it("Should calculate values with negative delta", () => {
18
+ const vector = new SequenceSelectionVector(100, -10, 5);
19
+ expect(vector.getIndex(0)).toBe(100);
20
+ expect(vector.getIndex(1)).toBe(90);
21
+ expect(vector.getIndex(2)).toBe(80);
22
+ });
23
+ it("Should throw RangeError for out of bounds indices", () => {
24
+ const vector = new SequenceSelectionVector(0, 1, 5);
25
+ expect(() => vector.getIndex(80)).toThrowError("Index out of bounds");
26
+ expect(() => vector.getIndex(-36)).toThrowError("Index out of bounds");
27
+ });
28
+ });
29
+ describe("setIndex Test", () => {
30
+ it("Should update value at specified index", () => {
31
+ const vector = new SequenceSelectionVector(0, 1, 5);
32
+ vector.setIndex(0, 25);
33
+ vector.setIndex(2, -48);
34
+ vector.setIndex(3, 1000000000000001);
35
+ expect(vector.getIndex(0)).toBe(25);
36
+ expect(vector.getIndex(2)).toBe(-48);
37
+ expect(vector.getIndex(3)).toBe(1000000000000001);
38
+ });
39
+ it("Should throw RangeError for out of bounds indices", () => {
40
+ const vector = new SequenceSelectionVector(0, 1, 5);
41
+ expect(() => vector.setIndex(-1, 0)).toThrowError("Index out of bounds");
42
+ expect(() => vector.setIndex(25, 52)).toThrowError("Index out of bounds");
43
+ });
44
+ });
45
+ describe("limit Test", () => {
46
+ it("Should initialize limit to size", () => {
47
+ const vector = new SequenceSelectionVector(0, 1, 5);
48
+ expect(vector.limit).toBe(5);
49
+ const emptyVector = new SequenceSelectionVector(0, 1, 0);
50
+ expect(emptyVector.limit).toBe(0);
51
+ });
52
+ it("Should update limit independently of capacity", () => {
53
+ const vector = new SequenceSelectionVector(0, 1, 10);
54
+ expect(vector.capacity).toBe(10);
55
+ vector.setLimit(3);
56
+ expect(vector.limit).toBe(3);
57
+ expect(vector.capacity).toBe(10);
58
+ vector.setLimit(8);
59
+ expect(vector.limit).toBe(8);
60
+ expect(vector.capacity).toBe(10);
61
+ });
62
+ it("Should throw RangeError for negative limit", () => {
63
+ const vector = new SequenceSelectionVector(0, 1, 5);
64
+ expect(() => vector.setLimit(-1)).toThrowError("Limit out of bounds");
65
+ expect(() => vector.setLimit(100)).toThrowError("Limit out of bounds");
66
+ });
67
+ it("Should allow setting limit to 0", () => {
68
+ const vector = new SequenceSelectionVector(0, 1, 5);
69
+ vector.setLimit(0);
70
+ expect(vector.limit).toBe(0);
71
+ });
72
+ });
73
+ describe("selectionValues Test", () => {
74
+ it("Should return array with sequential values", () => {
75
+ const vector = new SequenceSelectionVector(0, 1, 5);
76
+ const values = vector.selectionValues();
77
+ expect(values).toStrictEqual([0, 1, 2, 3, 4]);
78
+ });
79
+ it("Should return empty array for empty vector", () => {
80
+ const vector = new SequenceSelectionVector(0, 1, 0);
81
+ expect(vector.selectionValues()).toStrictEqual([]);
82
+ });
83
+ it("Should return array with custom base and delta", () => {
84
+ const vector = new SequenceSelectionVector(10, 5, 5);
85
+ expect(vector.selectionValues()).toStrictEqual([10, 15, 20, 25, 30]);
86
+ });
87
+ it("Should return array with negative delta", () => {
88
+ const vector = new SequenceSelectionVector(100, -10, 5);
89
+ expect(vector.selectionValues()).toStrictEqual([100, 90, 80, 70, 60]);
90
+ });
91
+ it("Should reflect modified values", () => {
92
+ const vector = new SequenceSelectionVector(0, 1, 3);
93
+ vector.setIndex(2, 999);
94
+ const values = vector.selectionValues();
95
+ expect(values).toStrictEqual([0, 1, 999]);
96
+ });
97
+ });
98
+ describe("capacity Test", () => {
99
+ it("Should return capacity equal to size", () => {
100
+ const vector = new SequenceSelectionVector(0, 1, 5);
101
+ expect(vector.capacity).toBe(5);
102
+ });
103
+ it("Should return 0 for empty vector", () => {
104
+ const vector = new SequenceSelectionVector(0, 1, 0);
105
+ expect(vector.capacity).toBe(0);
106
+ });
107
+ it("Should remain constant when limit changes", () => {
108
+ const vector = new SequenceSelectionVector(10, 5, 50);
109
+ expect(vector.capacity).toBe(50);
110
+ vector.setLimit(25);
111
+ expect(vector.capacity).toBe(50);
112
+ });
113
+ });
114
+ });
115
+ //# sourceMappingURL=sequenceSelectionVector.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequenceSelectionVector.spec.js","sourceRoot":"","sources":["../../../src/vector/filter/sequenceSelectionVector.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport { SequenceSelectionVector } from \"./sequenceSelectionVector\";\n\ndescribe(\"sequenceSelectionVector\", () => {\n describe(\"getIndex Test\", () => {\n it(\"Should return sequential values starting from 0\", () => {\n const vector = new SequenceSelectionVector(0, 1, 5);\n expect(vector.getIndex(0)).toBe(0);\n expect(vector.getIndex(2)).toBe(2);\n expect(vector.getIndex(4)).toBe(4);\n });\n\n it(\"Should calculate values with custom base and delta\", () => {\n const vector = new SequenceSelectionVector(10, 5, 5);\n expect(vector.getIndex(0)).toBe(10);\n expect(vector.getIndex(1)).toBe(15);\n expect(vector.getIndex(2)).toBe(20);\n });\n\n it(\"Should calculate values with negative delta\", () => {\n const vector = new SequenceSelectionVector(100, -10, 5);\n expect(vector.getIndex(0)).toBe(100);\n expect(vector.getIndex(1)).toBe(90);\n expect(vector.getIndex(2)).toBe(80);\n });\n\n it(\"Should throw RangeError for out of bounds indices\", () => {\n const vector = new SequenceSelectionVector(0, 1, 5);\n expect(() => vector.getIndex(80)).toThrowError(\"Index out of bounds\");\n expect(() => vector.getIndex(-36)).toThrowError(\"Index out of bounds\");\n });\n });\n\n describe(\"setIndex Test\", () => {\n it(\"Should update value at specified index\", () => {\n const vector = new SequenceSelectionVector(0, 1, 5);\n vector.setIndex(0, 25);\n vector.setIndex(2, -48);\n vector.setIndex(3, 1000000000000001);\n\n expect(vector.getIndex(0)).toBe(25);\n expect(vector.getIndex(2)).toBe(-48);\n expect(vector.getIndex(3)).toBe(1000000000000001);\n });\n\n it(\"Should throw RangeError for out of bounds indices\", () => {\n const vector = new SequenceSelectionVector(0, 1, 5);\n expect(() => vector.setIndex(-1, 0)).toThrowError(\"Index out of bounds\");\n expect(() => vector.setIndex(25, 52)).toThrowError(\"Index out of bounds\");\n });\n });\n\n describe(\"limit Test\", () => {\n it(\"Should initialize limit to size\", () => {\n const vector = new SequenceSelectionVector(0, 1, 5);\n expect(vector.limit).toBe(5);\n\n const emptyVector = new SequenceSelectionVector(0, 1, 0);\n expect(emptyVector.limit).toBe(0);\n });\n\n it(\"Should update limit independently of capacity\", () => {\n const vector = new SequenceSelectionVector(0, 1, 10);\n expect(vector.capacity).toBe(10);\n\n vector.setLimit(3);\n expect(vector.limit).toBe(3);\n expect(vector.capacity).toBe(10);\n\n vector.setLimit(8);\n expect(vector.limit).toBe(8);\n expect(vector.capacity).toBe(10);\n });\n\n it(\"Should throw RangeError for negative limit\", () => {\n const vector = new SequenceSelectionVector(0, 1, 5);\n expect(() => vector.setLimit(-1)).toThrowError(\"Limit out of bounds\");\n expect(() => vector.setLimit(100)).toThrowError(\"Limit out of bounds\");\n });\n\n it(\"Should allow setting limit to 0\", () => {\n const vector = new SequenceSelectionVector(0, 1, 5);\n vector.setLimit(0);\n expect(vector.limit).toBe(0);\n });\n });\n\n describe(\"selectionValues Test\", () => {\n it(\"Should return array with sequential values\", () => {\n const vector = new SequenceSelectionVector(0, 1, 5);\n const values = vector.selectionValues();\n expect(values).toStrictEqual([0, 1, 2, 3, 4]);\n });\n\n it(\"Should return empty array for empty vector\", () => {\n const vector = new SequenceSelectionVector(0, 1, 0);\n expect(vector.selectionValues()).toStrictEqual([]);\n });\n\n it(\"Should return array with custom base and delta\", () => {\n const vector = new SequenceSelectionVector(10, 5, 5);\n expect(vector.selectionValues()).toStrictEqual([10, 15, 20, 25, 30]);\n });\n\n it(\"Should return array with negative delta\", () => {\n const vector = new SequenceSelectionVector(100, -10, 5);\n expect(vector.selectionValues()).toStrictEqual([100, 90, 80, 70, 60]);\n });\n\n it(\"Should reflect modified values\", () => {\n const vector = new SequenceSelectionVector(0, 1, 3);\n vector.setIndex(2, 999);\n const values = vector.selectionValues();\n expect(values).toStrictEqual([0, 1, 999]);\n });\n });\n\n describe(\"capacity Test\", () => {\n it(\"Should return capacity equal to size\", () => {\n const vector = new SequenceSelectionVector(0, 1, 5);\n expect(vector.capacity).toBe(5);\n });\n\n it(\"Should return 0 for empty vector\", () => {\n const vector = new SequenceSelectionVector(0, 1, 0);\n expect(vector.capacity).toBe(0);\n });\n\n it(\"Should remain constant when limit changes\", () => {\n const vector = new SequenceSelectionVector(10, 5, 50);\n expect(vector.capacity).toBe(50);\n\n vector.setLimit(25);\n expect(vector.capacity).toBe(50);\n });\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fixedSizeVector.js","sourceRoot":"","sources":["../../src/vector/fixedSizeVector.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,MAAM,OAAgB,eAA8C,SAAQ,MAAY;CAAG"}
1
+ {"version":3,"file":"fixedSizeVector.js","sourceRoot":"","sources":["../../src/vector/fixedSizeVector.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,MAAM,OAAgB,eAA8C,SAAQ,MAAY;CAAG","sourcesContent":["import Vector from \"./vector\";\n\nexport abstract class FixedSizeVector<T extends ArrayBufferView, K> extends Vector<T, K> {}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"bitVector.js","sourceRoot":"","sources":["../../../src/vector/flat/bitVector.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,SAAS;IACT,MAAM,CAAa;IACnB,KAAK,CAAS;IAE/B;;;OAGG;IACH,YAAY,MAAkB,EAAE,IAAY;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,KAAa;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,KAAc;QAC7B,oDAAoD;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,CAAC,KAAa;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI;QACA,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ"}
1
+ {"version":3,"file":"bitVector.js","sourceRoot":"","sources":["../../../src/vector/flat/bitVector.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,SAAS;IACT,MAAM,CAAa;IACnB,KAAK,CAAS;IAE/B;;;OAGG;IACH,YAAY,MAAkB,EAAE,IAAY;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,KAAa;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,KAAc;QAC7B,oDAAoD;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,CAAC,KAAa;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI;QACA,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ","sourcesContent":["export default class BitVector {\n private readonly values: Uint8Array;\n private readonly _size: number;\n\n /**\n * @param values The byte buffer containing the bit values in least-significant bit (LSB)\n * numbering\n */\n constructor(values: Uint8Array, size: number) {\n this.values = values;\n this._size = size;\n }\n\n get(index: number): boolean {\n const byteIndex = Math.floor(index / 8);\n const bitIndex = index % 8;\n const b = this.values[byteIndex];\n return ((b >> bitIndex) & 1) === 1;\n }\n\n set(index: number, value: boolean): void {\n //TODO: refactor -> improve quick and dirty solution\n const byteIndex = Math.floor(index / 8);\n const bitIndex = index % 8;\n this.values[byteIndex] = this.values[byteIndex] | ((value ? 1 : 0) << bitIndex);\n }\n\n getInt(index: number): number {\n const byteIndex = Math.floor(index / 8);\n const bitIndex = index % 8;\n const b = this.values[byteIndex];\n return (b >> bitIndex) & 1;\n }\n\n size(): number {\n return this._size;\n }\n\n getBuffer(): Uint8Array {\n return this.values;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"booleanFlatVector.js","sourceRoot":"","sources":["../../../src/vector/flat/booleanFlatVector.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,MAAM,OAAO,iBAAkB,SAAQ,MAA2B;IAC7C,UAAU,CAAY;IAEvC,YAAY,IAAY,EAAE,UAAqB,EAAE,uBAA2C;QACxF,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,EAAE,uBAAuB,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAES,kBAAkB,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;CACJ"}
1
+ {"version":3,"file":"booleanFlatVector.js","sourceRoot":"","sources":["../../../src/vector/flat/booleanFlatVector.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,MAAM,OAAO,iBAAkB,SAAQ,MAA2B;IAC7C,UAAU,CAAY;IAEvC,YAAY,IAAY,EAAE,UAAqB,EAAE,uBAA2C;QACxF,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,EAAE,uBAAuB,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAES,kBAAkB,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;CACJ","sourcesContent":["import type BitVector from \"./bitVector\";\nimport Vector from \"../vector\";\n\nexport class BooleanFlatVector extends Vector<Uint8Array, boolean> {\n private readonly dataVector: BitVector;\n\n constructor(name: string, dataVector: BitVector, sizeOrNullabilityBuffer: number | BitVector) {\n super(name, dataVector.getBuffer(), sizeOrNullabilityBuffer);\n this.dataVector = dataVector;\n }\n\n protected getValueFromBuffer(index: number): boolean {\n return this.dataVector.get(index);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"doubleFlatVector.js","sourceRoot":"","sources":["../../../src/vector/flat/doubleFlatVector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,OAAO,gBAAiB,SAAQ,eAAqC;IAC7D,kBAAkB,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACJ"}
1
+ {"version":3,"file":"doubleFlatVector.js","sourceRoot":"","sources":["../../../src/vector/flat/doubleFlatVector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,OAAO,gBAAiB,SAAQ,eAAqC;IAC7D,kBAAkB,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACJ","sourcesContent":["import { FixedSizeVector } from \"../fixedSizeVector\";\n\nexport class DoubleFlatVector extends FixedSizeVector<Float64Array, number> {\n protected getValueFromBuffer(index: number): number {\n return this.dataBuffer[index];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"floatFlatVector.js","sourceRoot":"","sources":["../../../src/vector/flat/floatFlatVector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,OAAO,eAAgB,SAAQ,eAAqC;IAC5D,kBAAkB,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACJ"}
1
+ {"version":3,"file":"floatFlatVector.js","sourceRoot":"","sources":["../../../src/vector/flat/floatFlatVector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,OAAO,eAAgB,SAAQ,eAAqC;IAC5D,kBAAkB,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACJ","sourcesContent":["import { FixedSizeVector } from \"../fixedSizeVector\";\n\nexport class FloatFlatVector extends FixedSizeVector<Float32Array, number> {\n protected getValueFromBuffer(index: number): number {\n return this.dataBuffer[index];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"floatFlatVector.spec.js","sourceRoot":"","sources":["../../../src/vector/flat/floatFlatVector.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"floatFlatVector.spec.js","sourceRoot":"","sources":["../../../src/vector/flat/floatFlatVector.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport { FloatFlatVector } from \"./floatFlatVector\";\n\ndescribe(\"FloatFlatVector\", () => {\n it(\"should construct and return values correctly\", () => {\n const data = new Float32Array([1.5, 2.5, 3.5, 4.5, 5.5]);\n const vec = new FloatFlatVector(\"test\", data, data.length);\n\n expect(vec.name).toBe(\"test\");\n expect(vec.size).toBe(5);\n expect(vec.getValue(0)).toBe(1.5);\n expect(vec.getValue(2)).toBe(3.5);\n expect(vec.getValue(4)).toBe(5.5);\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"intFlatVector.js","sourceRoot":"","sources":["../../../src/vector/flat/intFlatVector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,OAAO,aAAc,SAAQ,eAAmC;IACxD,kBAAkB,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACJ"}
1
+ {"version":3,"file":"intFlatVector.js","sourceRoot":"","sources":["../../../src/vector/flat/intFlatVector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,OAAO,aAAc,SAAQ,eAAmC;IACxD,kBAAkB,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACJ","sourcesContent":["import { FixedSizeVector } from \"../fixedSizeVector\";\n\nexport class IntFlatVector extends FixedSizeVector<Int32Array, number> {\n protected getValueFromBuffer(index: number): number {\n return this.dataBuffer[index];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"intFlatVector.spec.js","sourceRoot":"","sources":["../../../src/vector/flat/intFlatVector.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"intFlatVector.spec.js","sourceRoot":"","sources":["../../../src/vector/flat/intFlatVector.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport { IntFlatVector } from \"./intFlatVector\";\n\ndescribe(\"IntFlatVector\", () => {\n it(\"should construct and return values correctly\", () => {\n const data = new Int32Array([10, 20, 30, 40, 50]);\n const vec = new IntFlatVector(\"test\", data, data.length);\n\n expect(vec.name).toBe(\"test\");\n expect(vec.size).toBe(5);\n expect(vec.has(0)).toBe(true);\n expect(vec.getValue(0)).toBe(10);\n expect(vec.getValue(2)).toBe(30);\n expect(vec.getValue(4)).toBe(50);\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"longFlatVector.js","sourceRoot":"","sources":["../../../src/vector/flat/longFlatVector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,OAAO,cAAe,SAAQ,eAAsC;IAC5D,kBAAkB,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACJ"}
1
+ {"version":3,"file":"longFlatVector.js","sourceRoot":"","sources":["../../../src/vector/flat/longFlatVector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,OAAO,cAAe,SAAQ,eAAsC;IAC5D,kBAAkB,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACJ","sourcesContent":["import { FixedSizeVector } from \"../fixedSizeVector\";\n\nexport class LongFlatVector extends FixedSizeVector<BigInt64Array, bigint> {\n protected getValueFromBuffer(index: number): bigint {\n return this.dataBuffer[index];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"longFlatVector.spec.js","sourceRoot":"","sources":["../../../src/vector/flat/longFlatVector.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"longFlatVector.spec.js","sourceRoot":"","sources":["../../../src/vector/flat/longFlatVector.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport { LongFlatVector } from \"./longFlatVector\";\n\ndescribe(\"LongFlatVector\", () => {\n it(\"should construct and return values correctly\", () => {\n const data = new BigInt64Array([10n, 20n, 30n, 40n, 50n]);\n const vec = new LongFlatVector(\"test\", data, data.length);\n\n expect(vec.name).toBe(\"test\");\n expect(vec.size).toBe(5);\n expect(vec.getValue(0)).toBe(10n);\n expect(vec.getValue(2)).toBe(30n);\n expect(vec.getValue(4)).toBe(50n);\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"stringFlatVector.js","sourceRoot":"","sources":["../../../src/vector/flat/stringFlatVector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,MAAM,OAAO,gBAAiB,SAAQ,kBAAsC;IACvD,WAAW,CAAc;IAE1C,YAAY,IAAY,EAAE,YAAwB,EAAE,UAAsB,EAAE,iBAA6B;QACrG,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACzC,CAAC;IAES,kBAAkB,CAAC,KAAa;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACzC,OAAO,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;CACJ"}
1
+ {"version":3,"file":"stringFlatVector.js","sourceRoot":"","sources":["../../../src/vector/flat/stringFlatVector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,MAAM,OAAO,gBAAiB,SAAQ,kBAAsC;IACvD,WAAW,CAAc;IAE1C,YAAY,IAAY,EAAE,YAAwB,EAAE,UAAsB,EAAE,iBAA6B;QACrG,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACzC,CAAC;IAES,kBAAkB,CAAC,KAAa;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACzC,OAAO,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;CACJ","sourcesContent":["import { VariableSizeVector } from \"../variableSizeVector\";\nimport type BitVector from \"./bitVector\";\nimport { decodeString } from \"../../decoding/decodingUtils\";\n\nexport class StringFlatVector extends VariableSizeVector<Uint8Array, string> {\n private readonly textEncoder: TextEncoder;\n\n constructor(name: string, offsetBuffer: Int32Array, dataBuffer: Uint8Array, nullabilityBuffer?: BitVector) {\n super(name, offsetBuffer, dataBuffer, nullabilityBuffer ?? offsetBuffer.length - 1);\n this.textEncoder = new TextEncoder();\n }\n\n protected getValueFromBuffer(index: number): string {\n const start = this.offsetBuffer[index];\n const end = this.offsetBuffer[index + 1];\n return decodeString(this.dataBuffer, start, end);\n }\n}\n"]}