Skip to content
Parse and Serialize JSON-RPC2 messages in node.js, or browser.
JavaScript TypeScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
example format and fix bugs Jul 13, 2018
test fixes bug where non-string method name would yield the wrong error Mar 7, 2019
.gitignore
.travis.yml fixed export for mjs, #1 May 7, 2018
LICENSE
README.md fixed readme, #6 Jan 27, 2019
jsonrpc.d.ts exports more typings, #11 Apr 15, 2019
jsonrpc.js fixes bug where non-string method name would yield the wrong error Mar 7, 2019
jsonrpc.ts exports more typings, #11 Apr 15, 2019
package-lock.json exports more typings, #11 Apr 15, 2019
package.json exports more typings, #11 Apr 15, 2019
tsconfig.json Fix parameter type for parseObject, #7 Mar 2, 2019
tslint.json Fix parameter type for parseObject, #7 Mar 2, 2019

README.md

JSON-RPC lite

Parse and Serialize JSON-RPC2 messages in node.js or browser.

Inspired by https://github.com/soggie/jsonrpc-serializer

NPM version Build Status Downloads

A implementation of JSON-RPC 2.0 specifications

Install

npm install jsonrpc-lite

API

const jsonrpc = require('jsonrpc-lite')

jsonrpc.request(id, method[, params])

Creates a JSON-RPC 2.0 request object, return JsonRpc object.

  • id: {String|Integer}
  • method: {String}
  • params: {Object|Array}, optional
const requestObj = jsonrpc.request('123', 'update', {list: [1, 2, 3]})
// {
//   jsonrpc: '2.0',
//   id: '123',
//   method: 'update',
//   params: {list: [1, 2, 3]}
// }

jsonrpc.notification(method[, params])

Creates a JSON-RPC 2.0 notification object, return JsonRpc object.

  • method: {String}
  • params: {Object|Array}, optional
const notificationObj = jsonrpc.notification('update', {list: [1, 2, 3]})
// {
//   jsonrpc: '2.0',
//   method: 'update',
//   params: {list: [1, 2, 3]}
// }

jsonrpc.success(id, result)

Creates a JSON-RPC 2.0 success response object, return JsonRpc object.

  • id: {String|Integer}
  • result: {Mixed}
const successObj = jsonrpc.success('123', 'OK')
// {
//   jsonrpc: '2.0',
//   id: '123',
//   result: 'OK',
// }

jsonrpc.error(id, error)

Creates a JSON-RPC 2.0 error response object, return JsonRpc object.

  • id: {String|Integer}
  • error: {JsonRpcError}
const errorObj = jsonrpc.error('123', new jsonrpc.JsonRpcError('some error', 99))
// {
//   jsonrpc: '2.0',
//   id: '123',
//   error: {code: 99, 'message': 'some error'},
// }

jsonrpc.parse(message)

Takes a JSON-RPC 2.0 payload (string) and tries to parse it into a JSON. If successful, determine what object is it (response, notification, success, error, or invalid), and return it's type and properly formatted object.

  • message: {String}

return an array, or an object of this format:

single parsed request:

{
  type: 'request',
  payload: {
    jsonrpc: '2.0',
    id: 123,
    method: 'update',
    params: {}
  }
}

batch parsed result:

[{
  type: 'request',
  payload: {
    jsonrpc: '2.0',
    id: '123',
    method: 'update',
    params: [1, 2, 3]
  }
}, {
  type: 'notification',
  payload: {
    jsonrpc: '2.0',
    method: 'update',
    params: {_id: 'xxx'}
  }
}, {
  type: 'success',
  payload: {
    jsonrpc: '2.0',
    id: '123',
    result: 'OK'
  }
}, {
  type: 'error',
  payload: {
    jsonrpc: '2.0',
    id: '123',
    error: [jsonrpc.JsonRpcError object]
  }
}, {
  type: 'invalid',
  payload: [jsonrpc.JsonRpcError object]
}]

jsonrpc.parseObject(message)

Takes a JSON-RPC 2.0 payload (Object) and tries to parse it into a JSON. If successful, determine what object is it (response, notification, success, error, or invalid), and return it's type and properly formatted object.

  • message: {Object}

return an JsonRpcParsed object with type and payload.

Class: jsonrpc.JsonRpc()

Class: jsonrpc.JsonRpcError(message, code[, data])

Create a JsonRpcError instance.

  • message: {String}
  • code: {Integer}
  • data: {Mixed} optional
const error = new jsonrpc.JsonRpcError('some error', 999)

Class Method: jsonrpc.JsonRpcError.invalidRequest([data])

Class Method: jsonrpc.JsonRpcError.methodNotFound([data])

Class Method: jsonrpc.JsonRpcError.invalidParams([data])

Class Method: jsonrpc.JsonRpcError.internalError([data])

Class Method: jsonrpc.JsonRpcError.parseError([data])

You can’t perform that action at this time.