| /** | |
| * Simple Levenshtein distance implementation (small N, no perf worries) | |
| */ | |
| const levenshtein = (a, b) => { | |
| const m = a.length; | |
| const n = b.length; | |
| const dp = Array.from({ | |
| length: m + 1 | |
| }, () => new Array(n + 1).fill(0)); | |
| for (let i = 0; i <= m; i++) dp[i][0] = i; | |
| for (let j = 0; j <= n; j++) dp[0][j] = j; | |
| for (let i = 1; i <= m; i++) { | |
| for (let j = 1; j <= n; j++) { | |
| const cost = a[i - 1] === b[j - 1] ? 0 : 1; | |
| dp[i][j] = Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + cost); | |
| } | |
| } | |
| return dp[m][n]; | |
| }; | |
| /** | |
| * Return suggestions with minimum distance found, up to distance 2. | |
| * | |
| * @internal | |
| */ | |
| export const suggest = (input, candidates) => { | |
| const distances = candidates.map(c => [levenshtein(input, c), c]).filter(([d]) => d <= 2) // Stricter threshold | |
| .sort(([a], [b]) => a - b); | |
| if (distances.length === 0) return []; | |
| // Only return suggestions with the minimum distance found | |
| const minDistance = distances[0][0]; | |
| return distances.filter(([d]) => d === minDistance).map(([, c]) => c); | |
| }; | |
| //# sourceMappingURL=auto-suggest.js.map |
Xet Storage Details
- Size:
- 1.11 kB
- Xet hash:
- aecfc17d91eeb2b521efaad6f08da13522544f22aae7128d7548883fa09e56bb
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.