UNPKG

@krebitdao/reputation-passport

Version:

Krebit SDK for Verified Credentials

61 lines (60 loc) 1.74 kB
import 'isomorphic-fetch'; import { ensResolvedAddress, ensDomains } from '../queries/index.js'; import { config } from '../config/index.js'; const currentConfig = config.get(); const client = async (props) => { const { query, variables } = props; const response = await fetch(currentConfig.ensGraphUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ query: query, variables: variables }) }); const json = await response.json(); return json; }; const resolvedAddressQuery = async (props) => { const response = await client({ query: ensResolvedAddress, variables: props }); return response.data.domains; }; const domainNameQuery = async (address) => { const id = address.toLowerCase(); const response = await client({ query: ensDomains, variables: { id } }); return response.data?.account ? response.data.account.domains : []; }; // ensResolvedAddress from subgraph const resolveName = async (name) => { const where = { name: name }; //Get ensResolvedAddress from subgraph const addresses = await resolvedAddressQuery({ first: 1, orderBy: 'id', orderDirection: 'desc', where }); return addresses.length > 0 ? addresses[0].resolvedAddress.id : null; }; // domainNameQuery from subgraph const lookupAddress = async (address) => { const domains = await domainNameQuery(address); const domain = domains.length > 0 ? domains[0].name : null; //console.debug('ENS:', domain); return domain; }; export const ens = { client, resolveName, lookupAddress };