verso-db 0.1.4 → 0.2.0

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 (110) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +81 -49
  3. package/dist/BinaryHeap.d.ts +16 -5
  4. package/dist/BinaryHeap.d.ts.map +1 -1
  5. package/dist/BinaryHeap.js +138 -0
  6. package/dist/BinaryHeap.js.map +1 -0
  7. package/dist/Collection.d.ts +98 -17
  8. package/dist/Collection.d.ts.map +1 -1
  9. package/dist/Collection.js +1186 -0
  10. package/dist/Collection.js.map +1 -0
  11. package/dist/HNSWIndex.d.ts +170 -15
  12. package/dist/HNSWIndex.d.ts.map +1 -1
  13. package/dist/HNSWIndex.js +2818 -0
  14. package/dist/HNSWIndex.js.map +1 -0
  15. package/dist/MaxBinaryHeap.d.ts +2 -60
  16. package/dist/MaxBinaryHeap.d.ts.map +1 -1
  17. package/dist/MaxBinaryHeap.js +5 -0
  18. package/dist/MaxBinaryHeap.js.map +1 -0
  19. package/dist/SearchWorker.d.ts +104 -0
  20. package/dist/SearchWorker.d.ts.map +1 -0
  21. package/dist/SearchWorker.js +573 -0
  22. package/dist/SearchWorker.js.map +1 -0
  23. package/dist/VectorDB.d.ts +19 -5
  24. package/dist/VectorDB.d.ts.map +1 -1
  25. package/dist/VectorDB.js +246 -0
  26. package/dist/VectorDB.js.map +1 -0
  27. package/dist/WorkerPool.d.ts +92 -0
  28. package/dist/WorkerPool.d.ts.map +1 -0
  29. package/dist/WorkerPool.js +266 -0
  30. package/dist/WorkerPool.js.map +1 -0
  31. package/dist/backends/JsDistanceBackend.d.ts +3 -20
  32. package/dist/backends/JsDistanceBackend.d.ts.map +1 -1
  33. package/dist/backends/JsDistanceBackend.js +163 -0
  34. package/dist/backends/JsDistanceBackend.js.map +1 -0
  35. package/dist/encoding/DeltaEncoder.d.ts +2 -2
  36. package/dist/encoding/DeltaEncoder.d.ts.map +1 -1
  37. package/dist/encoding/DeltaEncoder.js +199 -0
  38. package/dist/encoding/DeltaEncoder.js.map +1 -0
  39. package/dist/errors.js +97 -0
  40. package/dist/errors.js.map +1 -0
  41. package/dist/index.d.ts +16 -17
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +61 -3419
  44. package/dist/index.js.map +1 -0
  45. package/dist/presets.d.ts +9 -9
  46. package/dist/presets.d.ts.map +1 -1
  47. package/dist/presets.js +205 -0
  48. package/dist/presets.js.map +1 -0
  49. package/dist/quantization/ScalarQuantizer.d.ts +10 -34
  50. package/dist/quantization/ScalarQuantizer.d.ts.map +1 -1
  51. package/dist/quantization/ScalarQuantizer.js +346 -0
  52. package/dist/quantization/ScalarQuantizer.js.map +1 -0
  53. package/dist/storage/BatchWriter.d.ts.map +1 -1
  54. package/dist/storage/BatchWriter.js +351 -0
  55. package/dist/storage/BatchWriter.js.map +1 -0
  56. package/dist/storage/BunStorageBackend.d.ts +12 -5
  57. package/dist/storage/BunStorageBackend.d.ts.map +1 -1
  58. package/dist/storage/BunStorageBackend.js +182 -0
  59. package/dist/storage/BunStorageBackend.js.map +1 -0
  60. package/dist/storage/MemoryBackend.d.ts.map +1 -1
  61. package/dist/storage/MemoryBackend.js +109 -0
  62. package/dist/storage/MemoryBackend.js.map +1 -0
  63. package/dist/storage/OPFSBackend.d.ts +9 -1
  64. package/dist/storage/OPFSBackend.d.ts.map +1 -1
  65. package/dist/storage/OPFSBackend.js +325 -0
  66. package/dist/storage/OPFSBackend.js.map +1 -0
  67. package/dist/storage/StorageBackend.d.ts +1 -1
  68. package/dist/storage/StorageBackend.js +12 -0
  69. package/dist/storage/StorageBackend.js.map +1 -0
  70. package/dist/storage/WriteAheadLog.d.ts +15 -11
  71. package/dist/storage/WriteAheadLog.d.ts.map +1 -1
  72. package/dist/storage/WriteAheadLog.js +321 -0
  73. package/dist/storage/WriteAheadLog.js.map +1 -0
  74. package/dist/storage/createStorageBackend.d.ts +4 -0
  75. package/dist/storage/createStorageBackend.d.ts.map +1 -1
  76. package/dist/storage/createStorageBackend.js +119 -0
  77. package/dist/storage/createStorageBackend.js.map +1 -0
  78. package/dist/storage/index.d.ts +3 -3
  79. package/dist/storage/index.js +33 -0
  80. package/dist/storage/index.js.map +1 -0
  81. package/dist/storage/nodeFsRuntime.d.ts +14 -0
  82. package/dist/storage/nodeFsRuntime.d.ts.map +1 -0
  83. package/dist/storage/nodeFsRuntime.js +105 -0
  84. package/dist/storage/nodeFsRuntime.js.map +1 -0
  85. package/package.json +47 -23
  86. package/dist/Storage.d.ts +0 -54
  87. package/dist/Storage.d.ts.map +0 -1
  88. package/dist/backends/DistanceBackend.d.ts +0 -5
  89. package/dist/backends/DistanceBackend.d.ts.map +0 -1
  90. package/src/BinaryHeap.ts +0 -131
  91. package/src/Collection.ts +0 -695
  92. package/src/HNSWIndex.ts +0 -1839
  93. package/src/MaxBinaryHeap.ts +0 -175
  94. package/src/Storage.ts +0 -435
  95. package/src/VectorDB.ts +0 -109
  96. package/src/backends/DistanceBackend.ts +0 -17
  97. package/src/backends/JsDistanceBackend.ts +0 -227
  98. package/src/encoding/DeltaEncoder.ts +0 -217
  99. package/src/errors.ts +0 -110
  100. package/src/index.ts +0 -138
  101. package/src/presets.ts +0 -229
  102. package/src/quantization/ScalarQuantizer.ts +0 -383
  103. package/src/storage/BatchWriter.ts +0 -336
  104. package/src/storage/BunStorageBackend.ts +0 -161
  105. package/src/storage/MemoryBackend.ts +0 -120
  106. package/src/storage/OPFSBackend.ts +0 -250
  107. package/src/storage/StorageBackend.ts +0 -74
  108. package/src/storage/WriteAheadLog.ts +0 -326
  109. package/src/storage/createStorageBackend.ts +0 -137
  110. package/src/storage/index.ts +0 -53
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeFsRuntime.js","sourceRoot":"","sources":["../../src/storage/nodeFsRuntime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "verso-db",
3
- "version": "0.1.4",
4
- "description": "High-performance vector search with HNSW indexing for Bun and Browser. 100% recall, 4x memory reduction with Int8 quantization.",
3
+ "version": "0.2.0",
4
+ "description": "High-performance vector search with HNSW indexing for Bun, Node.js, and Browser. 100% recall, 4x memory reduction with Int8 quantization.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
@@ -9,7 +9,7 @@
9
9
  "exports": {
10
10
  ".": {
11
11
  "types": "./dist/index.d.ts",
12
- "bun": "./src/index.ts",
12
+ "bun": "./dist/index.js",
13
13
  "import": "./dist/index.js",
14
14
  "default": "./dist/index.js"
15
15
  },
@@ -17,7 +17,7 @@
17
17
  },
