UNPKG

blockfrost-js-ratelimited

Version:

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

148 lines (147 loc) 5.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.nutlinkTickersAll = exports.nutlinkTickers = exports.nutlinkAddressTickerAll = exports.nutlinkAddressTicker = exports.nutlinkAddressTickersAll = exports.nutlinkAddressTickers = exports.nutlinkAddress = void 0; const utils_1 = require("../../../utils"); const config_1 = require("../../../config"); async function nutlinkAddress(address) { return new Promise((resolve, reject) => { this.axiosInstance(`${this.apiUrl}/nutlink/${address}`) .then(resp => { resolve(resp.data); }) .catch(err => reject(utils_1.handleError(err))); }); } exports.nutlinkAddress = nutlinkAddress; async function nutlinkAddressTickers(address, pagination) { const paginationOptions = utils_1.getPaginationOptions(pagination); return new Promise((resolve, reject) => { this.axiosInstance(`${this.apiUrl}/nutlink/${address}/tickers`, { params: { page: paginationOptions.page, count: paginationOptions.count, order: paginationOptions.order, }, }) .then(resp => { resolve(resp.data); }) .catch(err => reject(utils_1.handleError(err))); }); } exports.nutlinkAddressTickers = nutlinkAddressTickers; async function nutlinkAddressTickersAll(address, allMethodOptions) { 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.nutlinkAddressTickers(address, { 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.nutlinkAddressTickersAll = nutlinkAddressTickersAll; async function nutlinkAddressTicker(address, ticker, pagination) { const paginationOptions = utils_1.getPaginationOptions(pagination); return new Promise((resolve, reject) => { this.axiosInstance(`${this.apiUrl}/nutlink/${address}/tickers/${ticker}`, { params: { page: paginationOptions.page, count: paginationOptions.count, order: paginationOptions.order, }, }) .then(resp => { resolve(resp.data); }) .catch(err => reject(utils_1.handleError(err))); }); } exports.nutlinkAddressTicker = nutlinkAddressTicker; async function nutlinkAddressTickerAll(address, ticker, allMethodOptions) { 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.nutlinkAddressTicker(address, ticker, { 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.nutlinkAddressTickerAll = nutlinkAddressTickerAll; async function nutlinkTickers(ticker, pagination) { const paginationOptions = utils_1.getPaginationOptions(pagination); return new Promise((resolve, reject) => { this.axiosInstance(`${this.apiUrl}/nutlink/tickers/${ticker}`, { params: { page: paginationOptions.page, count: paginationOptions.count, order: paginationOptions.order, }, }) .then(resp => { resolve(resp.data); }) .catch(err => reject(utils_1.handleError(err))); }); } exports.nutlinkTickers = nutlinkTickers; async function nutlinkTickersAll(ticker, allMethodOptions) { 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.nutlinkTickers(ticker, { 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.nutlinkTickersAll = nutlinkTickersAll;