UNPKG

blockfrost-js-ratelimited

Version:

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

124 lines (123 loc) 4.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addressesUtxosAll = exports.addressesUtxos = exports.addressesTransactionsAll = exports.addressesTransactions = exports.addressesTotal = exports.addresses = void 0; const utils_1 = require("../../../utils"); const config_1 = require("../../../config"); async function addresses(address) { return new Promise((resolve, reject) => { this.axiosInstance(`${this.apiUrl}/addresses/${address}`) .then(resp => { resolve(resp.data); }) .catch(err => reject(utils_1.handleError(err))); }); } exports.addresses = addresses; async function addressesTotal(address) { return new Promise((resolve, reject) => { this.axiosInstance(`${this.apiUrl}/addresses/${address}/total`) .then(resp => { resolve(resp.data); }) .catch(err => reject(utils_1.handleError(err))); }); } exports.addressesTotal = addressesTotal; async function addressesTransactions(address, pagination, additionalOptions) { const additionalParams = utils_1.getAdditionalParams(additionalOptions); const paginationOptions = utils_1.getPaginationOptions(pagination); return new Promise((resolve, reject) => { this.axiosInstance(`${this.apiUrl}/addresses/${address}/transactions`, { params: { page: paginationOptions.page, count: paginationOptions.count, order: paginationOptions.order, from: additionalParams.from, to: additionalParams.to, }, }) .then(resp => { resolve(resp.data); }) .catch(err => { if (err && err.response && err.response.data.status_code === 404) { resolve([]); } reject(utils_1.handleError(err)); }); }); } exports.addressesTransactions = addressesTransactions; async function addressesTransactionsAll(address, allMethodOptions, additionalOptions) { let page = 1; const count = config_1.DEFAULT_PAGINATION_PAGE_ITEMS_COUNT; const res = []; const options = utils_1.getAllMethodOptions(allMethodOptions); const getPromiseBundle = () => { const promises = [...Array(options.batchSize).keys()].map(i => this.addressesTransactions(address, { page: page + i, count, order: options.order, }, { from: additionalOptions === null || additionalOptions === void 0 ? void 0 : additionalOptions.from, to: additionalOptions === null || additionalOptions === void 0 ? void 0 : additionalOptions.to, })); 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.addressesTransactionsAll = addressesTransactionsAll; async function addressesUtxos(address, pagination) { const paginationOptions = utils_1.getPaginationOptions(pagination); return new Promise((resolve, reject) => { this.axiosInstance(`${this.apiUrl}/addresses/${address}/utxos`, { params: { page: paginationOptions.page, count: paginationOptions.count, order: paginationOptions.order, }, }) .then(resp => { resolve(resp.data); }) .catch(err => reject(utils_1.handleError(err))); }); } exports.addressesUtxos = addressesUtxos; async function addressesUtxosAll(address, allMethodOptions) { let page = 1; const res = []; const options = utils_1.getAllMethodOptions(allMethodOptions); const getPromiseBundle = () => { const promises = [...Array(options.batchSize).keys()].map(i => this.addressesUtxos(address, { page: page + i, count: config_1.DEFAULT_PAGINATION_PAGE_ITEMS_COUNT, order: options.order, })); page += options.batchSize || config_1.DEFAULT_BATCH_SIZE; 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.addressesUtxosAll = addressesUtxosAll;