Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

timostamm/protobuf-ts

Repository files navigation

protobuf-ts npm

Protocol buffers and RPC for Node.js and the Web Browser. Pure TypeScript.

For the following .proto file:

syntax = "proto3";
message Person {
 string name = 1;
 uint64 id = 2;
 int32 years = 3;
 optional bytes data = 5;
}

protobuf-ts generates code that can be used like this:

let pete: Person = {
 name: "pete", 
 id: 123n, // it's a bigint
 years: 30
 // data: new Uint8Array([0xDE, 0xAD, 0xBE, 0xEF]);
};
let bytes = Person.toBinary(pete);
pete = Person.fromBinary(bytes);
pete = Person.fromJsonString('{"name":"pete", "id":"123", "years": 30}')

What are protocol buffers?

Protocol buffers is an interface definition language and binary serialization format.
Data structures defined in .proto files are platform-independent and can be used in many languages.
To learn more about the capabilities, please check the official language guide.

Quickstart

  • npm install --save-dev @protobuf-ts/plugin protoc

    installs the plugin and the compiler "protoc"

  • download the example file msg-readme.proto and place it into a protos/ directory

  • npx protoc --ts_out . --proto_path protos protos/msg-readme.proto

    generates msg-readme.ts
    if your protoc version asks for it, add the flag "--experimental_allow_proto3_optional"

Features

Read the MANUAL to learn more.

Copyright

  • The code to decode UTF8 is Copyright 2016 by Daniel Wirtz, licensed under BSD-3-Clause.
  • The code to encode and decode varint is Copyright 2008 Google Inc., licensed under BSD-3-Clause.
  • The gRPC status codes are Copyright 2016 gRPC authors, licensed under Apache-2.0.
  • The Twirp error codes are Copyright 2018 Twitch Interactive, Inc., licensed under Apache-2.0.
  • The proto files in proto/google are Copyright Google Inc. / Google LLC, licensed under Apache-2.0 / BSD-3-Clause.
  • All other files are licensed under Apache-2.0, see LICENSE.

Support

Buy Me A Coffee

Languages

AltStyle によって変換されたページ (->オリジナル) /