New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@raystack/stencil

Package Overview
Dependencies
Maintainers
2
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@raystack/stencil

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

latest
npmnpm
Version
0.5.1
Version published
Maintainers
2
Created
Source

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

  • Node.js (version >= 12.0.0)
  • Git
  • Clone the repo

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

    $ npm install
    
  • 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

Keywords

stencil

FAQs

Package last updated on 05 Jun 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts