@knine-sdk/fetch
Version:
Fetchers for Knine projects.
30 lines (23 loc) • 1.29 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var tslib_es6 = require('./node_modules/tslib/tslib.es6.js');
var invariant = require('tiny-invariant');
var fetchWithFallbacks = require('./fetchWithFallbacks.js');
var providersUrls = require('./providersUrls.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var invariant__default = /*#__PURE__*/_interopDefaultLegacy(invariant);
const fetchRPC = (chainId, options) => {
const { providers = {}, urls = [] } = options, init = tslib_es6.__rest(options, ["providers", "urls"]);
const customUrls = urls.map((value) => {
let url = value;
if (typeof value === 'function')
url = value(chainId);
invariant__default["default"](typeof url === 'string', 'URL should be a string');
return url;
});
const providersUrls$1 = providersUrls.getRPCUrls(chainId, providers);
const combinedUrls = [...customUrls, ...providersUrls$1];
invariant__default["default"](combinedUrls.length > 0, 'There are no API keys or URLs provided');
return fetchWithFallbacks.fetchWithFallbacks(combinedUrls, Object.assign({ method: 'POST' }, init));
};
exports.fetchRPC = fetchRPC;