Skip to content

ZaneHannanAU/protocol-buffers-schema

 
 

Repository files navigation

protocol-buffers-schema-ts

No nonsense protocol buffers schema parser written in Typescript.

npm install protocol-buffers-schema-ts

build status npm version downloads

Usage

First save the following file as example.proto

syntax = "proto3";
package example;
option java_package = "com.example";
option optimize_for = SPEED;
import "other.proto";
// example file
enum Hello {
  Hello = 0;
  Welcome = 1;
  GDay = 2;
  Yo = 3;
}

message Test {
  map<string, string> data = 1;
  required string hello = 2;
  oneof test {
    uint32 age = 3;
    uint32 year = 4;
  }
  message Nested {
    optional bytes thing = 1;
  }
  Nested item = 5;
  required Hello welcoming = 6;
  /** A block comment
    * Longer
    * Longer
    */
  repeated uint32 timings = 7[deprecated=true];
  repeated uint32 timings_info = 8 [packed=true];
}
service ServiceName {
  rpc MethodName (Hello) returns (Test);
}

Then, run the example:

import { readFileSync } from 'fs';
import { parse } from 'protocol-buffers-schema-ts/lib/parse';

// pass a buffer or string (implements Object.toString()) to schema.parse.
var sch = parse(readFileSync('example.proto'))

// will print out the schema as a javascript object
console.log(sch)

Running the above example will print something similar to

Schema {
  syntax: 3,
  package: 'example',
  imports: [ 'other.proto' ],
  enums:
   [ Enum { name: 'Hello', enums: [], values: [Array], allow_alias: false } ],
  messages:
   [ Message {
       name: 'Test',
       enums: [],
       extends: [],
       messages: [Array],
       fields: [Array],
       extensions: null } ],
  extends: [],
  services: [ Service { name: 'ServiceName', methods: [Array] } ],
  optimize_for: 'SPEED' }

Note that this example is included as lib/example.

API

parse<T extends {toString(): string}>(from: T): Schema

Parses a .proto schema into a javascript object

Schema.toString()

Stringifies a parsed schema back into .proto format

Schema.toJSON()

Converts a parsed schema into its JSON equivalent.

License

MIT

Testing

Testing is currently done in an automated fashion in lib/test, relying on files in the test/fixtures/ directory.

Testing should be done both in the browser and in node, for various purposes.

Updating of properties would inherently include updating of test/fixtures.

About

No nonsense protocol buffers schema parser written in Typescript

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 54.7%
  • TypeScript 45.3%
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy