From f7c13634cc4e699b39232db65a5cb894f90da132 Mon Sep 17 00:00:00 2001 From: Nicolas Dextraze Date: Sun, 16 Apr 2017 12:51:17 -0700 Subject: [PATCH] Fixed failing samples Updated uuid/webpack packages Added froze on objects publicly exposed Removed remaining while loops for actions/events processing --- package.json | 7 +- samples/store-event.js | 2 +- samples/subscribe-all-events.js | 2 +- samples/subscribe-catchup-all-events.js | 2 +- src/client.js | 2 + .../appendToStreamOperation.js | 4 +- ...onnectToPersistentSubscriptionOperation.js | 6 +- src/clientOperations/subscriptionOperation.js | 25 +- .../transactionalWriteOperation.js | 4 +- src/common/systemMetadata.js | 1 + src/errors/accessDeniedError.js | 2 + src/errors/streamDeletedError.js | 2 + src/errors/wrongExpectedVersionError.js | 2 + src/eventData.js | 9 +- src/eventStoreCatchUpSubscription.js | 37 +- src/eventStorePersistentSubscriptionBase.js | 71 ++-- src/gossipSeed.js | 13 +- src/results.js | 203 +++------- src/sliceReadStatus.js | 1 + src/systemConsumerStrategies.js | 1 + src/systemData/tcpPackage.js | 8 +- src/systemData/userCredentials.js | 8 +- yarn.lock | 362 ++++++++++-------- 23 files changed, 363 insertions(+), 411 deletions(-) diff --git a/package.json b/package.json index 4b8c4ce..3d50095 100644 --- a/package.json +++ b/package.json @@ -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" } } diff --git a/samples/store-event.js b/samples/store-event.js index f593b12..ce593b9 100644 --- a/samples/store-event.js +++ b/samples/store-event.js @@ -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); diff --git a/samples/subscribe-all-events.js b/samples/subscribe-all-events.js index a45ba21..530b188 100644 --- a/samples/subscribe-all-events.js +++ b/samples/subscribe-all-events.js @@ -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); diff --git a/samples/subscribe-catchup-all-events.js b/samples/subscribe-catchup-all-events.js index 2308da1..07aeb0a 100644 --- a/samples/subscribe-catchup-all-events.js +++ b/samples/subscribe-catchup-all-events.js @@ -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); diff --git a/src/client.js b/src/client.js index d78825c..3044d83 100644 --- a/src/client.js +++ b/src/client.js @@ -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 diff --git a/src/clientOperations/appendToStreamOperation.js b/src/clientOperations/appendToStreamOperation.js index bfc2777..a95be95 100644 --- a/src/clientOperations/appendToStreamOperation.js +++ b/src/clientOperations/appendToStreamOperation.js @@ -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, diff --git a/src/clientOperations/connectToPersistentSubscriptionOperation.js b/src/clientOperations/connectToPersistentSubscriptionOperation.js index 9cc2752..b0e5cf3 100644 --- a/src/clientOperations/connectToPersistentSubscriptionOperation.js +++ b/src/clientOperations/connectToPersistentSubscriptionOperation.js @@ -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); diff --git a/src/clientOperations/subscriptionOperation.js b/src/clientOperations/subscriptionOperation.js index 9bc47b3..6a6da8c 100644 --- a/src/clientOperations/subscriptionOperation.js +++ b/src/clientOperations/subscriptionOperation.js @@ -244,21 +244,20 @@ SubscriptionOperation.prototype._executeAction = function(action) { }; SubscriptionOperation.prototype._executeActions = function() { - //TODO: possible blocking loop for node.js var action = this._actionQueue.shift(); - while (action) - { - try - { - action(); - } - catch (err) - { - this._log.error(err, "Exception during executing user callback: %s.", err.message); - } - action = this._actionQueue.shift(); + if (!action) { + this._actionExecuting = false; + return; } - this._actionExecuting = false; + try + { + action(); + } + catch (err) + { + this._log.error(err, "Exception during executing user callback: %s.", err.message); + } + setImmediate(this._executeActions.bind(this)); }; SubscriptionOperation.prototype.toString = function() { diff --git a/src/clientOperations/transactionalWriteOperation.js b/src/clientOperations/transactionalWriteOperation.js index dcb4761..625d726 100644 --- a/src/clientOperations/transactionalWriteOperation.js +++ b/src/clientOperations/transactionalWriteOperation.js @@ -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, diff --git a/src/common/systemMetadata.js b/src/common/systemMetadata.js index 522b12d..f5d0f44 100644 --- a/src/common/systemMetadata.js +++ b/src/common/systemMetadata.js @@ -12,5 +12,6 @@ const SystemMetadata = { userStreamAcl: '$userStreamAcl', systemStreamAcl: '$systemStreamAcl' }; +Object.freeze(SystemMetadata); module.exports = SystemMetadata; \ No newline at end of file diff --git a/src/errors/accessDeniedError.js b/src/errors/accessDeniedError.js index f66eaa8..67621a3 100644 --- a/src/errors/accessDeniedError.js +++ b/src/errors/accessDeniedError.js @@ -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."); diff --git a/src/errors/streamDeletedError.js b/src/errors/streamDeletedError.js index fc476cc..44fa5e0 100644 --- a/src/errors/streamDeletedError.js +++ b/src/errors/streamDeletedError.js @@ -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."); diff --git a/src/errors/wrongExpectedVersionError.js b/src/errors/wrongExpectedVersionError.js index 96e0bd4..85ebde6 100644 --- a/src/errors/wrongExpectedVersionError.js +++ b/src/errors/wrongExpectedVersionError.js @@ -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."); diff --git a/src/eventData.js b/src/eventData.js index 35d7aa5..86e9589 100644 --- a/src/eventData.js +++ b/src/eventData.js @@ -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 0 && Interlocked.CompareExchange(ref _isProcessing, 1, 0) === 0); + 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, ev); + if(this._autoAck) + this._subscription.notifyEventsProcessed([ev.originalEvent.eventId]); + if (this._verbose) + this._log.debug("Persistent Subscription to %s: processed event (%s, %d, %s @ %d).", + 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; + } + setImmediate(this._processQueue.bind(this)); }; EventStorePersistentSubscriptionBase.prototype._dropSubscription = function(reason, error) { diff --git a/src/gossipSeed.js b/src/gossipSeed.js index e1c9d8d..2e1b1e1 100644 --- a/src/gossipSeed.js +++ b/src/gossipSeed.js @@ -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); }; diff --git a/src/results.js b/src/results.js index bb63c8b..bce5fa9 100644 --- a/src/results.js +++ b/src/results.js @@ -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 diff --git a/src/sliceReadStatus.js b/src/sliceReadStatus.js index dcadbb0..376ae72 100644 --- a/src/sliceReadStatus.js +++ b/src/sliceReadStatus.js @@ -3,5 +3,6 @@ const SliceReadStatus = { StreamNotFound: 'streamNotFound', StreamDeleted: 'streamDeleted' }; +Object.freeze(SliceReadStatus); module.exports = SliceReadStatus; diff --git a/src/systemConsumerStrategies.js b/src/systemConsumerStrategies.js index 044a5ef..268f460 100644 --- a/src/systemConsumerStrategies.js +++ b/src/systemConsumerStrategies.js @@ -3,5 +3,6 @@ const SystemConsumerStrategies = { RoundRobin: 'RoundRobin', Pinned: 'Pinned' }; +Object.freeze(SystemConsumerStrategies); module.exports = SystemConsumerStrategies; diff --git a/src/systemData/tcpPackage.js b/src/systemData/tcpPackage.js index c168450..613d8bf 100644 --- a/src/systemData/tcpPackage.js +++ b/src/systemData/tcpPackage.js @@ -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; diff --git a/src/systemData/userCredentials.js b/src/systemData/userCredentials.js index 0e6a6bd..d4f07ff 100644 --- a/src/systemData/userCredentials.js +++ b/src/systemData/userCredentials.js @@ -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; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index b732620..3f1ea09 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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"