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