Blame view

node_modules/are-we-there-yet/tracker-stream.js 963 Bytes
aaac7fed   liuqimichale   add
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
  'use strict'
  var util = require('util')
  var stream = require('readable-stream')
  var delegate = require('delegates')
  var Tracker = require('./tracker.js')
  
  var TrackerStream = module.exports = function (name, size, options) {
    stream.Transform.call(this, options)
    this.tracker = new Tracker(name, size)
    this.name = name
    this.id = this.tracker.id
    this.tracker.on('change', delegateChange(this))
  }
  util.inherits(TrackerStream, stream.Transform)
  
  function delegateChange (trackerStream) {
    return function (name, completion, tracker) {
      trackerStream.emit('change', name, completion, trackerStream)
    }
  }
  
  TrackerStream.prototype._transform = function (data, encoding, cb) {
    this.tracker.completeWork(data.length ? data.length : 1)
    this.push(data)
    cb()
  }
  
  TrackerStream.prototype._flush = function (cb) {
    this.tracker.finish()
    cb()
  }
  
  delegate(TrackerStream.prototype, 'tracker')
    .method('completed')
    .method('addWork')
    .method('finish')