// Copyright 2019-2020 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only

export function cleanSearchTerm(searchTerm: string): string {
  const lowercase = searchTerm.toLowerCase();
  const withoutSpecialCharacters = lowercase.replace(
    /([!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~])/g,
    ' '
  );
  const whiteSpaceNormalized = withoutSpecialCharacters.replace(/\s+/g, ' ');
  const byToken = whiteSpaceNormalized.split(' ');
  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();
}