erebos

erebos

  • Docs
  • Examples
  • API
  • Help
  • GitHub

›RPC tools

Docs

  • Introduction
  • Getting started

Swarm examples

  • File storage examples
  • Feeds examples
  • Communications examples

Swarm APIs and CLI

  • Swarm client
  • Individual APIs
  • Bzz API
  • Bzz Feed API
  • Bzz FS API
  • Pss API
  • CLI

Data structures

  • Data structures
  • Feed lists
  • Document synchronization
  • Timeline

Timeline protocol

  • Timeline specification
  • Timeline example
  • Timeline API

Utility libraries

  • Hexadecimal encoding
  • Keccak256 hashing
  • SECP256k1 signing
  • Hierarchical Deterministic wallet

RPC tools

  • RPC clients, handler and transport
  • Base RPC class and types
  • RPC Errors
  • RequestRPC client (stateless)
  • StreamRPC client (stateful)
  • RPC handler
  • RPC client over HTTP
  • RPC client over WebSocket
  • RPC client over IPC
  • RPC client for browsers
  • RPC client for Node
  • RPC client for Electron
  • HTTP transport
  • WebSocket transport
  • IPC transport
  • Electron transport
Edit

RPC handler

Purpose

A JSON-RPC messages handler, supporting a stateful context and inputs validation.

Installation

npm install @erebos/rpc-handler

Usage

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'}

Interfaces and types

RPCRequest

Imported from @erebos/rpc-base

RPCResponse

Imported from @erebos/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

interface 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()

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

← StreamRPC client (stateful)RPC client over HTTP →
  • Purpose
  • Installation
  • Usage
  • Interfaces and types
    • RPCRequest
    • RPCResponse
    • ErrorHandler
    • MethodHandler
    • NotificationHandler
    • MethodWithParams
    • Methods
    • HandlerParams
    • HandlerFunc
  • API
    • createHandler()
    • parseJSON()
Docs
Getting StartedAPI ReferenceCLI
Community
Gitter chatGitHub repositoryStar
Swarm
Official documentationHTTP gatewayDevelopment chat