uncompress_stream.js 976 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. 'use strict';
  2. const fs = require('fs');
  3. const tar = require('tar-stream');
  4. const utils = require('../utils');
  5. const streamifier = require('streamifier');
  6. // stream.Writable
  7. class TarUncompressStream extends tar.extract {
  8. constructor(opts) {
  9. opts = opts || {};
  10. super(opts);
  11. const sourceType = utils.sourceType(opts.source);
  12. if (sourceType === 'file') {
  13. const stream = fs.createReadStream(opts.source, opts.fs);
  14. stream.on('error', err => this.emit('error', err));
  15. stream.pipe(this);
  16. return;
  17. }
  18. if (sourceType === 'buffer') {
  19. const stream = streamifier.createReadStream(opts.source, opts.streamifier);
  20. stream.on('error', err => this.emit('error', err));
  21. stream.pipe(this);
  22. return;
  23. }
  24. if (sourceType === 'stream') {
  25. opts.source.on('error', err => this.emit('error', err));
  26. opts.source.pipe(this);
  27. }
  28. // else: waiting to be piped
  29. }
  30. }
  31. module.exports = TarUncompressStream;