Utility to parse a proto3 file, which describes a Google protocol buffer.
npm install proto-parsePlease feel free to request any feature on github.
const parse = require('proto-parse');
var data = parse(fs.readFileSync('example.proto').toString());
No options or other parameters are currently used. Just pass the string containing the proto description to the function.
{
syntax: "proto3",
content: [
// Top Level Elements, see below
]
}
{
"type": "field",
"typename": "map",
"key": "int32",
"value": "string",
"name": "bla",
"fieldNo": 1,
"opts": {}
}
``proto3
syntax = "proto3";
message SearchRequest {
string query = 1;
int32 page_number = 2;
int32 result_per_page = 3;
message Exmpl{
oneof test_oneof {
string name = 4;
SubMessage sub_message = 9;
}
}
enum Corpus {
UNIVERSAL = 0;
WEB = 1;
IMAGES = 2;
LOCAL = 3;
NEWS = 4;
PRODUCTS = 5;
VIDEO = 6;
}
Corpus corpus = 4;
map
repeated Exmpl results = 1;
reserved 2, 15, 9 to 11;
}
`
turns into:
`JSON``
{
"syntax": "proto3",
"content": [
{
"type": "message",
"name": "SearchRequest",
"content": [
{
"type": "field",
"repeated": false,
"typename": "string",
"name": "query",
"fieldNo": 1,
"opts": {}
},
{
"type": "field",
"repeated": false,
"typename": "int32",
"name": "page_number",
"fieldNo": 2,
"opts": {}
},
{
"type": "field",
"repeated": false,
"typename": "int32",
"name": "result_per_page",
"fieldNo": 3,
"opts": {}
},
{
"type": "message",
"name": "Exmpl",
"content": [
{
"type": "oneof",
"name": "test_oneof",
"content": [
{
"type": "field",
"typename": "string",
"name": "name",
"fieldNo": 4,
"opts": {}
},
{
"type": "field",
"typename": "SubMessage",
"name": "sub_message",
"fieldNo": 9,
"opts": {}
}
]
}
],
"opts": {}
},
{
"type": "enum",
"name": "Corpus",
"content": [
{
"type": "enumField",
"name": "UNIVERSAL",
"val": 0,
"opts": {}
},
{
"type": "enumField",
"name": "WEB",
"val": 1,
"opts": {}
},
{
"type": "enumField",
"name": "IMAGES",
"val": 2,
"opts": {}
},
{
"type": "enumField",
"name": "LOCAL",
"val": 3,
"opts": {}
},
{
"type": "enumField",
"name": "NEWS",
"val": 4,
"opts": {}
},
{
"type": "enumField",
"name": "PRODUCTS",
"val": 5,
"opts": {}
},
{
"type": "enumField",
"name": "VIDEO",
"val": 6,
"opts": {}
}
],
"opts": {}
},
{
"type": "field",
"repeated": false,
"typename": "Corpus",
"name": "corpus",
"fieldNo": 4,
"opts": {}
},
{
"type": "field",
"typename": "map",
"key": "int32",
"value": "string",
"name": "bla",
"fieldNo": 1,
"opts": {}
},
{
"type": "field",
"repeated": true,
"typename": "Exmpl",
"name": "results",
"fieldNo": 1,
"opts": {}
}
],
"opts": {}
}
]
}