@krebitdao/reputation-passport
Version:
Krebit SDK for Verified Credentials
100 lines (99 loc) • 2.98 kB
JavaScript
import 'isomorphic-fetch';
import { schemas } from '../schemas/index.js';
import { verifiableCredentials, verifiableCredential, erc20Contract, credentialRegistries, credentialRegistry, erc20Balance, erc20Balances, exploreAccounts, totalAccounts } 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.graphUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: query,
variables: variables
})
});
const json = await response.json();
return json;
};
const verifiableCredentialsQuery = async (props) => {
const response = await client({
query: verifiableCredentials,
variables: props
});
return response.data.verifiableCredentials;
};
const verifiableCredentialQuery = async (props) => {
const response = await client({
query: verifiableCredential,
variables: props
});
return response.data.verifiableCredentials;
};
const erc20ContractQuery = async (props) => {
const response = await client({
query: erc20Contract,
variables: props
});
return response.data.erc20Contract;
};
const credentialRegistriesQuery = async (props) => {
const response = await client({
query: credentialRegistries,
variables: props
});
return response.data.credentialRegistries;
};
const credentialRegistryQuery = async (props) => {
const response = await client({
query: credentialRegistry,
variables: props
});
return response.data.credentialRegistry;
};
const erc20BalancesQuery = async (props) => {
const response = await client({
query: erc20Balances,
variables: props
});
return response.data?.erc20Balances;
};
const erc20BalanceQuery = async (address) => {
const contract = schemas.krbToken[currentConfig.network].address;
const id = contract.toLowerCase() + '/' + address.toLowerCase();
if (!id)
return;
const response = await client({
query: erc20Balance,
variables: { id }
});
return response.data?.erc20Balance;
};
const exploreAccountsQuery = async (props) => {
const response = await client({
query: exploreAccounts,
variables: props
});
return response.data.accounts;
};
const totalAccountsQuery = async (props) => {
const response = await client({
query: totalAccounts,
variables: props
});
return response.data.accounts.length;
};
export const graph = {
client,
verifiableCredentialsQuery,
verifiableCredentialQuery,
erc20ContractQuery,
credentialRegistriesQuery,
credentialRegistryQuery,
erc20BalanceQuery,
erc20BalancesQuery,
exploreAccountsQuery,
totalAccountsQuery
};