You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			23 lines
		
	
	
		
			842 B
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			23 lines
		
	
	
		
			842 B
		
	
	
	
		
			TypeScript
		
	
export function cleanSearchTerm(searchTerm: string) {
 | 
						|
  const lowercase = searchTerm.toLowerCase();
 | 
						|
  const withoutSpecialCharacters = lowercase.replace(/([!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~])/g, ' ');
 | 
						|
  const whiteSpaceNormalized = withoutSpecialCharacters.replace(/\s+/g, ' ');
 | 
						|
  const byToken = whiteSpaceNormalized.split(' ');
 | 
						|
  // be aware that a user typing Note To Self will have an issue when the `not` part of it is typed as the not word is reserved
 | 
						|
  const withoutSpecialTokens = byToken.filter(
 | 
						|
    token =>
 | 
						|
      token &&
 | 
						|
      token !== 'and' &&
 | 
						|
      token !== 'or' &&
 | 
						|
      token !== 'not' &&
 | 
						|
      token !== ')' &&
 | 
						|
      token !== '(' &&
 | 
						|
      token !== '+' &&
 | 
						|
      token !== ',' &&
 | 
						|
      token !== 'near'
 | 
						|
  );
 | 
						|
  const withWildcards = withoutSpecialTokens.map(token => `${token}*`);
 | 
						|
 | 
						|
  return withWildcards.join(' ').trim();
 | 
						|
}
 |