mirror of
https://github.com/cerc-io/watcher-ts
synced 2025-12-03 02:14:09 +00:00
* Rename erc20 watcher folder. * Update repo URLs. * Address watcher package scaffolding.
75 lines
2.3 KiB
TypeScript
75 lines
2.3 KiB
TypeScript
import assert from 'assert';
|
|
import BigInt from 'apollo-type-bigint';
|
|
import debug from 'debug';
|
|
|
|
import { Indexer, ValueResult } from './indexer';
|
|
|
|
const log = debug('vulcanize:resolver');
|
|
|
|
export const createResolvers = async (indexer: Indexer): Promise<any> => {
|
|
assert(indexer);
|
|
|
|
return {
|
|
BigInt: new BigInt('bigInt'),
|
|
|
|
TokenEvent: {
|
|
__resolveType: (obj: any) => {
|
|
assert(obj.__typename);
|
|
|
|
return obj.__typename;
|
|
}
|
|
},
|
|
|
|
Subscription: {
|
|
onTokenEvent: {
|
|
subscribe: () => indexer.getEventIterator()
|
|
}
|
|
},
|
|
|
|
Mutation: {
|
|
watchToken: (_: any, { token, startingBlock = 1 }: { token: string, startingBlock: number }): Promise<boolean> => {
|
|
log('watchToken', token, startingBlock);
|
|
return indexer.watchContract(token, startingBlock);
|
|
}
|
|
},
|
|
|
|
Query: {
|
|
|
|
totalSupply: (_: any, { blockHash, token }: { blockHash: string, token: string }): Promise<ValueResult> => {
|
|
log('totalSupply', blockHash, token);
|
|
return indexer.totalSupply(blockHash, token);
|
|
},
|
|
|
|
balanceOf: async (_: any, { blockHash, token, owner }: { blockHash: string, token: string, owner: string }) => {
|
|
log('balanceOf', blockHash, token, owner);
|
|
return indexer.balanceOf(blockHash, token, owner);
|
|
},
|
|
|
|
allowance: async (_: any, { blockHash, token, owner, spender }: { blockHash: string, token: string, owner: string, spender: string }) => {
|
|
log('allowance', blockHash, token, owner, spender);
|
|
return indexer.allowance(blockHash, token, owner, spender);
|
|
},
|
|
|
|
name: (_: any, { blockHash, token }: { blockHash: string, token: string }) => {
|
|
log('name', blockHash, token);
|
|
return indexer.name(blockHash, token);
|
|
},
|
|
|
|
symbol: (_: any, { blockHash, token }: { blockHash: string, token: string }) => {
|
|
log('symbol', blockHash, token);
|
|
return indexer.symbol(blockHash, token);
|
|
},
|
|
|
|
decimals: (_: any, { blockHash, token }: { blockHash: string, token: string }) => {
|
|
log('decimals', blockHash, token);
|
|
return indexer.decimals();
|
|
},
|
|
|
|
events: async (_: any, { blockHash, token, name }: { blockHash: string, token: string, name: string }) => {
|
|
log('events', blockHash, token, name || '');
|
|
return indexer.getEvents(blockHash, token, name);
|
|
}
|
|
}
|
|
};
|
|
};
|