blob: 1bc47b4eb2fcede9abf16d65d8f9b0745e68ff5f [file] [log] [blame]
'use strict'
const Base = require('./base.js')
const ownOr = require('own-or')
const domain = require('domain')
class Stdin extends Base {
constructor (options) {
options = options || {}
options.name = ownOr(options, 'name', '/dev/stdin')
super(options)
// This has to be here for node 0.10's wonky streams
this.stream = ownOr(options, 'tapStream', process.stdin)
this.stream.pause()
}
main (cb) {
this.domain.add(this.stream)
this.setTimeout(this.options.timeout)
this.stream.pipe(this.parser)
this.stream.resume()
this.once('end', cb)
}
threw (er, extra, proxy) {
extra = super.threw(er, extra, proxy)
this.options = extra
this.parser.abort(er.message, extra)
this.parser.end()
}
}
module.exports = Stdin