ripple-lib
Version:
Deprecated - consider migrating to xrpl.js: https://xrpl.org/xrpljs2-migration-guide.html
67 lines • 2.94 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RippleAPIBroadcast = void 0;
const api_1 = require("./api");
class RippleAPIBroadcast extends api_1.RippleAPI {
constructor(servers, options = {}) {
super(options);
this.ledgerVersion = undefined;
const apis = servers.map((server) => new api_1.RippleAPI(Object.assign({}, options, { server })));
this._apis = apis;
this.getMethodNames().forEach((name) => {
this[name] = function () {
return Promise.race(apis.map((api) => api[name](...arguments)));
};
});
this.connect = function () {
return __awaiter(this, void 0, void 0, function* () {
yield Promise.all(apis.map((api) => api.connect()));
});
};
this.disconnect = function () {
return __awaiter(this, void 0, void 0, function* () {
yield Promise.all(apis.map((api) => api.disconnect()));
});
};
this.isConnected = function () {
return apis.map((api) => api.isConnected()).every(Boolean);
};
const defaultAPI = apis[0];
const syncMethods = ['sign', 'generateAddress', 'computeLedgerHash'];
syncMethods.forEach((name) => {
this[name] = defaultAPI[name].bind(defaultAPI);
});
apis.forEach((api) => {
api.on('ledger', this.onLedgerEvent.bind(this));
api.on('error', (errorCode, errorMessage, data) => this.emit('error', errorCode, errorMessage, data));
});
}
onLedgerEvent(ledger) {
if (ledger.ledgerVersion > this.ledgerVersion ||
this.ledgerVersion == null) {
this.ledgerVersion = ledger.ledgerVersion;
this.emit('ledger', ledger);
}
}
getMethodNames() {
const methodNames = [];
const rippleAPI = this._apis[0];
for (const name of Object.getOwnPropertyNames(rippleAPI)) {
if (typeof rippleAPI[name] === 'function') {
methodNames.push(name);
}
}
return methodNames;
}
}
exports.RippleAPIBroadcast = RippleAPIBroadcast;
//# sourceMappingURL=broadcast.js.map