mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-20 20:25:48 +00:00
[FIX] fix eslint errors
This commit is contained in:
@@ -8,6 +8,8 @@
|
|||||||
// - trade
|
// - trade
|
||||||
// - transaction
|
// - transaction
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
var _ = require('lodash');
|
var _ = require('lodash');
|
||||||
var util = require('util');
|
var util = require('util');
|
||||||
var extend = require('extend');
|
var extend = require('extend');
|
||||||
@@ -19,6 +21,10 @@ var UInt160 = require('./uint160').UInt160;
|
|||||||
var Currency = require('./currency').Currency;
|
var Currency = require('./currency').Currency;
|
||||||
var log = require('./log').internal.sub('orderbook');
|
var log = require('./log').internal.sub('orderbook');
|
||||||
|
|
||||||
|
function assertValidNumber(number, message) {
|
||||||
|
assert(!_.isNull(number) && !isNaN(number), message);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructor OrderBook
|
* @constructor OrderBook
|
||||||
* @param {Remote} remote
|
* @param {Remote} remote
|
||||||
@@ -73,11 +79,11 @@ function OrderBook(remote, getsC, getsI, paysC, paysI, key) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
function updateFundedAmountsWrapper (transaction) {
|
function updateFundedAmountsWrapper (transaction) {
|
||||||
self.updateFundedAmounts(transaction);
|
self.updateFundedAmounts(transaction);
|
||||||
};
|
}
|
||||||
|
|
||||||
this.on('newListener', function(event) {
|
this.on('newListener', function(event) {
|
||||||
listenersModified('add', event);
|
listenersModified('add', event);
|
||||||
@@ -107,7 +113,7 @@ function OrderBook(remote, getsC, getsI, paysC, paysI, key) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
};
|
}
|
||||||
|
|
||||||
util.inherits(OrderBook, EventEmitter);
|
util.inherits(OrderBook, EventEmitter);
|
||||||
|
|
||||||
@@ -136,7 +142,7 @@ OrderBook.offerRewrite = function(offer) {
|
|||||||
var result = {};
|
var result = {};
|
||||||
var keys = Object.keys(offer);
|
var keys = Object.keys(offer);
|
||||||
|
|
||||||
for (var i=0, l=keys.length; i<l; i++) {
|
for (var i = 0, l = keys.length; i < l; i++) {
|
||||||
var key = keys[i];
|
var key = keys[i];
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 'PreviousTxnID':
|
case 'PreviousTxnID':
|
||||||
@@ -181,9 +187,7 @@ OrderBook.prototype.subscribe = function() {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
async.series(steps, function(err, res) {
|
async.series(steps);
|
||||||
//XXX What now?
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -220,7 +224,7 @@ OrderBook.prototype.requestOffers = function(callback) {
|
|||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
if (typeof callback !== 'function') {
|
if (typeof callback !== 'function') {
|
||||||
callback = function(){};
|
callback = function() {};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this._shouldSubscribe) {
|
if (!this._shouldSubscribe) {
|
||||||
@@ -246,7 +250,7 @@ OrderBook.prototype.requestOffers = function(callback) {
|
|||||||
self.emit('model', self._offers);
|
self.emit('model', self._offers);
|
||||||
|
|
||||||
callback(null, self._offers);
|
callback(null, self._offers);
|
||||||
};
|
}
|
||||||
|
|
||||||
function handleError(err) {
|
function handleError(err) {
|
||||||
// XXX What now?
|
// XXX What now?
|
||||||
@@ -255,7 +259,7 @@ OrderBook.prototype.requestOffers = function(callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
callback(err);
|
callback(err);
|
||||||
};
|
}
|
||||||
|
|
||||||
var request = this._remote.requestBookOffers(this.toJSON());
|
var request = this._remote.requestBookOffers(this.toJSON());
|
||||||
request.once('success', handleOffers);
|
request.once('success', handleOffers);
|
||||||
@@ -275,7 +279,7 @@ OrderBook.prototype.subscribeTransactions = function(callback) {
|
|||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
if (typeof callback !== 'function') {
|
if (typeof callback !== 'function') {
|
||||||
callback = function(){};
|
callback = function() {};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this._shouldSubscribe) {
|
if (!this._shouldSubscribe) {
|
||||||
@@ -294,7 +298,7 @@ OrderBook.prototype.subscribeTransactions = function(callback) {
|
|||||||
self._subscribed = true;
|
self._subscribed = true;
|
||||||
|
|
||||||
callback(null, res);
|
callback(null, res);
|
||||||
};
|
}
|
||||||
|
|
||||||
function handleError(err) {
|
function handleError(err) {
|
||||||
if (self._remote.trace) {
|
if (self._remote.trace) {
|
||||||
@@ -302,7 +306,7 @@ OrderBook.prototype.subscribeTransactions = function(callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
callback(err);
|
callback(err);
|
||||||
};
|
}
|
||||||
|
|
||||||
var request = this._remote.requestSubscribe();
|
var request = this._remote.requestSubscribe();
|
||||||
request.addStream('transactions');
|
request.addStream('transactions');
|
||||||
@@ -332,7 +336,7 @@ OrderBook.prototype.resetCache = function() {
|
|||||||
|
|
||||||
OrderBook.prototype.hasOwnerFunds = function(account) {
|
OrderBook.prototype.hasOwnerFunds = function(account) {
|
||||||
assert(UInt160.is_valid(account), 'Account is invalid');
|
assert(UInt160.is_valid(account), 'Account is invalid');
|
||||||
return this._ownerFunds[account] !== void(0);
|
return this._ownerFunds[account] !== undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -366,7 +370,9 @@ OrderBook.prototype.getOwnerFunds = function(account) {
|
|||||||
if (this._currencyGets.is_native()) {
|
if (this._currencyGets.is_native()) {
|
||||||
amount = Amount.from_json(this._ownerFunds[account]);
|
amount = Amount.from_json(this._ownerFunds[account]);
|
||||||
} else {
|
} else {
|
||||||
amount = Amount.from_json(this._ownerFunds[account] + OrderBook.IOU_SUFFIX);
|
amount = Amount.from_json(
|
||||||
|
this._ownerFunds[account] + OrderBook.IOU_SUFFIX
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -393,7 +399,7 @@ OrderBook.prototype.getUnadjustedOwnerFunds = function(account) {
|
|||||||
|
|
||||||
OrderBook.prototype.deleteOwnerFunds = function(account) {
|
OrderBook.prototype.deleteOwnerFunds = function(account) {
|
||||||
assert(UInt160.is_valid(account), 'Account is invalid');
|
assert(UInt160.is_valid(account), 'Account is invalid');
|
||||||
this._ownerFunds[account] = void(0);
|
this._ownerFunds[account] = undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -446,23 +452,27 @@ OrderBook.prototype.decrementOwnerOfferCount = function(account) {
|
|||||||
* Add amount sum being offered for owner
|
* Add amount sum being offered for owner
|
||||||
*
|
*
|
||||||
* @param {String} account - owner's account address
|
* @param {String} account - owner's account address
|
||||||
* @param {Object|String} amount - offer amount as native string or IOU currency format
|
* @param {Object|String} amount - offer amount as native string or IOU
|
||||||
|
* currency format
|
||||||
* @return {Amount}
|
* @return {Amount}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
OrderBook.prototype.addOwnerOfferTotal = function(account, amount) {
|
OrderBook.prototype.addOwnerOfferTotal = function(account, amount) {
|
||||||
assert(UInt160.is_valid(account), 'Account is invalid');
|
assert(UInt160.is_valid(account), 'Account is invalid');
|
||||||
var previousAmount = this.getOwnerOfferTotal(account);
|
var previousAmount = this.getOwnerOfferTotal(account);
|
||||||
this._ownerOffersTotal[account] = previousAmount.add(Amount.from_json(amount));
|
var currentAmount = previousAmount.add(Amount.from_json(amount));
|
||||||
|
|
||||||
return this._ownerOffersTotal[account];
|
this._ownerOffersTotal[account] = currentAmount;
|
||||||
|
|
||||||
|
return currentAmount;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Subtract amount sum being offered for owner
|
* Subtract amount sum being offered for owner
|
||||||
*
|
*
|
||||||
* @param {String} account - owner's account address
|
* @param {String} account - owner's account address
|
||||||
* @param {Object|String} amount - offer amount as native string or IOU currency format
|
* @param {Object|String} amount - offer amount as native string or IOU
|
||||||
|
* currency format
|
||||||
* @return {Amount}
|
* @return {Amount}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -529,13 +539,14 @@ OrderBook.prototype.resetOwnerOfferTotal = function(account) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
OrderBook.prototype.getOfferTakerGetsFunded = function(offer) {
|
OrderBook.prototype.getOfferTakerGetsFunded = function(offer) {
|
||||||
assert(!_.isNull(offer.taker_gets_funded) && !_.isNaN(offer.taker_gets_funded));
|
assertValidNumber(offer.taker_gets_funded, 'Taker gets funded is invalid');
|
||||||
|
|
||||||
return Amount.from_json(offer.taker_gets_funded + OrderBook.IOU_SUFFIX);
|
return Amount.from_json(offer.taker_gets_funded + OrderBook.IOU_SUFFIX);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compute adjusted balance that would be left after issuer's transfer fee is deducted
|
* Compute adjusted balance that would be left after issuer's transfer fee is
|
||||||
|
* deducted
|
||||||
*
|
*
|
||||||
* @param {String} balance
|
* @param {String} balance
|
||||||
* @return {String}
|
* @return {String}
|
||||||
@@ -543,7 +554,7 @@ OrderBook.prototype.getOfferTakerGetsFunded = function(offer) {
|
|||||||
|
|
||||||
OrderBook.prototype.applyTransferRate = function(balance) {
|
OrderBook.prototype.applyTransferRate = function(balance) {
|
||||||
assert(!isNaN(balance), 'Balance is invalid');
|
assert(!isNaN(balance), 'Balance is invalid');
|
||||||
assert(!_.isNull(this._issuerTransferRate) && !isNaN(this._issuerTransferRate), 'Transfer rate is invalid');
|
assertValidNumber(this._issuerTransferRate, 'Transfer rate is invalid');
|
||||||
|
|
||||||
var adjustedBalance = Amount.from_json(balance + OrderBook.IOU_SUFFIX)
|
var adjustedBalance = Amount.from_json(balance + OrderBook.IOU_SUFFIX)
|
||||||
.divide(this._issuerTransferRate)
|
.divide(this._issuerTransferRate)
|
||||||
@@ -577,24 +588,31 @@ OrderBook.prototype.requestTransferRate = function(callback) {
|
|||||||
return callback(null, this._issuerTransferRate);
|
return callback(null, this._issuerTransferRate);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._remote.requestAccountInfo({ account: this._issuerGets }, function(err, info) {
|
function handleAccountInfo(err, info) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
// When transfer rate is not explicitly set on account, it implies the default transfer rate
|
// When transfer rate is not explicitly set on account, it implies the
|
||||||
self._issuerTransferRate = info.account_data.TransferRate || OrderBook.DEFAULT_TRANSFER_RATE;
|
// default transfer rate
|
||||||
|
self._issuerTransferRate = info.account_data.TransferRate ||
|
||||||
|
OrderBook.DEFAULT_TRANSFER_RATE;
|
||||||
|
|
||||||
callback(null, self._issuerTransferRate);
|
callback(null, self._issuerTransferRate);
|
||||||
});
|
}
|
||||||
|
|
||||||
|
this._remote.requestAccountInfo(
|
||||||
|
{account: this._issuerGets},
|
||||||
|
handleAccountInfo
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set funded amount on offer with its owner's cached funds
|
* Set funded amount on offer with its owner's cached funds
|
||||||
*
|
*
|
||||||
* Offers have is_fully_funded, indicating whether these funds are sufficient for the offer placed.
|
* is_fully_funded indicates if these funds are sufficient for the offer placed.
|
||||||
* Offers have taker_gets_funded, reflecting the amount this account can afford to offer.
|
* taker_gets_funded indicates the amount this account can afford to offer.
|
||||||
* Offers have taker_pays_funded, reflecting an adjusted TakerPays in the case of a partially funded order.
|
* taker_pays_funded indicates adjusted TakerPays for partially funded offer.
|
||||||
*
|
*
|
||||||
* @param {Object} offer
|
* @param {Object} offer
|
||||||
* @return offer
|
* @return offer
|
||||||
@@ -617,9 +635,13 @@ OrderBook.prototype.setOfferFundedAmount = function(offer) {
|
|||||||
} else if (previousOfferSum.compareTo(fundedAmount) < 0) {
|
} else if (previousOfferSum.compareTo(fundedAmount) < 0) {
|
||||||
offer.taker_gets_funded = fundedAmount.subtract(previousOfferSum).to_text();
|
offer.taker_gets_funded = fundedAmount.subtract(previousOfferSum).to_text();
|
||||||
|
|
||||||
var takerPaysFunded = this.getOfferQuality(offer).multiply(this.getOfferTakerGetsFunded(offer));
|
var takerPaysFunded = this.getOfferQuality(offer).multiply(
|
||||||
|
this.getOfferTakerGetsFunded(offer)
|
||||||
|
);
|
||||||
|
|
||||||
offer.taker_pays_funded = this._currencyPays.is_native() ? String(parseInt(takerPaysFunded.to_json().value, 10)) : takerPaysFunded.to_json().value;
|
offer.taker_pays_funded = this._currencyPays.is_native()
|
||||||
|
? String(parseInt(takerPaysFunded.to_json().value, 10))
|
||||||
|
: takerPaysFunded.to_json().value;
|
||||||
} else {
|
} else {
|
||||||
offer.taker_gets_funded = '0';
|
offer.taker_gets_funded = '0';
|
||||||
offer.taker_pays_funded = '0';
|
offer.taker_pays_funded = '0';
|
||||||
@@ -637,8 +659,8 @@ OrderBook.prototype.setOfferFundedAmount = function(offer) {
|
|||||||
|
|
||||||
OrderBook.prototype.parseAccountBalanceFromNode = function(node) {
|
OrderBook.prototype.parseAccountBalanceFromNode = function(node) {
|
||||||
var result = {
|
var result = {
|
||||||
account: void(0),
|
account: undefined,
|
||||||
balance: void(0)
|
balance: undefined
|
||||||
};
|
};
|
||||||
|
|
||||||
switch (node.entryType) {
|
switch (node.entryType) {
|
||||||
@@ -757,7 +779,9 @@ OrderBook.prototype.updateOwnerOffersFundedAmount = function(account) {
|
|||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
if (this._remote.trace) {
|
if (this._remote.trace) {
|
||||||
log.info('updating offer funds', this._key, account, this.getOwnerFunds(account).to_text());
|
var ownerFunds = this.getOwnerFunds(account).to_text();
|
||||||
|
|
||||||
|
log.info('updating offer funds', this._key, account, ownerFunds);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.resetOwnerOfferTotal(account);
|
this.resetOwnerOfferTotal(account);
|
||||||
@@ -772,18 +796,24 @@ OrderBook.prototype.updateOwnerOffersFundedAmount = function(account) {
|
|||||||
var previousFundedGets;
|
var previousFundedGets;
|
||||||
|
|
||||||
if (_.isString(offer.taker_gets_funded)) {
|
if (_.isString(offer.taker_gets_funded)) {
|
||||||
// Offer is not new, so we should consider it for offer_changed and offer_funds_changed events
|
// Offer is not new, so we should consider it for offer_changed and
|
||||||
|
// offer_funds_changed events
|
||||||
previousFundedGets = self.getOfferTakerGetsFunded(offer);
|
previousFundedGets = self.getOfferTakerGetsFunded(offer);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.setOfferFundedAmount(offer);
|
self.setOfferFundedAmount(offer);
|
||||||
self.addOwnerOfferTotal(offer.Account, offer.TakerGets);
|
self.addOwnerOfferTotal(offer.Account, offer.TakerGets);
|
||||||
|
|
||||||
var areFundsChanged = previousFundedGets && !self.getOfferTakerGetsFunded(offer).equals(previousFundedGets);
|
var areFundsChanged = previousFundedGets
|
||||||
|
&& !self.getOfferTakerGetsFunded(offer).equals(previousFundedGets);
|
||||||
|
|
||||||
if (areFundsChanged) {
|
if (areFundsChanged) {
|
||||||
self.emit('offer_changed', previousOffer, offer);
|
self.emit('offer_changed', previousOffer, offer);
|
||||||
self.emit('offer_funds_changed', offer, previousOffer.taker_gets_funded, offer.taker_gets_funded);
|
self.emit('offer_funds_changed',
|
||||||
|
offer,
|
||||||
|
previousOffer.taker_gets_funded,
|
||||||
|
offer.taker_gets_funded
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -827,9 +857,10 @@ OrderBook.prototype.notify = function(transaction) {
|
|||||||
: ('/' + this._currencyPays.to_human() + '/' + this._issuerPays))
|
: ('/' + this._currencyPays.to_human() + '/' + this._issuerPays))
|
||||||
);
|
);
|
||||||
|
|
||||||
function handleNode(node) {
|
|
||||||
var isOfferCancel = transaction.transaction.TransactionType === 'OfferCancel';
|
var isOfferCancel = transaction.transaction.TransactionType === 'OfferCancel';
|
||||||
|
var transactionOwnerFunds = transaction.transaction.owner_funds;
|
||||||
|
|
||||||
|
function handleNode(node) {
|
||||||
switch (node.nodeType) {
|
switch (node.nodeType) {
|
||||||
case 'DeletedNode':
|
case 'DeletedNode':
|
||||||
self.deleteOffer(node, isOfferCancel);
|
self.deleteOffer(node, isOfferCancel);
|
||||||
@@ -844,16 +875,21 @@ OrderBook.prototype.notify = function(transaction) {
|
|||||||
case 'ModifiedNode':
|
case 'ModifiedNode':
|
||||||
self.modifyOffer(node);
|
self.modifyOffer(node);
|
||||||
|
|
||||||
takerGetsTotal = takerGetsTotal.add(node.fieldsPrev.TakerGets).subtract(node.fieldsFinal.TakerGets);
|
takerGetsTotal = takerGetsTotal
|
||||||
takerPaysTotal = takerPaysTotal.add(node.fieldsPrev.TakerPays).subtract(node.fieldsFinal.TakerPays);
|
.add(node.fieldsPrev.TakerGets)
|
||||||
|
.subtract(node.fieldsFinal.TakerGets);
|
||||||
|
|
||||||
|
takerPaysTotal = takerPaysTotal
|
||||||
|
.add(node.fieldsPrev.TakerPays)
|
||||||
|
.subtract(node.fieldsFinal.TakerPays);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'CreatedNode':
|
case 'CreatedNode':
|
||||||
self.setOwnerFunds(node.fields.Account, transaction.transaction.owner_funds);
|
self.setOwnerFunds(node.fields.Account, transactionOwnerFunds);
|
||||||
self.insertOffer(node);
|
self.insertOffer(node);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
_.each(affectedNodes, handleNode);
|
_.each(affectedNodes, handleNode);
|
||||||
|
|
||||||
@@ -867,8 +903,8 @@ OrderBook.prototype.notify = function(transaction) {
|
|||||||
/**
|
/**
|
||||||
* Insert an offer into the orderbook
|
* Insert an offer into the orderbook
|
||||||
*
|
*
|
||||||
* NOTE: We *MUST* update offers' funded amounts when a new offer is placed because funds go
|
* NOTE: We *MUST* update offers' funded amounts when a new offer is placed
|
||||||
* to the highest quality offers first.
|
* because funds go to the highest quality offers first.
|
||||||
*
|
*
|
||||||
* @param {Object} node - Offer node
|
* @param {Object} node - Offer node
|
||||||
*/
|
*/
|
||||||
@@ -891,7 +927,7 @@ OrderBook.prototype.insertOffer = function(node) {
|
|||||||
var quality = this.getOfferQuality(offer);
|
var quality = this.getOfferQuality(offer);
|
||||||
var originalLength = this._offers.length;
|
var originalLength = this._offers.length;
|
||||||
|
|
||||||
for (var i=0; i<originalLength; i++) {
|
for (var i = 0; i < originalLength; i++) {
|
||||||
var existingOfferQuality = this.getOfferQuality(this._offers[i]);
|
var existingOfferQuality = this.getOfferQuality(this._offers[i]);
|
||||||
|
|
||||||
if (quality.compareTo(existingOfferQuality) <= 0) {
|
if (quality.compareTo(existingOfferQuality) <= 0) {
|
||||||
@@ -948,7 +984,7 @@ OrderBook.prototype.getOfferQuality = function(offer) {
|
|||||||
OrderBook.prototype.normalizeAmount = function(currency, amountObj) {
|
OrderBook.prototype.normalizeAmount = function(currency, amountObj) {
|
||||||
var value = currency.is_native()
|
var value = currency.is_native()
|
||||||
? amountObj
|
? amountObj
|
||||||
: amountObj.value
|
: amountObj.value;
|
||||||
|
|
||||||
return Amount.from_json(value + OrderBook.IOU_SUFFIX);
|
return Amount.from_json(value + OrderBook.IOU_SUFFIX);
|
||||||
};
|
};
|
||||||
@@ -964,7 +1000,7 @@ OrderBook.prototype.modifyOffer = function(node) {
|
|||||||
log.info('modifying offer', this._key, node.fields);
|
log.info('modifying offer', this._key, node.fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i=0; i<this._offers.length; i++) {
|
for (var i = 0; i < this._offers.length; i++) {
|
||||||
var offer = this._offers[i];
|
var offer = this._offers[i];
|
||||||
|
|
||||||
if (offer.index === node.ledgerIndex) {
|
if (offer.index === node.ledgerIndex) {
|
||||||
@@ -987,7 +1023,7 @@ OrderBook.prototype.modifyOffer = function(node) {
|
|||||||
* other existing offers in the book
|
* other existing offers in the book
|
||||||
*
|
*
|
||||||
* @param {Object} node - Offer node
|
* @param {Object} node - Offer node
|
||||||
* @param {Boolean} isOfferCancel - whether node came from an OfferCancel transaction
|
* @param {Boolean} isOfferCancel - whether node came from an OfferCancel
|
||||||
*/
|
*/
|
||||||
|
|
||||||
OrderBook.prototype.deleteOffer = function(node, isOfferCancel) {
|
OrderBook.prototype.deleteOffer = function(node, isOfferCancel) {
|
||||||
@@ -995,7 +1031,7 @@ OrderBook.prototype.deleteOffer = function(node, isOfferCancel) {
|
|||||||
log.info('deleting offer', this._key, node.fields);
|
log.info('deleting offer', this._key, node.fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i=0; i<this._offers.length; i++) {
|
for (var i = 0; i < this._offers.length; i++) {
|
||||||
var offer = this._offers[i];
|
var offer = this._offers[i];
|
||||||
|
|
||||||
if (offer.index === node.ledgerIndex) {
|
if (offer.index === node.ledgerIndex) {
|
||||||
@@ -1034,7 +1070,8 @@ OrderBook.prototype.setOffers = function(offers) {
|
|||||||
var offer = OrderBook.offerRewrite(rawOffer);
|
var offer = OrderBook.offerRewrite(rawOffer);
|
||||||
|
|
||||||
if (offer.hasOwnProperty('owner_funds')) {
|
if (offer.hasOwnProperty('owner_funds')) {
|
||||||
// The first offer of each owner from book_offers contains owner balance of offer's output
|
// The first offer of each owner from book_offers contains owner balance
|
||||||
|
// of offer's output
|
||||||
self.setOwnerFunds(offer.Account, offer.owner_funds);
|
self.setOwnerFunds(offer.Account, offer.owner_funds);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1065,8 +1102,6 @@ OrderBook.prototype.offers =
|
|||||||
OrderBook.prototype.getOffers = function(callback) {
|
OrderBook.prototype.getOffers = function(callback) {
|
||||||
assert.strictEqual(typeof callback, 'function', 'Callback missing');
|
assert.strictEqual(typeof callback, 'function', 'Callback missing');
|
||||||
|
|
||||||
var self = this;
|
|
||||||
|
|
||||||
if (this._synchronized) {
|
if (this._synchronized) {
|
||||||
callback(null, this._offers);
|
callback(null, this._offers);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
20
test/fixtures/orderbook.js
vendored
20
test/fixtures/orderbook.js
vendored
@@ -1,3 +1,7 @@
|
|||||||
|
/*eslint-disable max-len */
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
var _ = require('lodash');
|
var _ = require('lodash');
|
||||||
var addresses = require('./addresses');
|
var addresses = require('./addresses');
|
||||||
var Meta = require('ripple-lib').Meta;
|
var Meta = require('ripple-lib').Meta;
|
||||||
@@ -93,7 +97,7 @@ module.exports.fiatOffers = function (options) {
|
|||||||
index: module.exports.OTHER_LEDGER_INDEX,
|
index: module.exports.OTHER_LEDGER_INDEX,
|
||||||
owner_funds: options.other_account_funds,
|
owner_funds: options.other_account_funds,
|
||||||
quality: '195796912.5171664'
|
quality: '195796912.5171664'
|
||||||
},
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -161,7 +165,7 @@ module.exports.NATIVE_OFFERS = [
|
|||||||
index: 'D3338DA77BA23122FB5647B74B53636AB54BE246D4B21707C9D6887DEB334252',
|
index: 'D3338DA77BA23122FB5647B74B53636AB54BE246D4B21707C9D6887DEB334252',
|
||||||
owner_funds: '235.0194163432668',
|
owner_funds: '235.0194163432668',
|
||||||
quality: '195796912.5171664'
|
quality: '195796912.5171664'
|
||||||
},
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
module.exports.REQUEST_OFFERS = [
|
module.exports.REQUEST_OFFERS = [
|
||||||
@@ -638,7 +642,7 @@ module.exports.transactionWithInvalidAccountRoot = function(options) {
|
|||||||
options = options || {};
|
options = options || {};
|
||||||
_.defaults(options, {
|
_.defaults(options, {
|
||||||
account: addresses.ACCOUNT,
|
account: addresses.ACCOUNT,
|
||||||
balance: module.exports.NATIVE_BALANCE,
|
balance: module.exports.NATIVE_BALANCE
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -700,7 +704,7 @@ module.exports.transactionWithCreatedOffer = function(options) {
|
|||||||
TransactionType: 'OfferCreate',
|
TransactionType: 'OfferCreate',
|
||||||
owner_funds: '2010.027702881682'
|
owner_funds: '2010.027702881682'
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports.transactionWithDeletedOffer = function(options) {
|
module.exports.transactionWithDeletedOffer = function(options) {
|
||||||
@@ -745,7 +749,7 @@ module.exports.transactionWithDeletedOffer = function(options) {
|
|||||||
TransactionType: options.transaction_type,
|
TransactionType: options.transaction_type,
|
||||||
owner_funds: '2010.027702881682'
|
owner_funds: '2010.027702881682'
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports.transactionWithModifiedOffer = function() {
|
module.exports.transactionWithModifiedOffer = function() {
|
||||||
@@ -761,7 +765,7 @@ module.exports.transactionWithModifiedOffer = function() {
|
|||||||
TransactionType: 'OfferCreate',
|
TransactionType: 'OfferCreate',
|
||||||
owner_funds: '2010.027702881682'
|
owner_funds: '2010.027702881682'
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports.transactionWithModifiedOffers = function() {
|
module.exports.transactionWithModifiedOffers = function() {
|
||||||
@@ -777,7 +781,7 @@ module.exports.transactionWithModifiedOffers = function() {
|
|||||||
TransactionType: 'OfferCreate',
|
TransactionType: 'OfferCreate',
|
||||||
owner_funds: '2010.027702881682'
|
owner_funds: '2010.027702881682'
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports.transactionWithNoNodes = function() {
|
module.exports.transactionWithNoNodes = function() {
|
||||||
@@ -793,7 +797,7 @@ module.exports.transactionWithNoNodes = function() {
|
|||||||
TransactionType: 'OfferCreate',
|
TransactionType: 'OfferCreate',
|
||||||
owner_funds: '2010.027702881682'
|
owner_funds: '2010.027702881682'
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports.accountInfoResponse = function(options) {
|
module.exports.accountInfoResponse = function(options) {
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
/*eslint-disable max-len */
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
var assert = require('assert-diff');
|
var assert = require('assert-diff');
|
||||||
var Remote = require('ripple-lib').Remote;
|
var Remote = require('ripple-lib').Remote;
|
||||||
var Currency = require('ripple-lib').Currency;
|
var Currency = require('ripple-lib').Currency;
|
||||||
@@ -64,7 +68,7 @@ describe('OrderBook', function() {
|
|||||||
done();
|
done();
|
||||||
};
|
};
|
||||||
|
|
||||||
book.on('model', function(){});
|
book.on('model', function() {});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Subscribe', function(done) {
|
it('Subscribe', function(done) {
|
||||||
@@ -100,7 +104,7 @@ describe('OrderBook', function() {
|
|||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
book.on('model', function(){});
|
book.on('model', function() {});
|
||||||
|
|
||||||
book.unsubscribe();
|
book.unsubscribe();
|
||||||
|
|
||||||
@@ -120,7 +124,7 @@ describe('OrderBook', function() {
|
|||||||
done();
|
done();
|
||||||
};
|
};
|
||||||
|
|
||||||
book.on('model', function(){});
|
book.on('model', function() {});
|
||||||
book.removeAllListeners('model');
|
book.removeAllListeners('model');
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -135,7 +139,7 @@ describe('OrderBook', function() {
|
|||||||
done();
|
done();
|
||||||
};
|
};
|
||||||
|
|
||||||
book.once('model', function(){});
|
book.once('model', function() {});
|
||||||
book.emit('model', {});
|
book.emit('model', {});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -441,7 +445,7 @@ describe('OrderBook', function() {
|
|||||||
remote.request = function(request) {
|
remote.request = function(request) {
|
||||||
assert.deepEqual(request.message, {
|
assert.deepEqual(request.message, {
|
||||||
command: 'account_info',
|
command: 'account_info',
|
||||||
id: void(0),
|
id: undefined,
|
||||||
account: addresses.ISSUER
|
account: addresses.ISSUER
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -469,7 +473,7 @@ describe('OrderBook', function() {
|
|||||||
remote.request = function(request) {
|
remote.request = function(request) {
|
||||||
assert.deepEqual(request.message, {
|
assert.deepEqual(request.message, {
|
||||||
command: 'account_info',
|
command: 'account_info',
|
||||||
id: void(0),
|
id: undefined,
|
||||||
account: addresses.ISSUER
|
account: addresses.ISSUER
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -495,7 +499,7 @@ describe('OrderBook', function() {
|
|||||||
|
|
||||||
book._issuerTransferRate = 1002000000;
|
book._issuerTransferRate = 1002000000;
|
||||||
|
|
||||||
remote.request = function(request) {
|
remote.request = function() {
|
||||||
assert(false);
|
assert(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -513,7 +517,7 @@ describe('OrderBook', function() {
|
|||||||
currency_pays: 'BTC'
|
currency_pays: 'BTC'
|
||||||
});
|
});
|
||||||
|
|
||||||
remote.request = function(request) {
|
remote.request = function() {
|
||||||
assert(false);
|
assert(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1116,7 +1120,7 @@ describe('OrderBook', function() {
|
|||||||
|
|
||||||
book._offers = fixtures.fiatOffers();
|
book._offers = fixtures.fiatOffers();
|
||||||
|
|
||||||
book.on('offer_changed', function(offer) {
|
book.on('offer_changed', function() {
|
||||||
receivedChangedEvents += 1;
|
receivedChangedEvents += 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1150,7 +1154,6 @@ describe('OrderBook', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('Update funded amounts - increase funds', function() {
|
it('Update funded amounts - increase funds', function() {
|
||||||
var receivedChangedEvents = 0;
|
|
||||||
var receivedFundsChangedEvents = 0;
|
var receivedFundsChangedEvents = 0;
|
||||||
|
|
||||||
var remote = new Remote();
|
var remote = new Remote();
|
||||||
@@ -1264,7 +1267,7 @@ describe('OrderBook', function() {
|
|||||||
book._synchronized = true;
|
book._synchronized = true;
|
||||||
book._offers = fixtures.NATIVE_OFFERS;
|
book._offers = fixtures.NATIVE_OFFERS;
|
||||||
|
|
||||||
book.on('offer_changed', function(offer) {
|
book.on('offer_changed', function() {
|
||||||
receivedChangedEvents += 1;
|
receivedChangedEvents += 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1533,13 +1536,6 @@ describe('OrderBook', function() {
|
|||||||
it('Notify - created node', function() {
|
it('Notify - created node', function() {
|
||||||
var remote = new Remote();
|
var remote = new Remote();
|
||||||
|
|
||||||
var book = remote.createOrderBook({
|
|
||||||
currency_gets: 'USD',
|
|
||||||
issuer_gets: addresses.ISSUER,
|
|
||||||
currency_pays: 'XRP'
|
|
||||||
});
|
|
||||||
var remote = new Remote();
|
|
||||||
|
|
||||||
var book = remote.createOrderBook({
|
var book = remote.createOrderBook({
|
||||||
currency_gets: 'USD',
|
currency_gets: 'USD',
|
||||||
issuer_gets: addresses.ISSUER,
|
issuer_gets: addresses.ISSUER,
|
||||||
@@ -1637,13 +1633,6 @@ describe('OrderBook', function() {
|
|||||||
it('Notify - deleted node', function() {
|
it('Notify - deleted node', function() {
|
||||||
var remote = new Remote();
|
var remote = new Remote();
|
||||||
|
|
||||||
var book = remote.createOrderBook({
|
|
||||||
currency_gets: 'USD',
|
|
||||||
issuer_gets: addresses.ISSUER,
|
|
||||||
currency_pays: 'XRP'
|
|
||||||
});
|
|
||||||
var remote = new Remote();
|
|
||||||
|
|
||||||
var book = remote.createOrderBook({
|
var book = remote.createOrderBook({
|
||||||
currency_gets: 'USD',
|
currency_gets: 'USD',
|
||||||
issuer_gets: addresses.ISSUER,
|
issuer_gets: addresses.ISSUER,
|
||||||
@@ -1667,13 +1656,6 @@ describe('OrderBook', function() {
|
|||||||
it('Notify - deleted node - last offer', function() {
|
it('Notify - deleted node - last offer', function() {
|
||||||
var remote = new Remote();
|
var remote = new Remote();
|
||||||
|
|
||||||
var book = remote.createOrderBook({
|
|
||||||
currency_gets: 'USD',
|
|
||||||
issuer_gets: addresses.ISSUER,
|
|
||||||
currency_pays: 'XRP'
|
|
||||||
});
|
|
||||||
var remote = new Remote();
|
|
||||||
|
|
||||||
var book = remote.createOrderBook({
|
var book = remote.createOrderBook({
|
||||||
currency_gets: 'USD',
|
currency_gets: 'USD',
|
||||||
issuer_gets: addresses.ISSUER,
|
issuer_gets: addresses.ISSUER,
|
||||||
@@ -1772,13 +1754,6 @@ describe('OrderBook', function() {
|
|||||||
it('Notify - deleted node - offer cancel', function() {
|
it('Notify - deleted node - offer cancel', function() {
|
||||||
var remote = new Remote();
|
var remote = new Remote();
|
||||||
|
|
||||||
var book = remote.createOrderBook({
|
|
||||||
currency_gets: 'USD',
|
|
||||||
issuer_gets: addresses.ISSUER,
|
|
||||||
currency_pays: 'XRP'
|
|
||||||
});
|
|
||||||
var remote = new Remote();
|
|
||||||
|
|
||||||
var book = remote.createOrderBook({
|
var book = remote.createOrderBook({
|
||||||
currency_gets: 'USD',
|
currency_gets: 'USD',
|
||||||
issuer_gets: addresses.ISSUER,
|
issuer_gets: addresses.ISSUER,
|
||||||
@@ -1804,13 +1779,6 @@ describe('OrderBook', function() {
|
|||||||
it('Notify - deleted node - offer cancel - last offer', function() {
|
it('Notify - deleted node - offer cancel - last offer', function() {
|
||||||
var remote = new Remote();
|
var remote = new Remote();
|
||||||
|
|
||||||
var book = remote.createOrderBook({
|
|
||||||
currency_gets: 'USD',
|
|
||||||
issuer_gets: addresses.ISSUER,
|
|
||||||
currency_pays: 'XRP'
|
|
||||||
});
|
|
||||||
var remote = new Remote();
|
|
||||||
|
|
||||||
var book = remote.createOrderBook({
|
var book = remote.createOrderBook({
|
||||||
currency_gets: 'USD',
|
currency_gets: 'USD',
|
||||||
issuer_gets: addresses.ISSUER,
|
issuer_gets: addresses.ISSUER,
|
||||||
@@ -1835,13 +1803,6 @@ describe('OrderBook', function() {
|
|||||||
it('Notify - modified node', function() {
|
it('Notify - modified node', function() {
|
||||||
var remote = new Remote();
|
var remote = new Remote();
|
||||||
|
|
||||||
var book = remote.createOrderBook({
|
|
||||||
currency_gets: 'USD',
|
|
||||||
issuer_gets: addresses.ISSUER,
|
|
||||||
currency_pays: 'XRP'
|
|
||||||
});
|
|
||||||
var remote = new Remote();
|
|
||||||
|
|
||||||
var book = remote.createOrderBook({
|
var book = remote.createOrderBook({
|
||||||
currency_gets: 'USD',
|
currency_gets: 'USD',
|
||||||
issuer_gets: addresses.ISSUER,
|
issuer_gets: addresses.ISSUER,
|
||||||
@@ -2223,7 +2184,7 @@ describe('OrderBook', function() {
|
|||||||
case 'book_offers':
|
case 'book_offers':
|
||||||
assert.deepEqual(request.message, {
|
assert.deepEqual(request.message, {
|
||||||
command: 'book_offers',
|
command: 'book_offers',
|
||||||
id: void(0),
|
id: undefined,
|
||||||
taker_gets: {
|
taker_gets: {
|
||||||
currency: '0000000000000000000000004254430000000000',
|
currency: '0000000000000000000000004254430000000000',
|
||||||
issuer: addresses.ISSUER
|
issuer: addresses.ISSUER
|
||||||
@@ -2260,7 +2221,8 @@ describe('OrderBook', function() {
|
|||||||
LedgerEntryType: 'Offer',
|
LedgerEntryType: 'Offer',
|
||||||
OwnerNode: '0000000000000000',
|
OwnerNode: '0000000000000000',
|
||||||
Sequence: 195,
|
Sequence: 195,
|
||||||
TakerGets: { currency: 'BTC',
|
TakerGets: {
|
||||||
|
currency: 'BTC',
|
||||||
issuer: addresses.ISSUER,
|
issuer: addresses.ISSUER,
|
||||||
value: '0.1129232560043778'
|
value: '0.1129232560043778'
|
||||||
},
|
},
|
||||||
@@ -2311,7 +2273,8 @@ describe('OrderBook', function() {
|
|||||||
LedgerEntryType: 'Offer',
|
LedgerEntryType: 'Offer',
|
||||||
OwnerNode: '0000000000000144',
|
OwnerNode: '0000000000000144',
|
||||||
Sequence: 29356,
|
Sequence: 29356,
|
||||||
TakerGets: { currency: 'BTC',
|
TakerGets: {
|
||||||
|
currency: 'BTC',
|
||||||
issuer: addresses.ISSUER,
|
issuer: addresses.ISSUER,
|
||||||
value: '0.5'
|
value: '0.5'
|
||||||
},
|
},
|
||||||
@@ -2464,9 +2427,9 @@ describe('OrderBook', function() {
|
|||||||
case 'book_offers':
|
case 'book_offers':
|
||||||
assert.deepEqual(request.message, {
|
assert.deepEqual(request.message, {
|
||||||
command: 'book_offers',
|
command: 'book_offers',
|
||||||
id: void(0),
|
id: undefined,
|
||||||
taker_gets: {
|
taker_gets: {
|
||||||
currency: '0000000000000000000000000000000000000000',
|
currency: '0000000000000000000000000000000000000000'
|
||||||
},
|
},
|
||||||
taker_pays: {
|
taker_pays: {
|
||||||
currency: '0000000000000000000000005553440000000000',
|
currency: '0000000000000000000000005553440000000000',
|
||||||
|
|||||||
Reference in New Issue
Block a user