All files / src runner.js

0% Statements 0/24
0% Branches 0/10
0% Functions 0/10
0% Lines 0/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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                                                                             
module.exports = failEarly => {
  const handle = handler(failEarly)
 
  return pxi => {
    process.stdin.setEncoding('utf8')
 
    process.stdout.on('error', () => process.exit(1))
    process.stderr.on('error', () => process.exit(1))
 
    process.stdin
    .on('data', data => {
      const {str} = handle(pxi(data, false))
      process.stdout.write(str)
    })
    .on('end',   () => {
      const {str} = handle(pxi('', true))
      process.stdout.write(str)
      process.exit(0)
    })
    .on('error', () => process.exit(1))
  }
}
 
function handler (failEarly) {
  return obj => {
    const err = obj.err || []
    if (err.length > 0) {
      const msgs = err.map(({msg, line, info}) =>
        (typeof line !== 'undefined' ? '(Line ' + line + ') ' : '') +
        msg + 
        (typeof info !== 'undefined' ? ', in ' + info : '') +
        '\n'
      )
      process.stderr.write(msgs.join(''))
      if (failEarly) process.exit(1)
    }
    return obj
  }
}