File size: 665 Bytes
a23aa7d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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) : '';
};