Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Strongly 💪 Typed Fast and lightweight JSON RPC 2.0 Client for Nodejs

Topics

Resources

Stars

66 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages