blob: d67769c1df0badd881fce317c8a767bf5a8304d4 [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001'use strict';
2const zlib = require('zlib');
3const decompressTar = require('decompress-tar');
4const fileType = require('file-type');
5const isStream = require('is-stream');
6
7module.exports = () => input => {
8 if (!Buffer.isBuffer(input) && !isStream(input)) {
9 return Promise.reject(new TypeError(`Expected a Buffer or Stream, got ${typeof input}`));
10 }
11
12 if (Buffer.isBuffer(input) && (!fileType(input) || fileType(input).ext !== 'gz')) {
13 return Promise.resolve([]);
14 }
15
16 const unzip = zlib.createGunzip();
17 const result = decompressTar()(unzip);
18
19 if (Buffer.isBuffer(input)) {
20 unzip.end(input);
21 } else {
22 input.pipe(unzip);
23 }
24
25 return result;
26};