Skip to content

Commit

Permalink
chore: Remove Proxy from json rpc client
Browse files Browse the repository at this point in the history
Using a proxy as a json rpc client means that dynamic checks for
functions in the returned object fail. For instance, `typeof
pxe.getTransactions` returns true even if the method is not part of the
pxe schema, since the proxy creates a fake function for every single
property requested. But then it fails when we try to invoke it.

Since we now have schemas, we can drop usage of the proxy and just
create an object with exactly the methods we need.
  • Loading branch information
spalladino committed Dec 9, 2024
1 parent 015ec0e commit edfaa83
Showing 1 changed file with 5 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,10 @@ export function createSafeJsonRpcClient<T extends object>(
return (schema as ApiSchema)[methodName].returnType().parse(res.result);
};

// Intercept any RPC methods with a proxy
const proxy = new Proxy(
{},
{
get: (target, method: string) => {
if (['then', 'catch'].includes(method)) {
return Reflect.get(target, method);
}
return (...params: any[]) => request(method, params);
},
},
) as T;
const proxy: any = {};
for (const method of Object.keys(schema)) {
proxy[method] = (...params: any[]) => request(method, params);
}

return proxy;
return proxy as T;
}

0 comments on commit edfaa83

Please sign in to comment.