swtc-lib
Version:
websocket access for jingtum blockchain
55 lines • 1.97 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.OrderBook = void 0;
const events_1 = require("events");
const utils_1 = require("@swtc/utils");
class OrderBook extends events_1.EventEmitter {
constructor(remote) {
super();
this._remote = remote;
this._books = {};
this._token = remote._token || "swt";
this.on("newListener", function (key, listener) {
if (key === "removeListener")
return;
const pair = utils_1.utils.parseKey(key);
if (!pair) {
this.pair = new Error("invalid key");
return this;
}
this._books[key] = listener;
});
this.on("removeListener", function (key) {
const pair = utils_1.utils.parseKey(key);
if (!pair) {
this.pair = new Error("invalid key");
return this;
}
delete this._books[key];
});
this._remote.on("transactions", this.__updateBooks.bind(this));
}
__updateBooks(data) {
if (data.meta) {
const books = utils_1.utils.affectedBooks(data);
const _data = {
tx: data.transaction,
meta: data.meta,
engine_result: data.engine_result,
engine_result_code: data.engine_result_code,
engine_result_message: data.engine_result_message,
ledger_hash: data.ledger_hash,
ledger_index: data.ledger_index,
validated: data.validated
};
const _tx = utils_1.utils.processTx(_data, data.transaction.Account);
for (const book of books) {
const callback = this._books[books[book]];
if (callback)
callback(_tx);
}
}
}
}
exports.OrderBook = OrderBook;
//# sourceMappingURL=orderbook.js.map