uncompress_stream.js 958 B

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