@mainframe/rpc-handler
v0.3.0
Published
JSON-RPC handler
Downloads
14
Keywords
Readme
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
params: HandlerParams
Returns HandlerFunc
parseJSON()
Tries to parse a JSON string, or throws a RPCError with code -32700
(parse error)
Arguments
input: string
Returns T = any
License
MIT