@raystack/stencil

0.5.1 • Public • Published

Stencil nodejs client

Stencil nodejs client package provides a store to lookup protobuf descriptors and options to keep the protobuf descriptors upto date.

It has following features

  • Ability to refresh protobuf descriptors in specified intervals
  • Support to download descriptors from multiple urls

Installation

npm install --save @raystack/stencil

Usage

Creating a client

const { Stencil } = require('stencil');

const url = 'http://url/to/proto/descriptorset/file';
const client = await Stencil.getInstance(url, {
  shouldRefresh: true,
  refreshInterval: 43200 // 12 hrs
});

Creating a multiURLClient

const { MultiURLStencil } = require('stencil');

const url1 = 'http://url/to/proto/descriptorset/file';
const url2 = 'http://url/to/proto/descriptorset/file2';
const client = await MultiURLStencil.getInstance([url1, url2], {
  shouldRefresh: true,
  refreshInterval: 43200 // 12 hrs
});

Get proto descriptor type

const { Stencil } = require('stencil');

const url = 'http://url/to/proto/descriptorset/file';
const client = await Stencil.getInstance(url, {
  shouldRefresh: false
});
const type = client.getType('google.protobuf.DescriptorProto');

Encode/Decode message

Let's say we want to encode message for below proto message defniniton

syntax = "proto3";

package test;

message One {
  int64 field_one = 1;
}
const { Stencil } = require('stencil');

const url = 'http://url/to/proto/descriptorset/file';
const client = await Stencil.getInstance(url, {
  shouldRefresh: false
});
const type = client.getType('test.One');
// Encode
const msg = { field_one: 10 };
const errs = type.verify(msg);
if errs {
   throw new Error(`unable to serialize message: ${errs}`);
}
const encodedBuffer = type.encode(msg).finish();
// Decode
const decodedType = type.decode(encodedBuffer);
console.log(decodedType.toObject())

Setting up development environment

Prerequisite Tools

  1. Clone the repo

    $ git clone https://github.com/raystack/stencil
    $ cd stencil/clients/js
  2. Install dependencies

    $ npm install
  3. Run the tests. All of the tests are written with jest.

    $ npm test

Versioning

We use SemVer for versioning. For the versions available, see the tags.

License

Stencil node client is released under the Apache License 2.0. See LICENSE

Package Sidebar

Install

npm i @raystack/stencil

Weekly Downloads

2

Version

0.5.1

License

Apache-2.0

Unpacked Size

22.2 kB

Total Files

11

Last publish

Collaborators

  • osfreak
  • ravisuhag