1
1
mirror of https://github.com/github/semantic.git synced 2024-11-30 14:47:30 +03:00
semantic/proto/semantic.proto
2020-06-02 14:06:06 -07:00

182 lines
3.0 KiB
Protocol Buffer

syntax = "proto3";
package github.semantic;
option ruby_package = "Semantic::Proto";
message PingRequest {
string service = 1;
}
message PingResponse {
string status = 1;
string hostname = 2;
string timestamp = 3;
string sha = 4;
}
message ParseTreeRequest {
repeated Blob blobs = 1;
}
message ParseTreeSymbolResponse {
repeated File files = 1;
}
message ParseTreeGraphResponse {
repeated ParseTreeFileGraph files = 1;
}
message StackGraphRequest {
repeated Blob blobs = 1;
}
message StackGraphResponse {
repeated StackGraphFile files = 1;
}
message ParseTreeFileGraph {
string path = 1;
string language = 2;
repeated TermVertex vertices = 3;
repeated TermEdge edges = 4;
repeated ParseError errors = 5;
}
message TermEdge {
int32 source = 1;
int32 target = 2;
}
message TermVertex {
int32 vertex_id = 1;
string term = 2;
Span span = 3;
}
message ParseError {
string error = 1;
}
message DiffTreeGraphResponse {
repeated DiffTreeFileGraph files = 1;
}
message DiffTreeFileGraph {
string path = 1;
string language = 2;
repeated DiffTreeVertex vertices = 3;
repeated DiffTreeEdge edges = 4;
repeated ParseError errors = 5;
}
message DiffTreeEdge {
int32 source = 1;
int32 target = 2;
}
message DiffTreeVertex {
int32 diff_vertex_id = 1;
oneof diff_term {
DeletedTerm deleted = 2;
InsertedTerm inserted = 3;
ReplacedTerm replaced = 4;
MergedTerm merged = 5;
}
}
message DeletedTerm {
string term = 1;
Span span = 2;
}
message InsertedTerm {
string term = 1;
Span span = 2;
}
message ReplacedTerm {
string before_term = 1;
Span before_span = 2;
string after_term = 3;
Span after_span = 4;
}
message MergedTerm {
string term = 1;
Span before_span = 2;
Span after_span = 3;
}
message Blob {
string content = 1;
string path = 2;
string language = 3;
}
message File {
string path = 1;
string language = 2;
repeated Symbol symbols = 3;
repeated ParseError errors = 4;
string blob_oid = 5;
}
message Symbol {
string symbol = 1;
string kind = 2;
string line = 3;
Span span = 4;
Docstring docs = 5;
NodeType node_type = 6;
}
message Docstring {
string docstring = 1;
}
message Position {
int32 line = 1;
int32 column = 2;
}
message Span {
Position start = 1;
Position end = 2;
}
message StackGraphFile {
string path = 1;
string language = 2;
repeated StackGraphNode nodes = 3;
repeated StackGraphPath paths = 4;
repeated ParseError errors = 5;
}
enum NodeType {
ROOT_SCOPE = 0;
JUMP_TO_SCOPE = 1;
EXPORTED_SCOPE = 2;
DEFINITION = 3;
REFERENCE = 4;
}
message StackGraphNode {
int64 id = 1;
string name = 2;
string line = 3;
string kind = 4;
Span span = 5;
NodeType node_type = 6;
}
message StackGraphPath {
repeated string starting_symbol_stack = 1;
int64 starting_scope_stack_size = 2;
int64 from = 3;
string edges = 4;
int64 to = 5;
repeated int64 ending_scope_stack = 6;
repeated string ending_symbol_stack = 7;
}