Compare commits
13 Commits
developmen
...
hotfix/7.4
Author | SHA1 | Date |
---|---|---|
flavien-scality | 412843f515 | |
flavien-scality | 200e02d36f | |
Thomas Carmet | cc9587e631 | |
Thomas Carmet | 505d41b44e | |
Dora Korpar | 328f32693f | |
Dora Korpar | 5b7b435880 | |
Stephane-Scality | 1b7aa4f7c3 | |
Jianqin Wang | 6a74b03d4d | |
Stephane-Scality | 951a245e04 | |
Jonathan Gramain | bb23e658b1 | |
Jonathan Gramain | 77a0601dd2 | |
Jonathan Gramain | fa1885b128 | |
Jonathan Gramain | 6af6f8287e |
|
@ -1,13 +1,13 @@
|
||||||
const { policies } = require('arsenal');
|
const { policies } = require('arsenal');
|
||||||
|
const { config } = require('../../../Config');
|
||||||
|
|
||||||
const RequestContext = policies.RequestContext;
|
const RequestContext = policies.RequestContext;
|
||||||
|
const requestUtils = policies.requestUtils;
|
||||||
let apiMethodAfterVersionCheck;
|
let apiMethodAfterVersionCheck;
|
||||||
const apiMethodWithVersion = { objectGetACL: true, objectPutACL: true,
|
const apiMethodWithVersion = { objectGetACL: true, objectPutACL: true,
|
||||||
objectGet: true, objectDelete: true, objectPutTagging: true,
|
objectGet: true, objectDelete: true, objectPutTagging: true,
|
||||||
objectGetTagging: true, objectDeleteTagging: true };
|
objectGetTagging: true, objectDeleteTagging: true };
|
||||||
|
|
||||||
const requestUtils = require('../../../utilities/requestUtils');
|
|
||||||
|
|
||||||
function isHeaderAcl(headers) {
|
function isHeaderAcl(headers) {
|
||||||
return headers['x-amz-grant-read'] || headers['x-amz-grant-read-acp'] ||
|
return headers['x-amz-grant-read'] || headers['x-amz-grant-read-acp'] ||
|
||||||
headers['x-amz-grant-write-acp'] || headers['x-amz-grant-full-control'] ||
|
headers['x-amz-grant-write-acp'] || headers['x-amz-grant-full-control'] ||
|
||||||
|
@ -35,7 +35,7 @@ function prepareRequestContexts(apiMethod, request, sourceBucket,
|
||||||
// null as the requestContext to Vault so it will only do an authentication
|
// null as the requestContext to Vault so it will only do an authentication
|
||||||
// check.
|
// check.
|
||||||
|
|
||||||
const ip = requestUtils.getClientIp(request);
|
const ip = requestUtils.getClientIp(request, config);
|
||||||
|
|
||||||
function generateRequestContext(apiMethod) {
|
function generateRequestContext(apiMethod) {
|
||||||
return new RequestContext(request.headers,
|
return new RequestContext(request.headers,
|
||||||
|
|
|
@ -7,13 +7,22 @@ const V4Transform = require('../../../auth/streamingV4/V4Transform');
|
||||||
* accessKey, signatureFromRequest, region, scopeDate, timestamp, and
|
* accessKey, signatureFromRequest, region, scopeDate, timestamp, and
|
||||||
* credentialScope (to be used for streaming v4 auth if applicable)
|
* credentialScope (to be used for streaming v4 auth if applicable)
|
||||||
* @param {RequestLogger} log - the current request logger
|
* @param {RequestLogger} log - the current request logger
|
||||||
* @param {function} cb - callback containing the result for V4Transform
|
* @param {function} errCb - callback called if an error occurs
|
||||||
* @return {object} - V4Transform object if v4 Auth request, or else the stream
|
* @return {object|null} - V4Transform object if v4 Auth request, or
|
||||||
|
* the original stream, or null if the request has no V4 params but
|
||||||
|
* the type of request requires them
|
||||||
*/
|
*/
|
||||||
function prepareStream(stream, streamingV4Params, log, cb) {
|
function prepareStream(stream, streamingV4Params, log, errCb) {
|
||||||
if (stream.headers['x-amz-content-sha256'] ===
|
if (stream.headers['x-amz-content-sha256'] ===
|
||||||
'STREAMING-AWS4-HMAC-SHA256-PAYLOAD') {
|
'STREAMING-AWS4-HMAC-SHA256-PAYLOAD') {
|
||||||
const v4Transform = new V4Transform(streamingV4Params, log, cb);
|
if (typeof streamingV4Params !== 'object') {
|
||||||
|
// this might happen if the user provided a valid V2
|
||||||
|
// Authentication header, while the chunked upload method
|
||||||
|
// requires V4: in such case we don't get any V4 params
|
||||||
|
// and we should return an error to the client.
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
const v4Transform = new V4Transform(streamingV4Params, log, errCb);
|
||||||
stream.pipe(v4Transform);
|
stream.pipe(v4Transform);
|
||||||
return v4Transform;
|
return v4Transform;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
const { errors } = require('arsenal');
|
const { errors, jsutil } = require('arsenal');
|
||||||
|
|
||||||
const data = require('../../../data/wrapper');
|
const data = require('../../../data/wrapper');
|
||||||
const { prepareStream } = require('./prepareStream');
|
const { prepareStream } = require('./prepareStream');
|
||||||
|
@ -57,26 +57,31 @@ function checkHashMatchMD5(stream, hashedStream, dataRetrievalInfo, log, cb) {
|
||||||
*/
|
*/
|
||||||
function dataStore(objectContext, cipherBundle, stream, size,
|
function dataStore(objectContext, cipherBundle, stream, size,
|
||||||
streamingV4Params, backendInfo, log, cb) {
|
streamingV4Params, backendInfo, log, cb) {
|
||||||
const dataStream = prepareStream(stream, streamingV4Params, log, cb);
|
const cbOnce = jsutil.once(cb);
|
||||||
data.put(cipherBundle, dataStream, size, objectContext, backendInfo, log,
|
const dataStream = prepareStream(stream, streamingV4Params, log, cbOnce);
|
||||||
|
if (!dataStream) {
|
||||||
|
return process.nextTick(() => cb(errors.InvalidArgument));
|
||||||
|
}
|
||||||
|
return data.put(
|
||||||
|
cipherBundle, dataStream, size, objectContext, backendInfo, log,
|
||||||
(err, dataRetrievalInfo, hashedStream) => {
|
(err, dataRetrievalInfo, hashedStream) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
log.error('error in datastore', {
|
log.error('error in datastore', {
|
||||||
error: err,
|
error: err,
|
||||||
});
|
});
|
||||||
return cb(err);
|
return cbOnce(err);
|
||||||
}
|
}
|
||||||
if (!dataRetrievalInfo) {
|
if (!dataRetrievalInfo) {
|
||||||
log.fatal('data put returned neither an error nor a key', {
|
log.fatal('data put returned neither an error nor a key', {
|
||||||
method: 'storeObject::dataStore',
|
method: 'storeObject::dataStore',
|
||||||
});
|
});
|
||||||
return cb(errors.InternalError);
|
return cbOnce(errors.InternalError);
|
||||||
}
|
}
|
||||||
log.trace('dataStore: backend stored key', {
|
log.trace('dataStore: backend stored key', {
|
||||||
dataRetrievalInfo,
|
dataRetrievalInfo,
|
||||||
});
|
});
|
||||||
return checkHashMatchMD5(stream, hashedStream,
|
return checkHashMatchMD5(stream, hashedStream,
|
||||||
dataRetrievalInfo, log, cb);
|
dataRetrievalInfo, log, cbOnce);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
const { waterfall } = require('async');
|
const { waterfall } = require('async');
|
||||||
const { parseString } = require('xml2js');
|
const { parseString } = require('xml2js');
|
||||||
const { auth, errors } = require('arsenal');
|
const { auth, errors, policies } = require('arsenal');
|
||||||
|
|
||||||
const vault = require('../auth/vault');
|
const vault = require('../auth/vault');
|
||||||
const { createBucket } = require('./apiUtils/bucket/bucketCreation');
|
const { createBucket } = require('./apiUtils/bucket/bucketCreation');
|
||||||
|
@ -8,7 +8,7 @@ const collectCorsHeaders = require('../utilities/collectCorsHeaders');
|
||||||
const { config } = require('../Config');
|
const { config } = require('../Config');
|
||||||
const aclUtils = require('../utilities/aclUtils');
|
const aclUtils = require('../utilities/aclUtils');
|
||||||
const { pushMetric } = require('../utapi/utilities');
|
const { pushMetric } = require('../utapi/utilities');
|
||||||
const requestUtils = require('../utilities/requestUtils');
|
const requestUtils = policies.requestUtils;
|
||||||
|
|
||||||
let { restEndpoints, locationConstraints } = config;
|
let { restEndpoints, locationConstraints } = config;
|
||||||
config.on('rest-endpoints-update', () => {
|
config.on('rest-endpoints-update', () => {
|
||||||
|
@ -131,7 +131,7 @@ function bucketPut(authInfo, request, log, callback) {
|
||||||
if (authInfo.isRequesterAnIAMUser()) {
|
if (authInfo.isRequesterAnIAMUser()) {
|
||||||
const authParams = auth.server.extractParams(request, log, 's3',
|
const authParams = auth.server.extractParams(request, log, 's3',
|
||||||
request.query);
|
request.query);
|
||||||
const ip = requestUtils.getClientIp(request);
|
const ip = requestUtils.getClientIp(request, config);
|
||||||
const requestContextParams = {
|
const requestContextParams = {
|
||||||
constantParams: {
|
constantParams: {
|
||||||
headers: request.headers,
|
headers: request.headers,
|
||||||
|
|
|
@ -424,6 +424,7 @@ function completeMultipartUpload(authInfo, request, log, callback) {
|
||||||
const xml = convertToXml('completeMultipartUpload', xmlParams);
|
const xml = convertToXml('completeMultipartUpload', xmlParams);
|
||||||
pushMetric('completeMultipartUpload', log, {
|
pushMetric('completeMultipartUpload', log, {
|
||||||
authInfo,
|
authInfo,
|
||||||
|
canonicalID: destinationBucket.getOwner(),
|
||||||
bucket: bucketName,
|
bucket: bucketName,
|
||||||
keys: [objectKey],
|
keys: [objectKey],
|
||||||
});
|
});
|
||||||
|
|
|
@ -2,7 +2,7 @@ const crypto = require('crypto');
|
||||||
|
|
||||||
const async = require('async');
|
const async = require('async');
|
||||||
const { parseString } = require('xml2js');
|
const { parseString } = require('xml2js');
|
||||||
const { auth, errors, versioning, s3middleware } = require('arsenal');
|
const { auth, errors, versioning, s3middleware, policies } = require('arsenal');
|
||||||
|
|
||||||
const escapeForXml = s3middleware.escapeForXml;
|
const escapeForXml = s3middleware.escapeForXml;
|
||||||
const { pushMetric } = require('../utapi/utilities');
|
const { pushMetric } = require('../utapi/utilities');
|
||||||
|
@ -16,7 +16,8 @@ const { preprocessingVersioningDelete }
|
||||||
= require('./apiUtils/object/versioning');
|
= require('./apiUtils/object/versioning');
|
||||||
const createAndStoreObject = require('./apiUtils/object/createAndStoreObject');
|
const createAndStoreObject = require('./apiUtils/object/createAndStoreObject');
|
||||||
const { metadataGetObject } = require('../metadata/metadataUtils');
|
const { metadataGetObject } = require('../metadata/metadataUtils');
|
||||||
const requestUtils = require('../utilities/requestUtils');
|
const { config } = require('../Config');
|
||||||
|
const requestUtils = policies.requestUtils;
|
||||||
|
|
||||||
const versionIdUtils = versioning.VersionID;
|
const versionIdUtils = versioning.VersionID;
|
||||||
|
|
||||||
|
@ -344,7 +345,7 @@ function multiObjectDelete(authInfo, request, log, callback) {
|
||||||
// params on to this api
|
// params on to this api
|
||||||
const authParams = auth.server.extractParams(request, log,
|
const authParams = auth.server.extractParams(request, log,
|
||||||
's3', request.query);
|
's3', request.query);
|
||||||
const ip = requestUtils.getClientIp(request);
|
const ip = requestUtils.getClientIp(request, config);
|
||||||
const requestContextParams = {
|
const requestContextParams = {
|
||||||
constantParams: {
|
constantParams: {
|
||||||
headers: request.headers,
|
headers: request.headers,
|
||||||
|
@ -485,6 +486,7 @@ function multiObjectDelete(authInfo, request, log, callback) {
|
||||||
const deletedKeys = successfullyDeleted.map(item => item.key);
|
const deletedKeys = successfullyDeleted.map(item => item.key);
|
||||||
pushMetric('multiObjectDelete', log, {
|
pushMetric('multiObjectDelete', log, {
|
||||||
authInfo,
|
authInfo,
|
||||||
|
canonicalID: bucket.getOwner(),
|
||||||
bucket: bucketName,
|
bucket: bucketName,
|
||||||
keys: deletedKeys,
|
keys: deletedKeys,
|
||||||
byteLength: Number.parseInt(totalContentLengthDeleted, 10),
|
byteLength: Number.parseInt(totalContentLengthDeleted, 10),
|
||||||
|
|
|
@ -46,6 +46,7 @@ function multipartDelete(authInfo, request, log, callback) {
|
||||||
// NoSuchUpload should not be recorded by Utapi
|
// NoSuchUpload should not be recorded by Utapi
|
||||||
pushMetric('abortMultipartUpload', log, {
|
pushMetric('abortMultipartUpload', log, {
|
||||||
authInfo,
|
authInfo,
|
||||||
|
canonicalID: destinationBucket.getOwner(),
|
||||||
bucket: bucketName,
|
bucket: bucketName,
|
||||||
keys: [objectKey],
|
keys: [objectKey],
|
||||||
byteLength: partSizeSum,
|
byteLength: partSizeSum,
|
||||||
|
|
|
@ -498,6 +498,7 @@ function objectCopy(authInfo, request, sourceBucket,
|
||||||
}
|
}
|
||||||
pushMetric('copyObject', log, {
|
pushMetric('copyObject', log, {
|
||||||
authInfo,
|
authInfo,
|
||||||
|
canonicalID: destBucketMD.getOwner(),
|
||||||
bucket: destBucketName,
|
bucket: destBucketName,
|
||||||
keys: [destObjectKey],
|
keys: [destObjectKey],
|
||||||
newByteLength: sourceObjSize,
|
newByteLength: sourceObjSize,
|
||||||
|
|
|
@ -154,6 +154,7 @@ function objectDelete(authInfo, request, log, cb) {
|
||||||
});
|
});
|
||||||
pushMetric('deleteObject', log, {
|
pushMetric('deleteObject', log, {
|
||||||
authInfo,
|
authInfo,
|
||||||
|
canonicalID: bucketMD.getOwner(),
|
||||||
bucket: bucketName,
|
bucket: bucketName,
|
||||||
keys: [objectKey],
|
keys: [objectKey],
|
||||||
byteLength: Number.parseInt(objectMD['content-length'], 10),
|
byteLength: Number.parseInt(objectMD['content-length'], 10),
|
||||||
|
|
|
@ -111,8 +111,11 @@ function objectPut(authInfo, request, streamingV4Params, log, callback) {
|
||||||
versionIdUtils.encode(storingResult.versionId);
|
versionIdUtils.encode(storingResult.versionId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// only the bucket owner's metrics should be updated, regardless of
|
||||||
|
// who the requester is
|
||||||
pushMetric('putObject', log, {
|
pushMetric('putObject', log, {
|
||||||
authInfo,
|
authInfo,
|
||||||
|
canonicalID: bucket.getOwner(),
|
||||||
bucket: bucketName,
|
bucket: bucketName,
|
||||||
keys: [objectKey],
|
keys: [objectKey],
|
||||||
newByteLength,
|
newByteLength,
|
||||||
|
|
|
@ -358,6 +358,7 @@ function objectPutCopyPart(authInfo, request, sourceBucket,
|
||||||
additionalHeaders['x-amz-copy-source-version-id'] = sourceVerId;
|
additionalHeaders['x-amz-copy-source-version-id'] = sourceVerId;
|
||||||
pushMetric('uploadPartCopy', log, {
|
pushMetric('uploadPartCopy', log, {
|
||||||
authInfo,
|
authInfo,
|
||||||
|
canonicalID: destBucketMD.getOwner(),
|
||||||
bucket: destBucketName,
|
bucket: destBucketName,
|
||||||
keys: [destObjectKey],
|
keys: [destObjectKey],
|
||||||
newByteLength: copyObjectSize,
|
newByteLength: copyObjectSize,
|
||||||
|
|
|
@ -367,6 +367,7 @@ function objectPutPart(authInfo, request, streamingV4Params, log,
|
||||||
}
|
}
|
||||||
pushMetric('uploadPart', log, {
|
pushMetric('uploadPart', log, {
|
||||||
authInfo,
|
authInfo,
|
||||||
|
canonicalID: destinationBucket.getOwner(),
|
||||||
bucket: bucketName,
|
bucket: bucketName,
|
||||||
keys: [objectKey],
|
keys: [objectKey],
|
||||||
newByteLength: size,
|
newByteLength: size,
|
||||||
|
|
|
@ -25,14 +25,14 @@ class V4Transform extends Transform {
|
||||||
* header plus the string 'aws4_request' joined with '/':
|
* header plus the string 'aws4_request' joined with '/':
|
||||||
* timestamp/region/aws-service/aws4_request
|
* timestamp/region/aws-service/aws4_request
|
||||||
* @param {object} log - logger object
|
* @param {object} log - logger object
|
||||||
* @param {function} cb - callback to api
|
* @param {function} errCb - callback called if an error occurs
|
||||||
*/
|
*/
|
||||||
constructor(streamingV4Params, log, cb) {
|
constructor(streamingV4Params, log, errCb) {
|
||||||
const { accessKey, signatureFromRequest, region, scopeDate, timestamp,
|
const { accessKey, signatureFromRequest, region, scopeDate, timestamp,
|
||||||
credentialScope } = streamingV4Params;
|
credentialScope } = streamingV4Params;
|
||||||
super({});
|
super({});
|
||||||
this.log = log;
|
this.log = log;
|
||||||
this.cb = cb;
|
this.errCb = errCb;
|
||||||
this.accessKey = accessKey;
|
this.accessKey = accessKey;
|
||||||
this.region = region;
|
this.region = region;
|
||||||
this.scopeDate = scopeDate;
|
this.scopeDate = scopeDate;
|
||||||
|
@ -50,6 +50,7 @@ class V4Transform extends Transform {
|
||||||
this.currentMetadata = [];
|
this.currentMetadata = [];
|
||||||
this.lastPieceDone = false;
|
this.lastPieceDone = false;
|
||||||
this.lastChunk = false;
|
this.lastChunk = false;
|
||||||
|
this.clientError = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -192,6 +193,10 @@ class V4Transform extends Transform {
|
||||||
// signature + \r\n + chunk-data + \r\n
|
// signature + \r\n + chunk-data + \r\n
|
||||||
// Last transfer-encoding chunk will have size 0 and no chunk-data.
|
// Last transfer-encoding chunk will have size 0 and no chunk-data.
|
||||||
|
|
||||||
|
// if there was an error earlier, ignore the remaining data
|
||||||
|
if (this.clientError) {
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
if (this.lastPieceDone) {
|
if (this.lastPieceDone) {
|
||||||
const slice = chunk.slice(0, 10);
|
const slice = chunk.slice(0, 10);
|
||||||
this.log.trace('received chunk after end.' +
|
this.log.trace('received chunk after end.' +
|
||||||
|
@ -268,7 +273,13 @@ class V4Transform extends Transform {
|
||||||
// final callback
|
// final callback
|
||||||
err => {
|
err => {
|
||||||
if (err) {
|
if (err) {
|
||||||
return this.cb(err);
|
this.clientError = true;
|
||||||
|
// Emit the 'clientError' event to notify
|
||||||
|
// listeners that the client did not provide a
|
||||||
|
// valid stream of content, e.g. due to a wrong
|
||||||
|
// signature.
|
||||||
|
this.emit('clientError');
|
||||||
|
this.errCb(err);
|
||||||
}
|
}
|
||||||
// get next chunk
|
// get next chunk
|
||||||
return callback();
|
return callback();
|
||||||
|
|
|
@ -102,6 +102,10 @@ function _put(cipherBundle, value, valueSize,
|
||||||
if (value) {
|
if (value) {
|
||||||
hashedStream = new MD5Sum();
|
hashedStream = new MD5Sum();
|
||||||
value.pipe(hashedStream);
|
value.pipe(hashedStream);
|
||||||
|
value.once('clientError', () => {
|
||||||
|
log.trace('destroying hashed stream');
|
||||||
|
hashedStream.destroy();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (implName === 'multipleBackends') {
|
if (implName === 'multipleBackends') {
|
||||||
|
|
|
@ -5,8 +5,8 @@ const { auth, errors, s3routes, policies } = require('arsenal');
|
||||||
const { config } = require('../Config');
|
const { config } = require('../Config');
|
||||||
const constants = require('../../constants');
|
const constants = require('../../constants');
|
||||||
const vault = require('../auth/vault');
|
const vault = require('../auth/vault');
|
||||||
const requestUtils = require('../utilities/requestUtils');
|
|
||||||
|
|
||||||
|
const requestUtils = policies.requestUtils;
|
||||||
const RequestContext = policies.RequestContext;
|
const RequestContext = policies.RequestContext;
|
||||||
const { responseJSONBody } = s3routes.routesUtils;
|
const { responseJSONBody } = s3routes.routesUtils;
|
||||||
const metadataProxy = httpProxy.createProxyServer({ ignorePath: true });
|
const metadataProxy = httpProxy.createProxyServer({ ignorePath: true });
|
||||||
|
@ -45,7 +45,7 @@ function routeMetadata(clientIP, request, response, log) {
|
||||||
&& !['bucket', 'log', 'id'].includes(subResource)) {
|
&& !['bucket', 'log', 'id'].includes(subResource)) {
|
||||||
return responseJSONBody(errors.NotImplemented, null, response, log);
|
return responseJSONBody(errors.NotImplemented, null, response, log);
|
||||||
}
|
}
|
||||||
const ip = requestUtils.getClientIp(request);
|
const ip = requestUtils.getClientIp(request, config);
|
||||||
const requestContexts = [new RequestContext(request.headers, request.query,
|
const requestContexts = [new RequestContext(request.headers, request.query,
|
||||||
request.generalResource, request.specificResource, ip,
|
request.generalResource, request.specificResource, ip,
|
||||||
request.connection.encrypted, request.resourceType, 'metadata')];
|
request.connection.encrypted, request.resourceType, 'metadata')];
|
||||||
|
|
|
@ -8,6 +8,17 @@ const _config = require('../Config').config;
|
||||||
// setup utapi client
|
// setup utapi client
|
||||||
const utapi = new UtapiClient(_config.utapi);
|
const utapi = new UtapiClient(_config.utapi);
|
||||||
|
|
||||||
|
const bucketOwnerMetrics = [
|
||||||
|
'completeMultipartUpload',
|
||||||
|
'multiObjectDelete',
|
||||||
|
'abortMultipartUpload',
|
||||||
|
'copyObject',
|
||||||
|
'deleteObject',
|
||||||
|
'putObject',
|
||||||
|
'uploadPartCopy',
|
||||||
|
'uploadPart',
|
||||||
|
];
|
||||||
|
|
||||||
function _listMetrics(host,
|
function _listMetrics(host,
|
||||||
port,
|
port,
|
||||||
metric,
|
metric,
|
||||||
|
@ -212,6 +223,13 @@ function pushMetric(action, log, metricObj) {
|
||||||
utapiObj.accountId = authInfo.getCanonicalID();
|
utapiObj.accountId = authInfo.getCanonicalID();
|
||||||
utapiObj.userId = authInfo.isRequesterAnIAMUser() ?
|
utapiObj.userId = authInfo.isRequesterAnIAMUser() ?
|
||||||
authInfo.getShortid() : undefined;
|
authInfo.getShortid() : undefined;
|
||||||
|
// If action impacts 'numberOfObjectsStored' or 'storageUtilized' metric
|
||||||
|
// only the bucket owner account's metrics should be updated
|
||||||
|
const canonicalIdMatch = authInfo.getCanonicalID() === canonicalID;
|
||||||
|
if (bucketOwnerMetrics.includes(action) && !canonicalIdMatch) {
|
||||||
|
utapiObj.accountId = canonicalID;
|
||||||
|
utapiObj.userId = undefined;
|
||||||
|
}
|
||||||
} else if (canonicalID) {
|
} else if (canonicalID) {
|
||||||
utapiObj.accountId = canonicalID;
|
utapiObj.accountId = canonicalID;
|
||||||
}
|
}
|
||||||
|
|
|
@ -193,14 +193,17 @@ aclUtils.isValidCanonicalId = function isValidCanonicalId(canonicalID) {
|
||||||
|
|
||||||
aclUtils.reconstructUsersIdentifiedByEmail =
|
aclUtils.reconstructUsersIdentifiedByEmail =
|
||||||
function reconstruct(userInfofromVault, userGrantInfo) {
|
function reconstruct(userInfofromVault, userGrantInfo) {
|
||||||
return userInfofromVault.map(item => {
|
return userGrantInfo.map(item => {
|
||||||
const userEmail = item.email.toLowerCase();
|
const userEmail = item.identifier.toLowerCase();
|
||||||
|
const user = {};
|
||||||
// Find the full user grant info based on email
|
// Find the full user grant info based on email
|
||||||
const user = userGrantInfo
|
const userId = userInfofromVault
|
||||||
.find(elem => elem.identifier.toLowerCase() === userEmail);
|
.find(elem => elem.email.toLowerCase() === userEmail);
|
||||||
// Set the identifier to be the canonicalID instead of email
|
// Set the identifier to be the canonicalID instead of email
|
||||||
user.identifier = item.canonicalID;
|
user.identifier = userId.canonicalID;
|
||||||
user.userIDType = 'id';
|
user.userIDType = 'id';
|
||||||
|
// copy over ACL grant type: i.e. READ/WRITE...
|
||||||
|
user.grantType = item.grantType;
|
||||||
return user;
|
return user;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
const { ipCheck } = require('arsenal');
|
|
||||||
const { config } = require('../Config');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* getClientIp - Gets the client IP from the request
|
|
||||||
* @param {object} request - http request object
|
|
||||||
* @param {object} s3config - (optional) s3 config
|
|
||||||
* @return {string} - returns client IP from the request
|
|
||||||
*/
|
|
||||||
function getClientIp(request, s3config) {
|
|
||||||
const clientIp = request.socket.remoteAddress;
|
|
||||||
const requestConfig = (s3config || config).requests;
|
|
||||||
if (requestConfig && requestConfig.viaProxy) {
|
|
||||||
/**
|
|
||||||
* if requests are configured to come via proxy,
|
|
||||||
* check from config which proxies are to be trusted and
|
|
||||||
* which header to be used to extract client IP
|
|
||||||
*/
|
|
||||||
if (ipCheck.ipMatchCidrList(requestConfig.trustedProxyCIDRs,
|
|
||||||
clientIp)) {
|
|
||||||
const ipFromHeader
|
|
||||||
// eslint-disable-next-line operator-linebreak
|
|
||||||
= request.headers[requestConfig.extractClientIPFromHeader];
|
|
||||||
if (ipFromHeader && ipFromHeader.trim().length) {
|
|
||||||
return ipFromHeader.split(',')[0].trim();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return clientIp;
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
getClientIp,
|
|
||||||
};
|
|
|
@ -19,7 +19,7 @@
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/scality/S3#readme",
|
"homepage": "https://github.com/scality/S3#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"arsenal": "github:scality/Arsenal#a7b6fc8",
|
"arsenal": "github:scality/Arsenal#890d239",
|
||||||
"async": "~2.5.0",
|
"async": "~2.5.0",
|
||||||
"aws-sdk": "2.80.0",
|
"aws-sdk": "2.80.0",
|
||||||
"azure-storage": "^2.1.0",
|
"azure-storage": "^2.1.0",
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
"mongodb": "^2.2.31",
|
"mongodb": "^2.2.31",
|
||||||
"node-uuid": "^1.4.3",
|
"node-uuid": "^1.4.3",
|
||||||
"npm-run-all": "~4.1.5",
|
"npm-run-all": "~4.1.5",
|
||||||
"sproxydclient": "scality/sproxydclient#0e17e27",
|
"sproxydclient": "scality/sproxydclient#5dc4903",
|
||||||
"utapi": "scality/utapi#b522b3d",
|
"utapi": "scality/utapi#b522b3d",
|
||||||
"utf8": "~2.1.1",
|
"utf8": "~2.1.1",
|
||||||
"uuid": "^3.0.1",
|
"uuid": "^3.0.1",
|
||||||
|
|
|
@ -80,6 +80,25 @@ describe('PUT Bucket ACL', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should set multiple ACL permissions with same grantee specified' +
|
||||||
|
'using email', done => {
|
||||||
|
s3.putBucketAcl({
|
||||||
|
Bucket: bucketName,
|
||||||
|
GrantRead: 'emailAddress=sampleaccount1@sampling.com',
|
||||||
|
GrantWrite: 'emailAddress=sampleaccount1@sampling.com',
|
||||||
|
}, err => {
|
||||||
|
assert(!err);
|
||||||
|
s3.getBucketAcl({
|
||||||
|
Bucket: bucketName,
|
||||||
|
}, (err, res) => {
|
||||||
|
assert(!err);
|
||||||
|
// expect both READ and WRITE grants to exist
|
||||||
|
assert.strictEqual(res.Grants.length, 2);
|
||||||
|
return done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('should return InvalidArgument if invalid grantee ' +
|
it('should return InvalidArgument if invalid grantee ' +
|
||||||
'user ID provided in ACL header request', done => {
|
'user ID provided in ACL header request', done => {
|
||||||
s3.putBucketAcl({
|
s3.putBucketAcl({
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<id>central</id>
|
<id>central</id>
|
||||||
<name>Maven Repository Switchboard</name>
|
<name>Maven Repository Switchboard</name>
|
||||||
<layout>default</layout>
|
<layout>default</layout>
|
||||||
<url>http://repo1.maven.org/maven2</url>
|
<url>https://repo1.maven.org/maven2</url>
|
||||||
<snapshots>
|
<snapshots>
|
||||||
<enabled>false</enabled>
|
<enabled>false</enabled>
|
||||||
</snapshots>
|
</snapshots>
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
<pluginRepository>
|
<pluginRepository>
|
||||||
<id>central</id>
|
<id>central</id>
|
||||||
<name>Maven Plugin Repository</name>
|
<name>Maven Plugin Repository</name>
|
||||||
<url>http://repo1.maven.org/maven2</url>
|
<url>https://repo1.maven.org/maven2</url>
|
||||||
<layout>default</layout>
|
<layout>default</layout>
|
||||||
<snapshots>
|
<snapshots>
|
||||||
<enabled>false</enabled>
|
<enabled>false</enabled>
|
||||||
|
|
|
@ -0,0 +1,125 @@
|
||||||
|
const http = require('http');
|
||||||
|
const async = require('async');
|
||||||
|
const assert = require('assert');
|
||||||
|
|
||||||
|
const BucketUtility =
|
||||||
|
require('../../aws-node-sdk/lib/utility/bucket-util');
|
||||||
|
|
||||||
|
const HttpRequestAuthV4 = require('../utils/HttpRequestAuthV4');
|
||||||
|
const config = require('../../config.json');
|
||||||
|
|
||||||
|
const DUMMY_SIGNATURE =
|
||||||
|
'baadc0debaadc0debaadc0debaadc0debaadc0debaadc0debaadc0debaadc0de';
|
||||||
|
|
||||||
|
http.globalAgent.keepAlive = true;
|
||||||
|
|
||||||
|
const PORT = 8000;
|
||||||
|
const BUCKET = 'bad-chunk-signature-v4';
|
||||||
|
|
||||||
|
const N_PUTS = 100;
|
||||||
|
const N_DATA_CHUNKS = 20;
|
||||||
|
const DATA_CHUNK_SIZE = 128 * 1024;
|
||||||
|
const ALTER_CHUNK_SIGNATURE = true;
|
||||||
|
|
||||||
|
const CHUNK_DATA = Buffer.alloc(DATA_CHUNK_SIZE).fill('0').toString();
|
||||||
|
|
||||||
|
function createBucket(bucketUtil, cb) {
|
||||||
|
const createBucket = async.asyncify(bucketUtil.createOne.bind(bucketUtil));
|
||||||
|
createBucket(BUCKET, cb);
|
||||||
|
}
|
||||||
|
|
||||||
|
function cleanupBucket(bucketUtil, cb) {
|
||||||
|
const emptyBucket = async.asyncify(bucketUtil.empty.bind(bucketUtil));
|
||||||
|
const deleteBucket = async.asyncify(bucketUtil.deleteOne.bind(bucketUtil));
|
||||||
|
async.series([
|
||||||
|
done => emptyBucket(BUCKET, done),
|
||||||
|
done => deleteBucket(BUCKET, done),
|
||||||
|
], cb);
|
||||||
|
}
|
||||||
|
|
||||||
|
class HttpChunkedUploadWithBadSignature extends HttpRequestAuthV4 {
|
||||||
|
constructor(url, params, callback) {
|
||||||
|
super(url, params, callback);
|
||||||
|
this._chunkId = 0;
|
||||||
|
this._alterSignatureChunkId = params.alterSignatureChunkId;
|
||||||
|
}
|
||||||
|
|
||||||
|
getChunkSignature(chunkData) {
|
||||||
|
let signature;
|
||||||
|
if (this._chunkId === this._alterSignatureChunkId) {
|
||||||
|
// console.log(
|
||||||
|
// `ALTERING SIGNATURE OF DATA CHUNK #${this._chunkId}`);
|
||||||
|
signature = DUMMY_SIGNATURE;
|
||||||
|
} else {
|
||||||
|
signature = super.getChunkSignature(chunkData);
|
||||||
|
}
|
||||||
|
++this._chunkId;
|
||||||
|
return signature;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function testChunkedPutWithBadSignature(n, alterSignatureChunkId, cb) {
|
||||||
|
const req = new HttpChunkedUploadWithBadSignature(
|
||||||
|
`http://${config.ipAddress}:${PORT}/${BUCKET}/obj-${n}`, {
|
||||||
|
accessKey: config.accessKey,
|
||||||
|
secretKey: config.secretKey,
|
||||||
|
method: 'PUT',
|
||||||
|
headers: {
|
||||||
|
'content-length': N_DATA_CHUNKS * DATA_CHUNK_SIZE,
|
||||||
|
'connection': 'keep-alive',
|
||||||
|
},
|
||||||
|
alterSignatureChunkId,
|
||||||
|
}, res => {
|
||||||
|
if (alterSignatureChunkId >= 0 &&
|
||||||
|
alterSignatureChunkId <= N_DATA_CHUNKS) {
|
||||||
|
assert.strictEqual(res.statusCode, 403);
|
||||||
|
} else {
|
||||||
|
assert.strictEqual(res.statusCode, 200);
|
||||||
|
}
|
||||||
|
res.on('data', () => {});
|
||||||
|
res.on('end', cb);
|
||||||
|
});
|
||||||
|
|
||||||
|
req.on('error', err => {
|
||||||
|
assert.ifError(err);
|
||||||
|
});
|
||||||
|
async.timesSeries(N_DATA_CHUNKS, (chunkIndex, done) => {
|
||||||
|
// console.log(`SENDING NEXT CHUNK OF LENGTH ${CHUNK_DATA.length}`);
|
||||||
|
if (req.write(CHUNK_DATA)) {
|
||||||
|
process.nextTick(done);
|
||||||
|
} else {
|
||||||
|
req.once('drain', done);
|
||||||
|
}
|
||||||
|
}, () => {
|
||||||
|
req.end();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('streaming V4 signature with bad chunk signature', () => {
|
||||||
|
const bucketUtil = new BucketUtility('default', {});
|
||||||
|
|
||||||
|
before(done => createBucket(bucketUtil, done));
|
||||||
|
after(done => cleanupBucket(bucketUtil, done));
|
||||||
|
it('Cloudserver should be robust against bad signature in streaming ' +
|
||||||
|
'payload', function badSignatureInStreamingPayload(cb) {
|
||||||
|
this.timeout(120000);
|
||||||
|
async.timesLimit(N_PUTS, 10, (n, done) => {
|
||||||
|
// multiple test cases depend on the value of
|
||||||
|
// alterSignatureChunkId:
|
||||||
|
// alterSignatureChunkId >= 0 &&
|
||||||
|
// alterSignatureChunkId < N_DATA_CHUNKS
|
||||||
|
// <=> alter the signature of the target data chunk
|
||||||
|
// alterSignatureChunkId == N_DATA_CHUNKS
|
||||||
|
// <=> alter the signature of the last empty chunk that
|
||||||
|
// carries the last payload signature
|
||||||
|
// alterSignatureChunkId > N_DATA_CHUNKS
|
||||||
|
// <=> no signature is altered (regular test case)
|
||||||
|
// By making n go from 0 to nDatachunks+1, we cover all
|
||||||
|
// above cases.
|
||||||
|
|
||||||
|
const alterSignatureChunkId = ALTER_CHUNK_SIGNATURE ?
|
||||||
|
(n % (N_DATA_CHUNKS + 2)) : null;
|
||||||
|
testChunkedPutWithBadSignature(n, alterSignatureChunkId, done);
|
||||||
|
}, err => cb(err));
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,255 @@
|
||||||
|
const crypto = require('crypto');
|
||||||
|
const http = require('http');
|
||||||
|
const stream = require('stream');
|
||||||
|
const url = require('url');
|
||||||
|
|
||||||
|
const SERVICE = 's3';
|
||||||
|
const REGION = 'us-east-1';
|
||||||
|
const EMPTY_STRING_HASH = crypto.createHash('sha256').digest('hex');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute and sign HTTP requests with AWS signature v4 scheme
|
||||||
|
*
|
||||||
|
* The purpose of this class is primarily testing, where the various
|
||||||
|
* functions used to generate the signing content can be overriden for
|
||||||
|
* specific test needs, like altering signatures or hashes.
|
||||||
|
*
|
||||||
|
* It provides a writable stream interface like the request object
|
||||||
|
* returned by http.request().
|
||||||
|
*/
|
||||||
|
class HttpRequestAuthV4 extends stream.Writable {
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
* @param {string} url - HTTP URL to the S3 server
|
||||||
|
* @param {object} params - request parameters
|
||||||
|
* @param {string} params.accessKey - AWS access key
|
||||||
|
* @param {string} params.secretKey - AWS secret key
|
||||||
|
* @param {string} [params.method="GET"] - HTTP method
|
||||||
|
* @param {object} [params.headers] - HTTP request headers
|
||||||
|
* example: {
|
||||||
|
* 'connection': 'keep-alive',
|
||||||
|
* 'content-length': 1000, // mandatory for PUT object requests
|
||||||
|
* 'x-amz-content-sha256': '...' // streaming V4 encoding is used
|
||||||
|
* // if not provided
|
||||||
|
* }
|
||||||
|
* @param {function} callback - called when a response arrives:
|
||||||
|
* callback(res) (see http.request())
|
||||||
|
*/
|
||||||
|
constructor(url, params, callback) {
|
||||||
|
super();
|
||||||
|
this._url = url;
|
||||||
|
this._accessKey = params.accessKey;
|
||||||
|
this._secretKey = params.secretKey;
|
||||||
|
this._httpParams = params;
|
||||||
|
this._callback = callback;
|
||||||
|
|
||||||
|
this._httpRequest = null;
|
||||||
|
this._timestamp = null;
|
||||||
|
this._signingKey = null;
|
||||||
|
this._chunkedUpload = false;
|
||||||
|
this._lastSignature = null;
|
||||||
|
|
||||||
|
this.once('finish', () => {
|
||||||
|
if (!this._httpRequest) {
|
||||||
|
this._initiateRequest(false);
|
||||||
|
}
|
||||||
|
if (this._chunkedUpload) {
|
||||||
|
this._httpRequest.end(this.constructChunkPayload(''));
|
||||||
|
} else {
|
||||||
|
this._httpRequest.end();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getCredentialScope() {
|
||||||
|
const signingDate = this._timestamp.slice(0, 8);
|
||||||
|
const credentialScope =
|
||||||
|
`${signingDate}/${REGION}/${SERVICE}/aws4_request`;
|
||||||
|
// console.log(`CREDENTIAL SCOPE: "${credentialScope}"`);
|
||||||
|
return credentialScope;
|
||||||
|
}
|
||||||
|
|
||||||
|
getSigningKey() {
|
||||||
|
const signingDate = this._timestamp.slice(0, 8);
|
||||||
|
const dateKey = crypto.createHmac('sha256', `AWS4${this._secretKey}`)
|
||||||
|
.update(signingDate, 'binary').digest();
|
||||||
|
const dateRegionKey = crypto.createHmac('sha256', dateKey)
|
||||||
|
.update(REGION, 'binary').digest();
|
||||||
|
const dateRegionServiceKey = crypto.createHmac('sha256', dateRegionKey)
|
||||||
|
.update(SERVICE, 'binary').digest();
|
||||||
|
this._signingKey = crypto.createHmac('sha256', dateRegionServiceKey)
|
||||||
|
.update('aws4_request', 'binary').digest();
|
||||||
|
}
|
||||||
|
|
||||||
|
createSignature(stringToSign) {
|
||||||
|
if (!this._signingKey) {
|
||||||
|
this.getSigningKey();
|
||||||
|
}
|
||||||
|
return crypto.createHmac('sha256', this._signingKey)
|
||||||
|
.update(stringToSign).digest('hex');
|
||||||
|
}
|
||||||
|
|
||||||
|
getCanonicalRequest(urlObj, signedHeaders) {
|
||||||
|
const method = this._httpParams.method || 'GET';
|
||||||
|
const signedHeadersList = Object.keys(signedHeaders).sort();
|
||||||
|
const qsParams = [];
|
||||||
|
urlObj.searchParams.forEach((value, key) => {
|
||||||
|
qsParams.push({ key, value });
|
||||||
|
});
|
||||||
|
const canonicalQueryString =
|
||||||
|
qsParams
|
||||||
|
.sort((a, b) => {
|
||||||
|
if (a.key !== b.key) {
|
||||||
|
return a.key < b.key ? -1 : 1;
|
||||||
|
}
|
||||||
|
return a.value < b.value ? -1 : 1;
|
||||||
|
})
|
||||||
|
.map(param => `${encodeURI(param.key)}=${encodeURI(param.value)}`)
|
||||||
|
.join('&');
|
||||||
|
const canonicalSignedHeaders = signedHeadersList
|
||||||
|
.map(header => `${header}:${signedHeaders[header]}\n`)
|
||||||
|
.join('');
|
||||||
|
const canonicalRequest = [
|
||||||
|
method,
|
||||||
|
urlObj.pathname,
|
||||||
|
canonicalQueryString,
|
||||||
|
canonicalSignedHeaders,
|
||||||
|
signedHeadersList.join(';'),
|
||||||
|
signedHeaders['x-amz-content-sha256'],
|
||||||
|
].join('\n');
|
||||||
|
|
||||||
|
// console.log(`CANONICAL REQUEST: "${canonicalRequest}"`);
|
||||||
|
return canonicalRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
constructRequestStringToSign(canonicalReq) {
|
||||||
|
const canonicalReqHash =
|
||||||
|
crypto.createHash('sha256').update(canonicalReq).digest('hex');
|
||||||
|
const stringToSign = `AWS4-HMAC-SHA256\n${this._timestamp}\n` +
|
||||||
|
`${this.getCredentialScope()}\n${canonicalReqHash}`;
|
||||||
|
// console.log(`STRING TO SIGN: "${stringToSign}"`);
|
||||||
|
return stringToSign;
|
||||||
|
}
|
||||||
|
|
||||||
|
getAuthorizationSignature(urlObj, signedHeaders) {
|
||||||
|
const canonicalRequest =
|
||||||
|
this.getCanonicalRequest(urlObj, signedHeaders);
|
||||||
|
this._lastSignature = this.createSignature(
|
||||||
|
this.constructRequestStringToSign(canonicalRequest));
|
||||||
|
return this._lastSignature;
|
||||||
|
}
|
||||||
|
|
||||||
|
getAuthorizationHeader(urlObj, signedHeaders) {
|
||||||
|
const authorizationSignature =
|
||||||
|
this.getAuthorizationSignature(urlObj, signedHeaders);
|
||||||
|
const signedHeadersList = Object.keys(signedHeaders).sort();
|
||||||
|
|
||||||
|
return ['AWS4-HMAC-SHA256',
|
||||||
|
`Credential=${this._accessKey}/${this.getCredentialScope()},`,
|
||||||
|
`SignedHeaders=${signedHeadersList.join(';')},`,
|
||||||
|
`Signature=${authorizationSignature}`,
|
||||||
|
].join(' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
constructChunkStringToSign(chunkData) {
|
||||||
|
const currentChunkHash =
|
||||||
|
crypto.createHash('sha256').update(chunkData.toString())
|
||||||
|
.digest('hex');
|
||||||
|
const stringToSign = `AWS4-HMAC-SHA256-PAYLOAD\n${this._timestamp}\n` +
|
||||||
|
`${this.getCredentialScope()}\n${this._lastSignature}\n` +
|
||||||
|
`${EMPTY_STRING_HASH}\n${currentChunkHash}`;
|
||||||
|
// console.log(`CHUNK STRING TO SIGN: "${stringToSign}"`);
|
||||||
|
return stringToSign;
|
||||||
|
}
|
||||||
|
|
||||||
|
getChunkSignature(chunkData) {
|
||||||
|
const stringToSign = this.constructChunkStringToSign(chunkData);
|
||||||
|
this._lastSignature = this.createSignature(stringToSign);
|
||||||
|
return this._lastSignature;
|
||||||
|
}
|
||||||
|
|
||||||
|
constructChunkPayload(chunkData) {
|
||||||
|
if (!this._chunkedUpload) {
|
||||||
|
return chunkData;
|
||||||
|
}
|
||||||
|
const chunkSignature = this.getChunkSignature(chunkData);
|
||||||
|
return [chunkData.length.toString(16),
|
||||||
|
';chunk-signature=',
|
||||||
|
chunkSignature,
|
||||||
|
'\r\n',
|
||||||
|
chunkData,
|
||||||
|
'\r\n',
|
||||||
|
].join('');
|
||||||
|
}
|
||||||
|
|
||||||
|
_constructRequest(hasDataToSend) {
|
||||||
|
const dateObj = new Date();
|
||||||
|
const isoDate = dateObj.toISOString();
|
||||||
|
this._timestamp = [
|
||||||
|
isoDate.slice(0, 4),
|
||||||
|
isoDate.slice(5, 7),
|
||||||
|
isoDate.slice(8, 13),
|
||||||
|
isoDate.slice(14, 16),
|
||||||
|
isoDate.slice(17, 19),
|
||||||
|
'Z',
|
||||||
|
].join('');
|
||||||
|
|
||||||
|
const urlObj = new url.URL(this._url);
|
||||||
|
const signedHeaders = {
|
||||||
|
'host': urlObj.host,
|
||||||
|
'x-amz-date': this._timestamp,
|
||||||
|
};
|
||||||
|
const httpHeaders = Object.assign({}, this._httpParams.headers);
|
||||||
|
let contentLengthHeader;
|
||||||
|
Object.keys(httpHeaders).forEach(header => {
|
||||||
|
const lowerHeader = header.toLowerCase();
|
||||||
|
if (lowerHeader === 'content-length') {
|
||||||
|
contentLengthHeader = header;
|
||||||
|
}
|
||||||
|
if (!['connection',
|
||||||
|
'transfer-encoding'].includes(lowerHeader)) {
|
||||||
|
signedHeaders[lowerHeader] = httpHeaders[header];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (!signedHeaders['x-amz-content-sha256']) {
|
||||||
|
if (hasDataToSend) {
|
||||||
|
signedHeaders['x-amz-content-sha256'] =
|
||||||
|
'STREAMING-AWS4-HMAC-SHA256-PAYLOAD';
|
||||||
|
signedHeaders['content-encoding'] = 'aws-chunked';
|
||||||
|
this._chunkedUpload = true;
|
||||||
|
if (contentLengthHeader !== undefined) {
|
||||||
|
signedHeaders['x-amz-decoded-content-length'] =
|
||||||
|
httpHeaders[contentLengthHeader];
|
||||||
|
delete signedHeaders['content-length'];
|
||||||
|
delete httpHeaders[contentLengthHeader];
|
||||||
|
httpHeaders['transfer-encoding'] = 'chunked';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
signedHeaders['x-amz-content-sha256'] = EMPTY_STRING_HASH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
httpHeaders.Authorization =
|
||||||
|
this.getAuthorizationHeader(urlObj, signedHeaders);
|
||||||
|
|
||||||
|
return Object.assign(httpHeaders, signedHeaders);
|
||||||
|
}
|
||||||
|
|
||||||
|
_initiateRequest(hasDataToSend) {
|
||||||
|
const httpParams = Object.assign({}, this._httpParams);
|
||||||
|
httpParams.headers = this._constructRequest(hasDataToSend);
|
||||||
|
this._httpRequest = http.request(this._url, httpParams, this._callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
_write(chunk, encoding, callback) {
|
||||||
|
if (!this._httpRequest) {
|
||||||
|
this._initiateRequest(true);
|
||||||
|
}
|
||||||
|
const payload = this.constructChunkPayload(chunk);
|
||||||
|
if (this._httpRequest.write(payload)) {
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
return this._httpRequest.once('drain', callback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = HttpRequestAuthV4;
|
|
@ -478,6 +478,23 @@ describe('s3curl putObject', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should not be able to put an object if using streaming ' +
|
||||||
|
'chunked-upload with a valid V2 signature',
|
||||||
|
done => {
|
||||||
|
provideRawOutput([
|
||||||
|
'--debug',
|
||||||
|
`--put=${upload}`,
|
||||||
|
'--',
|
||||||
|
'-H',
|
||||||
|
'x-amz-content-sha256: STREAMING-AWS4-HMAC-SHA256-PAYLOAD',
|
||||||
|
`${endpoint}/${bucket}/${prefix}${delimiter}${upload}1`,
|
||||||
|
'-v'],
|
||||||
|
(httpCode, rawOutput) => {
|
||||||
|
assert.strictEqual(httpCode, '400 BAD REQUEST');
|
||||||
|
assertError(rawOutput.stdout, 'InvalidArgument', done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('should not be able to put an object in a bucket with an invalid name',
|
it('should not be able to put an object in a bucket with an invalid name',
|
||||||
done => {
|
done => {
|
||||||
provideRawOutput([
|
provideRawOutput([
|
||||||
|
|
|
@ -203,6 +203,50 @@ describe('putBucketACL API', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should set all ACLs sharing the same email in request headers',
|
||||||
|
done => {
|
||||||
|
const testACLRequest = {
|
||||||
|
bucketName,
|
||||||
|
namespace,
|
||||||
|
headers: {
|
||||||
|
'host': `${bucketName}.s3.amazonaws.com`,
|
||||||
|
'x-amz-grant-full-control':
|
||||||
|
'emailaddress="sampleaccount1@sampling.com"' +
|
||||||
|
',emailaddress="sampleaccount2@sampling.com"',
|
||||||
|
'x-amz-grant-read':
|
||||||
|
'emailaddress="sampleaccount1@sampling.com"',
|
||||||
|
'x-amz-grant-write':
|
||||||
|
'emailaddress="sampleaccount1@sampling.com"',
|
||||||
|
'x-amz-grant-read-acp':
|
||||||
|
'id=79a59df900b949e55d96a1e698fbacedfd6e09d98eac' +
|
||||||
|
'f8f8d5218e7cd47ef2be',
|
||||||
|
'x-amz-grant-write-acp':
|
||||||
|
'id=79a59df900b949e55d96a1e698fbacedfd6e09d98eac' +
|
||||||
|
'f8f8d5218e7cd47ef2bf',
|
||||||
|
},
|
||||||
|
url: '/?acl',
|
||||||
|
query: { acl: '' },
|
||||||
|
};
|
||||||
|
bucketPutACL(authInfo, testACLRequest, log, err => {
|
||||||
|
assert.strictEqual(err, undefined);
|
||||||
|
metadata.getBucket(bucketName, log, (err, md) => {
|
||||||
|
assert(md.getAcl().WRITE.indexOf(canonicalIDforSample1)
|
||||||
|
> -1);
|
||||||
|
assert(md.getAcl().READ.indexOf(canonicalIDforSample1)
|
||||||
|
> -1);
|
||||||
|
assert(md.getAcl().FULL_CONTROL
|
||||||
|
.indexOf(canonicalIDforSample1) > -1);
|
||||||
|
assert(md.getAcl().FULL_CONTROL
|
||||||
|
.indexOf(canonicalIDforSample2) > -1);
|
||||||
|
assert(md.getAcl().READ_ACP
|
||||||
|
.indexOf(canonicalIDforSample1) > -1);
|
||||||
|
assert(md.getAcl().WRITE_ACP
|
||||||
|
.indexOf(canonicalIDforSample2) > -1);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('should return an error if invalid grantee user ID ' +
|
it('should return an error if invalid grantee user ID ' +
|
||||||
'provided in ACL header request', done => {
|
'provided in ACL header request', done => {
|
||||||
// Canonical ID should be a 64-digit hex string
|
// Canonical ID should be a 64-digit hex string
|
||||||
|
|
|
@ -49,13 +49,30 @@ describe('V4Transform class', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should ignore data sent after final chunk', done => {
|
it('should raise an error if signature is wrong', done => {
|
||||||
const v4Transform = new V4Transform(streamingV4Params, log, err => {
|
const v4Transform = new V4Transform(streamingV4Params, log, err => {
|
||||||
assert.strictEqual(err, null);
|
assert(err);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
const filler1 = '8;chunk-signature=51d2511f7c6887907dff20474d8db6' +
|
const filler1 = '8;chunk-signature=51d2511f7c6887907dff20474d8db6' +
|
||||||
'7d557e5f515a6fa6a8466bb12f8833bcca\r\ncontents\r\n';
|
'7d557e5f515a6fa6a8466bb12f8833bcca\r\ncontents\r\n';
|
||||||
|
const filler2 = '0;chunk-signature=baadc0debaadc0debaadc0debaadc0de' +
|
||||||
|
'baadc0debaadc0debaadc0debaadc0de\r\n';
|
||||||
|
const chunks = [
|
||||||
|
Buffer.from(filler1),
|
||||||
|
Buffer.from(filler2),
|
||||||
|
null,
|
||||||
|
];
|
||||||
|
const authMe = new AuthMe(chunks);
|
||||||
|
authMe.pipe(v4Transform);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should ignore data sent after final chunk', done => {
|
||||||
|
const v4Transform = new V4Transform(streamingV4Params, log, () => {
|
||||||
|
assert(false);
|
||||||
|
});
|
||||||
|
const filler1 = '8;chunk-signature=51d2511f7c6887907dff20474d8db6' +
|
||||||
|
'7d557e5f515a6fa6a8466bb12f8833bcca\r\ncontents\r\n';
|
||||||
const filler2 = '0;chunk-signature=c0eac24b7ce72141ec077df9753db' +
|
const filler2 = '0;chunk-signature=c0eac24b7ce72141ec077df9753db' +
|
||||||
'4cc8b7991491806689da0395c8bd0231e48\r\n';
|
'4cc8b7991491806689da0395c8bd0231e48\r\n';
|
||||||
const filler3 = '\r\n';
|
const filler3 = '\r\n';
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
const assert = require('assert');
|
|
||||||
const DummyRequest = require('../DummyRequest');
|
|
||||||
const requestUtils = require('../../../lib/utilities/requestUtils');
|
|
||||||
|
|
||||||
describe('requestUtils.getClientIp', () => {
|
|
||||||
// s3 config with 'requests.viaProxy` enabled
|
|
||||||
const configWithProxy
|
|
||||||
= require('../../unit/utils/requests-test-proxy.json');
|
|
||||||
// s3 config with 'requests.viaProxy` disabled
|
|
||||||
const configWithoutProxy = require('../../../config.json');
|
|
||||||
const testClientIp1 = '192.168.100.1';
|
|
||||||
const testClientIp2 = '192.168.104.0';
|
|
||||||
const testProxyIp = '192.168.100.2';
|
|
||||||
|
|
||||||
it('should return client Ip address from header ' +
|
|
||||||
'if the request comes via proxies', () => {
|
|
||||||
const request = new DummyRequest({
|
|
||||||
headers: {
|
|
||||||
'x-forwarded-for': [testClientIp1, testProxyIp].join(','),
|
|
||||||
},
|
|
||||||
url: '/',
|
|
||||||
parsedHost: 'localhost',
|
|
||||||
socket: {
|
|
||||||
remoteAddress: testProxyIp,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const result = requestUtils.getClientIp(request, configWithProxy);
|
|
||||||
assert.strictEqual(result, testClientIp1);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not return client Ip address from header ' +
|
|
||||||
'if the request is not forwarded from proxies or ' +
|
|
||||||
'fails ip check', () => {
|
|
||||||
const request = new DummyRequest({
|
|
||||||
headers: {
|
|
||||||
'x-forwarded-for': [testClientIp1, testProxyIp].join(','),
|
|
||||||
},
|
|
||||||
url: '/',
|
|
||||||
parsedHost: 'localhost',
|
|
||||||
socket: {
|
|
||||||
remoteAddress: testClientIp2,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const result = requestUtils.getClientIp(request, configWithoutProxy);
|
|
||||||
assert.strictEqual(result, testClientIp2);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not return client Ip address from header ' +
|
|
||||||
'if the request is forwarded from proxies, but the request' +
|
|
||||||
'has no expected header or the header value is empty', () => {
|
|
||||||
const request = new DummyRequest({
|
|
||||||
headers: {
|
|
||||||
'x-forwarded-for': ' ',
|
|
||||||
},
|
|
||||||
url: '/',
|
|
||||||
parsedHost: 'localhost',
|
|
||||||
socket: {
|
|
||||||
remoteAddress: testClientIp2,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const result = requestUtils.getClientIp(request, configWithProxy);
|
|
||||||
assert.strictEqual(result, testClientIp2);
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,86 +0,0 @@
|
||||||
{
|
|
||||||
"port": 8000,
|
|
||||||
"listenOn": [],
|
|
||||||
"replicationGroupId": "RG001",
|
|
||||||
"restEndpoints": {
|
|
||||||
"localhost": "us-east-1",
|
|
||||||
"127.0.0.1": "us-east-1",
|
|
||||||
"cloudserver-front": "us-east-1",
|
|
||||||
"s3.docker.test": "us-east-1",
|
|
||||||
"127.0.0.2": "us-east-1",
|
|
||||||
"s3.amazonaws.com": "us-east-1"
|
|
||||||
},
|
|
||||||
"websiteEndpoints": ["s3-website-us-east-1.amazonaws.com",
|
|
||||||
"s3-website.us-east-2.amazonaws.com",
|
|
||||||
"s3-website-us-west-1.amazonaws.com",
|
|
||||||
"s3-website-us-west-2.amazonaws.com",
|
|
||||||
"s3-website.ap-south-1.amazonaws.com",
|
|
||||||
"s3-website.ap-northeast-2.amazonaws.com",
|
|
||||||
"s3-website-ap-southeast-1.amazonaws.com",
|
|
||||||
"s3-website-ap-southeast-2.amazonaws.com",
|
|
||||||
"s3-website-ap-northeast-1.amazonaws.com",
|
|
||||||
"s3-website.eu-central-1.amazonaws.com",
|
|
||||||
"s3-website-eu-west-1.amazonaws.com",
|
|
||||||
"s3-website-sa-east-1.amazonaws.com",
|
|
||||||
"s3-website.localhost",
|
|
||||||
"s3-website.scality.test"],
|
|
||||||
"replicationEndpoints": [{
|
|
||||||
"site": "zenko",
|
|
||||||
"servers": ["127.0.0.1:8000"],
|
|
||||||
"default": true
|
|
||||||
}, {
|
|
||||||
"site": "us-east-2",
|
|
||||||
"type": "aws_s3"
|
|
||||||
}],
|
|
||||||
"cdmi": {
|
|
||||||
"host": "localhost",
|
|
||||||
"port": 81,
|
|
||||||
"path": "/dewpoint",
|
|
||||||
"readonly": true
|
|
||||||
},
|
|
||||||
"bucketd": {
|
|
||||||
"bootstrap": ["localhost:9000"]
|
|
||||||
},
|
|
||||||
"vaultd": {
|
|
||||||
"host": "localhost",
|
|
||||||
"port": 8500
|
|
||||||
},
|
|
||||||
"clusters": 10,
|
|
||||||
"log": {
|
|
||||||
"logLevel": "info",
|
|
||||||
"dumpLevel": "error"
|
|
||||||
},
|
|
||||||
"healthChecks": {
|
|
||||||
"allowFrom": ["127.0.0.1/8", "::1"]
|
|
||||||
},
|
|
||||||
"metadataClient": {
|
|
||||||
"host": "localhost",
|
|
||||||
"port": 9990
|
|
||||||
},
|
|
||||||
"dataClient": {
|
|
||||||
"host": "localhost",
|
|
||||||
"port": 9991
|
|
||||||
},
|
|
||||||
"metadataDaemon": {
|
|
||||||
"bindAddress": "localhost",
|
|
||||||
"port": 9990
|
|
||||||
},
|
|
||||||
"dataDaemon": {
|
|
||||||
"bindAddress": "localhost",
|
|
||||||
"port": 9991
|
|
||||||
},
|
|
||||||
"recordLog": {
|
|
||||||
"enabled": false,
|
|
||||||
"recordLogName": "s3-recordlog"
|
|
||||||
},
|
|
||||||
"mongodb": {
|
|
||||||
"host": "localhost",
|
|
||||||
"port": 27018,
|
|
||||||
"database": "metadata"
|
|
||||||
},
|
|
||||||
"requests": {
|
|
||||||
"viaProxy": true,
|
|
||||||
"trustedProxyCIDRs": ["192.168.100.0/22"],
|
|
||||||
"extractClientIPFromHeader": "x-forwarded-for"
|
|
||||||
}
|
|
||||||
}
|
|
526
yarn.lock
526
yarn.lock
|
@ -3,9 +3,9 @@
|
||||||
|
|
||||||
|
|
||||||
"@hapi/address@2.x.x":
|
"@hapi/address@2.x.x":
|
||||||
version "2.1.2"
|
version "2.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.2.tgz#1c794cd6dbf2354d1eb1ef10e0303f573e1c7222"
|
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
|
||||||
integrity sha512-O4QDrx+JoGKZc6aN64L04vqa7e41tIiLU+OvKdcYaEMP97UttL0f9GIi9/0A4WAMx0uBd6SidDIhktZhgOcN8Q==
|
integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==
|
||||||
|
|
||||||
"@hapi/bourne@1.x.x":
|
"@hapi/bourne@1.x.x":
|
||||||
version "1.3.2"
|
version "1.3.2"
|
||||||
|
@ -13,9 +13,9 @@
|
||||||
integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==
|
integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==
|
||||||
|
|
||||||
"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0":
|
"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0":
|
||||||
version "8.3.1"
|
version "8.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.3.1.tgz#227d29efdb158e4a64590224add90c820f94d20e"
|
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06"
|
||||||
integrity sha512-75ocgnI7HG/I01iGA3/rs0y6PXydUA/kxhFZM0HoT8NLSTnt/J8Gq03iKl4a4B/2A3iMG0ctXtxr5Hg9SGr1gw==
|
integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==
|
||||||
|
|
||||||
"@hapi/joi@^15.1.0":
|
"@hapi/joi@^15.1.0":
|
||||||
version "15.1.1"
|
version "15.1.1"
|
||||||
|
@ -60,9 +60,9 @@ abort-controller@^3.0.0:
|
||||||
event-target-shim "^5.0.0"
|
event-target-shim "^5.0.0"
|
||||||
|
|
||||||
abstract-leveldown@^6.2.1, abstract-leveldown@~6.2.1:
|
abstract-leveldown@^6.2.1, abstract-leveldown@~6.2.1:
|
||||||
version "6.2.1"
|
version "6.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.1.tgz#37b655151e13c3d9b20fa3a04ce63ccaa345fce4"
|
resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.2.tgz#677425beeb28204367c7639e264e93ea4b49971a"
|
||||||
integrity sha512-zUgomHedGBCThDkUtc1bfilu2jEhRZ7Dk3RePhtMma/akw7UK2Upm2R5Dd8ynRBEt3uscwbWO0VQNx22/7RtWg==
|
integrity sha512-/a+Iwj0rn//CX0EJOasNyZJd2o8xur8Ce9C57Sznti/Ilt/cb6Qd8/k98A4ZOklXgTG+iAYYUs1OTG0s1eH+zQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
level-concat-iterator "~2.0.0"
|
level-concat-iterator "~2.0.0"
|
||||||
level-supports "~1.0.0"
|
level-supports "~1.0.0"
|
||||||
|
@ -83,14 +83,6 @@ abstract-leveldown@~6.0.1:
|
||||||
level-concat-iterator "~2.0.0"
|
level-concat-iterator "~2.0.0"
|
||||||
xtend "~4.0.0"
|
xtend "~4.0.0"
|
||||||
|
|
||||||
abstract-leveldown@~6.1.1:
|
|
||||||
version "6.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.1.1.tgz#f44bad5862d71c7b418110d7698ac25bedf24396"
|
|
||||||
integrity sha512-7fK/KySVqzKIomdhkSWzX4YBQhzkzEMbWSiaB6mSN9e+ZdV3KEeKxia/8xQzCkATA5xnnukdP88cFR0D2FsFXw==
|
|
||||||
dependencies:
|
|
||||||
level-concat-iterator "~2.0.0"
|
|
||||||
xtend "~4.0.0"
|
|
||||||
|
|
||||||
accepts@1.3.3:
|
accepts@1.3.3:
|
||||||
version "1.3.3"
|
version "1.3.3"
|
||||||
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca"
|
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca"
|
||||||
|
@ -150,11 +142,11 @@ ajv@^4.7.0:
|
||||||
json-stable-stringify "^1.0.1"
|
json-stable-stringify "^1.0.1"
|
||||||
|
|
||||||
ajv@^6.5.5:
|
ajv@^6.5.5:
|
||||||
version "6.10.2"
|
version "6.12.0"
|
||||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52"
|
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7"
|
||||||
integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==
|
integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==
|
||||||
dependencies:
|
dependencies:
|
||||||
fast-deep-equal "^2.0.1"
|
fast-deep-equal "^3.1.1"
|
||||||
fast-json-stable-stringify "^2.0.0"
|
fast-json-stable-stringify "^2.0.0"
|
||||||
json-schema-traverse "^0.4.1"
|
json-schema-traverse "^0.4.1"
|
||||||
uri-js "^4.2.2"
|
uri-js "^4.2.2"
|
||||||
|
@ -205,9 +197,9 @@ arraybuffer.slice@0.0.6:
|
||||||
resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca"
|
resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca"
|
||||||
integrity sha1-8zshWfBTKj8xB6JywMz70a0peco=
|
integrity sha1-8zshWfBTKj8xB6JywMz70a0peco=
|
||||||
|
|
||||||
"arsenal@github:scality/Arsenal#a7b6fc8":
|
"arsenal@github:scality/Arsenal#890d239":
|
||||||
version "7.4.3"
|
version "7.5.0"
|
||||||
resolved "https://codeload.github.com/scality/Arsenal/tar.gz/a7b6fc8fb8ed332fd2695e1c0fafad726116727e"
|
resolved "https://codeload.github.com/scality/Arsenal/tar.gz/890d239d0080d0e08ad0a92853df214490ae5835"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@hapi/joi" "^15.1.0"
|
"@hapi/joi" "^15.1.0"
|
||||||
JSONStream "^1.0.0"
|
JSONStream "^1.0.0"
|
||||||
|
@ -333,9 +325,9 @@ async@^2.0.1, async@^2.1.4, async@^2.3.0:
|
||||||
lodash "^4.17.14"
|
lodash "^4.17.14"
|
||||||
|
|
||||||
async@^3.1.0:
|
async@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/async/-/async-3.1.0.tgz#42b3b12ae1b74927b5217d8c0016baaf62463772"
|
resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720"
|
||||||
integrity sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==
|
integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==
|
||||||
|
|
||||||
async@~1.4.2:
|
async@~1.4.2:
|
||||||
version "1.4.2"
|
version "1.4.2"
|
||||||
|
@ -377,9 +369,9 @@ aws-sdk@2.80.0:
|
||||||
xmlbuilder "4.2.1"
|
xmlbuilder "4.2.1"
|
||||||
|
|
||||||
aws-sdk@^2.2.23:
|
aws-sdk@^2.2.23:
|
||||||
version "2.550.0"
|
version "2.626.0"
|
||||||
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.550.0.tgz#00a0113f4efbe7c068ac73459c77c39a32390a87"
|
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.626.0.tgz#6011c3dccd1ea3af4a97bd9b6962c85f9d9947ce"
|
||||||
integrity sha512-eZQYY7O6VJeVQvBWnctOOTOO/+aTXhy23+T7QU1FcHfuvWV7K+7+7Uats9rgMS42SQ4R8q1cIZZ1InWnmmfrEw==
|
integrity sha512-1D5slT34OI1NseXLszpWwZ+N/Jla8BsY+XsGDH/4yNDDN8Cf+8zKb1AqqSw4T4onz9xhoTHWCTWqTLDL+8XAnw==
|
||||||
dependencies:
|
dependencies:
|
||||||
buffer "4.9.1"
|
buffer "4.9.1"
|
||||||
events "1.1.1"
|
events "1.1.1"
|
||||||
|
@ -397,9 +389,9 @@ aws-sign2@~0.7.0:
|
||||||
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
|
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
|
||||||
|
|
||||||
aws4@^1.8.0:
|
aws4@^1.8.0:
|
||||||
version "1.8.0"
|
version "1.9.1"
|
||||||
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
|
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e"
|
||||||
integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
|
integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==
|
||||||
|
|
||||||
axios@^0.18.0:
|
axios@^0.18.0:
|
||||||
version "0.18.1"
|
version "0.18.1"
|
||||||
|
@ -551,6 +543,14 @@ bindings@^1.1.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
file-uri-to-path "1.0.0"
|
file-uri-to-path "1.0.0"
|
||||||
|
|
||||||
|
bl@^2.2.0:
|
||||||
|
version "2.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.0.tgz#e1a574cdf528e4053019bb800b041c0ac88da493"
|
||||||
|
integrity sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==
|
||||||
|
dependencies:
|
||||||
|
readable-stream "^2.3.5"
|
||||||
|
safe-buffer "^5.1.1"
|
||||||
|
|
||||||
bl@~0.8.1:
|
bl@~0.8.1:
|
||||||
version "0.8.2"
|
version "0.8.2"
|
||||||
resolved "https://registry.yarnpkg.com/bl/-/bl-0.8.2.tgz#c9b6bca08d1bc2ea00fc8afb4f1a5fd1e1c66e4e"
|
resolved "https://registry.yarnpkg.com/bl/-/bl-0.8.2.tgz#c9b6bca08d1bc2ea00fc8afb4f1a5fd1e1c66e4e"
|
||||||
|
@ -564,9 +564,9 @@ blob@0.0.4:
|
||||||
integrity sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=
|
integrity sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=
|
||||||
|
|
||||||
bluebird@^3.3.1:
|
bluebird@^3.3.1:
|
||||||
version "3.7.1"
|
version "3.7.2"
|
||||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de"
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
|
||||||
integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==
|
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
|
||||||
|
|
||||||
brace-expansion@^1.0.0, brace-expansion@^1.1.7:
|
brace-expansion@^1.0.0, brace-expansion@^1.1.7:
|
||||||
version "1.1.11"
|
version "1.1.11"
|
||||||
|
@ -587,9 +587,9 @@ bson@2.0.4:
|
||||||
integrity sha512-e/GPy6CE0xL7MOYYRMIEwPGKF21WNaQdPIpV0YvaQDoR7oc47KUZ8c2P/TlRJVQP8RZ4CEsArGBC1NbkCRvl1w==
|
integrity sha512-e/GPy6CE0xL7MOYYRMIEwPGKF21WNaQdPIpV0YvaQDoR7oc47KUZ8c2P/TlRJVQP8RZ4CEsArGBC1NbkCRvl1w==
|
||||||
|
|
||||||
bson@^1.1.1:
|
bson@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.1.tgz#4330f5e99104c4e751e7351859e2d408279f2f13"
|
resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.3.tgz#aa82cb91f9a453aaa060d6209d0675114a8154d3"
|
||||||
integrity sha512-jCGVYLoYMHDkOsbwJZBCqwMHyH4c+wzgI9hG7Z6SZJRXWr+x58pdIbm2i9a/jFGCkRJqRUr8eoI7lDWa0hTkxg==
|
integrity sha512-TdiJxMVnodVS7r0BdL42y/pqC9cL2iKynVwA0Ho3qbsQYr428veL3l7BQyuqiw+Q5SqqoT0m4srSY/BlZ9AxXg==
|
||||||
|
|
||||||
bson@~1.0.4:
|
bson@~1.0.4:
|
||||||
version "1.0.9"
|
version "1.0.9"
|
||||||
|
@ -763,7 +763,7 @@ commander@2.3.0:
|
||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873"
|
||||||
integrity sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=
|
integrity sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=
|
||||||
|
|
||||||
commander@^2.9.0:
|
commander@^2.9.0, commander@~2.20.3:
|
||||||
version "2.20.3"
|
version "2.20.3"
|
||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||||
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||||
|
@ -809,9 +809,9 @@ cookie@0.3.1:
|
||||||
integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
|
integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
|
||||||
|
|
||||||
core-js@^2.4.0:
|
core-js@^2.4.0:
|
||||||
version "2.6.10"
|
version "2.6.11"
|
||||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f"
|
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c"
|
||||||
integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==
|
integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==
|
||||||
|
|
||||||
core-util-is@1.0.2, core-util-is@~1.0.0:
|
core-util-is@1.0.2, core-util-is@~1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
|
@ -936,7 +936,7 @@ deferred-leveldown@~5.3.0:
|
||||||
abstract-leveldown "~6.2.1"
|
abstract-leveldown "~6.2.1"
|
||||||
inherits "^2.0.3"
|
inherits "^2.0.3"
|
||||||
|
|
||||||
define-properties@^1.1.1, define-properties@^1.1.2, define-properties@^1.1.3:
|
define-properties@^1.1.2, define-properties@^1.1.3:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
||||||
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
|
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
|
||||||
|
@ -948,7 +948,7 @@ delayed-stream@~1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||||
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
|
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
|
||||||
|
|
||||||
denque@^1.1.0:
|
denque@^1.1.0, denque@^1.4.1:
|
||||||
version "1.4.1"
|
version "1.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/denque/-/denque-1.4.1.tgz#6744ff7641c148c3f8a69c307e51235c1f4a37cf"
|
resolved "https://registry.yarnpkg.com/denque/-/denque-1.4.1.tgz#6744ff7641c148c3f8a69c307e51235c1f4a37cf"
|
||||||
integrity sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==
|
integrity sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==
|
||||||
|
@ -1067,39 +1067,40 @@ error-ex@^1.3.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
is-arrayish "^0.2.1"
|
is-arrayish "^0.2.1"
|
||||||
|
|
||||||
es-abstract@^1.4.3, es-abstract@^1.5.1:
|
es-abstract@^1.17.0-next.1:
|
||||||
version "1.15.0"
|
version "1.17.4"
|
||||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.15.0.tgz#8884928ec7e40a79e3c9bc812d37d10c8b24cc57"
|
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184"
|
||||||
integrity sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==
|
integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
es-to-primitive "^1.2.0"
|
es-to-primitive "^1.2.1"
|
||||||
function-bind "^1.1.1"
|
function-bind "^1.1.1"
|
||||||
has "^1.0.3"
|
has "^1.0.3"
|
||||||
has-symbols "^1.0.0"
|
has-symbols "^1.0.1"
|
||||||
is-callable "^1.1.4"
|
is-callable "^1.1.5"
|
||||||
is-regex "^1.0.4"
|
is-regex "^1.0.5"
|
||||||
object-inspect "^1.6.0"
|
object-inspect "^1.7.0"
|
||||||
object-keys "^1.1.1"
|
object-keys "^1.1.1"
|
||||||
string.prototype.trimleft "^2.1.0"
|
object.assign "^4.1.0"
|
||||||
string.prototype.trimright "^2.1.0"
|
string.prototype.trimleft "^2.1.1"
|
||||||
|
string.prototype.trimright "^2.1.1"
|
||||||
|
|
||||||
es-to-primitive@^1.2.0:
|
es-to-primitive@^1.2.1:
|
||||||
version "1.2.0"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
|
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
|
||||||
integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
|
integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
|
||||||
dependencies:
|
dependencies:
|
||||||
is-callable "^1.1.4"
|
is-callable "^1.1.4"
|
||||||
is-date-object "^1.0.1"
|
is-date-object "^1.0.1"
|
||||||
is-symbol "^1.0.2"
|
is-symbol "^1.0.2"
|
||||||
|
|
||||||
es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.51, es5-ext@~0.10.14:
|
es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14:
|
||||||
version "0.10.51"
|
version "0.10.53"
|
||||||
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.51.tgz#ed2d7d9d48a12df86e0299287e93a09ff478842f"
|
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1"
|
||||||
integrity sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ==
|
integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
es6-iterator "~2.0.3"
|
es6-iterator "~2.0.3"
|
||||||
es6-symbol "~3.1.1"
|
es6-symbol "~3.1.3"
|
||||||
next-tick "^1.0.0"
|
next-tick "~1.0.0"
|
||||||
|
|
||||||
es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3:
|
es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3:
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
|
@ -1158,13 +1159,13 @@ es6-symbol@3.1.1:
|
||||||
d "1"
|
d "1"
|
||||||
es5-ext "~0.10.14"
|
es5-ext "~0.10.14"
|
||||||
|
|
||||||
es6-symbol@^3.1.1, es6-symbol@~3.1.1:
|
es6-symbol@^3.1.1, es6-symbol@~3.1.1, es6-symbol@~3.1.3:
|
||||||
version "3.1.2"
|
version "3.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.2.tgz#859fdd34f32e905ff06d752e7171ddd4444a7ed1"
|
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
|
||||||
integrity sha512-/ZypxQsArlv+KHpGvng52/Iz8by3EQPxhmbuz8yFG89N/caTFBSbcXONDw0aMjy827gQg26XAjP4uXFvnfINmQ==
|
integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
|
||||||
dependencies:
|
dependencies:
|
||||||
d "^1.0.1"
|
d "^1.0.1"
|
||||||
es5-ext "^0.10.51"
|
ext "^1.1.2"
|
||||||
|
|
||||||
es6-weak-map@^2.0.1:
|
es6-weak-map@^2.0.1:
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
|
@ -1305,6 +1306,13 @@ exit-hook@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
|
resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
|
||||||
integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=
|
integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=
|
||||||
|
|
||||||
|
ext@^1.1.2:
|
||||||
|
version "1.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244"
|
||||||
|
integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==
|
||||||
|
dependencies:
|
||||||
|
type "^2.0.0"
|
||||||
|
|
||||||
extend@^3.0.1, extend@^3.0.2, extend@~3.0.2:
|
extend@^3.0.1, extend@^3.0.2, extend@~3.0.2:
|
||||||
version "3.0.2"
|
version "3.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
|
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
|
||||||
|
@ -1320,17 +1328,17 @@ extsprintf@^1.2.0:
|
||||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
|
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
|
||||||
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
|
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
|
||||||
|
|
||||||
fast-deep-equal@^2.0.1:
|
fast-deep-equal@^3.1.1:
|
||||||
version "2.0.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
|
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4"
|
||||||
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
|
integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==
|
||||||
|
|
||||||
fast-json-stable-stringify@^2.0.0:
|
fast-json-stable-stringify@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
|
||||||
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
|
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
|
||||||
|
|
||||||
fast-levenshtein@~2.0.4:
|
fast-levenshtein@~2.0.6:
|
||||||
version "2.0.6"
|
version "2.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
|
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
|
||||||
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
|
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
|
||||||
|
@ -1397,9 +1405,9 @@ follow-redirects@1.5.10:
|
||||||
debug "=3.1.0"
|
debug "=3.1.0"
|
||||||
|
|
||||||
follow-redirects@^1.0.0:
|
follow-redirects@^1.0.0:
|
||||||
version "1.9.0"
|
version "1.10.0"
|
||||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f"
|
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb"
|
||||||
integrity sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==
|
integrity sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "^3.0.0"
|
debug "^3.0.0"
|
||||||
|
|
||||||
|
@ -1422,7 +1430,7 @@ fs.realpath@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||||
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
|
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
|
||||||
|
|
||||||
function-bind@^1.0.2, function-bind@^1.1.1:
|
function-bind@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||||
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
||||||
|
@ -1492,9 +1500,9 @@ glob@5.x:
|
||||||
path-is-absolute "^1.0.0"
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
glob@^7.0.3, glob@^7.1.3:
|
glob@^7.0.3, glob@^7.1.3:
|
||||||
version "7.1.4"
|
version "7.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
|
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
||||||
integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
|
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
|
||||||
dependencies:
|
dependencies:
|
||||||
fs.realpath "^1.0.0"
|
fs.realpath "^1.0.0"
|
||||||
inflight "^1.0.4"
|
inflight "^1.0.4"
|
||||||
|
@ -1540,9 +1548,9 @@ google-p12-pem@^1.0.0:
|
||||||
pify "^4.0.0"
|
pify "^4.0.0"
|
||||||
|
|
||||||
graceful-fs@^4.1.2:
|
graceful-fs@^4.1.2:
|
||||||
version "4.2.2"
|
version "4.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02"
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
|
||||||
integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==
|
integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==
|
||||||
|
|
||||||
growl@1.9.2:
|
growl@1.9.2:
|
||||||
version "1.9.2"
|
version "1.9.2"
|
||||||
|
@ -1561,9 +1569,9 @@ gtoken@^2.3.0:
|
||||||
pify "^4.0.0"
|
pify "^4.0.0"
|
||||||
|
|
||||||
handlebars@^4.0.3:
|
handlebars@^4.0.3:
|
||||||
version "4.4.3"
|
version "4.7.3"
|
||||||
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.4.3.tgz#180bae52c1d0e9ec0c15d7e82a4362d662762f6e"
|
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.3.tgz#8ece2797826886cf8082d1726ff21d2a022550ee"
|
||||||
integrity sha512-B0W4A2U1ww3q7VVthTKfh+epHx+q4mCt6iK+zEAzbMBpWQAwxCeKxEGpj/1oQTpzPXDNSOG7hmG14TsISH50yw==
|
integrity sha512-SRGwSYuNfx8DwHD/6InAPzD6RgeruWLT+B8e8a7gGs8FWgHzlExpTFMEq2IA6QpAfOClpKHy6+8IqTjeBCu6Kg==
|
||||||
dependencies:
|
dependencies:
|
||||||
neo-async "^2.6.0"
|
neo-async "^2.6.0"
|
||||||
optimist "^0.6.1"
|
optimist "^0.6.1"
|
||||||
|
@ -1576,7 +1584,7 @@ har-schema@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
|
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
|
||||||
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
|
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
|
||||||
|
|
||||||
har-validator@~5.1.0:
|
har-validator@~5.1.3:
|
||||||
version "5.1.3"
|
version "5.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
|
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
|
||||||
integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
|
integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
|
||||||
|
@ -1613,12 +1621,12 @@ has-flag@^3.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
|
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
|
||||||
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
|
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
|
||||||
|
|
||||||
has-symbols@^1.0.0:
|
has-symbols@^1.0.0, has-symbols@^1.0.1:
|
||||||
version "1.0.0"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
|
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
|
||||||
integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
|
integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
|
||||||
|
|
||||||
has@^1.0.1, has@^1.0.3:
|
has@^1.0.3:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
|
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
|
||||||
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
|
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
|
||||||
|
@ -1639,9 +1647,9 @@ hoek@4.x.x:
|
||||||
integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==
|
integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==
|
||||||
|
|
||||||
hosted-git-info@^2.1.4:
|
hosted-git-info@^2.1.4:
|
||||||
version "2.8.5"
|
version "2.8.6"
|
||||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c"
|
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.6.tgz#3a6e6d0324c5371fc8c7ba7175e1e5d14578724d"
|
||||||
integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==
|
integrity sha512-Kp6rShEsCHhF5dD3EWKdkgVA8ix90oSUJ0VY4g9goxxa0+f4lx63muTftn0mlJ/+8IESGWyKnP//V2D7S4ZbIQ==
|
||||||
|
|
||||||
http-proxy@^1.17.0:
|
http-proxy@^1.17.0:
|
||||||
version "1.18.0"
|
version "1.18.0"
|
||||||
|
@ -1662,9 +1670,9 @@ http-signature@~1.2.0:
|
||||||
sshpk "^1.7.0"
|
sshpk "^1.7.0"
|
||||||
|
|
||||||
https-proxy-agent@^2.2.1:
|
https-proxy-agent@^2.2.1:
|
||||||
version "2.2.2"
|
version "2.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz#271ea8e90f836ac9f119daccd39c19ff7dfb0793"
|
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b"
|
||||||
integrity sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==
|
integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==
|
||||||
dependencies:
|
dependencies:
|
||||||
agent-base "^4.3.0"
|
agent-base "^4.3.0"
|
||||||
debug "^3.1.0"
|
debug "^3.1.0"
|
||||||
|
@ -1757,9 +1765,9 @@ ioredis@4.9.5:
|
||||||
standard-as-callback "^2.0.1"
|
standard-as-callback "^2.0.1"
|
||||||
|
|
||||||
ioredis@^4.9.5:
|
ioredis@^4.9.5:
|
||||||
version "4.14.1"
|
version "4.16.0"
|
||||||
resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.14.1.tgz#b73ded95fcf220f106d33125a92ef6213aa31318"
|
resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.16.0.tgz#44d51288e20da14e5b6f687b2db0312e69106556"
|
||||||
integrity sha512-94W+X//GHM+1GJvDk6JPc+8qlM7Dul+9K+lg3/aHixPN7ZGkW6qlvX0DG6At9hWtH2v3B32myfZqWoANUJYGJA==
|
integrity sha512-tlalhtuvnxXJNtrPjec1nGicuOCpi9ErYV/fRfwaWSzktX9ESrzHlcFwj1pVAL326E8dmt7h9pPQZyyVPPksRA==
|
||||||
dependencies:
|
dependencies:
|
||||||
cluster-key-slot "^1.1.0"
|
cluster-key-slot "^1.1.0"
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
|
@ -1791,22 +1799,20 @@ is-buffer@~1.1.1:
|
||||||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
||||||
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
|
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
|
||||||
|
|
||||||
is-callable@^1.1.4:
|
is-callable@^1.1.4, is-callable@^1.1.5:
|
||||||
version "1.1.4"
|
version "1.1.5"
|
||||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
|
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab"
|
||||||
integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
|
integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==
|
||||||
|
|
||||||
is-date-object@^1.0.1:
|
is-date-object@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
|
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
|
||||||
integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
|
integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
|
||||||
|
|
||||||
is-finite@^1.0.0:
|
is-finite@^1.0.0:
|
||||||
version "1.0.2"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
|
resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3"
|
||||||
integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
|
integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==
|
||||||
dependencies:
|
|
||||||
number-is-nan "^1.0.0"
|
|
||||||
|
|
||||||
is-fullwidth-code-point@^1.0.0:
|
is-fullwidth-code-point@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
|
@ -1837,23 +1843,23 @@ is-my-json-valid@^2.10.0:
|
||||||
xtend "^4.0.0"
|
xtend "^4.0.0"
|
||||||
|
|
||||||
is-nan@^1.2.1:
|
is-nan@^1.2.1:
|
||||||
version "1.2.1"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.2.1.tgz#9faf65b6fb6db24b7f5c0628475ea71f988401e2"
|
resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.0.tgz#85d1f5482f7051c2019f5673ccebdb06f3b0db03"
|
||||||
integrity sha1-n69ltvttskt/XAYoR16nH5iEAeI=
|
integrity sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
define-properties "^1.1.1"
|
define-properties "^1.1.3"
|
||||||
|
|
||||||
is-property@^1.0.0, is-property@^1.0.2:
|
is-property@^1.0.0, is-property@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
|
resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
|
||||||
integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
|
integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
|
||||||
|
|
||||||
is-regex@^1.0.4:
|
is-regex@^1.0.5:
|
||||||
version "1.0.4"
|
version "1.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
|
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae"
|
||||||
integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
|
integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
has "^1.0.1"
|
has "^1.0.3"
|
||||||
|
|
||||||
is-resolvable@^1.0.0:
|
is-resolvable@^1.0.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
|
@ -1861,11 +1867,11 @@ is-resolvable@^1.0.0:
|
||||||
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
|
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
|
||||||
|
|
||||||
is-symbol@^1.0.2:
|
is-symbol@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
|
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
|
||||||
integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
|
integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
has-symbols "^1.0.0"
|
has-symbols "^1.0.1"
|
||||||
|
|
||||||
is-typedarray@^1.0.0, is-typedarray@~1.0.0:
|
is-typedarray@^1.0.0, is-typedarray@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
|
@ -2177,9 +2183,9 @@ level-iterator-stream@~4.0.0:
|
||||||
xtend "^4.0.2"
|
xtend "^4.0.2"
|
||||||
|
|
||||||
level-js@^4.0.0:
|
level-js@^4.0.0:
|
||||||
version "4.0.1"
|
version "4.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/level-js/-/level-js-4.0.1.tgz#3bad57d8bb46ebba7b13bc7442b56f4b45c8a2e0"
|
resolved "https://registry.yarnpkg.com/level-js/-/level-js-4.0.2.tgz#fa51527fa38b87c4d111b0d0334de47fcda38f21"
|
||||||
integrity sha512-m5JRIyHZn5VnCCFeRegJkn5bQd3MJK5qZX12zg3Oivc8+BUIS2yFS6ANMMeHX2ieGxucNvEn6/ZnyjmZQLLUWw==
|
integrity sha512-PeGjZsyMG4O89KHiez1zoMJxStnkM+oBIqgACjoo5PJqFiSUUm3GNod/KcbqN5ktyZa8jkG7I1T0P2u6HN9lIg==
|
||||||
dependencies:
|
dependencies:
|
||||||
abstract-leveldown "~6.0.1"
|
abstract-leveldown "~6.0.1"
|
||||||
immediate "~3.2.3"
|
immediate "~3.2.3"
|
||||||
|
@ -2188,9 +2194,9 @@ level-js@^4.0.0:
|
||||||
typedarray-to-buffer "~3.1.5"
|
typedarray-to-buffer "~3.1.5"
|
||||||
|
|
||||||
level-packager@^5.0.0:
|
level-packager@^5.0.0:
|
||||||
version "5.1.0"
|
version "5.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.0.tgz#9c01c6c8e2380d3196d61e56bd79c2eff4a9d5c3"
|
resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939"
|
||||||
integrity sha512-3pbJmDgGvp/lUQNULPoYQZtUbhMI8KoViYDw7Sa0kWl1mPeHWWJF7T/9upWI/NTMuEikkEE/cd6wBvmrW1+ZnQ==
|
integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
encoding-down "^6.3.0"
|
encoding-down "^6.3.0"
|
||||||
levelup "^4.3.2"
|
levelup "^4.3.2"
|
||||||
|
@ -2234,11 +2240,11 @@ level@~5.0.1:
|
||||||
opencollective-postinstall "^2.0.0"
|
opencollective-postinstall "^2.0.0"
|
||||||
|
|
||||||
leveldown@^5.0.0:
|
leveldown@^5.0.0:
|
||||||
version "5.3.0"
|
version "5.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-5.3.0.tgz#cc228088b184901d52b54bd70518543bfb059406"
|
resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-5.5.1.tgz#ca9c479a6d17c92bb0855039e92b86330127a6cd"
|
||||||
integrity sha512-PQXwTKMz55rYlg7984VbM7xpcqdiWgVKRms2fEgqVL7spd6+wK8NewScJOYIGpIG7/XxMOc0i+q/NX0WLJEcwA==
|
integrity sha512-GoC455/ncfg4yLLItr192HuXpA+CcQ2q9GncXJhewvvlpsBBEegChn5tMPP+kGvJt7u2LuXAd8fY2moQxFD+sQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
abstract-leveldown "~6.1.1"
|
abstract-leveldown "~6.2.1"
|
||||||
napi-macros "~2.0.0"
|
napi-macros "~2.0.0"
|
||||||
node-gyp-build "~4.1.0"
|
node-gyp-build "~4.1.0"
|
||||||
|
|
||||||
|
@ -2416,22 +2422,27 @@ media-typer@0.3.0:
|
||||||
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
|
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
|
||||||
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
|
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
|
||||||
|
|
||||||
|
memory-pager@^1.0.2:
|
||||||
|
version "1.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5"
|
||||||
|
integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==
|
||||||
|
|
||||||
memorystream@^0.3.1:
|
memorystream@^0.3.1:
|
||||||
version "0.3.1"
|
version "0.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
|
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
|
||||||
integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
|
integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
|
||||||
|
|
||||||
mime-db@1.40.0:
|
mime-db@1.43.0:
|
||||||
version "1.40.0"
|
version "1.43.0"
|
||||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58"
|
||||||
integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
|
integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==
|
||||||
|
|
||||||
mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.19, mime-types@~2.1.24:
|
mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.19, mime-types@~2.1.24:
|
||||||
version "2.1.24"
|
version "2.1.26"
|
||||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
|
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06"
|
||||||
integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
|
integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
mime-db "1.40.0"
|
mime-db "1.43.0"
|
||||||
|
|
||||||
mime@^1.3.4:
|
mime@^1.3.4:
|
||||||
version "1.6.0"
|
version "1.6.0"
|
||||||
|
@ -2496,9 +2507,9 @@ mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
|
||||||
minimist "0.0.8"
|
minimist "0.0.8"
|
||||||
|
|
||||||
mocha-junit-reporter@^1.23.1:
|
mocha-junit-reporter@^1.23.1:
|
||||||
version "1.23.1"
|
version "1.23.3"
|
||||||
resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-1.23.1.tgz#ba11519c0b967f404e4123dd69bc4ba022ab0f12"
|
resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-1.23.3.tgz#941e219dd759ed732f8641e165918aa8b167c981"
|
||||||
integrity sha512-qeDvKlZyAH2YJE1vhryvjUQ06t2hcnwwu4k5Ddwn0GQINhgEYFhlGM0DwYCVUHq5cuo32qAW6HDsTHt7zz99Ng==
|
integrity sha512-ed8LqbRj1RxZfjt/oC9t12sfrWsjZ3gNnbhV1nuj9R/Jb5/P3Xb4duv2eCfCDMYH+fEu0mqca7m4wsiVjsxsvA==
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "^2.2.0"
|
debug "^2.2.0"
|
||||||
md5 "^2.1.0"
|
md5 "^2.1.0"
|
||||||
|
@ -2531,9 +2542,9 @@ mocha@^2.3.3, mocha@^2.3.4:
|
||||||
to-iso-string "0.0.2"
|
to-iso-string "0.0.2"
|
||||||
|
|
||||||
moment-timezone@^0.5.25:
|
moment-timezone@^0.5.25:
|
||||||
version "0.5.26"
|
version "0.5.28"
|
||||||
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.26.tgz#c0267ca09ae84631aa3dc33f65bedbe6e8e0d772"
|
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.28.tgz#f093d789d091ed7b055d82aa81a82467f72e4338"
|
||||||
integrity sha512-sFP4cgEKTCymBBKgoxZjYzlSovC20Y6J7y3nanDc5RoBIXKlZhoYwBoZGe3flwU6A372AcRwScH8KiwV6zjy1g==
|
integrity sha512-TDJkZvAyKIVWg5EtVqRzU97w0Rb0YVbfpqyjgu6GwXCAohVRqwZjf4fOzDE6p1Ch98Sro/8hQQi65WDXW5STPw==
|
||||||
dependencies:
|
dependencies:
|
||||||
moment ">= 2.9.0"
|
moment ">= 2.9.0"
|
||||||
|
|
||||||
|
@ -2560,13 +2571,17 @@ mongodb@^2.2.31:
|
||||||
readable-stream "2.2.7"
|
readable-stream "2.2.7"
|
||||||
|
|
||||||
mongodb@^3.0.1:
|
mongodb@^3.0.1:
|
||||||
version "3.3.2"
|
version "3.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.3.2.tgz#ff086b5f552cf07e24ce098694210f3d42d668b2"
|
resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.5.4.tgz#f7609cfa9f8c56c35e844b4216ddc3a1b1ec5bef"
|
||||||
integrity sha512-fqJt3iywelk4yKu/lfwQg163Bjpo5zDKhXiohycvon4iQHbrfflSAz9AIlRE6496Pm/dQKQK5bMigdVo2s6gBg==
|
integrity sha512-xGH41Ig4dkSH5ROGezkgDbsgt/v5zbNUwE3TcFsSbDc6Qn3Qil17dhLsESSDDPTiyFDCPJRpfd4887dtsPgKtA==
|
||||||
dependencies:
|
dependencies:
|
||||||
|
bl "^2.2.0"
|
||||||
bson "^1.1.1"
|
bson "^1.1.1"
|
||||||
|
denque "^1.4.1"
|
||||||
require_optional "^1.0.1"
|
require_optional "^1.0.1"
|
||||||
safe-buffer "^5.1.2"
|
safe-buffer "^5.1.2"
|
||||||
|
optionalDependencies:
|
||||||
|
saslprep "^1.0.0"
|
||||||
|
|
||||||
ms@0.7.1:
|
ms@0.7.1:
|
||||||
version "0.7.1"
|
version "0.7.1"
|
||||||
|
@ -2613,7 +2628,7 @@ neo-async@^2.6.0:
|
||||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
|
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
|
||||||
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
|
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
|
||||||
|
|
||||||
next-tick@^1.0.0:
|
next-tick@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
|
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
|
||||||
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
|
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
|
||||||
|
@ -2722,23 +2737,25 @@ object-component@0.0.3:
|
||||||
resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
|
resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
|
||||||
integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=
|
integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=
|
||||||
|
|
||||||
object-inspect@^1.6.0:
|
object-inspect@^1.7.0:
|
||||||
version "1.6.0"
|
version "1.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b"
|
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
|
||||||
integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==
|
integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
|
||||||
|
|
||||||
object-keys@^1.0.12, object-keys@^1.1.1:
|
object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
|
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
|
||||||
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
|
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
|
||||||
|
|
||||||
object.getownpropertydescriptors@^2.0.3:
|
object.assign@^4.1.0:
|
||||||
version "2.0.3"
|
version "4.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
|
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
|
||||||
integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=
|
integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
|
||||||
dependencies:
|
dependencies:
|
||||||
define-properties "^1.1.2"
|
define-properties "^1.1.2"
|
||||||
es-abstract "^1.5.1"
|
function-bind "^1.1.1"
|
||||||
|
has-symbols "^1.0.0"
|
||||||
|
object-keys "^1.0.11"
|
||||||
|
|
||||||
once@1.x, once@^1.3.0, once@^1.4.0:
|
once@1.x, once@^1.3.0, once@^1.4.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
|
@ -2766,16 +2783,16 @@ optimist@^0.6.1:
|
||||||
wordwrap "~0.0.2"
|
wordwrap "~0.0.2"
|
||||||
|
|
||||||
optionator@^0.8.1:
|
optionator@^0.8.1:
|
||||||
version "0.8.2"
|
version "0.8.3"
|
||||||
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
|
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
|
||||||
integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
|
integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
|
||||||
dependencies:
|
dependencies:
|
||||||
deep-is "~0.1.3"
|
deep-is "~0.1.3"
|
||||||
fast-levenshtein "~2.0.4"
|
fast-levenshtein "~2.0.6"
|
||||||
levn "~0.3.0"
|
levn "~0.3.0"
|
||||||
prelude-ls "~1.1.2"
|
prelude-ls "~1.1.2"
|
||||||
type-check "~0.3.2"
|
type-check "~0.3.2"
|
||||||
wordwrap "~1.0.0"
|
word-wrap "~1.2.3"
|
||||||
|
|
||||||
options@>=0.0.5:
|
options@>=0.0.5:
|
||||||
version "0.0.6"
|
version "0.0.6"
|
||||||
|
@ -2903,10 +2920,10 @@ pseudomap@^1.0.2:
|
||||||
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
||||||
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
|
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
|
||||||
|
|
||||||
psl@^1.1.24:
|
psl@^1.1.28:
|
||||||
version "1.4.0"
|
version "1.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2"
|
resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c"
|
||||||
integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==
|
integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==
|
||||||
|
|
||||||
pull-cat@^1.1.9:
|
pull-cat@^1.1.9:
|
||||||
version "1.1.11"
|
version "1.1.11"
|
||||||
|
@ -2961,12 +2978,7 @@ punycode@1.3.2:
|
||||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
|
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
|
||||||
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
|
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
|
||||||
|
|
||||||
punycode@^1.4.1:
|
punycode@^2.1.0, punycode@^2.1.1:
|
||||||
version "1.4.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
|
|
||||||
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
|
|
||||||
|
|
||||||
punycode@^2.1.0:
|
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
|
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
|
||||||
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
|
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
|
||||||
|
@ -3003,10 +3015,10 @@ readable-stream@2.2.7:
|
||||||
string_decoder "~1.0.0"
|
string_decoder "~1.0.0"
|
||||||
util-deprecate "~1.0.1"
|
util-deprecate "~1.0.1"
|
||||||
|
|
||||||
readable-stream@^2.2.2:
|
readable-stream@^2.2.2, readable-stream@^2.3.5:
|
||||||
version "2.3.6"
|
version "2.3.7"
|
||||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
|
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
|
||||||
integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
|
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
|
||||||
dependencies:
|
dependencies:
|
||||||
core-util-is "~1.0.0"
|
core-util-is "~1.0.0"
|
||||||
inherits "~2.0.3"
|
inherits "~2.0.3"
|
||||||
|
@ -3017,9 +3029,9 @@ readable-stream@^2.2.2:
|
||||||
util-deprecate "~1.0.1"
|
util-deprecate "~1.0.1"
|
||||||
|
|
||||||
readable-stream@^3.4.0:
|
readable-stream@^3.4.0:
|
||||||
version "3.4.0"
|
version "3.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
|
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
|
||||||
integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==
|
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
|
||||||
dependencies:
|
dependencies:
|
||||||
inherits "^2.0.3"
|
inherits "^2.0.3"
|
||||||
string_decoder "^1.1.1"
|
string_decoder "^1.1.1"
|
||||||
|
@ -3096,9 +3108,9 @@ repeating@^2.0.0:
|
||||||
is-finite "^1.0.0"
|
is-finite "^1.0.0"
|
||||||
|
|
||||||
request@^2.79.0, request@^2.86.0:
|
request@^2.79.0, request@^2.86.0:
|
||||||
version "2.88.0"
|
version "2.88.2"
|
||||||
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
|
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
|
||||||
integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
|
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
|
||||||
dependencies:
|
dependencies:
|
||||||
aws-sign2 "~0.7.0"
|
aws-sign2 "~0.7.0"
|
||||||
aws4 "^1.8.0"
|
aws4 "^1.8.0"
|
||||||
|
@ -3107,7 +3119,7 @@ request@^2.79.0, request@^2.86.0:
|
||||||
extend "~3.0.2"
|
extend "~3.0.2"
|
||||||
forever-agent "~0.6.1"
|
forever-agent "~0.6.1"
|
||||||
form-data "~2.3.2"
|
form-data "~2.3.2"
|
||||||
har-validator "~5.1.0"
|
har-validator "~5.1.3"
|
||||||
http-signature "~1.2.0"
|
http-signature "~1.2.0"
|
||||||
is-typedarray "~1.0.0"
|
is-typedarray "~1.0.0"
|
||||||
isstream "~0.1.2"
|
isstream "~0.1.2"
|
||||||
|
@ -3117,7 +3129,7 @@ request@^2.79.0, request@^2.86.0:
|
||||||
performance-now "^2.1.0"
|
performance-now "^2.1.0"
|
||||||
qs "~6.5.2"
|
qs "~6.5.2"
|
||||||
safe-buffer "^5.1.2"
|
safe-buffer "^5.1.2"
|
||||||
tough-cookie "~2.4.3"
|
tough-cookie "~2.5.0"
|
||||||
tunnel-agent "^0.6.0"
|
tunnel-agent "^0.6.0"
|
||||||
uuid "^3.3.2"
|
uuid "^3.3.2"
|
||||||
|
|
||||||
|
@ -3153,9 +3165,9 @@ resolve-from@^2.0.0:
|
||||||
integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=
|
integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=
|
||||||
|
|
||||||
resolve@^1.10.0:
|
resolve@^1.10.0:
|
||||||
version "1.12.0"
|
version "1.15.1"
|
||||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
|
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8"
|
||||||
integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
|
integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==
|
||||||
dependencies:
|
dependencies:
|
||||||
path-parse "^1.0.6"
|
path-parse "^1.0.6"
|
||||||
|
|
||||||
|
@ -3212,7 +3224,7 @@ s3blaster@scality/s3blaster#7a836b6e:
|
||||||
underscore "^1.8.3"
|
underscore "^1.8.3"
|
||||||
utf8 "~2.1.1"
|
utf8 "~2.1.1"
|
||||||
|
|
||||||
safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
|
safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
|
||||||
version "5.2.0"
|
version "5.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
|
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
|
||||||
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
|
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
|
||||||
|
@ -3232,6 +3244,13 @@ safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||||
|
|
||||||
|
saslprep@^1.0.0:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226"
|
||||||
|
integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==
|
||||||
|
dependencies:
|
||||||
|
sparse-bitfield "^3.0.3"
|
||||||
|
|
||||||
sax@0.5.x:
|
sax@0.5.x:
|
||||||
version "0.5.8"
|
version "0.5.8"
|
||||||
resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1"
|
resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1"
|
||||||
|
@ -3356,6 +3375,13 @@ source-map@^0.6.1, source-map@~0.6.1:
|
||||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||||
|
|
||||||
|
sparse-bitfield@^3.0.3:
|
||||||
|
version "3.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11"
|
||||||
|
integrity sha1-/0rm5oZWBWuks+eSqzM004JzyhE=
|
||||||
|
dependencies:
|
||||||
|
memory-pager "^1.0.2"
|
||||||
|
|
||||||
spdx-correct@^3.0.0:
|
spdx-correct@^3.0.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
|
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
|
||||||
|
@ -3387,9 +3413,9 @@ sprintf-js@~1.0.2:
|
||||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||||
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
|
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
|
||||||
|
|
||||||
sproxydclient@scality/sproxydclient#0e17e27:
|
sproxydclient@scality/sproxydclient#5dc4903:
|
||||||
version "7.4.1"
|
version "7.4.6"
|
||||||
resolved "https://codeload.github.com/scality/sproxydclient/tar.gz/0e17e27b35971aab4bc9a6ce40f7eab2f054314e"
|
resolved "https://codeload.github.com/scality/sproxydclient/tar.gz/5dc4903d3766891d8ec9aa0eb2568c84a93340e9"
|
||||||
dependencies:
|
dependencies:
|
||||||
async "^3.1.0"
|
async "^3.1.0"
|
||||||
werelogs scality/werelogs#4e0d97c
|
werelogs scality/werelogs#4e0d97c
|
||||||
|
@ -3461,26 +3487,25 @@ string-width@^2.0.0:
|
||||||
strip-ansi "^4.0.0"
|
strip-ansi "^4.0.0"
|
||||||
|
|
||||||
string.prototype.padend@^3.0.0:
|
string.prototype.padend@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0"
|
resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3"
|
||||||
integrity sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=
|
integrity sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==
|
||||||
dependencies:
|
dependencies:
|
||||||
define-properties "^1.1.2"
|
define-properties "^1.1.3"
|
||||||
es-abstract "^1.4.3"
|
es-abstract "^1.17.0-next.1"
|
||||||
function-bind "^1.0.2"
|
|
||||||
|
|
||||||
string.prototype.trimleft@^2.1.0:
|
string.prototype.trimleft@^2.1.1:
|
||||||
version "2.1.0"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634"
|
resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74"
|
||||||
integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==
|
integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==
|
||||||
dependencies:
|
dependencies:
|
||||||
define-properties "^1.1.3"
|
define-properties "^1.1.3"
|
||||||
function-bind "^1.1.1"
|
function-bind "^1.1.1"
|
||||||
|
|
||||||
string.prototype.trimright@^2.1.0:
|
string.prototype.trimright@^2.1.1:
|
||||||
version "2.1.0"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58"
|
resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9"
|
||||||
integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==
|
integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==
|
||||||
dependencies:
|
dependencies:
|
||||||
define-properties "^1.1.3"
|
define-properties "^1.1.3"
|
||||||
function-bind "^1.1.1"
|
function-bind "^1.1.1"
|
||||||
|
@ -3610,13 +3635,13 @@ topo@2.x.x:
|
||||||
dependencies:
|
dependencies:
|
||||||
hoek "4.x.x"
|
hoek "4.x.x"
|
||||||
|
|
||||||
tough-cookie@~2.4.3:
|
tough-cookie@~2.5.0:
|
||||||
version "2.4.3"
|
version "2.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
|
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
|
||||||
integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
|
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
|
||||||
dependencies:
|
dependencies:
|
||||||
psl "^1.1.24"
|
psl "^1.1.28"
|
||||||
punycode "^1.4.1"
|
punycode "^2.1.1"
|
||||||
|
|
||||||
trim-right@^1.0.1:
|
trim-right@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
|
@ -3660,6 +3685,11 @@ type@^1.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
|
resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
|
||||||
integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
|
integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
|
||||||
|
|
||||||
|
type@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3"
|
||||||
|
integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==
|
||||||
|
|
||||||
typedarray-to-buffer@~3.1.5:
|
typedarray-to-buffer@~3.1.5:
|
||||||
version "3.1.5"
|
version "3.1.5"
|
||||||
resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
|
resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
|
||||||
|
@ -3695,11 +3725,11 @@ uc.micro@^1.0.0, uc.micro@^1.0.1:
|
||||||
integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
|
integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
|
||||||
|
|
||||||
uglify-js@^3.1.4:
|
uglify-js@^3.1.4:
|
||||||
version "3.6.2"
|
version "3.8.0"
|
||||||
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.2.tgz#fd8048c86d990ddd29fe99d3300e0cb329103f4d"
|
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.8.0.tgz#f3541ae97b2f048d7e7e3aa4f39fd8a1f5d7a805"
|
||||||
integrity sha512-+gh/xFte41GPrgSMJ/oJVq15zYmqr74pY9VoM69UzMzq9NFk4YDylclb1/bhEzZSaUQjbW5RvniHeq1cdtRYjw==
|
integrity sha512-ugNSTT8ierCsDHso2jkBHXYrU8Y5/fY2ZUprfrJUiD7YpuFvV4jODLFmb3h4btQjqr5Nh4TX4XtgDfCU1WdioQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
commander "2.20.0"
|
commander "~2.20.3"
|
||||||
source-map "~0.6.1"
|
source-map "~0.6.1"
|
||||||
|
|
||||||
ultron@1.0.x:
|
ultron@1.0.x:
|
||||||
|
@ -3708,9 +3738,9 @@ ultron@1.0.x:
|
||||||
integrity sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=
|
integrity sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=
|
||||||
|
|
||||||
underscore@^1.8.3:
|
underscore@^1.8.3:
|
||||||
version "1.9.1"
|
version "1.9.2"
|
||||||
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961"
|
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.2.tgz#0c8d6f536d6f378a5af264a72f7bec50feb7cf2f"
|
||||||
integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==
|
integrity sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ==
|
||||||
|
|
||||||
underscore@~1.8.3:
|
underscore@~1.8.3:
|
||||||
version "1.8.3"
|
version "1.8.3"
|
||||||
|
@ -3761,14 +3791,6 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||||
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
|
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
|
||||||
|
|
||||||
util.promisify@~1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
|
|
||||||
integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
|
|
||||||
dependencies:
|
|
||||||
define-properties "^1.1.2"
|
|
||||||
object.getownpropertydescriptors "^2.0.3"
|
|
||||||
|
|
||||||
uuid@3.0.1:
|
uuid@3.0.1:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
|
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
|
||||||
|
@ -3780,9 +3802,9 @@ uuid@3.3.2:
|
||||||
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
|
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
|
||||||
|
|
||||||
uuid@^3.0.0, uuid@^3.0.1, uuid@^3.3.2:
|
uuid@^3.0.0, uuid@^3.0.1, uuid@^3.3.2:
|
||||||
version "3.3.3"
|
version "3.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
|
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||||
integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==
|
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
||||||
|
|
||||||
validate-npm-package-license@^3.0.1:
|
validate-npm-package-license@^3.0.1:
|
||||||
version "3.0.4"
|
version "3.0.4"
|
||||||
|
@ -3849,7 +3871,12 @@ which@^1.1.1, which@^1.2.9:
|
||||||
dependencies:
|
dependencies:
|
||||||
isexe "^2.0.0"
|
isexe "^2.0.0"
|
||||||
|
|
||||||
wordwrap@^1.0.0, wordwrap@~1.0.0:
|
word-wrap@~1.2.3:
|
||||||
|
version "1.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
|
||||||
|
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
|
||||||
|
|
||||||
|
wordwrap@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
||||||
integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
|
integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
|
||||||
|
@ -3908,12 +3935,11 @@ xml2js@0.4.19:
|
||||||
xmlbuilder "~9.0.1"
|
xmlbuilder "~9.0.1"
|
||||||
|
|
||||||
xml2js@~0.4.16:
|
xml2js@~0.4.16:
|
||||||
version "0.4.22"
|
version "0.4.23"
|
||||||
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.22.tgz#4fa2d846ec803237de86f30aa9b5f70b6600de02"
|
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
|
||||||
integrity sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw==
|
integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==
|
||||||
dependencies:
|
dependencies:
|
||||||
sax ">=0.6.0"
|
sax ">=0.6.0"
|
||||||
util.promisify "~1.0.0"
|
|
||||||
xmlbuilder "~11.0.0"
|
xmlbuilder "~11.0.0"
|
||||||
|
|
||||||
xml@^1.0.0:
|
xml@^1.0.0:
|
||||||
|
@ -3959,9 +3985,9 @@ yallist@^2.1.2:
|
||||||
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
|
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
|
||||||
|
|
||||||
yarn@^1.17.3:
|
yarn@^1.17.3:
|
||||||
version "1.19.1"
|
version "1.22.0"
|
||||||
resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.19.1.tgz#14b92410dd1ba5bab87a12b4a3d807f4569bea97"
|
resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.0.tgz#acf82906e36bcccd1ccab1cfb73b87509667c881"
|
||||||
integrity sha512-gBnfbL9rYY05Gt0cjJhs/siqQXHYlZalTjK3nXn2QO20xbkIFPob+LlH44ML47GcR4VU9/2dYck1BWFM0Javxw==
|
integrity sha512-KMHP/Jq53jZKTY9iTUt3dIVl/be6UPs2INo96+BnZHLKxYNTfwMmlgHTaMWyGZoO74RI4AIFvnWhYrXq2USJkg==
|
||||||
|
|
||||||
yeast@0.1.2:
|
yeast@0.1.2:
|
||||||
version "0.1.2"
|
version "0.1.2"
|
||||||
|
|
Loading…
Reference in New Issue