Strongly 💪 Typed JSON RPC 2.0 Client for Nodejs
Fully tested to comply with the official JSON-RPC 2.0 specification
By Declaring events using a simple interface mapping methods names to their parameters to get Strongly Typed, Fast and Modern Rpc client for your service.
npm i jsonrpc-ts First you need to define your Methods, that could be achieved by creating an interface of methods name and there parameters.
// we have a service that can do math, // and it has this methods interface MathService { // a method called sum that accepts 2 args of type number sum: [number, number]; // methods can have named paramerter too. sub: { left: number; right: number }; // or if you need return type, you can have that too :) sumWithReturnType: ({ x, y }: { x: number; y: number }) => number; }then import RpcClient and start making requests
import { RpcClient } from 'jsonrpc-ts'; const rpcClient = new RpcClient<MathService>({ url: '...' }); // now you have a strongly typed methods. // try to change [3, 2] to ['3', '2'] and the typescript compiler will catch you ! const response = await rpcClient.makeRequest({ method: 'sum', params: [3, 2], id: 1, jsonrpc: '2.0', }); // response.data.result === 5 // response2.data.result has type of number :) const response2 = await rpcClient.makeRequest({ method: 'sumWithReturnType', params: { x: 3, y: 2 }, id: 2, jsonrpc: '2.0', }); // response2.data.result === 5