@odpf/stencil

    0.1.3 • 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 @odpf/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/odpf/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

    Install

    npm i @odpf/stencil

    DownloadsWeekly Downloads

    4

    Version

    0.1.3

    License

    Apache-2.0

    Unpacked Size

    16.5 kB

    Total Files

    9

    Last publish

    Collaborators

    • harikris
    • rishabh09
    • osfreak
    • ravisuhag