@yubing744/rooch-sdk
Version:
68 lines (67 loc) • 1.47 kB
JavaScript
class FuncFilter {
constructor(func) {
this.func = func;
}
init() {
}
destroy() {
}
async doFilter(request, chain) {
return await this.func(request, chain);
}
}
class FilteredProvider {
constructor(target, filters) {
this.target = target;
this.filters = filters;
for (const filter of this.filters) {
filter.init();
}
}
getRpcApiVersion() {
return this.target.getRpcApiVersion();
}
getChainId() {
return this.target.getChainId();
}
executeViewFunction(params) {
return this.target.executeViewFunction(params);
}
getStates(accessPath) {
return this.target.getStates(accessPath);
}
listStates(params) {
return this.target.listStates(params);
}
sendRawTransaction(playload) {
let index = 0;
const chain = {
doFilter: async (req) => {
if (index < this.filters.length) {
const filter = this.filters[index++];
return await filter.doFilter(req, chain);
} else {
return await this.target.sendRawTransaction(req);
}
}
};
return new Promise(async (resolve, reject) => {
try {
let response = await chain.doFilter(playload);
resolve(response);
} catch (error) {
reject(error);
}
});
}
destroy() {
for (const filter of this.filters) {
filter.destroy();
}
}
}
export {
FilteredProvider,
FuncFilter
};
//# sourceMappingURL=filtered-client.js.map