{"_id":"@a-mehrabi/aranode-protobuf-parser","_rev":"1-51f3e7542e5fb0279ddc9274187765b4","name":"@a-mehrabi/aranode-protobuf-parser","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@a-mehrabi/aranode-protobuf-parser","version":"1.0.0","license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","publishConfig":{"access":"public"},"scripts":{"build":"tsc --build","build:prod":"tsc --build","test":"jest lib/*","release":"semantic-release"},"dependencies":{"@a-mehrabi/aranode-types":"workspace:*","class-transformer":"^0.4.0","class-validator":"^0.13.1","protobufjs":"^6.11.2"},"devDependencies":{"@types/jest":"^26.0.23","jest":"^26.6.3","jest-junit":"12.0.0","jest-mock-extended":"1.0.14","semantic-release":"^18.0.1","semantic-release-monorepo":"^7.0.5","ts-jest":"26.5.5","typescript":"4.2.3"},"aranode":{"version":"^0.5.0-beta"},"gitHead":"e88a63821bb3f25a024cd786b7eb6198166bd825","description":"proto parser implementation for aranode flow engine.","_id":"@a-mehrabi/aranode-protobuf-parser@1.0.0","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-1DxrmuEmELDkVeaYZGIgM/8053nnh5Kk6V5UdN8j5kT+jyur7Iyc0M3h5Bg3KhfrSQWa+t5SYZBTpG8pYpGQtA==","shasum":"4ef726a3b9a4f1db7b7c11e3c685be4fe2bcb3ff","tarball":"https://registry.npmjs.org/@a-mehrabi/aranode-protobuf-parser/-/aranode-protobuf-parser-1.0.0.tgz","fileCount":41,"unpackedSize":25241,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzGMACRA9TVsSAnZWagAADkEP/A2hSSFnpbl4udMO1v4u\nxNf8pt3k++sfsY2w915PBCguG1QlCYWTfb1ev02Fc5OvAKlaTw/xohrmpSMt\nWOrq925gnYmJvRExcLT1Bra9iWrKEnW+70b2aigBy7BIY3oUHFbWVF0MiTX7\nr5wLNp5ItoEKOMyNpK7NWHF7/YenSkFRXxiwIOzpmQI1oPSVw5lzrCsNpy26\n/PJ+5dptYFDwkkqu8NBG5lkQGWrqvi7nd3Fe5sHyooGCfGklIy/ntLwVQqLs\nVz9Z5bypo6Gr4tB1EI5UNhgmX6oEZm9QgOv0L+jXQz/dcyfMBsOKZBUkG4OC\n1MjJGBlXOpdYsShUQrRHCky6JTpL6wRKnErjGmhrlFkXGazHDroWQIrQ4XZP\nbqaZdaHm88FJsto5JWHvBbSimAmxJnAYR3zsl7vF/n6UKvNbMCpkfGPEsBd0\n6AdD2aWgtYoNs1wnltt+t9Wsa14y3yiISNBe4oVIx0IhgGPU6tpdGKJrKInH\nx31E0mSwQqCi7a2EpRtVuEp8YHPnMqmEu1ZODw50REdzCmTa+dJS1+vXdhZV\n9fEz3Ph7aINahEoDWn6kJo1Yr7rSXrUSjHEFdWtNh28hDKm8TqzXhDrdWReR\nQKLgzt9rAXT6HoW5zj6L25J2ZuYIP8Snkw1nCzM2C9b0pGoJTwZlXrs1BFQt\nopQ1\r\n=Eieo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBmF19nNuzY77Qp8foClvzXvwirbLu6gmW/dI/qvSDJSAiB9ZelopdmFRxP+wEuDo/kDB2+kkt6mggXgn4uYW7tBbw=="}]},"_npmUser":{"name":"a-mehrabi","email":"a.mehrabi.ae@gmail.com"},"directories":{},"maintainers":[{"name":"a-mehrabi","email":"a.mehrabi.ae@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/aranode-protobuf-parser_1.0.0_1640784640382_0.34412393281662634"},"_hasShrinkwrap":false}},"time":{"created":"2021-12-29T13:30:40.342Z","1.0.0":"2021-12-29T13:30:40.505Z","modified":"2022-04-04T10:52:23.352Z"},"maintainers":[{"name":"a-mehrabi","email":"a.mehrabi.ae@gmail.com"}],"description":"proto parser implementation for aranode flow engine.","license":"MIT","readme":"# Proto PARSER Module\n\nproto parser implementation for aranode flow engine.\n\n## Table of Contents\n\n- [Proto PARSER Module](#proto-parser-module)\n  - [Table of Contents](#table-of-contents)\n  - [Installation](#installation)\n  - [Usage](#usage)\n    - [proto parser config](#proto-parser-config)\n    - [proto encoder](#proto-encoder)\n    - [proto decoder](#proto-decoder)\n  - [API](#api)\n    - [protoParserConfig](#protoparserconfig)\n    - [protoEncoder](#protoencoder)\n    - [protoDecoder](#protodecoder)\n\n## Installation\n\nTo install this module in your aranode project,\nyou just need to add the package using following command:\n\n```bash\n$ yarn add @a-mehrabi/aranode-proto-parser\n```\n\nAfter that, when you want to use it,\nyou must include it in custom modules like the following:\n\n<sub><sup>path: .env</sub></sup>\n\n```env\nARANODE_CUSTOM_MODULES=@a-mehrabi/aranode-proto-parser\n```\n\n## Usage\n\nFor using proto encoder or decoder, you need to use encoder or decoder associated description:\n\n1. [proto parser config](#proto-parser-config) config description ([protoParserConfig](#kafkaclientconfig))\n2. [proto encoder](#proto-encoder) flow description ([protoEncoder](#protoEncoder))\n3. [proto decoder](#proto-decoder) flow description ([protoDecoder](#protoDecoder))\n\n### proto parser config\n\nProto parser config description enables you to define the config of the proto parser, including includePaths, protoFilePath and keepCase config.\n\nYou don't define configs of the proto encoder and decoder in this config.\n\n```yaml\nversion: 1\nkind: config\nname: proto-parser\n\nconfig:\n  protoParser:\n    includePaths:\n      - 'protos'\n    protoFilePath: 'awesome.proto'\n    keepCase: false\n```\n\n### proto encoder\n\nproto encoder flow description enables you to define the proto encoder as a flow node, including protoPath, etc.  \nproto encoder, encodes javascript literal object to proto buffer.\n\n```yaml\nversion: 1\nkind: flow\nname: greeter-flow\nentryPoint: start\n\nflow:\n  start:\n    transform:\n      path: 'dist/get-payload-transformer.js'\n    nextNode: initProtoEncoder\n\n  initProtoEncoder:\n    protoEncoder:\n      protoParser: proto-parser\n      protoPath: 'awesomepackage.AwesomeMessage'\n    nextNode: checkPayload\n\n  checkPayload:\n    transform:\n      path: 'dist/check-payload-transformer.js'\n    nextNode: response\n\n  response:\n    port:\n      name: greet-in-port\n      type: inbound\n      response: true\n      end: true\n    terminal: true\n```\n\n### proto decoder\n\nproto decoder flow description enables you to define the proto decoder as a flow node.  \nproto decoder, decodes proto buffer to javascript literal object.\n\n```yaml\nversion: 1\nkind: flow\nname: greeter-flow\nentryPoint: start\n\nflow:\n  start:\n    entry: true\n    transform:\n      path: 'dist/get-payload-transformer.js'\n    nextNode: initProtoEncoder\n\n  initProtoEncoder:\n    protoEncoder:\n      protoParser: proto-parser\n      protoPath: 'awesomepackage.AwesomeMessage'\n    nextNode: initProtoDecoder\n\n  initProtoDecoder:\n    protoDecoder:\n      protoParser: proto-parser\n      protoPath: 'awesomepackage.AwesomeMessage'\n      defaults: true\n      arrays: true\n      objects: true\n      oneofs: true\n    nextNode: checkPayload\n\n  checkPayload:\n    transform:\n      path: 'dist/check-payload-transformer.js'\n    nextNode: response\n\n  response:\n    port:\n      name: greet-in-port\n      type: inbound\n      response: true\n      end: true\n    terminal: true\n```\n\n## API\n\n### protoParserConfig\n\nType: config description\n\nOptions:\n\n- **includePaths** (string[]), required\n\n  Directories and sub-directories containing proto files\n\n- **protoPath** (string), required\n\n  Proto file path\n\n- **keepCase** (boolean), optional, default = `true`\n\n  Keeps field casing instead of converting to camel case\n\n### protoEncoder\n\nType: flow description\n\nOptions:\n\n- **protoParser** (string), required\n\n  Proto parser name\n\n- **protoPath** (string), required\n\n  Proto message path\n\n### protoDecoder\n\nType: flow description\n\nOptions:\n\n- **protoParser** (string), required\n\n  Proto parser name\n\n- **protoPath** (string), required\n\n  Proto message path\n\n- **defaults** (boolean), optional\n\n  Includes default values\n\n- **arrays** (boolean), optional\n\n  Populates empty arrays (repeated fields) even if defaults = `false`\n\n- **objects** (boolean), optional\n\n  Populates empty objects (map fields) even if defaults = `false`\n\n- **oneofs** (boolean), optional\n\n  Includes virtual oneof fields set to the present field's name\n","readmeFilename":"README.md"}