UNPKG

@yoroi/exchange

Version:

The Exchange package of Yoroi SDK

74 lines (72 loc) 2.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.exchangeManagerMaker = void 0; var _immer = require("immer"); var _zodSchema = require("./adapters/zod-schema"); var _getValidationError = require("./helpers/get-validation-error"); var _baseUrlAdapter = require("./adapters/base-url-adapter"); const exchangeManagerMaker = _ref => { let { api } = _ref; return (0, _immer.freeze)({ provider: { suggested: { byOrderType: () => { const suggestedProvidersByOrderType = (0, _immer.freeze)({ sell: 'encryptus', buy: 'banxa' }); return suggestedProvidersByOrderType; } }, list: { byOrderType: async orderType => { return api.getProviders().then(providers => { return (0, _immer.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((0, _baseUrlAdapter.baseUrlAdapter)(reconstructedBaseUrl, providerId)); const allQueries = accessToken !== null ? { ...queries, access_token: accessToken } : queries; const parsedQueries = _zodSchema.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((0, _getValidationError.getValidationError)(error)); } } } }, true); }; exports.exchangeManagerMaker = exchangeManagerMaker; //# sourceMappingURL=manager.js.map