What is @protobuf-ts/runtime?
@protobuf-ts/runtime is a runtime library for Protocol Buffers in TypeScript. It provides utilities for encoding, decoding, and working with Protocol Buffers messages in a TypeScript environment.
What are @protobuf-ts/runtime's main functionalities?
Encoding Messages
This feature allows you to encode a Protocol Buffers message into a binary format. The code sample demonstrates how to define a message class, create an instance of the message, and encode it.
const { Message, WireType } = require('@protobuf-ts/runtime');
class MyMessage extends Message {
static readonly runtime = { fields: [{ no: 1, name: 'field1', kind: 'scalar', T: 9 /* string */ }] };
field1 = '';
}
const message = new MyMessage({ field1: 'Hello, World!' });
const binary = MyMessage.encode(message).finish();
console.log(binary);
Decoding Messages
This feature allows you to decode a binary Protocol Buffers message back into a message object. The code sample demonstrates how to decode a binary message into an instance of the message class.
const { Message, WireType } = require('@protobuf-ts/runtime');
class MyMessage extends Message {
static readonly runtime = { fields: [{ no: 1, name: 'field1', kind: 'scalar', T: 9 /* string */ }] };
field1 = '';
}
const binary = new Uint8Array([10, 13, 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33]);
const message = MyMessage.decode(binary);
console.log(message);
Message Reflection
This feature provides reflection capabilities for Protocol Buffers messages, allowing you to inspect the fields and types of a message at runtime. The code sample demonstrates how to access the runtime information of a message class.
const { Message, WireType } = require('@protobuf-ts/runtime');
class MyMessage extends Message {
static readonly runtime = { fields: [{ no: 1, name: 'field1', kind: 'scalar', T: 9 /* string */ }] };
field1 = '';
}
const message = new MyMessage({ field1: 'Hello, World!' });
console.log(MyMessage.runtime.fields);
Other packages similar to @protobuf-ts/runtime
protobufjs
protobufjs is a popular library for working with Protocol Buffers in JavaScript and TypeScript. It provides similar functionality to @protobuf-ts/runtime, including encoding, decoding, and message reflection. However, protobufjs is more widely used and has a larger community.
google-protobuf
google-protobuf is the official Protocol Buffers library for JavaScript. It provides core functionality for encoding and decoding Protocol Buffers messages. While it is not as TypeScript-friendly as @protobuf-ts/runtime, it is the standard library provided by Google.
ts-proto
ts-proto is a TypeScript-first Protocol Buffers library that generates TypeScript code from .proto files. It provides strong type safety and integrates well with TypeScript projects. Compared to @protobuf-ts/runtime, ts-proto focuses more on code generation and type safety.
@protobuf-ts/runtime
Runtime library for code generated by the protobuf-ts plugin.
To run code generated with the protobuf-ts plugin, you need this package
as a dependency:
npm i @protobuf-ts/runtime
The types provided by this package are documented in the MANUAL.
For a quick overview of protobuf-ts
, check the repository README.