tsbuf
TypeScript icon, indicating that this package has built-in type declarations

0.2.1 • Public • Published

tsbuf npm@version Build Status Coverage Status

Generate TypeScript enum and interface with proto buffer.

Usage

npm install -g tsbuf
tsbuf example/proto -o example/typescript/global
# or
tsbuf example/proto -o example/typescript/module -m module

See example/

$ tsbuf -h
Usage: tsbuf [options] <inputPath>

protobuf-parser
Generate TypeScript interface with Protobuf.

Options:
  -V, --version          output the version number
  -o, --output <output>  output path (default: ".")
  -m, --mode <mode>      "global": Global Definition, "module": Module Definition (default: "global")
  -h, --help             output usage information

Example

syntax = "proto3";

service MyService {
  rpc rpcMethod(Fruit) returns (Package) {}
}

enum Fruit {
  Apple = 0;
  Banana = 1;
}

message Package {
  string id = 1;
  float price = 2;
}

Will be transformed to

interface MyService {
  rpcMethod: {
    request: Request;
    response: Response;
  };
}

declare enum Fruit {
  Apple = 0,
  Banana = 1,
}

interface Package {
  id: string;
  price: number;
}

Or TypeScript module

export interface MyService {
  rpcMethod: {
    request: Request;
    response: Response;
  };
}

export enum Fruit {
  Apple = 0,
  Banana = 1,
}

export interface Package {
  id: string;
  price: number;
}

How to use interfaces from service?

Create specified types using TypeScript as follows.

import { MyService } from '...';
import { Observable } from 'rxjs';

interface BaseServiceDefinition {
  [key: string]: {
    request: any;
    response: any;
  };
}

type RxService<T extends BaseServiceDefinition> = {
  [K in keyof T]: (request: T[K]['request']) => Observable<T[K]['response']>;
};

/**
 * `RxService<MyService>` equals:
 *
 * interface {
 *   rpcMethod(request: Request): Observable<Response>;
 * }
 *
 **/

Roadmap

  • [x] Basic Support
  • [x] ExtendedType Field
  • [x] Cli
  • [x] Oneof Field
  • [x] Map Field
  • [x] Nested Type
  • [x] Generate Global Declaration
  • [x] Import (Generate Module)
  • [ ] Other Options

License

MIT

Dependencies (6)

Dev Dependencies (23)

Package Sidebar

Install

npm i tsbuf

Weekly Downloads

0

Version

0.2.1

License

MIT

Unpacked Size

58.2 kB

Total Files

58

Last publish

Collaborators

  • means88