UNPKG

@yoroi/exchange

Version:

The Exchange package of Yoroi SDK

67 lines (66 loc) 2.29 kB
import { freeze } from 'immer'; import { urlReferralQueryStringParamsSchema } from './adapters/zod-schema'; import { getValidationError } from './helpers/get-validation-error'; import { baseUrlAdapter } from './adapters/base-url-adapter'; export const exchangeManagerMaker = _ref => { let { api } = _ref; return freeze({ provider: { suggested: { byOrderType: () => { const suggestedProvidersByOrderType = freeze({ sell: 'encryptus', buy: 'banxa' }); return suggestedProvidersByOrderType; } }, list: { byOrderType: async orderType => { return api.getProviders().then(providers => { return freeze(Object.entries(providers).filter(_ref2 => { let [, provider] = _ref2; return orderType in provider.supportedOrders; }), true); }); } } }, referralLink: { create: async (_ref3, fetcherOptions) => { let { providerId, queries } = _ref3; try { const baseUrl = await api.getBaseUrl(providerId, fetcherOptions); const url = new URL(baseUrl); const { origin, pathname } = url; const baseUrlParams = new URLSearchParams(url.search); const accessToken = baseUrlParams.get('access_token'); const reconstructedBaseUrl = origin + pathname; // to remove any params (access token) from baseUrl const reconstructedUrl = new URL(baseUrlAdapter(reconstructedBaseUrl, providerId)); const allQueries = accessToken !== null ? { ...queries, access_token: accessToken } : queries; const parsedQueries = urlReferralQueryStringParamsSchema.parse(allQueries); const params = new URLSearchParams(); for (const [key, value] of Object.entries(parsedQueries)) { params.append(key, value.toString()); } reconstructedUrl.search = params.toString(); return Promise.resolve(reconstructedUrl); } catch (error) { return Promise.reject(getValidationError(error)); } } } }, true); }; //# sourceMappingURL=manager.js.map