UNPKG

koinos-rpc

Version:

Typescript library to communicate with Koinos API via RPC

118 lines 8.96 kB
"use strict"; 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