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