18
18
  "files": [
19
19
  "dist",
20
- "src",
20
+ "dist/*.map",
21
21
  "README.md",
22
22
  "LICENSE",
23
23
  "CHANGELOG.md"
@@ -26,16 +26,24 @@
26
26
  "access": "public"
27
27
  },
28
28
  "scripts": {
29
- "build": "bun build ./src/index.ts --outdir ./dist --target bun && bun run build:types",
29
+ "build": "bun run build:js && bun run build:types",
30
+ "build:js": "bun run ./scripts/build-dist.ts",
30
31
  "build:types": "tsc --emitDeclarationOnly --declaration --outDir ./dist",
31
- "test": "bun test",
32
+ "test": "bun test ./test",
32
33
  "test:browser": "vitest --config vitest.browser.config.ts run",
33
34
  "test:browser:watch": "vitest --config vitest.browser.config.ts",
34
35
  "test:browser:ui": "vitest --config vitest.browser.config.ts --ui",
35
- "prepublishOnly": "bun run build",
36
- "bench": "bun run benchmarks/vector_search.bench.ts && bun run benchmarks/hnsw.bench.ts && bun run benchmarks/storage.bench.ts",
37
- "benchmark:recall": "bun run benchmarks/recall_validation.bench.ts",
38
- "benchmark:memory": "bun run benchmarks/memory_usage_final.bench.ts",
36
+ "verify:dist": "bun run ./scripts/verify-dist.ts",
37
+ "prepublishOnly": "bun run build && bun run verify:dist",
38
+ "bench": "bun run benchmarks/hnsw.bench.ts",
39
+ "benchmark:recall": "bun run benchmarks/baseline_recall.ts",
40
+ "benchmark:storage": "bun run benchmarks/storage.bench.ts",
41
+ "benchmark:comprehensive": "bun run benchmarks/comprehensive_benchmark.ts",
42
+ "benchmark:lancedb": "bun run benchmarks/lancedb_comparison_benchmark.ts",
43
+ "benchmark:qdrant": "bun run benchmarks/qdrant_comparison_benchmark.ts",
44
+ "benchmark:comparison": "bun run benchmarks/unified_comparison_benchmark.ts",
45
+ "benchmark:microbench": "bun run benchmarks/optimization_microbench.ts",
46
+ "benchmark:optimization": "bun run benchmarks/optimization_benchmark.ts",
39
47
  "release": "semantic-release",
40
48
  "publish:dry": "bunx npm publish --dry-run"
41
49
  },
