@mainframe/rpc-handler
JSON-RPC handler
Last updated 2 years ago by paul_lecam .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @mainframe/rpc-handler 
SYNC missed versions from official npm registry.

rpc-handler

JSON-RPC messages handler.

Installation

yarn add @mainframe/rpc-handler

Usage

import createHandler from '@mainframe/rpc-handler'

const handle = createHandler({
  methods: {
    hello: {
      params: {
        name: 'string'
      },
      handler(ctx, params) => `hello ${params.name}`,
    },
    ping: () => 'pong',
  },
})

const context = {}

const incomingMessage = {
  jsonrpc: '2.0',
  id: 'test',
  method: 'hello',
  params: {
    name: 'bob',
  },
}

const outgoingMessage = await handle(context, incomingMessage)
// outgoingMessage = {jsonrpc: '2.0', id: 'test', result: 'hello bob'}

Types

RPCRequest

Imported from @mainframe/rpc-base

RPCResponse

Imported from @mainframe/rpc-base

ErrorHandler

type ErrorHandler = <C = any, P = any>(ctx: C, msg: RPCRequest<P>, error: Error) => void

MethodHandler

type MethodHandler = <C = any, P = any, R = any>(ctx: C, params: P) => R | Promise<R>

NotificationHandler

type NotificationHandler = <C = any, P = any>(ctx: C, msg: RPCRequest<P>) => void

MethodWithParams

interface MethodWithParams {
  params?: Record<string, any> | undefined
  handler: MethodHandler
}

Methods

type Methods = Record<string, MethodHandler | MethodWithParams>

HandlerParams

type HandlerParams = {
  methods: Methods,
  onHandlerError?: ErrorHandler | undefined,
  onInvalidMessage?: NotificationHandler | undefined,
  onNotification?: NotificationHandler | undefined,
  validatorOptions?: any | undefined,
}

HandlerFunc

type HandlerFunc = <C = any, P = any, R = any, E = any>(
  ctx: C,
  req: RPCRequest<P>,
) => Promise<RPCResponse<R, E>>

API

createHandler()

Default export of the library

Arguments

  1. params: HandlerParams

Returns HandlerFunc

parseJSON()

Tries to parse a JSON string, or throws a RPCError with code -32700 (parse error)

Arguments

  1. input: string

Returns T = any

License

MIT

Current Tags

  • 0.3.0                                ...           latest (2 years ago)

4 Versions

  • 0.3.0                                ...           2 years ago
  • 0.2.1                                ...           2 years ago
  • 0.2.0                                ...           2 years ago
  • 0.1.0                                ...           2 years ago
Downloads
Today 0
This Week 0
This Month 3
Last Day 0
Last Week 0
Last Month 2
Dependencies (4)
Dev Dependencies (0)
None
Dependents (1)

Copyright 2014 - 2016 © taobao.org |