@yoroi/resolver
Version:
Yoroi domain resolver
63 lines (62 loc) • 2.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isCnsDomain = exports.handleCnsApiError = exports.cnsSupportedTld = exports.cnsCryptoAddress = exports.cnsApiConfig = void 0;
var _types = require("@yoroi/types");
var _crossCslCore = require("@emurgo/cross-csl-core");
var _zodErrors = require("../zod-errors");
var _cardanoApiMaker = require("./cardano-api-maker");
var _apiHelpers = require("./api-helpers");
const cnsCryptoAddress = function (cslFactory) {
let isMainnet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
return async (receiver, fetcherConfig) => {
if (!receiver.includes('.')) throw new _types.Resolver.Errors.InvalidDomain();
if (!isCnsDomain(receiver)) throw new _types.Resolver.Errors.UnsupportedTld();
const cslScopeId = String(Math.random());
const csl = cslFactory(cslScopeId);
try {
const cnsCardanoApi = (0, _cardanoApiMaker.makeCnsCardanoApi)(isMainnet ? cnsApiConfig.mainnet.baseUrl : cnsApiConfig.preprod.baseUrl);
const address = await (0, _apiHelpers.resolveAddress)(receiver, isMainnet ? cnsApiConfig.mainnet : cnsApiConfig.preprod, cnsCardanoApi, csl, fetcherConfig);
return address;
} catch (error) {
return handleCnsApiError(error);
} finally {
await (0, _crossCslCore.freeContext)(cslScopeId);
}
};
};
exports.cnsCryptoAddress = cnsCryptoAddress;
const cnsSupportedTld = '.ada';
exports.cnsSupportedTld = cnsSupportedTld;
const isCnsDomain = value => value.endsWith(cnsSupportedTld);
exports.isCnsDomain = isCnsDomain;
const cnsApiConfig = {
mainnet: {
baseUrl: 'https://api.yoroiwallet.com',
cnsPolicyId: 'e0c4c2d7c4a0ed2cf786753fd845dee82c45512cee03e92adfd3fb8d',
recordPolicyId: 'a1db6026bc00963c1a70af10cdd98f2304be5da44ae4af8f770dcfd3',
recordAddress: 'addr1z8dyldfnnpg4w85d32lv64f5ldra02juhnzxdvlyyrpfs0leh7ahm4pdpqxx0mc0wvmu6n025jml40g7pfd0j0vf6aqsl2tlcx',
networkId: 1,
domainLevels: 2,
virtualSubdomainLevels: 3
},
preprod: {
baseUrl: 'https://preprod-backend.yoroiwallet.com',
cnsPolicyId: 'baefdc6c5b191be372a794cd8d40d839ec0dbdd3c28957267dc81700',
recordPolicyId: 'a048db3b45c2aa5f1ad472338e6e6dea41a45f4350c8753a231403aa',
recordAddress: 'addr_test1wzzfgjazt5ts34cstrhzaac4xav8x7z2m3vg76s8qmaztzglsw8k5',
networkId: 0,
domainLevels: 2,
virtualSubdomainLevels: 3
}
};
exports.cnsApiConfig = cnsApiConfig;
const handleCnsApiError = error => {
const zodErrorMessage = (0, _zodErrors.handleZodErrors)(error);
if (zodErrorMessage) throw new _types.Resolver.Errors.InvalidResponse(zodErrorMessage);
if (error instanceof _types.Api.Errors.NotFound) throw new _types.Resolver.Errors.NotFound();
throw error;
};
exports.handleCnsApiError = handleCnsApiError;
//# sourceMappingURL=api.js.map