Fixed failing samples

Updated uuid/webpack packages
Added froze on objects publicly exposed
Removed remaining while loops for actions/events processing
This commit is contained in:
Nicolas Dextraze 2017-04-16 12:51:17 -07:00
parent 56c2dee6d6
commit f7c13634cc
23 changed files with 363 additions and 411 deletions

View File

@ -45,11 +45,12 @@
"@types/node": "^6.0.47",
"long": "^3.2",
"protobufjs": "^5.0",
"uuid": "^2.0"
"uuid": "^3.0.1",
"uuid-parse": "^1.0.0"
},
"devDependencies": {
"jsdoc": "^3.4.2",
"nodeunit": "^0.10.2",
"webpack": "^2.2.1"
"nodeunit": "^0.11.0",
"webpack": "^2.4.1"
}
}

View File

@ -2,7 +2,7 @@ var esClient = require('../src/client'); // When running in 'eventstore-nod
// var esClient = require('eventstore-node'); // Otherwise
var uuid = require('uuid');
var esConnection = esClient.createConnection({}, {"hostname": "localhost", "port": 1113});
var esConnection = esClient.createConnection({}, {"host": "localhost", "port": 1113});
esConnection.connect();
esConnection.once('connected', function (tcpEndPoint) {
console.log('Connected to eventstore at ' + tcpEndPoint.host + ":" + tcpEndPoint.port);

View File

@ -6,7 +6,7 @@ var esClient = require('../src/client'); // When running in 'eventstore-no
const credentialsForAllEventsStream = new esClient.UserCredentials("admin", "changeit");
const resolveLinkTos = false;
var esConnection = esClient.createConnection({}, {"hostname": "localhost", "port": 1113});
var esConnection = esClient.createConnection({}, {"host": "localhost", "port": 1113});
esConnection.connect();
esConnection.once('connected', function (tcpEndPoint) {
console.log('Connected to eventstore at ' + tcpEndPoint.host + ":" + tcpEndPoint.port);

View File

@ -6,7 +6,7 @@ var esClient = require('../src/client'); // When running in 'eventstore-no
const credentialsForAllEventsStream = new esClient.UserCredentials("admin", "changeit");
var esConnection = esClient.createConnection({}, {"hostname": "localhost", "port": 1113});
var esConnection = esClient.createConnection({}, {"host": "localhost", "port": 1113});
esConnection.connect();
esConnection.once('connected', function (tcpEndPoint) {
console.log('Connected to eventstore at ' + tcpEndPoint.host + ":" + tcpEndPoint.port);

View File

@ -6,10 +6,12 @@ const expectedVersion = {
noStream: -1,
emptyStream: -1
};
Object.freeze(expectedVersion);
const positions = {
start: new results.Position(0, 0),
end: new results.Position(-1, -1)
};
Object.freeze(positions);
/**
* Create an EventData object from JavaScript event/metadata that will be serialized as json

View File

@ -1,5 +1,5 @@
var util = require('util');
var uuid = require('uuid');
var uuidParse = require('uuid-parse');
var TcpCommand = require('../systemData/tcpCommand');
var InspectionDecision = require('../systemData/inspectionDecision');
@ -26,7 +26,7 @@ util.inherits(AppendToStreamOperation, OperationBase);
AppendToStreamOperation.prototype._createRequestDto = function() {
var dtos = this._events.map(function(ev) {
var eventId = new Buffer(uuid.parse(ev.eventId));
var eventId = new Buffer(uuidParse.parse(ev.eventId));
return new ClientMessage.NewEvent({
event_id: eventId, event_type: ev.type,
data_content_type: ev.isJson ? 1 : 0, metadata_content_type: 0,

View File

@ -1,5 +1,5 @@
var util = require('util');
var uuid = require('uuid');
var uuidParse = require('uuid-parse');
var SubscriptionOperation = require('./subscriptionOperation');
var ClientMessage = require('../messages/clientMessage');
@ -88,7 +88,7 @@ ConnectToPersistentSubscriptionOperation.prototype.notifyEventsProcessed = funct
var dto = new ClientMessage.PersistentSubscriptionAckEvents({
subscription_id: this._subscriptionId,
processed_event_ids: processedEvents.map(function (x) {
return new Buffer(uuid.parse(x));
return new Buffer(uuidParse.parse(x));
})
});
@ -106,7 +106,7 @@ ConnectToPersistentSubscriptionOperation.prototype.notifyEventsFailed = function
ensure.notNull(reason, "reason");
var dto = new ClientMessage.PersistentSubscriptionNakEvents(
this._subscriptionId,
processedEvents.map(function(x) { return new Buffer(uuid.parse(x)); }),
processedEvents.map(function(x) { return new Buffer(uuidParse.parse(x)); }),
reason,
action);

View File

@ -244,10 +244,11 @@ SubscriptionOperation.prototype._executeAction = function(action) {
};
SubscriptionOperation.prototype._executeActions = function() {
//TODO: possible blocking loop for node.js
var action = this._actionQueue.shift();
while (action)
{
if (!action) {
this._actionExecuting = false;
return;
}
try
{
action();
@ -256,9 +257,7 @@ SubscriptionOperation.prototype._executeActions = function() {
{
this._log.error(err, "Exception during executing user callback: %s.", err.message);
}
action = this._actionQueue.shift();
}
this._actionExecuting = false;
setImmediate(this._executeActions.bind(this));
};
SubscriptionOperation.prototype.toString = function() {

View File

@ -1,5 +1,5 @@
var util = require('util');
var uuid = require('uuid');
var uuidParse = require('uuid-parse');
var TcpCommand = require('../systemData/tcpCommand');
var InspectionDecision = require('../systemData/inspectionDecision');
@ -22,7 +22,7 @@ util.inherits(TransactionalWriteOperation, OperationBase);
TransactionalWriteOperation.prototype._createRequestDto = function() {
var dtos = this._events.map(function(ev) {
var eventId = new Buffer(uuid.parse(ev.eventId));
var eventId = new Buffer(uuidParse.parse(ev.eventId));
return new ClientMessage.NewEvent({
event_id: eventId, event_type: ev.type,
data_content_type: ev.isJson ? 1 : 0, metadata_content_type: 0,

View File

@ -12,5 +12,6 @@ const SystemMetadata = {
userStreamAcl: '$userStreamAcl',
systemStreamAcl: '$systemStreamAcl'
};
Object.freeze(SystemMetadata);
module.exports = SystemMetadata;

View File

@ -8,11 +8,13 @@ function AccessDeniedError(action, streamOrTransactionId) {
if (typeof streamOrTransactionId === 'string') {
this.message = util.format("%s access denied for stream '%s'.", action, streamOrTransactionId);
this.stream = streamOrTransactionId;
Object.freeze(this);
return;
}
if (Long.isLong(streamOrTransactionId)) {
this.message = util.format("%s access denied for transaction %s.", action, streamOrTransactionId);
this.transactionId = streamOrTransactionId;
Object.freeze(this);
return;
}
throw new TypeError("second argument must be a stream name or transaction Id.");

View File

@ -7,11 +7,13 @@ function StreamDeletedError(streamOrTransactionId) {
if (typeof streamOrTransactionId === 'string') {
this.message = util.format("Event stream '%s' is deleted.", streamOrTransactionId);
this.stream = streamOrTransactionId;
Object.freeze(this);
return;
}
if (Long.isLong(streamOrTransactionId)) {
this.message = util.format("Stream is deleted for transaction %s.", streamOrTransactionId);
this.transactionId = streamOrTransactionId;
Object.freeze(this);
return;
}
throw new TypeError("second argument must be a stream name or transaction Id.");

View File

@ -9,11 +9,13 @@ function WrongExpectedVersionError(action, streamOrTransactionId, expectedVersio
this.message = util.format("%s failed due to WrongExpectedVersion. Stream: %s Expected version: %d.", action, streamOrTransactionId, expectedVersion);
this.stream = streamOrTransactionId;
this.expectedVersion = expectedVersion;
Object.freeze(this);
return;
}
if (Long.isLong(streamOrTransactionId)) {
this.message = util.format("%s transaction failed due to WrongExpectedVersion. Transaction Id: %s.", action, streamOrTransactionId);
this.transactionId = streamOrTransactionId;
Object.freeze(this);
return;
}
throw new TypeError("second argument must be a stream name or a transaction Id.");

View File

@ -1,13 +1,9 @@
var uuid = require('uuid');
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
function isValidId(id) {
if (typeof id !== 'string') return false;
var buf = uuid.parse(id);
var valid = false;
for(var i=0;i<buf.length;i++)
if (buf[i] !== 0)
valid = true;
return valid;
return uuidRegex.test(id);
}
/**
@ -32,6 +28,7 @@ function EventData(eventId, type, isJson, data, metadata) {
this.isJson = isJson || false;
this.data = data || new Buffer(0);
this.metadata = metadata || new Buffer(0);
Object.freeze(this);
}
module.exports = EventData;

View File

@ -209,26 +209,25 @@ EventStoreCatchUpSubscription.prototype._ensureProcessingPushQueue = function()
EventStoreCatchUpSubscription.prototype._processLiveQueue = function() {
var ev = this._liveQueue.shift();
//TODO: possible blocking while, use when
while(ev) {
if (!ev) {
this._isProcessing = false;
return;
}
if (ev instanceof DropSubscriptionEvent) {
if (!this._dropData) this._dropData = {reason: SubscriptionDropReason.Unknown, error: new Error("Drop reason not specified.")};
this._dropSubscription(this._dropData.reason, this._dropData.error);
this._isProcessing = false;
return;
}
try {
this._tryProcess(ev);
}
catch(err) {
this._dropSubscription(SubscriptionDropReason.EventHandlerException, err);
this._isProcessing = false;
return;
}
ev = this._liveQueue.shift();
}
this._isProcessing = false;
setImmediate(this._processLiveQueue.bind(this));
};
EventStoreCatchUpSubscription.prototype._dropSubscription = function(reason, error) {

View File

@ -111,42 +111,43 @@ EventStorePersistentSubscriptionBase.prototype._enqueue = function(resolvedEvent
};
EventStorePersistentSubscriptionBase.prototype._processQueue = function() {
//do
//{
var e = this._queue.shift();
while (e)
{
if (e instanceof DropSubscriptionEvent) // drop subscription artificial ResolvedEvent
var ev = this._queue.shift();
if (!ev) {
this._isProcessing = false;
return;
}
if (ev instanceof DropSubscriptionEvent) // drop subscription artificial ResolvedEvent
{
if (this._dropData === null) throw new Error("Drop reason not specified.");
this._dropSubscription(this._dropData.reason, this._dropData.error);
this._isProcessing = false;
return;
}
if (this._dropData !== null)
{
this._dropSubscription(this._dropData.reason, this._dropData.error);
this._isProcessing = false;
return;
}
try
{
this._eventAppeared(this, e);
this._eventAppeared(this, ev);
if(this._autoAck)
this._subscription.notifyEventsProcessed([e.originalEvent.eventId]);
this._subscription.notifyEventsProcessed([ev.originalEvent.eventId]);
if (this._verbose)
this._log.debug("Persistent Subscription to %s: processed event (%s, %d, %s @ %d).",
this._streamId, e.originalEvent.eventStreamId, e.originalEvent.eventNumber, e.originalEvent.eventType,
e.originalEventNumber);
this._streamId, ev.originalEvent.eventStreamId, ev.originalEvent.eventNumber, ev.originalEvent.eventType,
ev.originalEventNumber);
}
catch (err)
{
//TODO GFY should we autonak here?
this._dropSubscription(SubscriptionDropReason.EventHandlerException, err);
this._isProcessing = false;
return;
}
e = this._queue.shift();
}
this._isProcessing = false;
//} while (_queue.Count > 0 && Interlocked.CompareExchange(ref _isProcessing, 1, 0) === 0);
setImmediate(this._processQueue.bind(this));
};
EventStorePersistentSubscriptionBase.prototype._dropSubscription = function(reason, error) {

View File

@ -1,13 +1,6 @@
module.exports = function GossipSeed(endPoint, hostName) {
if (typeof endPoint !== 'object' || !endPoint.host || !endPoint.port) throw new TypeError('endPoint must be have host and port properties.');
Object.defineProperties(this, {
endPoint: {
enumerable: true,
value: endPoint
},
hostName: {
enumerable: true,
value: hostName
}
});
this.endPoint = endPoint;
this.hostName = hostName;
Object.freeze(this);
};

View File

@ -1,5 +1,5 @@
var util = require('util');
var uuid = require('uuid');
var uuidParse = require('uuid-parse');
var Long = require('long');
var ensure = require('./common/utils/ensure');
@ -14,17 +14,9 @@ var ensure = require('./common/utils/ensure');
function Position(commitPosition, preparePosition) {
ensure.notNull(commitPosition, "commitPosition");
ensure.notNull(preparePosition, "preparePosition");
commitPosition = Long.fromValue(commitPosition);
preparePosition = Long.fromValue(preparePosition);
Object.defineProperties(this, {
commitPosition: {
enumerable: true, value: commitPosition
},
preparePosition: {
enumerable: true, value: preparePosition
}
});
this.commitPosition = Long.fromValue(commitPosition);
this.preparePosition = Long.fromValue(preparePosition);
Object.freeze(this);
}
Position.prototype.compareTo = function(other) {
@ -46,6 +38,7 @@ const EventReadStatus = {
NoStream: 'noStream',
StreamDeleted: 'streamDeleted'
};
Object.freeze(EventReadStatus);
/**
* @param {object} ev
@ -60,18 +53,16 @@ const EventReadStatus = {
* @property {boolean} isJson
*/
function RecordedEvent(ev) {
Object.defineProperties(this, {
eventStreamId: {enumerable: true, value: ev.event_stream_id},
eventId: {enumerable: true, value: uuid.unparse(ev.event_id.buffer, ev.event_id.offset)},
eventNumber: {enumerable: true, value: ev.event_number},
eventType: {enumerable: true, value: ev.event_type},
//Javascript doesn't have .Net precision for time, so we use created_epoch for created
created: {enumerable: true, value: new Date(ev.created_epoch ? ev.created_epoch.toNumber() : 0)},
createdEpoch: {enumerable: true, value: ev.created_epoch ? ev.created_epoch.toNumber() : 0},
data: {enumerable: true, value: ev.data ? ev.data.toBuffer() : new Buffer(0)},
metadata: {enumerable: true, value: ev.metadata ? ev.metadata.toBuffer() : new Buffer(0)},
isJson: {enumerable: true, value: ev.data_content_type === 1}
});
this.eventStreamId = ev.event_stream_id;
this.eventId = uuidParse.unparse(ev.event_id.buffer, ev.event_id.offset);
this.eventNumber = ev.event_number;
this.eventType = ev.event_type;
this.created = new Date(ev.created_epoch ? ev.created_epoch.toNumber() : 0);
this.createdEpoch = ev.created_epoch ? ev.created_epoch.toNumber() : 0;
this.data = ev.data ? ev.data.toBuffer() : new Buffer(0);
this.metadata = ev.metadata ? ev.metadata.toBuffer() : new Buffer(0);
this.isJson = ev.data_content_type === 1;
Object.freeze(this);
}
/**
@ -86,44 +77,14 @@ function RecordedEvent(ev) {
* @property {number} originalEventNumber
*/
function ResolvedEvent(ev) {
Object.defineProperties(this, {
event: {
enumerable: true,
value: ev.event === null ? null : new RecordedEvent(ev.event)
},
link: {
enumerable: true,
value: ev.link === null ? null : new RecordedEvent(ev.link)
},
originalEvent: {
enumerable: true,
get: function() {
return this.link || this.event;
}
},
isResolved: {
enumerable: true,
get: function() {
return this.link !== null && this.event !== null;
}
},
originalPosition: {
enumerable: true,
value: (ev.commit_position && ev.prepare_position) ? new Position(ev.commit_position, ev.prepare_position) : null
},
originalStreamId: {
enumerable: true,
get: function() {
return this.originalEvent.eventStreamId;
}
},
originalEventNumber: {
enumerable: true,
get: function() {
return this.originalEvent.eventNumber;
}
}
});
this.event = ev.event === null ? null : new RecordedEvent(ev.event);
this.link = ev.link === null ? null : new RecordedEvent(ev.link);
this.originalEvent = this.link || this.event;
this.isResolved = this.link !== null && this.event !== null;
this.originalPosition = (ev.commit_position && ev.prepare_position) ? new Position(ev.commit_position, ev.prepare_position) : null;
this.originalStreamId = this.originalEvent && this.originalEvent.eventStreamId;
this.originalEventNumber = this.originalEvent && this.originalEvent.eventNumber;
Object.freeze(this);
}
/**
@ -139,14 +100,11 @@ function ResolvedEvent(ev) {
* @property {ResolvedEvent} event
*/
function EventReadResult(status, stream, eventNumber, event) {
Object.defineProperties(this, {
status: {enumerable: true, value: status},
stream: {enumerable: true, value: stream},
eventNumber: {enumerable: true, value: eventNumber},
event: {
enumerable: true, value: status === EventReadStatus.Success ? new ResolvedEvent(event) : null
}
});
this.status = status;
this.stream = stream;
this.eventNumber = eventNumber;
this.event = status === EventReadStatus.Success ? new ResolvedEvent(event) : null;
Object.freeze(this);
}
/**
@ -157,14 +115,9 @@ function EventReadResult(status, stream, eventNumber, event) {
* @property {Position} logPosition
*/
function WriteResult(nextExpectedVersion, logPosition) {
Object.defineProperties(this, {
nextExpectedVersion: {
enumerable: true, value: nextExpectedVersion
},
logPosition: {
enumerable: true, value: logPosition
}
});
this.nextExpectedVersion = nextExpectedVersion;
this.logPosition = logPosition;
Object.freeze(this);
}
/**
@ -189,32 +142,15 @@ function WriteResult(nextExpectedVersion, logPosition) {
function StreamEventsSlice(
status, stream, fromEventNumber, readDirection, events, nextEventNumber, lastEventNumber, isEndOfStream
) {
Object.defineProperties(this, {
status: {
enumerable: true, value: status
},
stream: {
enumerable: true, value: stream
},
fromEventNumber: {
enumerable: true, value: fromEventNumber
},
readDirection: {
enumerable: true, value: readDirection
},
events: {
enumerable: true, value: events ? events.map(function(ev) { return new ResolvedEvent(ev); }) : []
},
nextEventNumber: {
enumerable: true, value: nextEventNumber
},
lastEventNumber: {
enumerable: true, value: lastEventNumber
},
isEndOfStream: {
enumerable: true, value: isEndOfStream
}
})
this.status = status;
this.stream = stream;
this.fromEventNumber = fromEventNumber;
this.readDirection = readDirection;
this.events = events ? events.map(function(ev) { return new ResolvedEvent(ev); }) : [];
this.nextEventNumber = nextEventNumber;
this.lastEventNumber = lastEventNumber;
this.isEndOfStream = isEndOfStream;
Object.freeze(this);
}
/**
@ -229,23 +165,12 @@ function StreamEventsSlice(
* @property {ResolvedEvent[]} events
*/
function AllEventsSlice(readDirection, fromPosition, nextPosition, events) {
Object.defineProperties(this, {
readDirection: {
enumerable: true, value: readDirection
},
fromPosition: {
enumerable: true, value: fromPosition
},
nextPosition: {
enumerable: true, value: nextPosition
},
events: {
enumerable: true, value: events ? events.map(function(ev){ return new ResolvedEvent(ev); }) : []
},
isEndOfStream: {
enumerable: true, value: events === null || events.length === 0
}
});
this.readDirection = readDirection;
this.fromPosition = fromPosition;
this.nextPosition = nextPosition;
this.events = events ? events.map(function(ev){ return new ResolvedEvent(ev); }) : [];
this.isEndOfStream = events === null || events.length === 0;
Object.freeze(this);
}
/**
@ -254,11 +179,8 @@ function AllEventsSlice(readDirection, fromPosition, nextPosition, events) {
* @property {Position} logPosition
*/
function DeleteResult(logPosition) {
Object.defineProperties(this, {
logPosition: {
enumerable: true, value: logPosition
}
});
this.logPosition = logPosition;
Object.freeze(this);
}
/**
@ -274,12 +196,11 @@ function DeleteResult(logPosition) {
*/
function RawStreamMetadataResult(stream, isStreamDeleted, metastreamVersion, streamMetadata) {
ensure.notNullOrEmpty(stream);
Object.defineProperties(this, {
stream: {enumerable: true, value: stream},
isStreamDeleted: {enumerable: true, value: isStreamDeleted},
metastreamVersion: {enumerable: true, value: metastreamVersion},
streamMetadata: {enumerable: true, value: streamMetadata}
});
this.stream = stream;
this.isStreamDeleted = isStreamDeleted;
this.metastreamVersion = metastreamVersion;
this.streamMetadata = streamMetadata;
Object.freeze(this);
}
const PersistentSubscriptionCreateStatus = {
@ -287,6 +208,7 @@ const PersistentSubscriptionCreateStatus = {
NotFound: 'notFound',
Failure: 'failure'
};
Object.freeze(PersistentSubscriptionCreateStatus);
/**
* @param {string} status
@ -294,9 +216,8 @@ const PersistentSubscriptionCreateStatus = {
* @property {string} status
*/
function PersistentSubscriptionCreateResult(status) {
Object.defineProperties(this, {
status: {enumerable: true, value: status}
});
this.status = status;
Object.freeze(this);
}
const PersistentSubscriptionUpdateStatus = {
@ -305,6 +226,7 @@ const PersistentSubscriptionUpdateStatus = {
Failure: 'failure',
AccessDenied: 'accessDenied'
};
Object.freeze(PersistentSubscriptionUpdateStatus);
/**
* @param {string} status
@ -312,15 +234,15 @@ const PersistentSubscriptionUpdateStatus = {
* @property {string} status
*/
function PersistentSubscriptionUpdateResult(status) {
Object.defineProperties(this, {
status: {enumerable: true, value: status}
});
this.status = status;
Object.freeze(this);
}
const PersistentSubscriptionDeleteStatus = {
Success: 'success',
Failure: 'failure'
};
Object.freeze(PersistentSubscriptionDeleteStatus);
/**
* @param {string} status
@ -328,9 +250,8 @@ const PersistentSubscriptionDeleteStatus = {
* @property {string} status
*/
function PersistentSubscriptionDeleteResult(status) {
Object.defineProperties(this, {
status: {enumerable: true, value: status}
});
this.status = status;
Object.freeze(this);
}
// Exports Constructors

View File

@ -3,5 +3,6 @@ const SliceReadStatus = {
StreamNotFound: 'streamNotFound',
StreamDeleted: 'streamDeleted'
};
Object.freeze(SliceReadStatus);
module.exports = SliceReadStatus;

View File

@ -3,5 +3,6 @@ const SystemConsumerStrategies = {
RoundRobin: 'RoundRobin',
Pinned: 'Pinned'
};
Object.freeze(SystemConsumerStrategies);
module.exports = SystemConsumerStrategies;

View File

@ -1,4 +1,4 @@
var uuid = require('uuid');
var uuidParse = require('uuid-parse');
var createBufferSegment = require('../common/bufferSegment');
var TcpFlags = require('./tcpFlags');
@ -25,7 +25,7 @@ TcpPackage.fromBufferSegment = function(data) {
var command = data.buffer[data.offset + CommandOffset];
var flags = data.buffer[data.offset + FlagsOffset];
var correlationId = uuid.unparse(data.buffer, data.offset + CorrelationOffset);
var correlationId = uuidParse.unparse(data.buffer, data.offset + CorrelationOffset);
var headerSize = MandatorySize;
var login = null, pass = null;
@ -57,7 +57,7 @@ TcpPackage.prototype.asBuffer = function() {
var res = new Buffer(MandatorySize + 2 + loginBytes.length + passwordBytes.length + (this.data ? this.data.count : 0));
res[CommandOffset] = this.command;
res[FlagsOffset] = this.flags;
uuid.parse(this.correlationId, res, CorrelationOffset);
uuidParse.parse(this.correlationId, res, CorrelationOffset);
res[AuthOffset] = loginBytes.length;
loginBytes.copy(res, AuthOffset + 1);
@ -72,7 +72,7 @@ TcpPackage.prototype.asBuffer = function() {
var res = new Buffer(MandatorySize + (this.data ? this.data.count : 0));
res[CommandOffset] = this.command;
res[FlagsOffset] = this.flags;
uuid.parse(this.correlationId, res, CorrelationOffset);
uuidParse.parse(this.correlationId, res, CorrelationOffset);
if (this.data)
this.data.copyTo(res, AuthOffset);
return res;

View File

@ -10,11 +10,9 @@ var ensure = require('../common/utils/ensure');
function UserCredentials(username, password) {
ensure.notNullOrEmpty(username, 'username');
ensure.notNullOrEmpty(password, 'password');
Object.defineProperties(this, {
username: {enumerable: true, value: username},
password: {enumerable: true, value: password}
});
this.username = username;
this.password = password;
Object.freeze(this);
}
module.exports = UserCredentials;

362
yarn.lock
View File

@ -30,10 +30,14 @@ acorn@^3.0.4, acorn@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
acorn@^4.0.3, acorn@^4.0.4:
acorn@^4.0.3:
version "4.0.11"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0"
acorn@^5.0.0:
version "5.0.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d"
ajv-keywords@^1.1.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
@ -82,6 +86,10 @@ aproba@^1.0.3:
version "1.1.1"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab"
archy@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
are-we-there-yet@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
@ -150,7 +158,7 @@ async-each@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
async@^1.4.0, async@^1.4.2:
async@^1.4.0:
version "1.5.2"
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
@ -160,10 +168,6 @@ async@^2.1.2:
dependencies:
lodash "^4.14.0"
async@~0.2.6:
version "0.2.10"
resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@ -269,6 +273,10 @@ binary-extensions@^1.0.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
bind-obj-methods@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/bind-obj-methods/-/bind-obj-methods-1.0.0.tgz#4f5979cac15793adf70e488161e463e209ca509c"
block-stream@*:
version "0.0.9"
resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
@ -610,13 +618,11 @@ date-now@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
debug@^2.1.3, debug@^2.2.0:
version "2.6.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351"
dependencies:
ms "0.7.2"
debug-log@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f"
debug@~2.2.0:
debug@^2.1.3, debug@^2.2.0, debug@~2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
dependencies:
@ -683,6 +689,10 @@ ecc-jsbn@~0.1.1:
dependencies:
jsbn "~0.1.0"
ejs@^2.5.2:
version "2.5.6"
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.6.tgz#479636bfa3fe3b1debd52087f0acb204b4f19c88"
elliptic@^6.0.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
@ -822,7 +832,7 @@ for-own@^0.1.4:
dependencies:
for-in "^0.1.5"
foreground-child@^1.3.3, foreground-child@^1.5.3, foreground-child@^1.5.6:
foreground-child@^1.3.3, foreground-child@^1.5.3:
version "1.5.6"
resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9"
dependencies:
@ -841,6 +851,10 @@ form-data@~2.1.1:
combined-stream "^1.0.5"
mime-types "^2.1.12"
fs-exists-cached@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz#cf25554ca050dc49ae6656b41de42258989dcbce"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@ -869,6 +883,10 @@ fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
mkdirp ">=0.5 0"
rimraf "2"
function-loop@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/function-loop/-/function-loop-1.0.1.tgz#8076bb305e8e6a3cceee2920765f330d190f340c"
gauge@~2.7.1:
version "2.7.3"
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09"
@ -915,7 +933,7 @@ glob-parent@^2.0.0:
dependencies:
is-glob "^2.0.0"
glob@^7.0.0, glob@^7.0.3, glob@^7.0.5:
glob@^7.0.0, glob@^7.0.5, glob@^7.0.6:
version "7.1.1"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
dependencies:
@ -1168,51 +1186,49 @@ isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0, istanbul-lib-coverage@^1.0.0-alpha.4:
version "1.0.1"
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212"
istanbul-lib-coverage@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.2.tgz#87a0c015b6910651cb3b184814dfb339337e25e1"
istanbul-lib-hook@^1.0.0-alpha.4:
version "1.0.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5"
istanbul-lib-hook@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.5.tgz#6ca3d16d60c5f4082da39f7c5cd38ea8a772b88e"
dependencies:
append-transform "^0.4.0"
istanbul-lib-instrument@^1.1.0-alpha.3:
version "1.4.2"
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e"
istanbul-lib-instrument@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.0.tgz#b8e0dc25709bb44e17336ab47b7bb5c97c23f659"
dependencies:
babel-generator "^6.18.0"
babel-template "^6.16.0"
babel-traverse "^6.18.0"
babel-types "^6.18.0"
babylon "^6.13.0"
istanbul-lib-coverage "^1.0.0"
istanbul-lib-coverage "^1.0.2"
semver "^5.3.0"
istanbul-lib-report@^1.0.0-alpha.3:
version "1.0.0-alpha.3"
resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af"
istanbul-lib-report@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.0.0.tgz#d83dac7f26566b521585569367fe84ccfc7aaecb"
dependencies:
async "^1.4.2"
istanbul-lib-coverage "^1.0.0-alpha"
istanbul-lib-coverage "^1.0.2"
mkdirp "^0.5.1"
path-parse "^1.0.5"
rimraf "^2.4.3"
supports-color "^3.1.2"
istanbul-lib-source-maps@^1.0.0-alpha.10:
version "1.1.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f"
istanbul-lib-source-maps@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.1.1.tgz#f8c8c2e8f2160d1d91526d97e5bd63b2079af71c"
dependencies:
istanbul-lib-coverage "^1.0.0-alpha.0"
istanbul-lib-coverage "^1.0.2"
mkdirp "^0.5.1"
rimraf "^2.4.4"
source-map "^0.5.3"
istanbul-reports@^1.0.0-alpha.8:
version "1.0.1"
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc"
istanbul-reports@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.0.2.tgz#4e8366abe6fa746cc1cd6633f108de12cc6ac6fa"
dependencies:
handlebars "^4.0.3"
@ -1287,7 +1303,7 @@ json-stringify-safe@~5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
json5@^0.5.0:
json5@^0.5.0, json5@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
@ -1356,10 +1372,6 @@ loader-utils@^0.2.16:
json5 "^0.5.0"
object-assign "^4.0.1"
lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.0.9:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
lodash@^4.14.0, lodash@^4.2.0:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
@ -1410,7 +1422,13 @@ memory-fs@^0.4.0, memory-fs@~0.4.1:
errno "^0.1.3"
readable-stream "^2.0.1"
micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.8:
merge-source-map@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.3.tgz#da1415f2722a5119db07b14c4f973410863a2abf"
dependencies:
source-map "^0.5.3"
micromatch@^2.1.5, micromatch@^2.3.11:
version "2.3.11"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
dependencies:
@ -1477,10 +1495,6 @@ ms@0.7.1:
version "0.7.1"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
ms@0.7.2:
version "0.7.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
nan@^2.3.0:
version "2.5.1"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2"
@ -1527,11 +1541,12 @@ node-pre-gyp@^0.6.29:
tar "~2.2.1"
tar-pack "~3.3.0"
nodeunit@^0.10.2:
version "0.10.2"
resolved "https://registry.yarnpkg.com/nodeunit/-/nodeunit-0.10.2.tgz#884201312e473a976420cf345476cc8debc4749f"
nodeunit@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/nodeunit/-/nodeunit-0.11.0.tgz#5f57579e2a7f3286fd04937bfd5665070c4e015c"
dependencies:
tap "^7.0.0"
ejs "^2.5.2"
tap "^10.0.2"
nopt@~3.0.6:
version "3.0.6"
@ -1565,35 +1580,37 @@ number-is-nan@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
nyc@^7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/nyc/-/nyc-7.1.0.tgz#8e14971f3a15d1abbec7ac610ef54cb889e9ffb4"
nyc@^10.0.0:
version "10.2.0"
resolved "https://registry.yarnpkg.com/nyc/-/nyc-10.2.0.tgz#facd90240600c9aa4dd81ea99c2fb6a85c53de0c"
dependencies:
archy "^1.0.0"
arrify "^1.0.1"
caching-transform "^1.0.0"
convert-source-map "^1.3.0"
debug-log "^1.0.1"
default-require-extensions "^1.0.0"
find-cache-dir "^0.1.1"
find-up "^1.1.2"
foreground-child "^1.5.3"
glob "^7.0.3"
istanbul-lib-coverage "^1.0.0-alpha.4"
istanbul-lib-hook "^1.0.0-alpha.4"
istanbul-lib-instrument "^1.1.0-alpha.3"
istanbul-lib-report "^1.0.0-alpha.3"
istanbul-lib-source-maps "^1.0.0-alpha.10"
istanbul-reports "^1.0.0-alpha.8"
glob "^7.0.6"
istanbul-lib-coverage "^1.0.2"
istanbul-lib-hook "^1.0.5"
istanbul-lib-instrument "^1.7.0"
istanbul-lib-report "^1.0.0"
istanbul-lib-source-maps "^1.1.1"
istanbul-reports "^1.0.2"
md5-hex "^1.2.0"
merge-source-map "^1.0.2"
micromatch "^2.3.11"
mkdirp "^0.5.0"
pkg-up "^1.0.0"
resolve-from "^2.0.0"
rimraf "^2.5.4"
signal-exit "^3.0.0"
spawn-wrap "^1.2.4"
test-exclude "^1.1.0"
yargs "^4.8.1"
yargs-parser "^2.4.1"
signal-exit "^3.0.1"
spawn-wrap "1.2.4"
test-exclude "^4.0.0"
yargs "^7.0.2"
yargs-parser "^4.0.2"
oauth-sign@~0.8.1:
version "0.8.2"
@ -1655,6 +1672,14 @@ os-locale@^1.4.0:
dependencies:
lcid "^1.0.0"
own-or-env@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/own-or-env/-/own-or-env-1.0.0.tgz#9ef920fc81e2e63cf59d41101258368cf4fca4fb"
own-or@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/own-or/-/own-or-1.0.0.tgz#4e877fbeda9a2ec8000fbc0bcae39645ee8bf8dc"
pako@~0.2.0:
version "0.2.9"
resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
@ -1736,12 +1761,6 @@ pkg-dir@^1.0.0:
dependencies:
find-up "^1.0.0"
pkg-up@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26"
dependencies:
find-up "^1.0.0"
preserve@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
@ -1943,7 +1962,7 @@ right-align@^0.1.1:
dependencies:
align-text "^0.1.1"
rimraf@2, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.4, rimraf@~2.5.1, rimraf@~2.5.4:
rimraf@2, rimraf@^2.3.3, rimraf@^2.4.4, rimraf@^2.5.4, rimraf@~2.5.1, rimraf@~2.5.4:
version "2.5.4"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
dependencies:
@ -1979,7 +1998,7 @@ signal-exit@^2.0.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-2.1.2.tgz#375879b1f92ebc3b334480d038dc546a6d558564"
signal-exit@^3.0.0:
signal-exit@^3.0.0, signal-exit@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
@ -1993,9 +2012,15 @@ sntp@1.x.x:
dependencies:
hoek "2.x.x"
source-list-map@~0.1.7:
version "0.1.8"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
source-list-map@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.1.tgz#1a33ac210ca144d1e561f906ebccab5669ff4cb4"
source-map-support@^0.4.3:
version "0.4.14"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.14.tgz#9d4463772598b86271b4f523f6c1f4e02a7d6aef"
dependencies:
source-map "^0.5.6"
source-map@^0.4.4:
version "0.4.4"
@ -2003,15 +2028,15 @@ source-map@^0.4.4:
dependencies:
amdefine ">=0.0.4"
source-map@^0.5.0, source-map@^0.5.3, source-map@~0.5.1, source-map@~0.5.3:
source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3:
version "0.5.6"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
spawn-wrap@^1.2.4:
version "1.3.4"
resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.4.tgz#5d133070fef81cd26d8259acaa07fc1a86fd45dc"
spawn-wrap@1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.2.4.tgz#920eb211a769c093eebfbd5b0e7a5d2e68ab2e40"
dependencies:
foreground-child "^1.5.6"
foreground-child "^1.3.3"
mkdirp "^0.5.0"
os-homedir "^1.0.1"
rimraf "^2.3.3"
@ -2051,9 +2076,9 @@ sshpk@^1.7.0:
jsbn "~0.1.0"
tweetnacl "~0.14.0"
stack-utils@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-0.4.0.tgz#940cb82fccfa84e8ff2f3fdf293fe78016beccd1"
stack-utils@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.0.tgz#2392cd8ddbd222492ed6c047960f7414b46c0f83"
stream-browserify@^2.0.1:
version "2.0.1"
@ -2118,9 +2143,9 @@ taffydb@2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268"
tap-mocha-reporter@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/tap-mocha-reporter/-/tap-mocha-reporter-2.0.1.tgz#c70316173d6e3a16c58e1ba92d5d6cd8de58a12e"
tap-mocha-reporter@^3.0.1:
version "3.0.3"
resolved "https://registry.yarnpkg.com/tap-mocha-reporter/-/tap-mocha-reporter-3.0.3.tgz#e5917fad3d9a70957f9b7c736e793beb87d7daf1"
dependencies:
color-support "^1.1.0"
debug "^2.1.3"
@ -2128,43 +2153,51 @@ tap-mocha-reporter@^2.0.0:
escape-string-regexp "^1.0.3"
glob "^7.0.5"
js-yaml "^3.3.1"
tap-parser "^2.0.0"
tap-parser "^5.1.0"
unicode-length "^1.0.0"
optionalDependencies:
readable-stream "^2.1.5"
tap-parser@^2.0.0, tap-parser@^2.2.0:
version "2.2.3"
resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-2.2.3.tgz#ade6e96e37bfd38ce0f162da067f34034f068b01"
tap-parser@^5.1.0, tap-parser@^5.3.1:
version "5.3.3"
resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-5.3.3.tgz#53ec8a90f275d6fff43f169e56a679502a741185"
dependencies:
events-to-array "^1.0.1"
js-yaml "^3.2.7"
optionalDependencies:
readable-stream "^2"
tap@^7.0.0:
version "7.1.2"
resolved "https://registry.yarnpkg.com/tap/-/tap-7.1.2.tgz#dfac3ecf14ac8547bbad25bbd16cf2c3743f65cf"
tap@^10.0.2:
version "10.3.2"
resolved "https://registry.yarnpkg.com/tap/-/tap-10.3.2.tgz#77982f08368d8b1803a3b0ab5fc300e1817f31e7"
dependencies:
bind-obj-methods "^1.0.0"
bluebird "^3.3.1"
clean-yaml-object "^0.1.0"
color-support "^1.1.0"
coveralls "^2.11.2"
deeper "^2.1.0"
foreground-child "^1.3.3"
fs-exists-cached "^1.0.0"
function-loop "^1.0.1"
glob "^7.0.0"
isexe "^1.0.0"
js-yaml "^3.3.1"
nyc "^7.1.0"
nyc "^10.0.0"
only-shallow "^1.0.2"
opener "^1.4.1"
os-homedir "1.0.1"
own-or "^1.0.0"
own-or-env "^1.0.0"
readable-stream "^2.0.2"
signal-exit "^3.0.0"
stack-utils "^0.4.0"
tap-mocha-reporter "^2.0.0"
tap-parser "^2.2.0"
tmatch "^2.0.1"
source-map-support "^0.4.3"
stack-utils "^1.0.0"
tap-mocha-reporter "^3.0.1"
tap-parser "^5.3.1"
tmatch "^3.0.0"
trivial-deferred "^1.0.1"
yapool "^1.0.0"
tapable@^0.2.5, tapable@~0.2.5:
version "0.2.6"
@ -2191,13 +2224,13 @@ tar@~2.2.1:
fstream "^1.0.2"
inherits "2"
test-exclude@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-1.1.0.tgz#f5ddd718927b12fd02f270a0aa939ceb6eea4151"
test-exclude@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.0.3.tgz#86a13ce3effcc60e6c90403cf31a27a60ac6c4e7"
dependencies:
arrify "^1.0.1"
lodash.assign "^4.0.9"
micromatch "^2.3.8"
micromatch "^2.3.11"
object-assign "^4.1.0"
read-pkg-up "^1.0.1"
require-main-filename "^1.0.1"
@ -2207,9 +2240,9 @@ timers-browserify@^2.0.2:
dependencies:
setimmediate "^1.0.4"
tmatch@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/tmatch/-/tmatch-2.0.1.tgz#0c56246f33f30da1b8d3d72895abaf16660f38cf"
tmatch@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/tmatch/-/tmatch-3.0.0.tgz#7d2071dedbbc587f194acda3067bd0747b670991"
to-arraybuffer@^1.0.0:
version "1.0.1"
@ -2229,6 +2262,10 @@ trim-right@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
trivial-deferred@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/trivial-deferred/-/trivial-deferred-1.0.1.tgz#376d4d29d951d6368a6f7a0ae85c2f4d5e0658f3"
tty-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
@ -2241,14 +2278,14 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
uglify-js@^2.6, uglify-js@^2.7.5:
version "2.7.5"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8"
uglify-js@^2.6, uglify-js@^2.8.5:
version "2.8.22"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.22.tgz#d54934778a8da14903fa29a326fb24c0ab51a1a0"
dependencies:
async "~0.2.6"
source-map "~0.5.1"
uglify-to-browserify "~1.0.0"
yargs "~3.10.0"
optionalDependencies:
uglify-to-browserify "~1.0.0"
uglify-to-browserify@~1.0.0:
version "1.0.2"
@ -2296,11 +2333,11 @@ util@0.10.3, util@^0.10.3:
dependencies:
inherits "2.0.1"
uuid@^2.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
uuid-parse@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/uuid-parse/-/uuid-parse-1.0.0.tgz#f4657717624b0e4b88af36f98d89589a5bbee569"
uuid@^3.0.0:
uuid@^3.0.0, uuid@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
@ -2323,7 +2360,7 @@ vm-browserify@0.0.4:
dependencies:
indexof "0.0.1"
watchpack@^1.2.0:
watchpack@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87"
dependencies:
@ -2331,18 +2368,18 @@ watchpack@^1.2.0:
chokidar "^1.4.3"
graceful-fs "^4.1.2"
webpack-sources@^0.1.4:
version "0.1.5"
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.5.tgz#aa1f3abf0f0d74db7111c40e500b84f966640750"
webpack-sources@^0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb"
dependencies:
source-list-map "~0.1.7"
source-list-map "^1.1.1"
source-map "~0.5.3"
webpack@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475"
webpack@^2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.4.1.tgz#15a91dbe34966d8a4b99c7d656efd92a2e5a6f6a"
dependencies:
acorn "^4.0.4"
acorn "^5.0.0"
acorn-dynamic-import "^2.0.0"
ajv "^4.7.0"
ajv-keywords "^1.1.1"
@ -2350,6 +2387,7 @@ webpack@^2.2.1:
enhanced-resolve "^3.0.0"
interpret "^1.0.0"
json-loader "^0.5.4"
json5 "^0.5.1"
loader-runner "^2.3.0"
loader-utils "^0.2.16"
memory-fs "~0.4.1"
@ -2358,9 +2396,9 @@ webpack@^2.2.1:
source-map "^0.5.3"
supports-color "^3.1.0"
tapable "~0.2.5"
uglify-js "^2.7.5"
watchpack "^1.2.0"
webpack-sources "^0.1.4"
uglify-js "^2.8.5"
watchpack "^1.3.1"
webpack-sources "^0.2.3"
yargs "^6.0.0"
which-module@^1.0.0:
@ -2387,18 +2425,10 @@ window-size@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876"
window-size@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075"
wordwrap@0.0.2:
wordwrap@0.0.2, wordwrap@~0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
wordwrap@~0.0.2:
version "0.0.3"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
wrap-ansi@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
@ -2430,19 +2460,22 @@ yallist@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4"
yargs-parser@^2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4"
dependencies:
camelcase "^3.0.0"
lodash.assign "^4.0.6"
yapool@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/yapool/-/yapool-1.0.0.tgz#f693f29a315b50d9a9da2646a7a6645c96985b6a"
yargs-parser@^4.2.0:
yargs-parser@^4.0.2, yargs-parser@^4.2.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
dependencies:
camelcase "^3.0.0"
yargs-parser@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
dependencies:
camelcase "^3.0.0"
yargs@^3.10.0:
version "3.32.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"
@ -2455,25 +2488,6 @@ yargs@^3.10.0:
window-size "^0.1.4"
y18n "^3.2.0"
yargs@^4.8.1:
version "4.8.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0"
dependencies:
cliui "^3.2.0"
decamelize "^1.1.1"
get-caller-file "^1.0.1"
lodash.assign "^4.0.3"
os-locale "^1.4.0"
read-pkg-up "^1.0.1"
require-directory "^2.1.1"
require-main-filename "^1.0.1"
set-blocking "^2.0.0"
string-width "^1.0.1"
which-module "^1.0.0"
window-size "^0.2.0"
y18n "^3.2.1"
yargs-parser "^2.4.1"
yargs@^6.0.0:
version "6.6.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
@ -2492,6 +2506,24 @@ yargs@^6.0.0:
y18n "^3.2.1"
yargs-parser "^4.2.0"
yargs@^7.0.2:
version "7.1.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
dependencies:
camelcase "^3.0.0"
cliui "^3.2.0"
decamelize "^1.1.1"
get-caller-file "^1.0.1"
os-locale "^1.4.0"
read-pkg-up "^1.0.1"
require-directory "^2.1.1"
require-main-filename "^1.0.1"
set-blocking "^2.0.0"
string-width "^1.0.2"
which-module "^1.0.0"
y18n "^3.2.1"
yargs-parser "^5.0.0"
yargs@~3.10.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"