Update archiving dependencies (#35896)

* update tar to latest (4.4.8)

* remove unused bz2 extraction code

* update geckodriver to latest (1.16.2)

* update untar to ensure destination exists
This commit is contained in:
Larry Gregory 2019-05-02 13:14:10 -04:00 committed by GitHub
parent a4fc174b47
commit ff46f19d1d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 36 additions and 147 deletions

View file

@ -230,7 +230,7 @@
"stream-stream": "^1.2.6",
"style-it": "^2.1.3",
"style-loader": "0.23.1",
"tar": "2.2.0",
"tar": "4.4.8",
"terser-webpack-plugin": "^1.1.0",
"thread-loader": "^2.1.2",
"tinygradient": "0.3.0",
@ -368,7 +368,7 @@
"exit-hook": "^2.1.0",
"faker": "1.1.0",
"fetch-mock": "7.3.0",
"geckodriver": "^1.16.1",
"geckodriver": "^1.16.2",
"getopts": "^2.2.4",
"grunt": "1.0.3",
"grunt-cli": "^1.2.0",
@ -434,4 +434,4 @@
"node": "10.15.2",
"yarn": "^1.10.1"
}
}
}

View file

@ -31,7 +31,7 @@ import del from 'del';
import deleteEmpty from 'delete-empty';
import { createPromiseFromStreams, createMapStream } from '../../../legacy/utils';
import { Extract } from 'tar';
import tar from 'tar';
const mkdirpAsync = promisify(mkdirpCb);
const writeFileAsync = promisify(fs.writeFile);
@ -174,12 +174,14 @@ export async function untar(source, destination, extractOptions = {}) {
assertAbsolute(source);
assertAbsolute(destination);
await mkdirpAsync(destination);
await createPromiseFromStreams([
fs.createReadStream(source),
createGunzip(),
new Extract({
tar.extract({
...extractOptions,
path: destination
cwd: destination
}),
]);
}

View file

@ -318,7 +318,6 @@
"stats-lite": "^2.2.0",
"style-it": "^2.1.3",
"styled-components": "3.3.3",
"tar-fs": "1.13.0",
"tinycolor2": "1.3.0",
"tinymath": "1.1.1",
"topojson-client": "3.0.0",
@ -327,7 +326,6 @@
"typescript-fsa": "^2.5.0",
"typescript-fsa-reducers": "^0.4.5",
"ui-select": "0.19.6",
"unbzip2-stream": "1.0.9",
"unstated": "^2.1.1",
"uuid": "3.0.1",
"venn.js": "0.2.9",

View file

@ -16,8 +16,6 @@ import { promisify } from 'util';
const FIXTURES_FOLDER = resolve(__dirname, '__fixtures__');
const SRC_FILE_UNCOMPRESSED = resolve(FIXTURES_FOLDER, 'file.md');
const SRC_FILE_COMPRESSED_ZIP = `${SRC_FILE_UNCOMPRESSED}.zip`;
const SRC_FILE_COMPRESSED_BZ2 = `${SRC_FILE_UNCOMPRESSED}.bz2`;
const SRC_FILE_COMPRESSED_TAR_BZ2 = `${SRC_FILE_UNCOMPRESSED}.tar.bz2`;
const EXTRACT_TARGET_FOLDER = resolve(FIXTURES_FOLDER, 'extract_target');
const EXTRACT_TARGET_FILE = resolve(EXTRACT_TARGET_FOLDER, 'file.md');
@ -106,57 +104,4 @@ describe('extract', () => {
});
}
});
describe('bunzip2()', () => {
it('throws an Error given a non-bz2 file', async () => {
let thrownException;
try {
await extract(SRC_FILE_UNCOMPRESSED, EXTRACT_TARGET_FOLDER);
} catch (e) {
thrownException = e;
}
expect(thrownException).to.be.an(ExtractError);
});
it('throws an Error given a non-tar.bz2 file', async () => {
let thrownException;
try {
await extract(SRC_FILE_COMPRESSED_BZ2, EXTRACT_TARGET_FOLDER);
} catch (e) {
thrownException = e;
}
expect(thrownException).to.be.an(ExtractError);
});
it('successfully extracts a valid tar.bz2 file to the given target', async () => {
await extract(SRC_FILE_COMPRESSED_TAR_BZ2, EXTRACT_TARGET_FOLDER);
const stats = fs.statSync(EXTRACT_TARGET_FILE);
expect(stats).to.be.an(Object);
const srcFileHash = await fileHash(SRC_FILE_UNCOMPRESSED);
const targetFileHash = await fileHash(EXTRACT_TARGET_FILE);
expect(targetFileHash).to.eql(srcFileHash);
});
if (isWindows) {
it(`Windows doesn't support chmod, so it's missing access tests. Windows is throwing EEXIST.`);
} else {
it('throws an ExtractError with cause.code of EACESS when target is un-writeable', async () => {
await fsp.mkdir(EXTRACT_TARGET_FOLDER, 0o444);
let thrownException;
try {
await extract(SRC_FILE_COMPRESSED_TAR_BZ2, EXTRACT_TARGET_FOLDER);
} catch (e) {
thrownException = e;
}
expect(thrownException).to.be.an(ExtractError);
expect(thrownException.cause.code).to.eql('EACCES');
});
}
});
});

View file

@ -1,28 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { ExtractError } from './extract_error';
import fs from 'fs';
import tar from 'tar-fs';
import unbzip2 from 'unbzip2-stream';
export function bunzip2(filepath, target) {
return new Promise(function (resolve, reject) {
fs.createReadStream(filepath)
.on('error', function (err) {
reject(new ExtractError(err));
})
.pipe(unbzip2())
.on('error', function (err) {
reject(new ExtractError(err));
})
.pipe(tar.extract(target))
.on('error', function (err) {
reject(new ExtractError(err));
})
.on('finish', resolve);
});
}