@@ -66,34 +74,50 @@
66
74
  "url": "https://github.com/briansunter/verso/issues"
67
75
  },
68
76
  "homepage": "https://github.com/briansunter/verso#readme",
77
+ "sideEffects": false,
69
78
  "engines": {
70
- "bun": ">=1.0.0"
79
+ "bun": ">=1.0.0",
80
+ "node": ">=20.0.0"
71
81
  },
72
82
  "peerDependencies": {
73
83
  "typescript": "^5"
74
84
  },
85
+ "peerDependenciesMeta": {
86
+ "typescript": {
87
+ "optional": true
88
+ }
89
+ },
75
90
  "devDependencies": {
76
- "@huggingface/hub": "^2.7.0",
91
+ "@huggingface/hub": "^2.8.1",
77
92
  "@lancedb/lancedb": "^0.22.3",
78
- "@qdrant/js-client-rest": "^1.16.1",
93
+ "@qdrant/js-client-rest": "^1.16.2",
79
94
  "@semantic-release/changelog": "^6.0.3",
80
95
  "@semantic-release/commit-analyzer": "^13.0.1",
81
96
  "@semantic-release/git": "^10.0.1",
82
- "@semantic-release/github": "^12.0.2",
83
- "@semantic-release/npm": "^13.1.3",
97
+ "@semantic-release/github": "^12.0.3",
98
+ "@semantic-release/npm": "^13.1.4",
84
99
  "@semantic-release/release-notes-generator": "^14.1.0",
85
- "@types/bun": "latest",
86
- "@vitest/browser": "^4.0.14",
87
- "@vitest/browser-playwright": "^4.0.14",
100
+ "@types/bun": "^1.3.8",
101
+ "@vitest/browser": "^4.0.18",
102
+ "@vitest/browser-playwright": "^4.0.18",
88
103
  "hnsw": "^1.0.3",
89
- "hyparquet": "^1.21.1",
104
+ "hyparquet": "^1.24.1",
90
105
  "hyparquet-compressors": "^1.1.1",
91
106
  "mitata": "^1.0.34",
92
- "playwright": "^1.57.0",
93
- "semantic-release": "^25.0.2",
107
+ "playwright": "^1.58.2",
108
+ "semantic-release": "^25.0.3",
94
109
  "simsimd": "^6.5.5",
95
- "typescript": "^5.0.0",
96
- "vitest": "^4.0.14",
110
+ "typescript": "^5.9.3",
111
+ "vitest": "^4.0.18",
97
112
  "wabt": "^1.0.39"
113
+ },
114
+ "overrides": {
115
+ "tar": "7.5.7",
116
+ "npm": "11.9.0",
117
+ "lodash": "4.17.23",
118
+ "lodash-es": "4.17.23",
119
+ "undici": "6.23.0",
120
+ "diff": "8.0.3",
121
+ "@isaacs/brace-expansion": "5.0.1"
98
122
  }
