JSON-RPC messages handler.
yarn add @erebos/rpc-handler
import createHandler from '@erebos/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'}
Imported from @erebos/rpc-base
Imported from @erebos/rpc-base
type ErrorHandler = <C = any, P = any>(ctx: C, msg: RPCRequest<P>, error: Error) => void
type MethodHandler = <C = any, P = any, R = any>(ctx: C, params: P) => R | Promise<R>
type NotificationHandler = <C = any, P = any>(ctx: C, msg: RPCRequest<P>) => void
interface MethodWithParams {
params?: Record<string, any> | undefined
handler: MethodHandler
}
type Methods = Record<string, MethodHandler | MethodWithParams>
type HandlerParams = {
methods: Methods,
onHandlerError?: ErrorHandler | undefined,
onInvalidMessage?: NotificationHandler | undefined,
onNotification?: NotificationHandler | undefined,
validatorOptions?: any | undefined,
}
type HandlerFunc = <C = any, P = any, R = any, E = any>(
ctx: C,
req: RPCRequest<P>,
) => Promise<RPCResponse<R, E>>
Default export of the library
Arguments
params: HandlerParams
Returns HandlerFunc
Tries to parse a JSON string, or throws a RPCError with code -32700
(parse error)
Arguments
input: string
Returns T = any
MIT