UNPKG

blockfrost-js-ratelimited

Version:

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

155 lines (154 loc) 5.66 kB
"use strict"; 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;