blockfrost-js-ratelimited
Version:
A JavaScript/TypeScript SDK for interacting with the https://blockfrost.io API
155 lines (154 loc) • 5.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.assetsPolicyByIdAll = exports.assetsPolicyById = exports.assetsAddresses = exports.assetsTransactions = exports.assetsHistoryAll = exports.assetsHistory = exports.assetsById = exports.assets = void 0;
const utils_1 = require("../../../utils");
const config_1 = require("../../../config");
async function assets(pagination) {
const paginationOptions = utils_1.getPaginationOptions(pagination);
return new Promise((resolve, reject) => {
this.axiosInstance(`${this.apiUrl}/assets`, {
params: {
page: paginationOptions.page,
count: paginationOptions.count,
order: paginationOptions.order,
},
})
.then(resp => {
resolve(resp.data);
})
.catch(err => reject(utils_1.handleError(err)));
});
}
exports.assets = assets;
async function assetsById(asset) {
return new Promise((resolve, reject) => {
this.axiosInstance(`${this.apiUrl}/assets/${asset}`)
.then(resp => {
resolve(resp.data);
})
.catch(err => reject(utils_1.handleError(err)));
});
}
exports.assetsById = assetsById;
async function assetsHistory(asset, pagination) {
const paginationOptions = utils_1.getPaginationOptions(pagination);
return new Promise((resolve, reject) => {
this.axiosInstance(`${this.apiUrl}/assets/${asset}/history`, {
params: {
page: paginationOptions.page,
count: paginationOptions.count,
order: paginationOptions.order,
},
})
.then(resp => {
resolve(resp.data);
})
.catch(err => reject(utils_1.handleError(err)));
});
}
exports.assetsHistory = assetsHistory;
async function assetsHistoryAll(asset, 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.assetsHistory(asset, {
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.assetsHistoryAll = assetsHistoryAll;
async function assetsTransactions(asset, pagination) {
const paginationOptions = utils_1.getPaginationOptions(pagination);
return new Promise((resolve, reject) => {
this.axiosInstance(`${this.apiUrl}/assets/${asset}/transactions`, {
params: {
page: paginationOptions.page,
count: paginationOptions.count,
order: paginationOptions.order,
},
})
.then(resp => {
resolve(resp.data);
})
.catch(err => reject(utils_1.handleError(err)));
});
}
exports.assetsTransactions = assetsTransactions;
async function assetsAddresses(asset, pagination) {
const paginationOptions = utils_1.getPaginationOptions(pagination);
return new Promise((resolve, reject) => {
this.axiosInstance(`${this.apiUrl}/assets/${asset}/addresses`, {
params: {
page: paginationOptions.page,
count: paginationOptions.count,
order: paginationOptions.order,
},
})
.then(resp => {
resolve(resp.data);
})
.catch(err => reject(utils_1.handleError(err)));
});
}
exports.assetsAddresses = assetsAddresses;
async function assetsPolicyById(policy, pagination) {
const paginationOptions = utils_1.getPaginationOptions(pagination);
return new Promise((resolve, reject) => {
this.axiosInstance(`${this.apiUrl}/assets/policy/${policy}`, {
params: {
page: paginationOptions.page,
count: paginationOptions.count,
order: paginationOptions.order,
},
})
.then(resp => {
resolve(resp.data);
})
.catch(err => reject(utils_1.handleError(err)));
});
}
exports.assetsPolicyById = assetsPolicyById;
async function assetsPolicyByIdAll(policy, 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.assetsPolicyById(policy, {
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.assetsPolicyByIdAll = assetsPolicyByIdAll;