web3-domain-resolver
Version:
Web3 Library that enable with just one function to resolve domains on multiple web3 providers such as ENS, UnstoppableDomains and Freename
78 lines (77 loc) • 2.86 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResolverProviderRouter = void 0;
const lodash_sortby_1 = __importDefault(require("lodash.sortby"));
const lodash_indexof_1 = __importDefault(require("lodash.indexof"));
const name_tools_1 = require("../tools/name-tools");
class ResolverProviderRouter {
constructor(resolverProviders) {
this._resolverProviders = resolverProviders || [];
}
get resolverProviders() {
return this._resolverProviders;
}
set resolverProviders(value) {
this._resolverProviders = value;
}
addResolverProviders(resolverProvider) {
if (Array.isArray(resolverProvider)) {
this._resolverProviders.push(...resolverProvider);
}
else {
this._resolverProviders.push(resolverProvider);
}
}
getResolverProviderByDomainOrTld(domainOrTld) {
const mappedName = name_tools_1.NameTools.mapName(domainOrTld);
if (!mappedName) {
return undefined;
}
for (const resolverProvider of this.resolverProviders) {
if (resolverProvider.supportedTlds.includes(mappedName.tld)) {
return resolverProvider;
}
}
for (const resolverProvider of this.resolverProviders) {
if (resolverProvider.supportedTlds.includes("*")) {
return resolverProvider;
}
}
return undefined;
}
async findTokenIdResolverProvider(tokenId) {
for (const resolverProvider of this._resolverProviders) {
try {
const exists = await resolverProvider.exists(tokenId);
if (exists) {
return resolverProvider;
}
}
catch {
continue;
}
}
return undefined;
}
getResolverProvider(name) {
const resolverProvider = this._resolverProviders.find(x => x.name == name);
return resolverProvider;
}
setResolverProvidersPriority(priority) {
const missing = [];
for (const resolverProvider of this._resolverProviders) {
if (!priority.includes(resolverProvider.name)) {
missing.push(resolverProvider.name);
}
}
const fullPriority = [...priority, ...missing];
const sortedResolverProviders = (0, lodash_sortby_1.default)(this._resolverProviders, function (resolverProvider) {
return (0, lodash_indexof_1.default)(fullPriority, resolverProvider.name);
});
this.resolverProviders = sortedResolverProviders;
}
}
exports.ResolverProviderRouter = ResolverProviderRouter;
;