99
123
  }
package/dist/Storage.d.ts DELETED
@@ -1,54 +0,0 @@
1
- export declare class MetadataStorage {
2
- private metadataMap;
3
- private idList;
4
- constructor();
5
- private ensureInitialized;
6
- set(id: string, metadata: any): void;
7
- get(id: string): any | undefined;
8
- has(id: string): boolean;
9
- delete(id: string): boolean;
10
- getAllIds(): string[];
11
- entries(): [string, any][];
12
- clear(): void;
13
- destroy(): void;
14
- size(): number;
15
- saveToDisk(filePath: string): Promise<void>;
16
- private createBinaryBuffer;
17
- loadFromDisk(filePath: string): Promise<void>;
18
- private loadFromBinaryBuffer;
19
- }
20
- export declare class VectorStorage {
21
- private dimension;
22
- private vectors;
23
- private vectorCount;
24
- private capacity;
25
- private filePath;
26
- private fileHandle;
27
- constructor(dimension: number, initialCapacity?: number);
28
- initializeForMemoryMapping(filePath: string): Promise<void>;
29
- addVector(vector: number[]): number;
30
- getVector(index: number): number[];
31
- getVectorAsTypedArray(index: number): Float32Array;
32
- getVectorCount(): number;
33
- getDimension(): number;
34
- private expandCapacity;
35
- saveToDisk(filePath: string): Promise<void>;
36
- loadFromDisk(filePath: string): Promise<void>;
37
- destroy(): void;
38
- }
39
- export declare class MemoryMappedVectorStorage {
40
- private dimension;
41
- private vectorCount;
42
- private filePath;
43
- private mappedBuffer;
44
- private mappedView;
45
- constructor(dimension: number);
46
- initializeMemoryMapping(filePath: string): Promise<void>;
47
- getVector(index: number): number[];
48
- getVectorAsTypedArray(index: number): Float32Array;
49
- getVectorCount(): number;
50
- getDimension(): number;
51
- appendVector(vector: number[]): Promise<void>;
52
- destroy(): void;
53
- }
54
- //# sourceMappingURL=Storage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Storage.d.ts","sourceRoot":"","sources":["../src/Storage.ts"],"names":[],"mappings":"AAKA,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,MAAM,CAAkB;;IAOhC,OAAO,CAAC,iBAAiB;IAMzB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI;IAUpC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAKhC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAKxB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAU3B,SAAS,IAAI,MAAM,EAAE;IAKrB,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;IAK1B,KAAK,IAAI,IAAI;IAMb,OAAO,IAAI,IAAI;IAMf,IAAI,IAAI,MAAM;IAKR,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjD,OAAO,CAAC,kBAAkB;IAoCpB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAanD,OAAO,CAAC,oBAAoB;CA6B7B;AAGD,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,UAAU,CAAa;gBAEnB,SAAS,EAAE,MAAM,EAAE,eAAe,GAAE,MAAa;IAOvD,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAejE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;IAuBnC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAclC,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY;IASlD,cAAc,IAAI,MAAM;IAIxB,YAAY,IAAI,MAAM;IAItB,OAAO,CAAC,cAAc;IAQhB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnD,OAAO,IAAI,IAAI;CAQhB;AAGD,qBAAa,yBAAyB;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,UAAU,CAA6B;gBAEnC,SAAS,EAAE,MAAM;IAKvB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B9D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAkBlC,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY;IAalD,cAAc,IAAI,MAAM;IAIxB,YAAY,IAAI,MAAM;IAIhB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4CnD,OAAO,IAAI,IAAI;CAMhB"}
@@ -1,5 +0,0 @@
1
- export interface DistanceBackend {
2
- batchL2(base: Float32Array, dim: number, ids: Uint32Array, query: Float32Array, out: Float32Array): void;
3
- batchDot(base: Float32Array, dim: number, ids: Uint32Array, query: Float32Array, out: Float32Array): void;
4
- }
5
- //# sourceMappingURL=DistanceBackend.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DistanceBackend.d.ts","sourceRoot":"","sources":["../../src/backends/DistanceBackend.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,OAAO,CACL,IAAI,EAAE,YAAY,EAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,YAAY,GAChB,IAAI,CAAC;IAER,QAAQ,CACN,IAAI,EAAE,YAAY,EAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,YAAY,GAChB,IAAI,CAAC;CACT"}
package/src/BinaryHeap.ts DELETED
@@ -1,131 +0,0 @@
1
- export class BinaryHeap {
2
- private ids: Uint32Array;
3
- private dists: Float32Array;
4
- private _size: number;
5
- private capacity: number;
6
- private lastPoppedValue: number = 0;
7
-
8
- constructor(capacity: number) {
9
- this.capacity = capacity;
10
- this.ids = new Uint32Array(capacity);
11
- this.dists = new Float32Array(capacity);
12
- this._size = 0;
13
- }
14
-
15
- /**
16
- * Push an element onto the heap.
17
- * When at capacity, simply returns without adding (caller manages bounds).
18
- * This is the correct behavior for HNSW candidate exploration.
19
- */
20
- push(id: number, dist: number): void {
21
- if (this._size >= this.capacity) {
22
- // At capacity - don't add more elements.
23
- // The caller is responsible for managing heap bounds.
24
- return;
25
- }
26
-
27
- this.ids[this._size] = id;
28
- this.dists[this._size] = dist;
29
- this._size++;
30
- this.heapifyUp(this._size - 1);
31
- }
32
-
33
- pop(): number {
34
- if (this._size === 0) return -1;
35
-
36
- const result = this.ids[0];
37
- this.lastPoppedValue = this.dists[0];
38
- this._size--;
39
- if (this._size > 0) {
40
- this.ids[0] = this.ids[this._size];
41
- this.dists[0] = this.dists[this._size];
42
- this.heapifyDown(0);
43
- }
44
- return result;
45
- }
46
-
47
- peek(): number {
48
- return this._size > 0 ? this.ids[0] : -1;
49
- }
50
-
51
- peekValue(): number {
52
- return this._size > 0 ? this.dists[0] : Infinity;
53
- }
54
-
55
- getLastPoppedValue(): number {
56
- return this.lastPoppedValue;
57
- }
58
-
59
- size(): number {
60
- return this._size;
61
- }
62
-
63
- clear(): void {
64
- this._size = 0;
65
- }
66
-
67
- isEmpty(): boolean {
68
- return this._size === 0;
69
- }
70
-
71
- getCapacity(): number {
72
- return this.capacity;
73
- }
74
-
75
- private heapifyUp(index: number): void {
76
- // Cache array references to avoid repeated property lookups
77
- const ids = this.ids;
78
- const dists = this.dists;
79
-
80
- while (index > 0) {
81
- // Use bitwise shift for faster integer division
82
- const parentIndex = (index - 1) >> 1;
83
- if (dists[parentIndex] <= dists[index]) break;
84
-
85
- // Inline swap for performance
86
- const tmpId = ids[index];
87
- ids[index] = ids[parentIndex];
88
- ids[parentIndex] = tmpId;
89
-
90
- const tmpDist = dists[index];
91
- dists[index] = dists[parentIndex];
92
- dists[parentIndex] = tmpDist;
93
-
94
- index = parentIndex;
95
- }
96
- }
97
-
98
- private heapifyDown(index: number): void {
99
- // Cache array references to avoid repeated property lookups
100
- const ids = this.ids;
101
- const dists = this.dists;
102
- const size = this._size;
103
-
104
- while (true) {
105
- const leftChild = (index << 1) + 1; // 2 * index + 1
106
- const rightChild = leftChild + 1; // 2 * index + 2
107
- let smallest = index;
108
-
109
- if (leftChild < size && dists[leftChild] < dists[smallest]) {
110
- smallest = leftChild;
111
- }
112
-
113
- if (rightChild < size && dists[rightChild] < dists[smallest]) {
114
- smallest = rightChild;
115
- }
116
-
117
- if (smallest === index) break;
118
-
119
- // Inline swap for performance
120
- const tmpId = ids[index];
121
- ids[index] = ids[smallest];
122
- ids[smallest] = tmpId;
123
-
124
- const tmpDist = dists[index];
125
- dists[index] = dists[smallest];
126
- dists[smallest] = tmpDist;
127
-
128
- index = smallest;
129
- }
130
- }
131
- }