Package Exports
- proto2graphql
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 (proto2graphql) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
proto2graphql

Converts schema definitions in Protocol Buffer (proto3) to GraphQL. Can be used to help generate a GraphQL API gateway to gRPC backend services.
Installation
npm install -g proto2graphql
Usage
proto2graphql --input [input .proto path] --output [output .graphql path]
Conversions
Messages
Protocol Buffer
message SearchRequest {
string query = 1;
int32 page_number = 2;
int32 result_per_page = 3;
}
GraphQL
type SearchRequest {
query: String
pageNumber: Int
resultPerPage: Int
}
Scalar Value Types
Protocol Buffer | GraphQL |
---|---|
double | Float |
float | Float |
int32 | Int |
int64 | Int |
uint32 | Int |
uint64 | Int |
sint32 | Int |
sint64 | Int |
fixed32 | Int |
fixed64 | Int |
sfixed32 | Int |
sfixed64 | Int |
bool | Boolean |
string | String |
bytes | String |
Enumerations
Protocol Buffer
enum Corpus {
UNIVERSAL = 0;
WEB = 1;
IMAGES = 2;
LOCAL = 3;
NEWS = 4;
PRODUCTS = 5;
VIDEO = 6;
}
GraphQL
enum Corpus {
UNIVERSAL
WEB
IMAGES
LOCAL
NEWS
PRODUCTS
VIDEO
}
Nested Types
Protocol Buffer
message SearchResponse {
message Result {
string url = 1;
string title = 2;
}
Result result = 1;
}
GraphQL
type SearchResponse {
results: SearchResponse_Result
}
type SearchResponse_Result {
url: String
title: String
}
Oneof
Protocol Buffer
message UserAuth {
message GoogleProvider {
int32 gid = 1;
}
message FacebookProvider {
string fbid = 1;
}
oneof provider {
GoogleProvider google = 1;
FacebookProvider facebook = 2;
string generic = 3;
}
}
GraphQL
type UserAuth {
provider: UserAuth_provider
}
union UserAuth_provider =
UserAuth_GoogleProvider
| UserAuth_FacebookProvider
| String
type UserAuth_GoogleProvider {
gid: Int
}
type UserAuth_FacebookProvider {
fbid: String
}
Maps
Protocol Buffer
message User {
map<string, Attribute> attributes = 1;
}
message Attribute {
string value = 1;
}
GraphQL
type User {
attributes: [String_Attribute_map]
}
type String_Attribute_map {
key: String
value: Attribute
}
type Attribute {
value: String
}
Packages
Protocol Buffer
package proto2graphql.common;
message TypeA {
int32 field = 1;
}
GraphQL
type proto2graphql_common_TypeA {
field: Int
}
Well-Known Types
Protocol Buffer
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
message WellKnownTypes {
google.protobuf.Duration duration_field = 1;
google.protobuf.Timestamp timestamp_field = 2;
}
GraphQL
type WellKnownTypes {
durationField: google_protobuf_Duration
timestampField: google_protobuf_Timestamp
}
type google_protobuf_Duration {
seconds: Int
nanos: Int
}
type google_protobuf_Timestamp {
seconds: Int
nanos: Int
}