Skip to content
This repository has been archived by the owner on Dec 24, 2021. It is now read-only.

phoenix344/pbf-ts

Repository files navigation

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
});

About

protobuf cli for typescript

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published