UNPKG

blockfrost-js-ratelimited

Version:

A JavaScript/TypeScript SDK for interacting with the https://blockfrost.io API

160 lines (159 loc) 5.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.blocksTxsAll = exports.blocksTxs = exports.blocksPrevious = exports.blocksNext = exports.blocksLatestTxsAll = exports.blocksLatestTxs = exports.blocksLatest = exports.blocks = void 0; const utils_1 = require("../../../utils"); const config_1 = require("../../../config"); async function blocks(hashOrNumber) { return new Promise((resolve, reject) => { this.axiosInstance(`${this.apiUrl}/blocks/${hashOrNumber}`) .then(resp => { resolve(resp.data); }) .catch(err => { reject(utils_1.handleError(err)); }); }); } exports.blocks = blocks; async function blocksLatest() { return new Promise((resolve, reject) => { this.axiosInstance(`${this.apiUrl}/blocks/latest`) .then(resp => { resolve(resp.data); }) .catch(err => { return reject(utils_1.handleError(err)); }); }); } exports.blocksLatest = blocksLatest; async function blocksLatestTxs(pagination) { const paginationOptions = utils_1.getPaginationOptions(pagination); return new Promise((resolve, reject) => { this.axiosInstance(`${this.apiUrl}/blocks/latest/txs`, { params: { page: paginationOptions.page, count: paginationOptions.count, order: paginationOptions.order, }, }) .then(resp => { resolve(resp.data); }) .catch(err => { return reject(utils_1.handleError(err)); }); }); } exports.blocksLatestTxs = blocksLatestTxs; async function blocksLatestTxsAll(allMethodOptions) { let page = 1; const res = []; const count = config_1.DEFAULT_PAGINATION_PAGE_ITEMS_COUNT; const options = utils_1.getAllMethodOptions(allMethodOptions); const getPromiseBundle = () => { const promises = [...Array(options.batchSize).keys()].map(i => this.blocksLatestTxs({ page: page + i, count, order: options.order, })); page += options.batchSize; return promises; }; // eslint-disable-next-line no-constant-condition while (true) { const promiseBundle = getPromiseBundle(); const pages = await Promise.all(promiseBundle); for (const page of pages) { res.push(...page); if (page.length < config_1.DEFAULT_PAGINATION_PAGE_ITEMS_COUNT) { return res; } } } } exports.blocksLatestTxsAll = blocksLatestTxsAll; async function blocksNext(hashOrNumber, pagination) { const paginationOptions = utils_1.getPaginationOptions(pagination); return new Promise((resolve, reject) => { this.axiosInstance(`${this.apiUrl}/blocks/${hashOrNumber}/next`, { params: { page: paginationOptions.page, count: paginationOptions.count, order: paginationOptions.order, }, }) .then(resp => { resolve(resp.data); }) .catch(err => { reject(utils_1.handleError(err)); }); }); } exports.blocksNext = blocksNext; async function blocksPrevious(hashOrNumber, pagination) { const paginationOptions = utils_1.getPaginationOptions(pagination); return new Promise((resolve, reject) => { this.axiosInstance(`${this.apiUrl}/blocks/${hashOrNumber}/previous`, { params: { page: paginationOptions.page, count: paginationOptions.count, order: paginationOptions.order, }, }) .then(resp => { resolve(resp.data); }) .catch(err => { reject(utils_1.handleError(err)); }); }); } exports.blocksPrevious = blocksPrevious; async function blocksTxs(hashOrNumber, pagination) { const paginationOptions = utils_1.getPaginationOptions(pagination); return new Promise((resolve, reject) => { this.axiosInstance(`${this.apiUrl}/blocks/${hashOrNumber}/txs`, { params: { page: paginationOptions.page, count: paginationOptions.count, order: paginationOptions.order, }, }) .then(resp => { resolve(resp.data); }) .catch(err => { reject(utils_1.handleError(err)); }); }); } exports.blocksTxs = blocksTxs; async function blocksTxsAll(hashOrNumber, allMethodOptions) { let page = 1; const res = []; const count = config_1.DEFAULT_PAGINATION_PAGE_ITEMS_COUNT; const options = utils_1.getAllMethodOptions(allMethodOptions); const getPromiseBundle = () => { const promises = [...Array(options.batchSize).keys()].map(i => this.blocksTxs(hashOrNumber, { page: page + i, count, order: options.order, })); page += options.batchSize; return promises; }; // eslint-disable-next-line no-constant-condition while (true) { const promiseBundle = getPromiseBundle(); const pages = await Promise.all(promiseBundle); for (const page of pages) { res.push(...page); if (page.length < config_1.DEFAULT_PAGINATION_PAGE_ITEMS_COUNT) { return res; } } } } exports.blocksTxsAll = blocksTxsAll;