aboutsummaryrefslogtreecommitdiff
path: root/src/shared/urls.js
blob: 87b1a48abc3e760dd87efe1329ca916eec7d929e (plain) (blame)
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
const trimStart = (str) => {
  // NOTE String.trimStart is available on Firefox 61
  return str.replace(/^\s+/, '');
};

const normalizeUrl = (keywords, searchSettings) => {
  try {
    return new URL(keywords).href;
  } catch (e) {
    if (keywords.includes('.') && !keywords.includes(' ')) {
      return 'http://' + keywords;
    }
    let template = searchSettings.engines[searchSettings.default];
    let query = keywords;

    let first = trimStart(keywords).split(' ')[0];
    if (Object.keys(searchSettings.engines).includes(first)) {
      template = searchSettings.engines[first];
      query = trimStart(trimStart(keywords).slice(first.length));
    }
    return template.replace('{}', encodeURIComponent(query));
  }
};

export { normalizeUrl };