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:
- proto parser config config description (protoParserConfig)
- proto encoder flow description (protoEncoder)
- 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