0.7.3 • Published 2 years ago

@proximaone/stream-client-js-v1 v0.7.3

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

StreamDB Client JS

Installation

StreamDB Client requires Node.js v12+ to run.

Install @proximaone/streamdb-client-js package

yarn add @proximaone/streamdb-client-js

Install the dependencies and devDependencies.

yarn install

Client Usage

Client for StreamDB uses generated gRPC stubs to provide fast access to data.

Installation

import { StreamClient } from "../src";
import { map } from "rxjs";


async function main() {
    console.log(`Running stream client for a simple example...`)
    const client = new StreamClient({});
    const name = "eth-main-blockheader0.new-runtime"
    console.log(`Getting stream: ${name}...`)
    const stream =  await client.getStream(name)
    console.log(`Success! Fetched stream ${stream.toString()}`)
    const height = stream.stats.start.height
    const offset = await client.findOffset(name, {height: Number(height)})
    console.log(`Consuming stream ${name} from offset ${offset}`)
    const pausable = await client.streamEvents(name, offset) 
    pausable.observable.pipe(map(event => {
            const e =  {
              offset: event.offset,
              payload: decodeJson(event.payload),
              undo: event.undo,
              timestamp: event.timestamp,
            };
            console.log(e)
            return e
    }))
}
function decodeJson(binary: Uint8Array | string): any {
    const buffer =
      typeof binary == "string"
        ? Buffer.from(binary, "base64")
        : Buffer.from(binary);
    return JSON.parse(buffer.toString("utf8"));
  }

  main().catch(err => console.error(err));