feat(portal-data): support manifest provision flow
This commit is contained in:
parent
7445a9a3e5
commit
caee178ad8
@ -1,8 +1,8 @@
|
||||
'use strict';
|
||||
|
||||
const EventEmitter = require('events');
|
||||
const Hoek = require('hoek');
|
||||
const Penseur = require('penseur');
|
||||
const DCClient = require('docker-compose-client');
|
||||
const VAsync = require('vasync');
|
||||
const Transform = require('./transform');
|
||||
|
||||
@ -27,13 +27,13 @@ const internals = {
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = class Data {
|
||||
module.exports = class Data extends EventEmitter {
|
||||
constructor (options) {
|
||||
super();
|
||||
const settings = Hoek.applyToDefaults(options || {}, internals.defaults);
|
||||
|
||||
// Penseur will assert that the options are correct
|
||||
this._db = new Penseur.Db(settings.name, settings.db);
|
||||
this._docker = new DCClient(settings.dockerHost);
|
||||
}
|
||||
|
||||
connect (cb) {
|
||||
@ -176,17 +176,9 @@ module.exports = class Data {
|
||||
// versions
|
||||
|
||||
createVersion (clientVersion, cb) {
|
||||
Hoek.assert(clientVersion && clientVersion.manifestId, 'manifestId is required');
|
||||
|
||||
// go get the manifest to find the deployment group id so we can update it
|
||||
this.getManifest({ id: clientVersion.manifestId }, (err, manifest) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
|
||||
if (!manifest) {
|
||||
return cb(new Error('manifest not found for version'));
|
||||
}
|
||||
Hoek.assert(clientVersion, 'version is required');
|
||||
Hoek.assert(clientVersion.manifestId, 'manifestId is required');
|
||||
Hoek.assert(clientVersion.deploymentGroupId, 'deploymentGroupId is required');
|
||||
|
||||
const version = Transform.toVersion(clientVersion);
|
||||
this._db.versions.insert(version, (err, key) => {
|
||||
@ -194,7 +186,17 @@ module.exports = class Data {
|
||||
return cb(err);
|
||||
}
|
||||
|
||||
this._db.deployment_groups.update(manifest.deploymentGroupId, { history_version_ids: this._db.append(key) }, (err) => {
|
||||
const changes = {
|
||||
id: clientVersion.deploymentGroupId,
|
||||
version_id: key,
|
||||
history_version_ids: this._db.append(key)
|
||||
};
|
||||
|
||||
if (clientVersion.serviceIds) {
|
||||
changes['service_ids'] = clientVersion.serviceIds;
|
||||
}
|
||||
|
||||
this._db.deployment_groups.update([changes], (err) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
@ -203,7 +205,6 @@ module.exports = class Data {
|
||||
cb(null, Transform.fromVersion(version));
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
getVersion ({ id, manifestId }, cb) {
|
||||
@ -227,6 +228,8 @@ module.exports = class Data {
|
||||
cb(null, versions.map(Transform.fromVersion));
|
||||
};
|
||||
|
||||
// ensure the data is in sync
|
||||
this._db.versions.sync(() => {
|
||||
if (manifestId) {
|
||||
return this._db.versions.query({ manifest_id: manifestId }, finish);
|
||||
}
|
||||
@ -238,22 +241,39 @@ module.exports = class Data {
|
||||
|
||||
this._db.versions.get(deploymentGroup.history, finish);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// manifests
|
||||
|
||||
provisionManifest (clientManifest, cb) {
|
||||
this._db.manifests.insert(Transform.toManifest(clientManifest), (err, key) => {
|
||||
// insert manifest
|
||||
// callback with manifest
|
||||
// provision services
|
||||
|
||||
const manifest = Transform.toManifest(clientManifest);
|
||||
this._db.manifests.insert(manifest, (err, key) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
|
||||
this.getManifest({ id: key }, cb);
|
||||
setImmediate(() => {
|
||||
const options = {
|
||||
manifestServices: manifest.json.services || manifest.json,
|
||||
deploymentGroupId: clientManifest.deploymentGroupId,
|
||||
manifestId: key
|
||||
};
|
||||
this.provisionServices(options);
|
||||
});
|
||||
|
||||
manifest.id = key;
|
||||
cb(null, Transform.fromManifest(manifest));
|
||||
});
|
||||
}
|
||||
|
||||
getManifest ({ id }, cb) {
|
||||
console.log(id);
|
||||
this._db.manifests.single({ id }, (err, manifest) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
@ -278,23 +298,128 @@ module.exports = class Data {
|
||||
|
||||
// services
|
||||
|
||||
provisionServices ({ manifestServices, deploymentGroupId, manifestId }, cb) {
|
||||
// call to docker and create containers
|
||||
// insert instance information
|
||||
// insert service information
|
||||
// insert version information -- will update deploymentGroups
|
||||
|
||||
cb = cb || ((err) => {
|
||||
if (err) {
|
||||
this.emit('error', err);
|
||||
}
|
||||
});
|
||||
|
||||
// TODO: call out to docker for each service and provision a new instance
|
||||
|
||||
VAsync.forEachPipeline({
|
||||
func: (serviceName, next) => {
|
||||
const manifestService = manifestServices[serviceName];
|
||||
const clientInstance = {
|
||||
name: serviceName,
|
||||
machineId: 'unknown',
|
||||
status: 'CREATED'
|
||||
};
|
||||
this.createInstance(clientInstance, (err, createdInstance) => {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
const clientService = {
|
||||
hash: manifestService.image,
|
||||
name: serviceName,
|
||||
slug: serviceName,
|
||||
deploymentGroupId,
|
||||
instances: [createdInstance]
|
||||
};
|
||||
|
||||
this.createService(clientService, (err, createdService) => {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
return next(null, {
|
||||
action: {
|
||||
type: 'CREATE',
|
||||
service: serviceName,
|
||||
machines: [createdInstance.machineId]
|
||||
},
|
||||
serviceId: createdService.id,
|
||||
scale: {
|
||||
serviceName,
|
||||
replicas: 1
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
inputs: Object.keys(manifestServices)
|
||||
}, (err, results) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
const successes = results.successes;
|
||||
if (!successes || !successes.length) {
|
||||
return cb();
|
||||
}
|
||||
|
||||
const scales = successes.map((result) => {
|
||||
return result.scale;
|
||||
});
|
||||
|
||||
const actions = successes.map((result) => {
|
||||
return result.action;
|
||||
});
|
||||
|
||||
const serviceIds = successes.map((result) => {
|
||||
return result.serviceId;
|
||||
});
|
||||
|
||||
const plan = {
|
||||
running: true,
|
||||
actions
|
||||
};
|
||||
|
||||
const clientVersion = {
|
||||
deploymentGroupId,
|
||||
manifestId,
|
||||
scales,
|
||||
plan,
|
||||
serviceIds
|
||||
};
|
||||
|
||||
this.createVersion(clientVersion, (err) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
|
||||
cb();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
createService (clientService, cb) {
|
||||
this._db.services.insert(Transform.toService(clientService), (err, key) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
|
||||
this.getService({ id: key }, cb);
|
||||
clientService.id = key;
|
||||
cb(null, clientService);
|
||||
});
|
||||
}
|
||||
|
||||
getService ({ id, hash }, cb) {
|
||||
const query = id ? { id } : { version_hash: hash };
|
||||
this._db.services.single(query, (err, service) => {
|
||||
this._db.services.query(query, (err, service) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
|
||||
if (!service) {
|
||||
return cb(null, null);
|
||||
}
|
||||
|
||||
VAsync.parallel({
|
||||
funcs: [
|
||||
(next) => {
|
||||
|
@ -1,5 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
const Yamljs = require('yamljs');
|
||||
|
||||
|
||||
exports.fromPortal = function ({ portal, datacenter, deploymentGroups }) {
|
||||
deploymentGroups = Array.isArray(deploymentGroups) ? deploymentGroups : [];
|
||||
@ -22,6 +24,7 @@ exports.toPortal = function (clientPortal) {
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
exports.fromDeploymentGroup = function (deploymentGroup, services) {
|
||||
if (!Array.isArray(services)) {
|
||||
services = [];
|
||||
@ -52,6 +55,7 @@ exports.fromService = function ({ service, instances, packages }) {
|
||||
return {
|
||||
id: service.id,
|
||||
hash: service.version_hash,
|
||||
deploymentGroupId: service.deployment_group_id,
|
||||
name: service.name,
|
||||
slug: service.slug,
|
||||
environment: service.environment || [],
|
||||
@ -66,10 +70,11 @@ exports.fromService = function ({ service, instances, packages }) {
|
||||
exports.toService = function (clientService) {
|
||||
return {
|
||||
version_hash: clientService.hash || '',
|
||||
deployment_group_id: clientService.deploymentGroupId,
|
||||
name: clientService.name,
|
||||
slug: clientService.slub || '',
|
||||
slug: clientService.slug || '',
|
||||
environment: clientService.environment || {},
|
||||
instance_ids: clientService.intances ? clientService.instances.map((instance) => { return instance.id; }) : [],
|
||||
instance_ids: clientService.instances ? clientService.instances.map((instance) => { return instance.id; }) : [],
|
||||
service_dependency_ids: clientService.connections || [],
|
||||
package_id: clientService.package ? clientService.package.id : '',
|
||||
parent_id: clientService.parent || ''
|
||||
@ -136,7 +141,7 @@ exports.toManifest = function (clientManifest) {
|
||||
type: clientManifest.type,
|
||||
format: clientManifest.format,
|
||||
raw: clientManifest.raw,
|
||||
json: clientManifest.json
|
||||
json: clientManifest.json || Yamljs.parse(clientManifest.raw)
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -16,15 +16,14 @@
|
||||
"author": "wyatt",
|
||||
"license": "MPL-2.0",
|
||||
"dependencies": {
|
||||
"docker-compose-client": "^1.0.3",
|
||||
"hoek": "^4.1.1",
|
||||
"penseur": "^7.8.1",
|
||||
"vasync": "^1.6.4"
|
||||
"vasync": "^1.6.4",
|
||||
"yamljs": "^0.2.10"
|
||||
},
|
||||
"devDependencies": {
|
||||
"belly-button": "^3.1.0",
|
||||
"code": "^4.0.0",
|
||||
"lab": "^13.0.4",
|
||||
"zerorpc": "^0.9.7"
|
||||
"lab": "^13.0.4"
|
||||
}
|
||||
}
|
||||
|
24
packages/portal-data/test/docker-compose.yml
Normal file
24
packages/portal-data/test/docker-compose.yml
Normal file
@ -0,0 +1,24 @@
|
||||
version: '2.1'
|
||||
|
||||
services:
|
||||
|
||||
# Service definition for Consul cluster with a minimum of 3 nodes.
|
||||
# Nodes will use Triton CNS for the service (passed in via the CONSUL
|
||||
# env var) to find each other and bootstrap the cluster.
|
||||
consul:
|
||||
image: autopilotpattern/consul:${TAG:-latest}
|
||||
labels:
|
||||
- triton.cns.services=consul
|
||||
restart: always
|
||||
mem_limit: 128m
|
||||
ports:
|
||||
- 8500
|
||||
env_file:
|
||||
- _env
|
||||
network_mode: bridge
|
||||
command: >
|
||||
/usr/local/bin/containerpilot
|
||||
/bin/consul agent -server
|
||||
-bootstrap-expect 3
|
||||
-config-dir=/etc/consul
|
||||
-ui-dir /ui
|
@ -1,15 +1,19 @@
|
||||
'use strict';
|
||||
|
||||
const { expect } = require('code');
|
||||
const Fs = require('fs');
|
||||
const Path = require('path');
|
||||
const Code = require('code');
|
||||
const Lab = require('lab');
|
||||
const PortalData = require('../');
|
||||
|
||||
const lab = (exports.lab = Lab.script());
|
||||
const lab = exports.lab = Lab.script();
|
||||
const it = lab.it;
|
||||
const describe = lab.describe;
|
||||
const expect = Code.expect;
|
||||
|
||||
const internals = {
|
||||
options: { name: 'test', db: { test: true } }
|
||||
options: { name: 'test', db: { test: true } },
|
||||
composeFile: Fs.readFileSync(Path.join(__dirname, 'docker-compose.yml')).toString()
|
||||
};
|
||||
|
||||
describe('connect()', () => {
|
||||
@ -245,14 +249,14 @@ describe('versions', () => {
|
||||
deploymentGroupId: deploymentGroup.id,
|
||||
type: 'compose',
|
||||
format: 'yml',
|
||||
raw: 'docker compose raw contents',
|
||||
json: { services: [] }
|
||||
raw: internals.composeFile
|
||||
};
|
||||
|
||||
data.provisionManifest(clientManifest, (err, manifest) => {
|
||||
expect(err).to.not.exist();
|
||||
|
||||
const clientVersion = {
|
||||
deploymentGroupId: deploymentGroup.id,
|
||||
manifestId: manifest.id,
|
||||
scales: [{
|
||||
serviceName: 'consul',
|
||||
@ -291,8 +295,7 @@ describe('versions', () => {
|
||||
deploymentGroupId: deploymentGroup.id,
|
||||
type: 'compose',
|
||||
format: 'yml',
|
||||
raw: 'docker compose raw contents',
|
||||
json: { services: [] }
|
||||
raw: internals.composeFile
|
||||
};
|
||||
|
||||
data.provisionManifest(clientManifest, (err, manifest) => {
|
||||
@ -300,6 +303,7 @@ describe('versions', () => {
|
||||
|
||||
const clientVersion = {
|
||||
manifestId: manifest.id,
|
||||
deploymentGroupId: deploymentGroup.id,
|
||||
scales: [{
|
||||
serviceName: 'consul',
|
||||
replicas: 3
|
||||
@ -345,8 +349,7 @@ describe('versions', () => {
|
||||
deploymentGroupId: deploymentGroup.id,
|
||||
type: 'compose',
|
||||
format: 'yml',
|
||||
raw: 'docker compose raw contents',
|
||||
json: { services: [] }
|
||||
raw: internals.composeFile
|
||||
};
|
||||
|
||||
data.provisionManifest(clientManifest, (err, manifest) => {
|
||||
@ -354,6 +357,7 @@ describe('versions', () => {
|
||||
|
||||
const clientVersion = {
|
||||
manifestId: manifest.id,
|
||||
deploymentGroupId: deploymentGroup.id,
|
||||
scales: [{
|
||||
serviceName: 'consul',
|
||||
replicas: 3
|
||||
@ -374,7 +378,7 @@ describe('versions', () => {
|
||||
expect(result.scales).to.equal(clientVersion.scales);
|
||||
data.getVersions({ manifestId: clientVersion.manifestId }, (err, versions) => {
|
||||
expect(err).to.not.exist();
|
||||
expect(versions.length).to.equal(1);
|
||||
expect(versions.length).to.equal(2);
|
||||
done();
|
||||
});
|
||||
});
|
||||
@ -393,8 +397,7 @@ describe('versions', () => {
|
||||
deploymentGroupId: deploymentGroup.id,
|
||||
type: 'compose',
|
||||
format: 'yml',
|
||||
raw: 'docker compose raw contents',
|
||||
json: { services: [] }
|
||||
raw: internals.composeFile
|
||||
};
|
||||
|
||||
data.provisionManifest(clientManifest, (err, manifest) => {
|
||||
@ -402,6 +405,7 @@ describe('versions', () => {
|
||||
|
||||
const clientVersion = {
|
||||
manifestId: manifest.id,
|
||||
deploymentGroupId: deploymentGroup.id,
|
||||
scales: [{
|
||||
serviceName: 'consul',
|
||||
replicas: 3
|
||||
@ -446,10 +450,8 @@ describe('manifests', () => {
|
||||
deploymentGroupId: deploymentGroup.id,
|
||||
type: 'compose',
|
||||
format: 'yml',
|
||||
raw: 'docker compose raw contents',
|
||||
json: { services: [] }
|
||||
raw: internals.composeFile
|
||||
};
|
||||
|
||||
data.provisionManifest(clientManifest, (err, result) => {
|
||||
expect(err).to.not.exist();
|
||||
expect(result.id).to.exist();
|
||||
@ -464,6 +466,10 @@ describe('manifests', () => {
|
||||
describe('getManifests()', () => {
|
||||
it('retrieves manifests using from a manifest type', (done) => {
|
||||
const data = new PortalData(internals.options);
|
||||
data.on('error', (err) => {
|
||||
expect(err).to.not.exist();
|
||||
});
|
||||
|
||||
data.connect((err) => {
|
||||
expect(err).to.not.exist();
|
||||
data.createDeploymentGroup({ name: 'something' }, (err, deploymentGroup) => {
|
||||
@ -472,10 +478,8 @@ describe('manifests', () => {
|
||||
deploymentGroupId: deploymentGroup.id,
|
||||
type: 'compose',
|
||||
format: 'yml',
|
||||
raw: 'docker compose raw contents',
|
||||
json: { services: [] }
|
||||
raw: internals.composeFile
|
||||
};
|
||||
|
||||
data.provisionManifest(clientManifest, (err, result) => {
|
||||
expect(err).to.not.exist();
|
||||
data.getManifests({ type: clientManifest.type }, (err, manifests) => {
|
||||
@ -540,7 +544,7 @@ describe('instances', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('geInstance()', () => {
|
||||
describe('getInstance()', () => {
|
||||
it('retrieves an instance record from the instances table', (done) => {
|
||||
const data = new PortalData(internals.options);
|
||||
data.connect((err) => {
|
||||
|
@ -97,10 +97,6 @@ belly-button@^3.1.0:
|
||||
glob "7.x.x"
|
||||
insync "2.x.x"
|
||||
|
||||
bindings@~1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
|
||||
|
||||
"bluebird@>= 2.3.2 < 3":
|
||||
version "2.11.0"
|
||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1"
|
||||
@ -741,24 +737,10 @@ ms@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||
|
||||
msgpack@1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/msgpack/-/msgpack-1.0.2.tgz#923e2c5cffa65c8418e9b228d1124793969c429c"
|
||||
dependencies:
|
||||
nan "^2.0.9"
|
||||
|
||||
mute-stream@0.0.5:
|
||||
version "0.0.5"
|
||||
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
|
||||
|
||||
nan@^2.0.9:
|
||||
version "2.6.2"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
|
||||
|
||||
nan@~2.3.0:
|
||||
version "2.3.5"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.3.5.tgz#822a0dc266290ce4cd3a12282ca3e7e364668a08"
|
||||
|
||||
natural-compare@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||
@ -1077,10 +1059,6 @@ uglify-to-browserify@~1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
|
||||
|
||||
underscore@1.3.3:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.3.3.tgz#47ac53683daf832bfa952e1774417da47817ae42"
|
||||
|
||||
user-home@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"
|
||||
@ -1091,10 +1069,6 @@ util-deprecate@~1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
|
||||
uuid@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
|
||||
|
||||
vasync@^1.6.4:
|
||||
version "1.6.4"
|
||||
resolved "https://registry.yarnpkg.com/vasync/-/vasync-1.6.4.tgz#dfe93616ad0e7ae801b332a9d88bfc5cdc8e1d1f"
|
||||
@ -1137,6 +1111,13 @@ xtend@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
|
||||
|
||||
yamljs@^0.2.10:
|
||||
version "0.2.10"
|
||||
resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.2.10.tgz#481cc7c25ca73af59f591f0c96e3ce56c757a40f"
|
||||
dependencies:
|
||||
argparse "^1.0.7"
|
||||
glob "^7.0.5"
|
||||
|
||||
yargs@~3.10.0:
|
||||
version "3.10.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
|
||||
@ -1145,19 +1126,3 @@ yargs@~3.10.0:
|
||||
cliui "^2.1.0"
|
||||
decamelize "^1.0.0"
|
||||
window-size "0.1.0"
|
||||
|
||||
zerorpc@^0.9.7:
|
||||
version "0.9.7"
|
||||
resolved "https://registry.yarnpkg.com/zerorpc/-/zerorpc-0.9.7.tgz#64ddb32ce8c934bea5434ec81ca22e971045a860"
|
||||
dependencies:
|
||||
msgpack "1.0.2"
|
||||
underscore "1.3.3"
|
||||
uuid "^3.0.0"
|
||||
zmq "2.x"
|
||||
|
||||
zmq@2.x:
|
||||
version "2.15.3"
|
||||
resolved "https://registry.yarnpkg.com/zmq/-/zmq-2.15.3.tgz#66c6de82cc36b09734b820703776490a6fbbe624"
|
||||
dependencies:
|
||||
bindings "~1.2.1"
|
||||
nan "~2.3.0"
|
||||
|
@ -74,6 +74,10 @@ align-text@^0.1.1, align-text@^0.1.3:
|
||||
longest "^1.0.1"
|
||||
repeat-string "^1.5.2"
|
||||
|
||||
all-object-keys@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/all-object-keys/-/all-object-keys-1.1.0.tgz#d83122195c62cf440fc3ccd4b4b49aa2ab7b8703"
|
||||
|
||||
amdefine@>=0.0.4:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
|
||||
@ -1173,6 +1177,10 @@ currently-unhandled@^0.4.1:
|
||||
dependencies:
|
||||
array-find-index "^1.0.1"
|
||||
|
||||
currify@^2.0.0:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/currify/-/currify-2.0.4.tgz#0c36aad8094355fa41428dbc4e322b1bd5e1b9c3"
|
||||
|
||||
d@1:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
|
||||
@ -1684,6 +1692,10 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
|
||||
mkdirp ">=0.5 0"
|
||||
rimraf "2"
|
||||
|
||||
fullstore@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fullstore/-/fullstore-1.0.0.tgz#ed222f47691110796b853bb290b9091cc7bea0ec"
|
||||
|
||||
gauge@~2.7.3:
|
||||
version "2.7.4"
|
||||
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
|
||||
@ -2261,6 +2273,10 @@ istanbul-reports@^1.1.0:
|
||||
dependencies:
|
||||
handlebars "^4.0.3"
|
||||
|
||||
jessy@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/jessy/-/jessy-2.0.1.tgz#2114b42a51caa40dd48caa8689cc8ffca25abe47"
|
||||
|
||||
jest-diff@19.0.0, jest-diff@^19.0.0:
|
||||
version "19.0.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-19.0.0.tgz#d1563cfc56c8b60232988fbc05d4d16ed90f063c"
|
||||
@ -2565,6 +2581,10 @@ map-obj@^1.0.0, map-obj@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
|
||||
|
||||
mapsome@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/mapsome/-/mapsome-1.0.0.tgz#70bf732b3eeab66aee7042158202885a17625c41"
|
||||
|
||||
matcher@^0.1.1:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/matcher/-/matcher-0.1.2.tgz#ef20cbde64c24c50cc61af5b83ee0b1b8ff00101"
|
||||
@ -3221,6 +3241,12 @@ readdirp@^2.0.0:
|
||||
readable-stream "^2.0.2"
|
||||
set-immediate-shim "^1.0.1"
|
||||
|
||||
readjson@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/readjson/-/readjson-1.1.3.tgz#cb4c691551c6e4fee667f51c29cce2f5cea4593c"
|
||||
dependencies:
|
||||
try-catch "~1.0.0"
|
||||
|
||||
readline2@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"
|
||||
@ -3242,6 +3268,21 @@ redent@^1.0.0:
|
||||
indent-string "^2.1.0"
|
||||
strip-indent "^1.0.1"
|
||||
|
||||
redrun@^5.9.14:
|
||||
version "5.9.14"
|
||||
resolved "https://registry.yarnpkg.com/redrun/-/redrun-5.9.14.tgz#320d773f9084bab69fc423f19a942be9e020f035"
|
||||
dependencies:
|
||||
all-object-keys "^1.0.0"
|
||||
currify "^2.0.0"
|
||||
debug "^2.2.0"
|
||||
fullstore "^1.0.0"
|
||||
jessy "^2.0.0"
|
||||
mapsome "^1.0.0"
|
||||
readjson "^1.1.3"
|
||||
squad "^1.1.3"
|
||||
try-catch "^1.0.0"
|
||||
yargs-parser "^7.0.0"
|
||||
|
||||
regenerate@^1.2.1:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
|
||||
@ -3557,6 +3598,10 @@ sprintf-js@~1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||
|
||||
squad@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/squad/-/squad-1.1.3.tgz#da09f68d1e0b0a60dca172878fe1f3c9e5272401"
|
||||
|
||||
sshpk@^1.7.0:
|
||||
version "1.13.0"
|
||||
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c"
|
||||
@ -3805,6 +3850,10 @@ trim-right@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
|
||||
|
||||
try-catch@^1.0.0, try-catch@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/try-catch/-/try-catch-1.0.0.tgz#3797dab39a266775f4d0da5cbf42aca3f03608e6"
|
||||
|
||||
tryit@^1.0.1:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
|
||||
|
126
yarn.lock
126
yarn.lock
@ -9,11 +9,7 @@ JSONStream@^1.0.4:
|
||||
jsonparse "^1.2.0"
|
||||
through ">=2.2.7 <3"
|
||||
|
||||
abbrev@1, abbrev@^1.0.7:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
|
||||
|
||||
abbrev@~1.0.9:
|
||||
abbrev@1, abbrev@^1.0.7, abbrev@~1.0.9:
|
||||
version "1.0.9"
|
||||
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
|
||||
|
||||
@ -39,7 +35,7 @@ ajv-keywords@^1.0.0:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
|
||||
|
||||
ajv@^4.7.0, ajv@^4.9.1:
|
||||
ajv@^4.7.0:
|
||||
version "4.11.8"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
|
||||
dependencies:
|
||||
@ -72,14 +68,14 @@ ansi-escapes@^1.1.0, ansi-escapes@^1.3.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
|
||||
|
||||
ansi-regex@*, ansi-regex@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
|
||||
|
||||
ansi-regex@^0.2.0, ansi-regex@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9"
|
||||
|
||||
ansi-regex@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
|
||||
|
||||
ansi-styles@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de"
|
||||
@ -558,10 +554,6 @@ caseless@~0.11.0:
|
||||
version "0.11.0"
|
||||
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
|
||||
|
||||
caseless@~0.12.0:
|
||||
version "0.12.0"
|
||||
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
|
||||
|
||||
ccount@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.1.tgz#665687945168c218ec77ff61a4155ae00227a96c"
|
||||
@ -1085,7 +1077,7 @@ debug@^2.1.1, debug@^2.2.0:
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debuglog@*, debuglog@^1.0.1:
|
||||
debuglog@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
|
||||
|
||||
@ -1618,14 +1610,6 @@ form-data@~2.0.0:
|
||||
combined-stream "^1.0.5"
|
||||
mime-types "^2.1.11"
|
||||
|
||||
form-data@~2.1.1:
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
|
||||
dependencies:
|
||||
asynckit "^0.4.0"
|
||||
combined-stream "^1.0.5"
|
||||
mime-types "^2.1.12"
|
||||
|
||||
franc@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/franc/-/franc-2.0.0.tgz#d9939eded4b486acf4b9f33591fe8e69e5464616"
|
||||
@ -1928,10 +1912,6 @@ handlebars@^4.0.2:
|
||||
optionalDependencies:
|
||||
uglify-js "^2.6"
|
||||
|
||||
har-schema@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
|
||||
|
||||
har-validator@~2.0.6:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
|
||||
@ -1941,13 +1921,6 @@ har-validator@~2.0.6:
|
||||
is-my-json-valid "^2.12.4"
|
||||
pinkie-promise "^2.0.0"
|
||||
|
||||
har-validator@~4.2.1:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
|
||||
dependencies:
|
||||
ajv "^4.9.1"
|
||||
har-schema "^1.0.5"
|
||||
|
||||
has-ansi@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e"
|
||||
@ -1997,11 +1970,7 @@ hoek@2.x.x:
|
||||
version "2.16.3"
|
||||
resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
|
||||
|
||||
hosted-git-info@^2.1.4, hosted-git-info@^2.1.5:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67"
|
||||
|
||||
hosted-git-info@~2.1.5:
|
||||
hosted-git-info@^2.1.4, hosted-git-info@^2.1.5, hosted-git-info@~2.1.5:
|
||||
version "2.1.5"
|
||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
|
||||
|
||||
@ -2034,7 +2003,7 @@ ignore@^3.2.0:
|
||||
version "3.3.3"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d"
|
||||
|
||||
imurmurhash@*, imurmurhash@^0.1.4:
|
||||
imurmurhash@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
|
||||
|
||||
@ -2580,10 +2549,6 @@ lockfile@~1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.3.tgz#2638fc39a0331e9cac1a04b71799931c9c50df79"
|
||||
|
||||
lodash._baseindexof@*:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c"
|
||||
|
||||
lodash._baseuniq@~4.6.0:
|
||||
version "4.6.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8"
|
||||
@ -2591,28 +2556,10 @@ lodash._baseuniq@~4.6.0:
|
||||
lodash._createset "~4.0.0"
|
||||
lodash._root "~3.0.0"
|
||||
|
||||
lodash._bindcallback@*:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
|
||||
|
||||
lodash._cacheindexof@*:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92"
|
||||
|
||||
lodash._createcache@*:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093"
|
||||
dependencies:
|
||||
lodash._getnative "^3.0.0"
|
||||
|
||||
lodash._createset@~4.0.0:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
|
||||
|
||||
lodash._getnative@*, lodash._getnative@^3.0.0:
|
||||
version "3.9.1"
|
||||
resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
|
||||
|
||||
lodash._reinterpolate@~3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
|
||||
@ -2689,10 +2636,6 @@ lodash.mergewith@^4.3.1:
|
||||
version "4.6.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55"
|
||||
|
||||
lodash.restparam@*:
|
||||
version "3.6.1"
|
||||
resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
|
||||
|
||||
lodash.sortby@^4.7.0:
|
||||
version "4.7.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
|
||||
@ -2835,7 +2778,7 @@ mime-db@~1.27.0:
|
||||
version "1.27.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1"
|
||||
|
||||
mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.7:
|
||||
mime-types@^2.1.11, mime-types@~2.1.7:
|
||||
version "2.1.15"
|
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed"
|
||||
dependencies:
|
||||
@ -3435,10 +3378,6 @@ per-env@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/per-env/-/per-env-1.0.2.tgz#74e5f1a2c401b72cefe7fd872b3f3f6b79c04bb1"
|
||||
|
||||
performance-now@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
|
||||
|
||||
pify@^2.0.0, pify@^2.2.0, pify@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||
@ -3550,10 +3489,6 @@ qs@~6.2.0:
|
||||
version "6.2.3"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe"
|
||||
|
||||
qs@~6.4.0:
|
||||
version "6.4.0"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
|
||||
|
||||
quality-docs@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/quality-docs/-/quality-docs-3.3.0.tgz#cc2a3f35440000fe274410ab3ccfdd760b3cfc94"
|
||||
@ -3713,7 +3648,7 @@ readable-stream@~2.1.5:
|
||||
string_decoder "~0.10.x"
|
||||
util-deprecate "~1.0.1"
|
||||
|
||||
readdir-scoped-modules@*, readdir-scoped-modules@^1.0.0:
|
||||
readdir-scoped-modules@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747"
|
||||
dependencies:
|
||||
@ -3877,34 +3812,7 @@ replace-ext@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
|
||||
|
||||
request@2, request@^2.74.0:
|
||||
version "2.81.0"
|
||||
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
|
||||
dependencies:
|
||||
aws-sign2 "~0.6.0"
|
||||
aws4 "^1.2.1"
|
||||
caseless "~0.12.0"
|
||||
combined-stream "~1.0.5"
|
||||
extend "~3.0.0"
|
||||
forever-agent "~0.6.1"
|
||||
form-data "~2.1.1"
|
||||
har-validator "~4.2.1"
|
||||
hawk "~3.1.3"
|
||||
http-signature "~1.1.0"
|
||||
is-typedarray "~1.0.0"
|
||||
isstream "~0.1.2"
|
||||
json-stringify-safe "~5.0.1"
|
||||
mime-types "~2.1.7"
|
||||
oauth-sign "~0.8.1"
|
||||
performance-now "^0.2.0"
|
||||
qs "~6.4.0"
|
||||
safe-buffer "^5.0.1"
|
||||
stringstream "~0.0.4"
|
||||
tough-cookie "~2.3.0"
|
||||
tunnel-agent "^0.6.0"
|
||||
uuid "^3.0.0"
|
||||
|
||||
request@~2.75.0:
|
||||
request@2, request@^2.74.0, request@~2.75.0:
|
||||
version "2.75.0"
|
||||
resolved "https://registry.yarnpkg.com/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93"
|
||||
dependencies:
|
||||
@ -4634,12 +4542,6 @@ tryit@^1.0.1:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
|
||||
|
||||
tunnel-agent@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
|
||||
dependencies:
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
tunnel-agent@~0.4.1:
|
||||
version "0.4.3"
|
||||
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
|
||||
@ -4826,11 +4728,11 @@ uuid@^2.0.1:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
|
||||
|
||||
uuid@^3.0.0, uuid@^3.0.1:
|
||||
uuid@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
|
||||
|
||||
validate-npm-package-license@*, validate-npm-package-license@^3.0.1:
|
||||
validate-npm-package-license@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
|
||||
dependencies:
|
||||
|
Loading…
Reference in New Issue
Block a user