@krebitdao/reputation-passport
Version:
Krebit SDK for Verified Credentials
61 lines (60 loc) • 1.74 kB
JavaScript
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
};