koinos-rpc
Version:
Typescript library to communicate with Koinos API via RPC
118 lines • 8.96 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());
});
};
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var g = generator.apply(thisArg, _arguments || []), i, q = [];
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
function fulfill(value) { resume("next", value); }
function reject(value) { resume("throw", value); }
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
};
var __asyncValues = (this && this.__asyncValues) || function (o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.BlockStore = void 0;
class BlockStore {
constructor(client) {
this.client = client;
}
getBlocksById(ids, return_block = true, return_receipt = true) {
return __awaiter(this, void 0, void 0, function* () {
return this.call('get_blocks_by_id', { block_ids: ids, return_block, return_receipt });
});
}
getBlocksByHeight(head_block_id, ancestor_start_height, num_blocks, return_block = true, return_receipt = true) {
return __awaiter(this, void 0, void 0, function* () {
return this.call('get_blocks_by_height', {
head_block_id,
ancestor_start_height,
num_blocks,
return_block,
return_receipt
});
});
}
getHighestBlock() {
return __awaiter(this, void 0, void 0, function* () {
return this.call('get_highest_block');
});
}
getBlockNumbers(options) {
return __asyncGenerator(this, arguments, function* getBlockNumbers_1() {
const interval = 3;
if (!options) {
options = {};
}
let current = yield __await(this.getHighetBlockNumber());
if (options.from !== undefined && options.from > current) {
throw new Error(`From can't be larger than current block num (${current})`);
}
let seen = (options === null || options === void 0 ? void 0 : options.from) !== undefined ? options.from : current;
while (true) {
while (current > seen) {
yield yield __await(seen++);
if (options.to !== undefined && seen > options.to) {
return yield __await(void 0);
}
}
yield __await(this.sleep(interval * 1000));
current = yield __await(this.getHighetBlockNumber());
}
});
}
getBlocks(options) {
return __asyncGenerator(this, arguments, function* getBlocks_1() {
var e_1, _a;
try {
for (var _b = __asyncValues(this.getBlockNumbers(options)), _c; _c = yield __await(_b.next()), !_c.done;) {
const num = _c.value;
const { topology } = yield __await(this.getHighestBlock());
const { block_items } = yield __await(this.getBlocksByHeight(topology.id, num, 1));
yield yield __await(block_items[0]);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));
}
finally { if (e_1) throw e_1.error; }
}
});
}
getHighetBlockNumber() {
return __awaiter(this, void 0, void 0, function* () {
const { topology } = yield this.getHighestBlock();
return topology.height;
});
}
sleep(number) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve) => setTimeout(resolve, number));
});
}
call(method, params = {}) {
return __awaiter(this, void 0, void 0, function* () {
return this.client.call('block_store', method, params);
});
}
}
exports.BlockStore = BlockStore;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2tTdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIuL3NyYy8iLCJzb3VyY2VzIjpbInNlcnZpY2UvQmxvY2tTdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBLE1BQWEsVUFBVTtJQUNwQixZQUE2QixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7SUFFekMsYUFBYSxDQUFDLEdBQWEsRUFBRSxZQUFZLEdBQUcsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJOztZQUMxRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLENBQUM7S0FBQTtJQUVLLGlCQUFpQixDQUFDLGFBQXFCLEVBQUUscUJBQTZCLEVBQUUsVUFBa0IsRUFBRSxZQUFZLEdBQUcsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJOztZQUN6SSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7Z0JBQ3RDLGFBQWE7Z0JBQ2IscUJBQXFCO2dCQUNyQixVQUFVO2dCQUNWLFlBQVk7Z0JBQ1osY0FBYzthQUNoQixDQUFDLENBQUM7UUFDTixDQUFDO0tBQUE7SUFFSyxlQUFlOztZQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN6QyxDQUFDO0tBQUE7SUFFTSxlQUFlLENBQUMsT0FBaUM7O1lBQ3JELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNYLE9BQU8sR0FBRyxFQUFFLENBQUM7YUFDZjtZQUVELElBQUksT0FBTyxHQUFHLGNBQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUEsQ0FBQztZQUNoRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxFQUFFO2dCQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxPQUFPLEdBQUcsQ0FBQyxDQUFDO2FBQzlFO1lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsSUFBSSxNQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ2hFLE9BQU8sSUFBSSxFQUFFO2dCQUNWLE9BQU8sT0FBTyxHQUFHLElBQUksRUFBRTtvQkFDcEIsb0JBQU0sSUFBSSxFQUFFLENBQUEsQ0FBQztvQkFDYixJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssU0FBUyxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsRUFBRSxFQUFFO3dCQUNoRCw2QkFBTztxQkFDVDtpQkFDSDtnQkFDRCxjQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFBLENBQUM7Z0JBQ2xDLE9BQU8sR0FBRyxjQUFNLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFBLENBQUM7YUFDOUM7UUFDSixDQUFDO0tBQUE7SUFFTSxTQUFTLENBQUMsT0FBaUM7Ozs7Z0JBQy9DLEtBQXdCLElBQUEsS0FBQSxjQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUEsSUFBQTtvQkFBMUMsTUFBTSxHQUFHLFdBQUEsQ0FBQTtvQkFDakIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLGNBQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBLENBQUM7b0JBQ2xELE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxjQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQSxDQUFDO29CQUMxRSxvQkFBTSxXQUFXLENBQUMsQ0FBQyxDQUFFLENBQUEsQ0FBQztpQkFDeEI7Ozs7Ozs7OztRQUNKLENBQUM7S0FBQTtJQUVhLG9CQUFvQjs7WUFDL0IsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2xELE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMxQixDQUFDO0tBQUE7SUFFYSxLQUFLLENBQUMsTUFBYzs7WUFDL0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7S0FBQTtJQUVhLElBQUksQ0FBSSxNQUFrQixFQUFFLFNBQWMsRUFBRTs7WUFDdkQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFELENBQUM7S0FBQTtDQUNIO0FBaEVELGdDQWdFQyJ9