mirror of
https://github.com/balena-io/balena-cli.git
synced 2025-01-18 10:46:34 +00:00
Reduce bluebird usage
Change-type: patch
This commit is contained in:
parent
3f084366db
commit
6ca7c34e57
@ -79,7 +79,7 @@ export default class DeviceInitCmd extends Command {
|
||||
const { flags: options } = this.parse<FlagsDef, {}>(DeviceInitCmd);
|
||||
|
||||
// Imports
|
||||
const { promisify } = await import('bluebird');
|
||||
const { promisify } = await import('util');
|
||||
const rimraf = promisify(await import('rimraf'));
|
||||
const tmp = await import('tmp');
|
||||
const tmpNameAsync = promisify(tmp.tmpName);
|
||||
|
@ -59,7 +59,6 @@ export default class ScanCmd extends Command {
|
||||
public static root = true;
|
||||
|
||||
public async run() {
|
||||
const Bluebird = await import('bluebird');
|
||||
const _ = await import('lodash');
|
||||
const { SpinnerPromise } = getVisuals();
|
||||
const { discover } = await import('balena-sync');
|
||||
@ -106,22 +105,22 @@ export default class ScanCmd extends Command {
|
||||
|
||||
// Query devices for info
|
||||
const devicesInfo = await Promise.all(
|
||||
activeLocalDevices.map(({ host, address }) => {
|
||||
activeLocalDevices.map(async ({ host, address }) => {
|
||||
const docker = dockerUtils.createClient({
|
||||
host: address,
|
||||
port: dockerPort,
|
||||
timeout: dockerTimeout,
|
||||
}) as any;
|
||||
return Bluebird.props({
|
||||
const [dockerInfo, dockerVersion] = await Promise.all([
|
||||
docker.infoAsync().catchReturn('Could not get Docker info'),
|
||||
docker.versionAsync().catchReturn('Could not get Docker version'),
|
||||
]);
|
||||
return {
|
||||
host,
|
||||
address,
|
||||
dockerInfo: docker
|
||||
.infoAsync()
|
||||
.catchReturn('Could not get Docker info'),
|
||||
dockerVersion: docker
|
||||
.versionAsync()
|
||||
.catchReturn('Could not get Docker version'),
|
||||
});
|
||||
dockerInfo,
|
||||
dockerVersion,
|
||||
};
|
||||
}),
|
||||
);
|
||||
|
||||
|
@ -15,8 +15,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import * as Bluebird from 'bluebird';
|
||||
import { getVisuals } from './lazy';
|
||||
import { promisify } from 'util';
|
||||
|
||||
const getBuilderPushEndpoint = function (baseUrl, owner, app) {
|
||||
const querystring = require('querystring');
|
||||
@ -158,7 +158,7 @@ opts must be a hash with the following keys:
|
||||
- buildLogs: a string with build output
|
||||
- shouldUploadLogs
|
||||
*/
|
||||
export const deployLegacy = function (
|
||||
export const deployLegacy = async function (
|
||||
docker,
|
||||
logger,
|
||||
token,
|
||||
@ -167,7 +167,7 @@ export const deployLegacy = function (
|
||||
opts,
|
||||
) {
|
||||
const tmp = require('tmp');
|
||||
const tmpNameAsync = Bluebird.promisify(tmp.tmpName);
|
||||
const tmpNameAsync = promisify(tmp.tmpName);
|
||||
|
||||
// Ensure the tmp files gets deleted
|
||||
tmp.setGracefulCleanup();
|
||||
@ -175,10 +175,10 @@ export const deployLegacy = function (
|
||||
const { appName, imageName, buildLogs, shouldUploadLogs } = opts;
|
||||
const logs = buildLogs;
|
||||
|
||||
return tmpNameAsync()
|
||||
.then(function (bufferFile) {
|
||||
const bufferFile = await tmpNameAsync();
|
||||
|
||||
logger.logInfo('Initializing deploy...');
|
||||
return bufferImage(docker, imageName, bufferFile)
|
||||
const { buildId } = await bufferImage(docker, imageName, bufferFile)
|
||||
.then((stream) =>
|
||||
uploadImage(stream, token, username, url, appName, logger),
|
||||
)
|
||||
@ -186,26 +186,24 @@ export const deployLegacy = function (
|
||||
// If the file was never written to (for instance because an error
|
||||
// has occured before any data was written) this call will throw an
|
||||
// ugly error, just suppress it
|
||||
Bluebird.try(() =>
|
||||
require('fs').promises.unlink(bufferFile),
|
||||
).catchReturn(undefined),
|
||||
);
|
||||
})
|
||||
.tap(function ({ buildId }) {
|
||||
if (!shouldUploadLogs) {
|
||||
return;
|
||||
}
|
||||
|
||||
require('fs')
|
||||
.promises.unlink(bufferFile)
|
||||
.catch(() => undefined),
|
||||
);
|
||||
|
||||
if (shouldUploadLogs) {
|
||||
logger.logInfo('Uploading logs...');
|
||||
return Bluebird.join(
|
||||
const args = await Promise.all([
|
||||
logs,
|
||||
token,
|
||||
url,
|
||||
buildId,
|
||||
username,
|
||||
appName,
|
||||
uploadLogs,
|
||||
);
|
||||
})
|
||||
.get('buildId');
|
||||
]);
|
||||
await uploadLogs(...args);
|
||||
}
|
||||
|
||||
return buildId;
|
||||
};
|
||||
|
@ -14,7 +14,6 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import * as Bluebird from 'bluebird';
|
||||
import * as _ from 'lodash';
|
||||
import type { NodeJSSocketWithFileDescriptor } from 'net-keepalive';
|
||||
import * as os from 'os';
|
||||
@ -85,8 +84,8 @@ export class DeviceAPI {
|
||||
public async setTargetState(state: any): Promise<void> {
|
||||
const url = this.getUrlForAction('setTargetState');
|
||||
return DeviceAPI.promisifiedRequest(
|
||||
request.post,
|
||||
{
|
||||
method: 'POST',
|
||||
url,
|
||||
json: true,
|
||||
body: state,
|
||||
@ -99,8 +98,8 @@ export class DeviceAPI {
|
||||
const url = this.getUrlForAction('getTargetState');
|
||||
|
||||
return DeviceAPI.promisifiedRequest(
|
||||
request.get,
|
||||
{
|
||||
method: 'GET',
|
||||
url,
|
||||
json: true,
|
||||
},
|
||||
@ -114,8 +113,8 @@ export class DeviceAPI {
|
||||
const url = this.getUrlForAction('getDeviceInformation');
|
||||
|
||||
return DeviceAPI.promisifiedRequest(
|
||||
request.get,
|
||||
{
|
||||
method: 'GET',
|
||||
url,
|
||||
json: true,
|
||||
},
|
||||
@ -129,8 +128,8 @@ export class DeviceAPI {
|
||||
const url = this.getUrlForAction('containerId');
|
||||
|
||||
const body = await DeviceAPI.promisifiedRequest(
|
||||
request.get,
|
||||
{
|
||||
method: 'GET',
|
||||
url,
|
||||
json: true,
|
||||
qs: {
|
||||
@ -152,8 +151,8 @@ export class DeviceAPI {
|
||||
const url = this.getUrlForAction('ping');
|
||||
|
||||
return DeviceAPI.promisifiedRequest(
|
||||
request.get,
|
||||
{
|
||||
method: 'GET',
|
||||
url,
|
||||
},
|
||||
this.logger,
|
||||
@ -163,7 +162,8 @@ export class DeviceAPI {
|
||||
public getVersion(): Promise<string> {
|
||||
const url = this.getUrlForAction('version');
|
||||
|
||||
return DeviceAPI.promisifiedRequest(request.get, {
|
||||
return DeviceAPI.promisifiedRequest({
|
||||
method: 'GET',
|
||||
url,
|
||||
json: true,
|
||||
}).then((body) => {
|
||||
@ -180,7 +180,8 @@ export class DeviceAPI {
|
||||
public getStatus(): Promise<Status> {
|
||||
const url = this.getUrlForAction('status');
|
||||
|
||||
return DeviceAPI.promisifiedRequest(request.get, {
|
||||
return DeviceAPI.promisifiedRequest({
|
||||
method: 'GET',
|
||||
url,
|
||||
json: true,
|
||||
}).then((body) => {
|
||||
@ -233,14 +234,9 @@ export class DeviceAPI {
|
||||
|
||||
// A helper method for promisifying general (non-streaming) requests. Streaming
|
||||
// requests should use a seperate setup
|
||||
private static async promisifiedRequest<T>(
|
||||
requestMethod: (
|
||||
opts: T,
|
||||
cb: (err?: any, res?: any, body?: any) => void,
|
||||
) => void,
|
||||
opts: T,
|
||||
logger?: Logger,
|
||||
): Promise<any> {
|
||||
private static async promisifiedRequest<
|
||||
T extends Parameters<typeof request>[0]
|
||||
>(opts: T, logger?: Logger): Promise<any> {
|
||||
interface ObjectWithUrl {
|
||||
url?: string;
|
||||
}
|
||||
@ -260,23 +256,25 @@ export class DeviceAPI {
|
||||
}
|
||||
}
|
||||
|
||||
return Bluebird.fromCallback<[request.Response, { message: string }]>(
|
||||
(cb) => {
|
||||
return requestMethod(opts, cb);
|
||||
},
|
||||
{ multiArgs: true },
|
||||
).then(([response, body]) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
return request(opts, (err, response, body) => {
|
||||
if (err) {
|
||||
return reject(err);
|
||||
}
|
||||
switch (response.statusCode) {
|
||||
case 200:
|
||||
return body;
|
||||
return resolve(body);
|
||||
case 400:
|
||||
throw new ApiErrors.BadRequestDeviceAPIError(body.message);
|
||||
return reject(new ApiErrors.BadRequestDeviceAPIError(body.message));
|
||||
case 503:
|
||||
throw new ApiErrors.ServiceUnavailableAPIError(body.message);
|
||||
return reject(
|
||||
new ApiErrors.ServiceUnavailableAPIError(body.message),
|
||||
);
|
||||
default:
|
||||
throw new ApiErrors.DeviceAPIError(body.message);
|
||||
return reject(new ApiErrors.DeviceAPIError(body.message));
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
144
npm-shrinkwrap.json
generated
144
npm-shrinkwrap.json
generated
@ -1469,9 +1469,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@types/rimraf": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-2.0.4.tgz",
|
||||
"integrity": "sha512-8gBudvllD2A/c0CcEX/BivIDorHFt5UI5m46TsNj8DjWCCTTZT74kEe4g+QsY7P/B9WdO98d82zZgXO/RQzu2Q==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.0.tgz",
|
||||
"integrity": "sha512-7WhJ0MdpFgYQPXlF4Dx+DhgvlPCfz/x5mHaeDQAKhcenvQP1KCpLQ18JklAqeGMYSAT2PxLpzd0g2/HE7fj7hQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/glob": "*",
|
||||
@ -1562,9 +1562,9 @@
|
||||
}
|
||||
},
|
||||
"@types/tmp": {
|
||||
"version": "0.0.34",
|
||||
"resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.34.tgz",
|
||||
"integrity": "sha512-Tx7JYeYR+pkAnDQjN1Cj43KuOuUvyybZHl+fAezReXuH/SQoxLhsuPvHZH/SA4XtrBEhaTcbb5gVc1WQcjQgdg==",
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.0.tgz",
|
||||
"integrity": "sha512-flgpHJjntpBAdJD43ShRosQvNC0ME97DCfGvZEDlAThQmnerRXrLbX6YgzRBQCZTthET9eAWFAMaYP0m0Y4HzQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/tough-cookie": {
|
||||
@ -3634,6 +3634,16 @@
|
||||
"upath": "^1.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"fsevents": {
|
||||
"version": "1.2.13",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
|
||||
"integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"bindings": "^1.5.0",
|
||||
"nan": "^2.12.1"
|
||||
}
|
||||
},
|
||||
"normalize-path": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
||||
@ -6086,6 +6096,14 @@
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
},
|
||||
"tmp": {
|
||||
"version": "0.0.31",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
|
||||
"integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
|
||||
"requires": {
|
||||
"os-tmpdir": "~1.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -6938,74 +6956,10 @@
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "1.2.11",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz",
|
||||
"integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"bindings": "^1.5.0",
|
||||
"nan": "^2.12.1",
|
||||
"node-pre-gyp": "*"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
|
||||
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
|
||||
},
|
||||
"debug": {
|
||||
"version": "3.2.6",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
|
||||
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
|
||||
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
||||
"requires": {
|
||||
"number-is-nan": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
|
||||
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
|
||||
"requires": {
|
||||
"glob": "^7.1.3"
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "5.7.1",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
|
||||
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
|
||||
},
|
||||
"string-width": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
||||
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
||||
"requires": {
|
||||
"code-point-at": "^1.0.0",
|
||||
"is-fullwidth-code-point": "^1.0.0",
|
||||
"strip-ansi": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
|
||||
"integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
|
||||
"optional": true
|
||||
},
|
||||
"fstream": {
|
||||
"version": "1.0.12",
|
||||
@ -9052,12 +9006,6 @@
|
||||
"to-regex-range": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
|
||||
"integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
|
||||
"optional": true
|
||||
},
|
||||
"glob-parent": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
|
||||
@ -10254,9 +10202,9 @@
|
||||
}
|
||||
},
|
||||
"net-keepalive": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/net-keepalive/-/net-keepalive-1.3.3.tgz",
|
||||
"integrity": "sha512-Qsov2o2DFY8/EHxcAIYHgvcieNwLTQsYKfdaFwTu+21lf9pCo2YLV7OmbrE9KffRlyEgRm5ixhVgmvz71Lh4Zw==",
|
||||
"version": "1.3.6",
|
||||
"resolved": "https://registry.npmjs.org/net-keepalive/-/net-keepalive-1.3.6.tgz",
|
||||
"integrity": "sha512-AABQ5mfFte5OprZfEPkJHVknSNAMvrkb/7BakNdUb/yF/mPhe25B6WEAI52NrNXRduSxY5Mivv4TEI4PtyGolA==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ffi-napi": "^3.0.1",
|
||||
@ -10369,9 +10317,9 @@
|
||||
}
|
||||
},
|
||||
"node-gyp-build": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.2.tgz",
|
||||
"integrity": "sha512-Lqh7mrByWCM8Cf9UPqpeoVBBo5Ugx+RKu885GAzmLBVYjeywScxHXPGLa4JfYNZmcNGwzR0Glu5/9GaQZMFqyA==",
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz",
|
||||
"integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==",
|
||||
"optional": true
|
||||
},
|
||||
"node-localstorage": {
|
||||
@ -14738,11 +14686,11 @@
|
||||
}
|
||||
},
|
||||
"tmp": {
|
||||
"version": "0.0.31",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
|
||||
"integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
|
||||
"integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
|
||||
"requires": {
|
||||
"os-tmpdir": "~1.0.1"
|
||||
"rimraf": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"to-absolute-glob": {
|
||||
@ -15789,14 +15737,22 @@
|
||||
}
|
||||
},
|
||||
"winusb-driver-generator": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/winusb-driver-generator/-/winusb-driver-generator-1.2.4.tgz",
|
||||
"integrity": "sha512-fXWUGyMDGRzuncIWje1+9ObnZmok0PVb9L+Wq9nJ0ZCGVd8YHNjGJP2O6uD3jX1tJL1Us9te95Em3diMGlo0DA==",
|
||||
"version": "1.2.7",
|
||||
"resolved": "https://registry.npmjs.org/winusb-driver-generator/-/winusb-driver-generator-1.2.7.tgz",
|
||||
"integrity": "sha512-NMRpH61jvvU32kGp7TcB0uzC2vxbTNpdX8kkGn4RLafycm5bKRKNzIqinnshs8G5Z7VFAMVACaCo1uPLslT3nw==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"bindings": "^1.3.0",
|
||||
"nan": "^2.10.0",
|
||||
"nan": "^2.14.0",
|
||||
"prebuild-install": "^5.2.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"nan": {
|
||||
"version": "2.14.1",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
|
||||
"integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==",
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"with-open-file": {
|
||||
|
@ -142,14 +142,14 @@
|
||||
"@types/progress-stream": "^2.0.0",
|
||||
"@types/request": "^2.48.4",
|
||||
"@types/rewire": "^2.5.28",
|
||||
"@types/rimraf": "^2.0.4",
|
||||
"@types/rimraf": "^3.0.0",
|
||||
"@types/shell-escape": "^0.2.0",
|
||||
"@types/sinon": "^9.0.3",
|
||||
"@types/split": "^1.0.0",
|
||||
"@types/stream-to-promise": "2.2.0",
|
||||
"@types/tar-stream": "^2.1.0",
|
||||
"@types/through2": "^2.0.34",
|
||||
"@types/tmp": "0.0.34",
|
||||
"@types/tmp": "^0.2.0",
|
||||
"@types/which": "^1.3.2",
|
||||
"catch-uncommitted": "^1.5.0",
|
||||
"chai": "^4.2.0",
|
||||
@ -260,7 +260,7 @@
|
||||
"tar-stream": "^2.1.0",
|
||||
"tar-utils": "^2.1.0",
|
||||
"through2": "^2.0.3",
|
||||
"tmp": "0.0.31",
|
||||
"tmp": "^0.2.1",
|
||||
"typed-error": "^3.2.0",
|
||||
"umount": "^1.1.6",
|
||||
"update-notifier": "^4.1.0",
|
||||
|
Loading…
Reference in New Issue
Block a user