UNPKG

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
"use strict"; 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;