Skip to content
Strongly πŸ’ͺ Typed Fast and lightweight JSON RPC 2.0 Client for Nodejs
TypeScript Shell
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
scripts published to npm `jsonrpc-ts` πŸŽ‰ Oct 5, 2018
src published v0.2.0 πŸŽ‰ Jun 10, 2019
tests published v0.2.0 πŸŽ‰ Jun 10, 2019
.gitignore published to npm `jsonrpc-ts` πŸŽ‰ Oct 5, 2018
.prettierrc Initial commit Oct 4, 2018
.travis.yml Coverage 100% πŸŽ‰ Oct 5, 2018
LICENSE
README.md published v0.2.0 πŸŽ‰ Jun 10, 2019
jest.json Coverage 100% πŸŽ‰ Oct 5, 2018
package-lock.json published v0.2.0 πŸŽ‰ Jun 10, 2019
package.json published v0.2.0 πŸŽ‰ Jun 10, 2019
tsconfig.json published to npm `jsonrpc-ts` πŸŽ‰ Oct 5, 2018
tslint.json

README.md

JSONRPC Typescript

Build Status Greenkeeper badge Coverage Status npm version

Strongly πŸ’ͺ Typed JSON RPC 2.0 Client for Nodejs

Fully tested to comply with the official JSON-RPC 2.0 specification

Quick Overview

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.

Install

npm i jsonrpc-ts

Usage

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
You can’t perform that action at this time.