Urara-Blog/node_modules/.pnpm-store/v3/files/ac/9717d509c5654e63397e309f1f598c0adb1f228fcfd538a1ff643502e68d33d66f6b890e35c21b316f69064d46a67ea95febad1c85b395827ebcd8a5f56dfc
2022-08-14 01:14:53 +08:00

29 lines
665 B
Text

import leven from 'leven';
export const getSuggestion = ({
value,
suggestions,
format = (suggestion) => `Did you mean '${suggestion}'?`,
}: {
value: string | null;
suggestions: string[];
format?: (suggestion: string) => string;
}): string => {
if (!value) return '';
const bestSuggestion = suggestions.reduce(
(best, current) => {
const distance = leven(value, current);
if (best.distance > distance) {
return { value: current, distance };
}
return best;
},
{
distance: Infinity,
value: '',
}
);
return bestSuggestion.distance < value.length ? format(bestSuggestion.value) : '';
};