All files index.js

100% Statements 17/17
100% Branches 15/15
100% Functions 2/2
100% Lines 16/16
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58          42x           1x 8x   8x 1x     7x 2x 2x     5x 2x 2x     3x           3x 3x   3x           3x                            
import parse from './parse'
import translate from './translate'
import { ID, NAME, KEYWORD, SOURCE, TARGET, getLang, getLangs } from './constants'
import icon from './icon.png'
 
const langs = getLangs().map(({ code, name }) => ({
  icon,
  title: name,
  subtitle: code,
}))
 
const fn = async ({ term, display }) => {
  const { match, query, source, target } = parse(term)
 
  if (!match) {
    return
  }
 
  if (match && !query) {
    display({ icon, title: NAME })
    return
  }
 
  if (match && (query === 'l' || query === 'languages')) {
    display(langs)
    return
  }
 
  display({
    icon,
    id: ID,
    title: 'Loading...',
  })
 
  const { code: sourceCode } = source || getLang(SOURCE)
  const { code: targetCode, name } = target || getLang(TARGET)
 
  const title = await translate({
    query,
    source: sourceCode,
    target: targetCode,
  })
 
  display({
    icon,
    id: ID,
    title,
    subtitle: name,
  })
}
 
export default {
  icon,
  name: NAME,
  keyword: KEYWORD,
  fn,
}