UNPKG

@lifi/sdk

Version:

LI.FI Any-to-Any Cross-Chain-Swap SDK

66 lines 2.23 kB
import { config } from './config.js'; import { ValidationError } from './errors/errors.js'; import { HTTPError } from './errors/httpError.js'; import { SDKError } from './errors/SDKError.js'; import { sleep } from './utils/sleep.js'; import { version } from './version.js'; export const requestSettings = { retries: 1, }; const stripExtendRequestInitProperties = ({ retries, ...rest }) => ({ ...rest, }); export const request = async (url, options = { retries: requestSettings.retries, }) => { const { userId, integrator, widgetVersion, apiKey } = config.get(); if (!integrator) { throw new SDKError(new ValidationError('You need to provide the Integrator property. Please see documentation https://docs.li.fi/integrate-li.fi-js-sdk/set-up-the-sdk')); } options.retries = options.retries ?? requestSettings.retries; try { if (apiKey) { options.headers = { ...options.headers, 'x-lifi-api-key': apiKey, }; } if (userId) { options.headers = { ...options.headers, 'x-lifi-userid': userId, }; } if (widgetVersion) { options.headers = { ...options.headers, 'x-lifi-widget': widgetVersion, }; } if (version) { options.headers = { ...options.headers, 'x-lifi-sdk': version, }; } // integrator is mandatory during SDK initialization options.headers = { ...options.headers, 'x-lifi-integrator': integrator, }; const response = await fetch(url, stripExtendRequestInitProperties(options)); if (!response.ok) { throw new HTTPError(response, url, options); } return await response.json(); } catch (error) { if (options.retries > 0 && error.status === 500) { await sleep(500); return request(url, { ...options, retries: options.retries - 1 }); } await error.buildAdditionalDetails?.(); throw new SDKError(error); } }; //# sourceMappingURL=request.js.map