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

0.6.1 • Public • Published

RPC transport

Bridge between transports and RPC utilities

Installation

npm install @ceramicnetwork/rpc-transport

Usage

import { createClient, serve } from '@ceramicnetwork/rpc-transport'

// Methods type shared between the client and server
type Methods = {
  foo: { result: string }
}

// Using requests and responses subjects here or demonstration purposes only
const requests = new Subject<RPCRequest<Methods, keyof Methods>>()
const responses = new Subject<RPCResponse<Methods, keyof Methods>>()
const clientTransport = new TransportSubject(responses, requests)
const serverTransport = new TransportSubject(requests, responses)

// Start server handling methods on given transport
const server = serve<null, Methods>(serverTransport, null, {
  foo: () => 'bar',
})

class TestClient {
  constructor(transport: TransportSubject) {
    this.client = createClient<Methods>(transport)
  }

  async foo() {
    return await this.client.request('foo')
  }
}

const client = new TestClient()
await client.foo() // 'bar'

// Stop server when done
server.unsubscribe()

Types

RPCClientTransport

Uses RPCMethods, RPCRequest and RPCResponse

type RPCClientTransport<Methods extends RPCMethods> = TransportSubject<
  RPCResponse<Methods, keyof Methods>,
  RPCRequest<Methods, keyof Methods>
>

RPCServerTransport

Uses RPCMethods, RPCRequest and RPCResponse

type RPCClientTransport<Methods extends RPCMethods> = TransportSubject<
  RPCRequest<Methods, keyof Methods>,
  RPCResponse<Methods, keyof Methods>
>

APIs

createSendRequest()

Type parameters

  1. Methods extends RPCMethods

Arguments

  1. transport: RPCClientTransport<Methods>

Returns SendRequestFunc<Methods>

createClient()

Type parameters

  1. Methods extends RPCMethods

Arguments

  1. transport: RPCClientTransport<Methods>

Returns RPCClient<Methods>

createHandlerOperator()

Type parameters

  1. Context
  2. Methods extends RPCMethods

Arguments

  1. context: Context
  2. methods: HandlerMethods<Context, Methods>
  3. options?: HandlerOptions<Context, Methods>

Returns OperatorFunction<RPCRequest<Methods, keyof Methods>, RPCResponse<Methods, keyof Methods> | null>

serve()

Type parameters

  1. Context
  2. Methods extends RPCMethods

Arguments

  1. transport: RPCServerTransport<Methods>
  2. context: Context
  3. methods: HandlerMethods<Context, Methods>
  4. options?: HandlerOptions<Context, Methods>

Returns Subscription

License

Apache-2.0 OR MIT

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.6.1
    121
    • latest
  • 0.6.1
    121
    • next

Version History

Package Sidebar

Install

npm i @ceramicnetwork/rpc-transport

Weekly Downloads

1,795

Version

0.6.1

License

(Apache-2.0 OR MIT)

Unpacked Size

7.75 kB

Total Files

4

Last publish

Collaborators

  • dav1do
  • ceramic-velvetshark
  • cb3box
  • jpham2023
  • npm.3box
  • smrz2001
  • oed
  • paul_lecam
  • stbrody
  • ukstv