github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/test/integration/test-fixtures/npm-lock/node_modules/pump/test-browser.js (about)

     1  var stream = require('stream')
     2  var pump = require('./index')
     3  
     4  var rs = new stream.Readable()
     5  var ws = new stream.Writable()
     6  
     7  rs._read = function (size) {
     8    this.push(Buffer(size).fill('abc'))
     9  }
    10  
    11  ws._write = function (chunk, encoding, cb) {
    12    setTimeout(function () {
    13      cb()
    14    }, 100)
    15  }
    16  
    17  var toHex = function () {
    18    var reverse = new (require('stream').Transform)()
    19  
    20    reverse._transform = function (chunk, enc, callback) {
    21      reverse.push(chunk.toString('hex'))
    22      callback()
    23    }
    24  
    25    return reverse
    26  }
    27  
    28  var wsClosed = false
    29  var rsClosed = false
    30  var callbackCalled = false
    31  
    32  var check = function () {
    33    if (wsClosed && rsClosed && callbackCalled) {
    34      console.log('test-browser.js passes')
    35      clearTimeout(timeout)
    36    }
    37  }
    38  
    39  ws.on('finish', function () {
    40    wsClosed = true
    41    check()
    42  })
    43  
    44  rs.on('end', function () {
    45    rsClosed = true
    46    check()
    47  })
    48  
    49  var res = pump(rs, toHex(), toHex(), toHex(), ws, function () {
    50    callbackCalled = true
    51    check()
    52  })
    53  
    54  if (res !== ws) {
    55    throw new Error('should return last stream')
    56  }
    57  
    58  setTimeout(function () {
    59    rs.push(null)
    60    rs.emit('close')
    61  }, 1000)
    62  
    63  var timeout = setTimeout(function () {
    64    check()
    65    throw new Error('timeout')
    66  }, 5000)