0.7.0 • Published 1 year ago

@openrealm/web v0.7.0

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

@openrealm/hub-web

Deprecation Notice: grpc-web has been deprecated and is no longer supported. Please use the HTTP API instead. This original document has been kept only for historical reference.

A lightweight, fast Typescript interface for Openrealm Hubs. Designed to work with Hubble and any other Hub that implements the Openrealm protocol.

Features

  • Call any Hub endpoint from a browser environment using gRPC-Web.
  • Serializes and deserializes Openrealm protobufs into Javascript objects.
  • Has helpers to create and sign Openrealm messages.
  • Written entirely in TypeScript, with strict types for safety.

Installation

Install @openrealm/hub-web with the package manager of your choice

npm install @openrealm/hub-web
yarn add @openrealm/hub-web
pnpm install @openrealm/hub-web

Documentation

The @openrealm/hub-web APIs are largely the same as @openrealm/hub-nodejs. Read the @openrealm/hub-nodejs documentation and browse code examples. We're also including sample @openrealm/hub-web code below as well as a list of differences with the other package.

Getting start: fetching casts

import { getHubRpcClient } from '@openrealm/hub-web';

(async () => {
  const client = getHubRpcClient('https://testnet1.openrealm.xyz:2285');

  const castsResult = await client.getCastsByQid({ qid: 15 });

  castsResult.map((casts) => casts.messages.map((cast) => console.log(cast.data?.castAddBody?.text)));
})();

Instantiating a client

The method to construct a Hub gRPC client differs from @openrealm/hub-nodejs. Use getHubRpcClient, which returns a Hub gRPC-Web client. Make sure that the gRPC server you're connecting to implements a gRPC-Web proxy. The standard is to expose the gRPC-Web proxy at port 2285.

Usage

import { getHubRpcClient } from '@openrealm/hub-web';

(async () => {
  const client = getHubRpcClient('https://testnet1.openrealm.xyz:2285');

  // If you're using gRPC-Web from a Nodejs environment, add a second false parameter
  // const nodeClient = getHubRpcClient('https://testnet1.openrealm.xyz:2285', false);
})();

Returns

TypeDescription
HubRpcClientA new gRPC-Web Client instance.

Parameters

NameTypeDescription
urlstringAddress and RPC port string (e.g. https://testnet1.openrealm.xyz:2285)
isBrowserbooleanOptional parameter indicating whether to use the gRPC-Web Nodejs transport

Streaming hub events

gRPC-Web hub event streams are instances of the Observable class in @openrealm/hub-web.

Usage

import { getHubRpcClient } from '@openrealm/hub-web';

async () => {
  const client = getHubRpcClient('https://testnet1.openrealm.xyz:2285');

  const result = client.subscribe({ eventTypes: [HubEventType.PRUNE_MESSAGE], fromId: 0 });

  result.map((observable) => {
    observable.subscribe({
      next(event: HubEvent) {
        console.log('received event', event);
      },
      error(err) {
        console.error(err);
      },
    });
  });
};

Returns

TypeDescription
HubResult<Observable<HubEvent>>An Observable stream wrapped in a Result

Parameters

NameTypeDescription
fromIdnumber(Optional) ID of the hub event to start streaming from. A fromId of 0 will stream all events from the hub, and passing no fromId will start the stream from the present moment.
eventTypesHubEventType[]Array of hub event types to return. If eventTypes is [], all event types will be returned.

License

MIT License