Skip to content

Latest commit

 

History

History

protoc-gen-flowtypes

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

protoc-gen-flowtypes

Generate flowtype type definitions for proto3 messages and enums.

Contributions welcome.

$ cat simple.proto
syntax = "proto3";

// Well-known type that should be handled
import "google/protobuf/timestamp.proto";

// optional to specify optional fields and nullable values.
import "github.com/tmc/grpcutil/protoc-gen-flowtypes/opts/opts.proto";

message SearchRequest {
  string query = 1;
  int32 page_number = 2;
  int32 result_per_page = 3;
  enum Corpus {
    UNIVERSAL = 0;
    WEB = 1;
    IMAGES = 2;
    LOCAL = 3;
    NEWS = 4;
    PRODUCTS = 5;
    VIDEO = 6;
  }
  Corpus corpus = 4;
  google.protobuf.Timestamp sent_at = 5;
  int64 example_required = 6 [(opts.field) = {required : true}];
  int64 example_nullable = 7 [(opts.field) = {nullable : true}];
  int64 example_required_and_nullable = 8 [(opts.field) = {required : true, nullable : true}];
}

message SearchResponse {
  repeated string results = 1;
  int32 num_results = 2;
  SearchRequest original_request = 3;
}

example use:

$ protoc -I. -I${GOPATH}/src --flowtypes_out=. simple.proto
$ cat simple_types.js
/* @flow */
/* eslint-disable */
// Code generated by protoc-gen-flowtypes DO NOT EDIT.
// InputID: 822c6d2f6d088526d5feaf738395a465d3f002b9

export type SearchRequestCorpus = "WEB" | "IMAGES" | "LOCAL" | "NEWS" | "PRODUCTS" | "VIDEO";

export type SearchRequest = {
  query?: string,
  page_number?: number,
  result_per_page?: number,
  corpus?: SearchRequestCorpus,
  sent_at?: string,
  example_required: number,
  example_nullable?: ?number,
  example_required_and_nullable: ?number
};

export type SearchResponse = {
  results?: Array<string>,
  num_results?: number,
  original_request?: SearchRequest
};