Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Converts schema definitions in Protocol Buffer (proto3) to GraphQL

License

Notifications You must be signed in to change notification settings

emzeq/proto2graphql

Repository files navigation

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
}

About

Converts schema definitions in Protocol Buffer (proto3) to GraphQL

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

AltStyle によって変換されたページ (->オリジナル) /