@mainframe/rpc-handler
    TypeScript icon, indicating that this package has built-in type declarations

    0.3.0 • Public • Published

    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

    Keywords

    none

    Install

    npm i @mainframe/rpc-handler

    DownloadsWeekly Downloads

    1

    Version

    0.3.0

    License

    MIT

    Unpacked Size

    8.15 kB

    Total Files

    5

    Last publish

    Collaborators

    • aclarke
    • diogoperillo
    • howleysv
    • mosic
    • paul_lecam
    • sarahwiley