View file

@ -6,7 +6,6 @@
import path from 'path';
import { unzip } from './unzip';
import { bunzip2 } from './bunzip2';
import { ExtractError } from './extract_error';
export async function extract(archivePath, targetPath) {
@ -14,9 +13,6 @@ export async function extract(archivePath, targetPath) {
let unpacker;
switch (fileType) {
case 'bz2':
unpacker = bunzip2;
break;
case 'zip':
unpacker = unzip;
break;

View file

@ -12122,16 +12122,16 @@ gaze@^1.0.0, gaze@^1.1.0:
dependencies:
globule "^1.0.0"
geckodriver@^1.16.1:
version "1.16.1"
resolved "https://registry.yarnpkg.com/geckodriver/-/geckodriver-1.16.1.tgz#349ddc88244356eefc475d943c379bc320d7d59a"
integrity sha512-e16K82snvoG60GaMc9E4gIOXwc6HaVY9JIToaIlTI+eVjqnj96vUjQ+/gFZlOUw2N3g4KgST7RFpyoeyJ/jzkQ==
geckodriver@^1.16.2:
version "1.16.2"
resolved "https://registry.yarnpkg.com/geckodriver/-/geckodriver-1.16.2.tgz#4766e6eb6835e9ec8797f1dce1966df2b3fb5985"
integrity sha512-kXZP4QferAv57Ru4Fx2WYuu//ErKJP4hPEkJm4mSETo42jsdYFwdNxwQ4vCGhf14gsCdxU9YrwNupJ8gr1GxPg==
dependencies:
adm-zip "0.4.11"
bluebird "3.4.6"
got "5.6.0"
https-proxy-agent "2.2.1"
tar "4.0.2"
tar "4.4.2"
generate-function@^2.0.0:
version "2.3.1"
@ -17999,7 +17999,7 @@ minipass@^2.2.1:
safe-buffer "^5.1.1"
yallist "^3.0.0"
minipass@^2.3.4:
minipass@^2.2.4, minipass@^2.3.4:
version "2.3.5"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
@ -18007,10 +18007,10 @@ minipass@^2.3.4:
safe-buffer "^5.1.2"
yallist "^3.0.0"
minizlib@^1.0.4:
version "1.1.0"
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb"
integrity sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==
minizlib@^1.1.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
dependencies:
minipass "^2.2.1"
@ -24701,15 +24701,6 @@ tapable@^1.0.0, tapable@^1.1.0:
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c"
integrity sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==
tar-fs@1.13.0:
version "1.13.0"
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.13.0.tgz#4ac62c0de490dbba9e307d0a0312641091d5c45e"
integrity sha1-SsYsDeSQ27qeMH0KAxJkEJHVxF4=
dependencies:
mkdirp "^0.5.0"
pump "^1.0.0"
tar-stream "^1.1.2"
tar-fs@^1.16.2, tar-fs@^1.16.3:
version "1.16.3"
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509"
@ -24743,36 +24734,20 @@ tar-stream@^1.5.0:
to-buffer "^1.1.1"
xtend "^4.0.0"
tar@2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.0.tgz#527c595940b9673f386c7237759982ab2f274d08"
integrity sha1-UnxZWUC5Zz84bHI3dZmCqy8nTQg=
dependencies:
block-stream "*"
fstream "^1.0.2"
inherits "2"
tar@4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/tar/-/tar-4.0.2.tgz#e8e22bf3eec330e5c616d415a698395e294e8fad"
integrity sha512-4lWN4uAEWzw8aHyBUx9HWXvH3vIFEhOyvN22HfBzWpE07HaTBXM8ttSeCQpswRo5On4q3nmmYmk7Tomn0uhUaw==
tar@4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.2.tgz#60685211ba46b38847b1ae7ee1a24d744a2cd462"
integrity sha512-BfkE9CciGGgDsATqkikUHrQrraBCO+ke/1f6SFAEMnxyyfN9lxC+nW1NFWMpqH865DhHIy9vQi682gk1X7friw==
dependencies:
chownr "^1.0.1"
minipass "^2.2.1"
minizlib "^1.0.4"
fs-minipass "^1.2.5"
minipass "^2.2.4"
minizlib "^1.1.0"
mkdirp "^0.5.0"
safe-buffer "^5.1.2"
yallist "^3.0.2"
tar@^2.0.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
dependencies:
block-stream "*"
fstream "^1.0.2"
inherits "2"
tar@^4:
tar@4.4.8, tar@^4:
version "4.4.8"
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d"
integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==
@ -24785,6 +24760,15 @@ tar@^4:
safe-buffer "^5.1.2"
yallist "^3.0.2"
tar@^2.0.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
dependencies:
block-stream "*"
fstream "^1.0.2"
inherits "2"
tcp-port-used@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.1.tgz#46061078e2d38c73979a2c2c12b5a674e6689d70"
@ -26003,14 +25987,6 @@ ultron@~1.1.0:
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==
unbzip2-stream@1.0.9:
version "1.0.9"
resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.0.9.tgz#9d107697a8d539d7bfdb9378a1cd832836bb7f8f"
integrity sha1-nRB2l6jVOde/25N4oc2DKDa7f48=
dependencies:
buffer "^3.0.1"
through "^2.3.6"
unbzip2-stream@^1.0.9:
version "1.2.5"
resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz#73a033a567bbbde59654b193c44d48a7e4f43c47"