UNPKG

@krebitdao/reputation-passport

Version:

Krebit SDK for Verified Credentials

100 lines (99 loc) 2.98 kB
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 };