JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q46610F
  • License MIT

protobuf cli to create typescript declaration files for typescript schemas.

Package Exports

  • @netrunner/pbf-ts

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@netrunner/pbf-ts) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

pbf-ts

Creates interface schema and encoder/decoder for protobuf.

The CLI is very simple:

pbfts [source dir] [target dir] file1.proto file2.proto ...

After parsing the protobuf schema the program will create an interface, a encoder and a decoder for every message schema.

# src/myfile.proto
message Point {
    required uint32 x = 1;
    required uint32 y = 2;
    optional uint32 z = 3;
}

It creates a file with the name of the message:

pbfts ./src ./lib myfile.proto
# => ./lib/Point.ts
export interface PointSchema {
    x: number;
    y: number;
    z?: number;
}
export const Point = {
    encode(obj: PointSchema): Buffer { ... },
    decode(buf: Buffer | Uint8Array): PointSchema { ... }
};

You can also use the writer functions in your own code:

import { writeSchemaFile, writeSchemaFileSync } from "@netrunner/pbf-ts";

const pbfData = `
message User {
    required uint32 id = 1;
    required string name = 2;
    required bytes salt = 3;
    optional bytes hash = 4;
}
message Post {
    required uint32 id = 1;
    required uint32 user_id = 2;
    required string title = 3;
    required string description = 4;
}
`;

// synchronous file creation
writeSchemaFileSync(pbfData, {
    // // default options
    // indent: '    ',
    // suffix: 'Schema',
    // lineBreak: '\n',
    // writeDir: './'
});
// => User.ts
// => Post.ts

(async () => {
    // asynchronous file creation
    await writeSchemaFile(pbfData, {
        // // default options
        // indent: '    ',
        // suffix: 'Schema',
        // lineBreak: '\n',
        // writeDir: './'
    });
    // => User.ts
    // => Post.ts
});