blockfrost-js-ratelimited
Version:
A JavaScript/TypeScript SDK for interacting with the https://blockfrost.io API
160 lines (159 loc) • 5.51 kB
JavaScript
;
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;