@yoroi/exchange
Version:
The Exchange package of Yoroi SDK
74 lines (72 loc) • 2.52 kB
JavaScript
;
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