diff --git a/fixtures/file.tar.zst b/fixtures/file.tar.zst new file mode 100644 index 0000000..94d7807 Binary files /dev/null and b/fixtures/file.tar.zst differ diff --git a/index.js b/index.js index 6aa67ca..a9bdf6f 100644 --- a/index.js +++ b/index.js @@ -4,6 +4,7 @@ const fs = require('graceful-fs'); const decompressTar = require('decompress-tar'); const decompressTarbz2 = require('decompress-tarbz2'); const decompressTargz = require('decompress-targz'); +const decompressTarzst = require('@xingrz/decompress-tarzst').default; const decompressUnzip = require('decompress-unzip'); const makeDir = require('make-dir'); const pify = require('pify'); @@ -142,6 +143,7 @@ module.exports = (input, output, opts) => { decompressTar(), decompressTarbz2(), decompressTargz(), + decompressTarzst(), decompressUnzip() ]}, opts); diff --git a/package.json b/package.json index d6133a8..aecc274 100644 --- a/package.json +++ b/package.json @@ -26,10 +26,12 @@ "tar", "tar.bz", "tar.gz", + "tar.zst", "zip", "unzip" ], "dependencies": { + "@xingrz/decompress-tarzst": "^1.2.0", "decompress-tar": "^4.0.0", "decompress-tarbz2": "^4.0.0", "decompress-targz": "^4.0.0", diff --git a/test.js b/test.js index ba99d68..363fccc 100644 --- a/test.js +++ b/test.js @@ -24,6 +24,7 @@ test('extract file', async t => { const tarFiles = await m(path.join(__dirname, 'fixtures', 'file.tar')); const tarbzFiles = await m(path.join(__dirname, 'fixtures', 'file.tar.bz2')); const targzFiles = await m(path.join(__dirname, 'fixtures', 'file.tar.gz')); + const tarzstFiles = await m(path.join(__dirname, 'fixtures', 'file.tar.zst')); const zipFiles = await m(path.join(__dirname, 'fixtures', 'file.zip')); t.is(tarFiles[0].path, 'test.jpg'); @@ -32,6 +33,8 @@ test('extract file', async t => { t.true(isJpg(tarbzFiles[0].data)); t.is(targzFiles[0].path, 'test.jpg'); t.true(isJpg(targzFiles[0].data)); + t.is(tarzstFiles[0].path, 'test.jpg'); + t.true(isJpg(tarzstFiles[0].data)); t.is(zipFiles[0].path, 'test.jpg'); t.true(isJpg(zipFiles[0].data)); }); @@ -43,12 +46,15 @@ test('extract file using buffer', async t => { const tarbzFiles = await m(tarbzBuf); const targzBuf = await fsP.readFile(path.join(__dirname, 'fixtures', 'file.tar.gz')); const targzFiles = await m(targzBuf); + const tarzstBuf = await fsP.readFile(path.join(__dirname, 'fixtures', 'file.tar.zst')); + const tarzstFiles = await m(tarzstBuf); const zipBuf = await fsP.readFile(path.join(__dirname, 'fixtures', 'file.zip')); const zipFiles = await m(zipBuf); t.is(tarFiles[0].path, 'test.jpg'); t.is(tarbzFiles[0].path, 'test.jpg'); t.is(targzFiles[0].path, 'test.jpg'); + t.is(tarzstFiles[0].path, 'test.jpg'); t.is(zipFiles[0].path, 'test.jpg'); });