1.0.0 • Published 2 years ago

@a-mehrabi/aranode-protobuf-parser v1.0.0

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

Proto PARSER Module

proto parser implementation for aranode flow engine.

Table of Contents

Installation

To install this module in your aranode project, you just need to add the package using following command:

$ yarn add @a-mehrabi/aranode-proto-parser

After that, when you want to use it, you must include it in custom modules like the following:

path: .env

ARANODE_CUSTOM_MODULES=@a-mehrabi/aranode-proto-parser

Usage

For using proto encoder or decoder, you need to use encoder or decoder associated description:

  1. proto parser config config description (protoParserConfig)
  2. proto encoder flow description (protoEncoder)
  3. proto decoder flow description (protoDecoder)

proto parser config

Proto parser config description enables you to define the config of the proto parser, including includePaths, protoFilePath and keepCase config.

You don't define configs of the proto encoder and decoder in this config.

version: 1
kind: config
name: proto-parser

config:
  protoParser:
    includePaths:
      - 'protos'
    protoFilePath: 'awesome.proto'
    keepCase: false

proto encoder

proto encoder flow description enables you to define the proto encoder as a flow node, including protoPath, etc.
proto encoder, encodes javascript literal object to proto buffer.

version: 1
kind: flow
name: greeter-flow
entryPoint: start

flow:
  start:
    transform:
      path: 'dist/get-payload-transformer.js'
    nextNode: initProtoEncoder

  initProtoEncoder:
    protoEncoder:
      protoParser: proto-parser
      protoPath: 'awesomepackage.AwesomeMessage'
    nextNode: checkPayload

  checkPayload:
    transform:
      path: 'dist/check-payload-transformer.js'
    nextNode: response

  response:
    port:
      name: greet-in-port
      type: inbound
      response: true
      end: true
    terminal: true

proto decoder

proto decoder flow description enables you to define the proto decoder as a flow node.
proto decoder, decodes proto buffer to javascript literal object.

version: 1
kind: flow
name: greeter-flow
entryPoint: start

flow:
  start:
    entry: true
    transform:
      path: 'dist/get-payload-transformer.js'
    nextNode: initProtoEncoder

  initProtoEncoder:
    protoEncoder:
      protoParser: proto-parser
      protoPath: 'awesomepackage.AwesomeMessage'
    nextNode: initProtoDecoder

  initProtoDecoder:
    protoDecoder:
      protoParser: proto-parser
      protoPath: 'awesomepackage.AwesomeMessage'
      defaults: true
      arrays: true
      objects: true
      oneofs: true
    nextNode: checkPayload

  checkPayload:
    transform:
      path: 'dist/check-payload-transformer.js'
    nextNode: response

  response:
    port:
      name: greet-in-port
      type: inbound
      response: true
      end: true
    terminal: true

API

protoParserConfig

Type: config description

Options:

  • includePaths (string[]), required

    Directories and sub-directories containing proto files

  • protoPath (string), required

    Proto file path

  • keepCase (boolean), optional, default = true

    Keeps field casing instead of converting to camel case

protoEncoder

Type: flow description

Options:

  • protoParser (string), required

    Proto parser name

  • protoPath (string), required

    Proto message path

protoDecoder

Type: flow description

Options:

  • protoParser (string), required

    Proto parser name

  • protoPath (string), required

    Proto message path

  • defaults (boolean), optional

    Includes default values

  • arrays (boolean), optional

    Populates empty arrays (repeated fields) even if defaults = false

  • objects (boolean), optional

    Populates empty objects (map fields) even if defaults = false

  • oneofs (boolean), optional

    Includes virtual oneof fields set to the present field's name