1
1
mirror of https://github.com/github/semantic.git synced 2024-12-01 09:15:01 +03:00
semantic/proto/typescript.proto
2018-07-05 17:12:17 -04:00

963 lines
20 KiB
Protocol Buffer

syntax = "proto3";
package github.semantic.typescript;
import "types.proto";
option java_package = "com.github.semantic.typescript";
option go_package = "github.com/semantic/typescript;typescript";
message TypeScriptTerm {
TypeScriptSyntax syntax = 1;
}
message Alias {
bytes aliasValue = 1;
bytes aliasName = 2;
}
message ImportPath {
string unPath = 1;
IsRelative pathIsRelative = 2;
}
enum IsRelative {
Unknown = 0;
Relative = 1;
NonRelative = 2;
}
message TypeScriptSyntax {
oneof syntax {
Comment comment = 1;
HashBang hashBang = 2;
Class class = 3;
Function function = 4;
Method method = 5;
MethodSignature methodSignature = 6;
InterfaceDeclaration interfaceDeclaration = 7;
PublicFieldDefinition publicFieldDefinition = 8;
VariableDeclaration variableDeclaration = 9;
TypeAlias typeAlias = 10;
Plus plus = 11;
Minus minus = 12;
Times times = 13;
DividedBy dividedBy = 14;
Modulo modulo = 15;
Power power = 16;
Negate negate = 17;
FloorDivision floorDivision = 18;
BAnd bAnd = 19;
BOr bOr = 20;
BXOr bXOr = 21;
LShift lShift = 22;
RShift rShift = 23;
UnsignedRShift unsignedRShift = 24;
Complement complement = 25;
And and = 26;
Not not = 27;
Or or = 28;
XOr xOr = 29;
Call call = 30;
Cast cast = 31;
LessThan lessThan = 32;
LessThanEqual lessThanEqual = 33;
GreaterThan greaterThan = 34;
GreaterThanEqual greaterThanEqual = 35;
Equal equal = 36;
StrictEqual strictEqual = 37;
Comparison comparison = 38;
Enumeration enumeration = 39;
MemberAccess memberAccess = 40;
NonNullExpression nonNullExpression = 41;
ScopeResolution scopeResolution = 42;
SequenceExpression sequenceExpression = 43;
Subscript subscript = 44;
Member member = 45;
Delete delete = 46;
Void void = 47;
Typeof typeof = 48;
InstanceOf instanceOf = 49;
New new = 50;
Await await = 51;
Array array = 52;
Boolean boolean = 53;
Float float = 54;
Hash hash = 55;
Integer integer = 56;
KeyValue keyValue = 57;
Null null = 58;
String string = 59;
TextElement textElement = 60;
Regex regex = 61;
Assignment assignment = 62;
Break break = 63;
Catch catch = 64;
Continue continue = 65;
DoWhile doWhile = 66;
Else else = 67;
Finally finally = 68;
For for = 69;
ForEach forEach = 70;
If if = 71;
Match match = 72;
Pattern pattern = 73;
Retry retry = 74;
Return return = 75;
ScopeEntry scopeEntry = 76;
ScopeExit scopeExit = 77;
Statements statements = 78;
Throw throw = 79;
Try try = 80;
While while = 81;
Yield yield = 82;
AccessibilityModifier accessibilityModifier = 83;
Empty empty = 84;
Error error = 85;
Identifier identifier = 86;
Context context = 87;
Readonly readonly = 88;
TypeParameters typeParameters = 89;
TypeParameter typeParameter = 90;
Constraint constraint = 91;
ParenthesizedType parenthesizedType = 92;
DefaultType defaultType = 93;
PredefinedType predefinedType = 94;
TypeIdentifier typeIdentifier = 95;
NestedIdentifier nestedIdentifier = 96;
NestedTypeIdentifier nestedTypeIdentifier = 97;
GenericType genericType = 98;
TypeArguments typeArguments = 99;
TypePredicate typePredicate = 100;
CallSignature callSignature = 101;
ConstructSignature constructSignature = 102;
ArrayType arrayType = 103;
LookupType lookupType = 104;
FlowMaybeType flowMaybeType = 105;
TypeQuery typeQuery = 106;
IndexTypeQuery indexTypeQuery = 107;
ThisType thisType = 108;
ExistentialType existentialType = 109;
AbstractMethodSignature abstractMethodSignature = 110;
IndexSignature indexSignature = 111;
ObjectType objectType = 112;
LiteralType literalType = 113;
Union union = 114;
Intersection intersection = 115;
Module module = 116;
InternalModule internalModule = 117;
FunctionType functionType = 118;
Tuple tuple = 119;
Constructor constructor = 120;
TypeAssertion typeAssertion = 121;
ImportAlias importAlias = 122;
Debugger debugger = 123;
ShorthandPropertyIdentifier shorthandPropertyIdentifier = 124;
Super super = 125;
Undefined undefined = 126;
ClassHeritage classHeritage = 127;
AbstractClass abstractClass = 128;
ImplementsClause implementsClause = 129;
JsxElement jsxElement = 130;
JsxSelfClosingElement jsxSelfClosingElement = 131;
JsxOpeningElement jsxOpeningElement = 132;
JsxText jsxText = 133;
JsxClosingElement jsxClosingElement = 134;
JsxExpression jsxExpression = 135;
JsxAttribute jsxAttribute = 136;
JsxFragment jsxFragment = 137;
JsxNamespaceName jsxNamespaceName = 138;
OptionalParameter optionalParameter = 139;
RequiredParameter requiredParameter = 140;
RestParameter restParameter = 141;
PropertySignature propertySignature = 142;
AmbientDeclaration ambientDeclaration = 143;
EnumDeclaration enumDeclaration = 144;
ExtendsClause extendsClause = 145;
AmbientFunction ambientFunction = 146;
ImportRequireClause importRequireClause = 147;
ImportClause importClause = 148;
LabeledStatement labeledStatement = 149;
Annotation annotation = 150;
With with = 151;
ForOf forOf = 152;
This this = 153;
Update update = 154;
ComputedPropertyName computedPropertyName = 155;
Decorator decorator = 156;
Import import = 157;
QualifiedAliasedImport qualifiedAliasedImport = 158;
SideEffectImport sideEffectImport = 159;
DefaultExport defaultExport = 160;
QualifiedExport qualifiedExport = 161;
QualifiedExportFrom qualifiedExportFrom = 162;
JavaScriptRequire javaScriptRequire = 163;
List list = 164;
}
}
message Comment {
string commentContent = 1;
}
message HashBang {
string value = 1;
}
message Class {
repeated TypeScriptTerm classContext = 1;
TypeScriptTerm classIdentifier = 2;
repeated TypeScriptTerm classSuperclasses = 3;
TypeScriptTerm classBody = 4;
}
message Function {
repeated TypeScriptTerm functionContext = 1;
TypeScriptTerm functionName = 2;
repeated TypeScriptTerm functionParameters = 3;
TypeScriptTerm functionBody = 4;
}
message Method {
repeated TypeScriptTerm methodContext = 1;
TypeScriptTerm methodReceiver = 2;
TypeScriptTerm methodName = 3;
repeated TypeScriptTerm methodParameters = 4;
TypeScriptTerm methodBody = 5;
}
message MethodSignature {
repeated TypeScriptTerm methodSignatureContext = 1;
TypeScriptTerm methodSignatureName = 2;
repeated TypeScriptTerm methodSignatureParameters = 3;
}
message InterfaceDeclaration {
repeated TypeScriptTerm interfaceDeclarationContext = 1;
TypeScriptTerm interfaceDeclarationIdentifier = 2;
TypeScriptTerm interfaceDeclarationBody = 3;
}
message PublicFieldDefinition {
repeated TypeScriptTerm publicFieldContext = 1;
TypeScriptTerm publicFieldPropertyName = 2;
TypeScriptTerm publicFieldValue = 3;
}
message VariableDeclaration {
repeated TypeScriptTerm variableDeclarations = 1;
}
message TypeAlias {
repeated TypeScriptTerm typeAliasContext = 1;
TypeScriptTerm typeAliasIdentifier = 2;
TypeScriptTerm typeAliasKind = 3;
}
message Plus {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message Minus {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message Times {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message DividedBy {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message Modulo {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message Power {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message Negate {
TypeScriptTerm term = 1;
}
message FloorDivision {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message BAnd {
TypeScriptTerm left = 1;
TypeScriptTerm right = 2;
}
message BOr {
TypeScriptTerm left = 1;
TypeScriptTerm right = 2;
}
message BXOr {
TypeScriptTerm left = 1;
TypeScriptTerm right = 2;
}
message LShift {
TypeScriptTerm left = 1;
TypeScriptTerm right = 2;
}
message RShift {
TypeScriptTerm left = 1;
TypeScriptTerm right = 2;
}
message UnsignedRShift {
TypeScriptTerm left = 1;
TypeScriptTerm right = 2;
}
message Complement {
TypeScriptTerm value = 1;
}
message And {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message Not {
TypeScriptTerm term = 1;
}
message Or {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message XOr {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message Call {
repeated TypeScriptTerm callContext = 1;
TypeScriptTerm callFunction = 2;
repeated TypeScriptTerm callParams = 3;
TypeScriptTerm callBlock = 4;
}
message Cast {
TypeScriptTerm castSubject = 1;
TypeScriptTerm castType = 2;
}
message LessThan {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message LessThanEqual {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message GreaterThan {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message GreaterThanEqual {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message Equal {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message StrictEqual {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message Comparison {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message Enumeration {
TypeScriptTerm enumerationStart = 1;
TypeScriptTerm enumerationEnd = 2;
TypeScriptTerm enumerationStep = 3;
}
message MemberAccess {
TypeScriptTerm lhs = 1;
bytes rhs = 2;
}
message NonNullExpression {
TypeScriptTerm nonNullExpression = 1;
}
message ScopeResolution {
repeated TypeScriptTerm scopes = 1;
}
message SequenceExpression {
TypeScriptTerm firstExpression = 1;
TypeScriptTerm secondExpression = 2;
}
message Subscript {
TypeScriptTerm lhs = 1;
repeated TypeScriptTerm rhs = 2;
}
message Member {
TypeScriptTerm lhs = 1;
TypeScriptTerm rhs = 2;
}
message Delete {
TypeScriptTerm value = 1;
}
message Void {
TypeScriptTerm value = 1;
}
message Typeof {
TypeScriptTerm value = 1;
}
message InstanceOf {
TypeScriptTerm instanceOfSubject = 1;
TypeScriptTerm instanceOfObject = 2;
}
message New {
repeated TypeScriptTerm newSubject = 1;
}
message Await {
TypeScriptTerm awaitSubject = 1;
}
message Array {
repeated TypeScriptTerm arrayElements = 1;
}
message Boolean {
bool booleanContent = 1;
}
message Float {
string floatContent = 1;
}
message Hash {
repeated TypeScriptTerm hashElements = 1;
}
message Integer {
string integerContent = 1;
}
message KeyValue {
TypeScriptTerm key = 1;
TypeScriptTerm value = 2;
}
message Null { }
message String {
repeated TypeScriptTerm stringElements = 1;
}
message TextElement {
string textElementContent = 1;
}
message Regex {
string regexContent = 1;
}
message Assignment {
repeated TypeScriptTerm assignmentContext = 1;
TypeScriptTerm assignmentTarget = 2;
TypeScriptTerm assignmentValue = 3;
}
message Break {
TypeScriptTerm term = 1;
}
message Catch {
TypeScriptTerm catchException = 1;
TypeScriptTerm catchBody = 2;
}
message Continue {
TypeScriptTerm term = 1;
}
message DoWhile {
TypeScriptTerm doWhileCondition = 1;
TypeScriptTerm doWhileBody = 2;
}
message Else {
TypeScriptTerm elseCondition = 1;
TypeScriptTerm elseBody = 2;
}
message Finally {
TypeScriptTerm term = 1;
}
message For {
TypeScriptTerm forBefore = 1;
TypeScriptTerm forCondition = 2;
TypeScriptTerm forStep = 3;
TypeScriptTerm forBody = 4;
}
message ForEach {
TypeScriptTerm forEachBinding = 1;
TypeScriptTerm forEachSubject = 2;
TypeScriptTerm forEachBody = 3;
}
message If {
TypeScriptTerm ifCondition = 1;
TypeScriptTerm ifThenBody = 2;
TypeScriptTerm ifElseBody = 3;
}
message Match {
TypeScriptTerm matchSubject = 1;
TypeScriptTerm matchPatterns = 2;
}
message Pattern {
TypeScriptTerm value = 1;
TypeScriptTerm patternBody = 2;
}
message Retry {
TypeScriptTerm term = 1;
}
message Return {
TypeScriptTerm term = 1;
}
message ScopeEntry {
repeated TypeScriptTerm terms = 1;
}
message ScopeExit {
repeated TypeScriptTerm terms = 1;
}
message Statements {
repeated TypeScriptTerm statements = 1;
}
message Throw {
TypeScriptTerm value = 1;
}
message Try {
TypeScriptTerm tryBody = 1;
repeated TypeScriptTerm tryCatch = 2;
}
message While {
TypeScriptTerm whileCondition = 1;
TypeScriptTerm whileBody = 2;
}
message Yield {
TypeScriptTerm term = 1;
}
message AccessibilityModifier {
string contents = 1;
}
message Empty { }
message Error {
repeated ErrorSite errorCallStack = 1;
repeated string errorExpected = 2;
string errorActual = 3;
repeated TypeScriptTerm errorChildren = 4;
}
message Identifier {
bytes name = 1;
}
message Context {
repeated TypeScriptTerm contextTerms = 1;
TypeScriptTerm contextSubject = 2;
}
message Readonly { }
message TypeParameters {
repeated TypeScriptTerm terms = 1;
}
message TypeParameter {
TypeScriptTerm typeParameter = 1;
TypeScriptTerm typeParameterConstraint = 2;
TypeScriptTerm typeParameterDefaultType = 3;
}
message Constraint {
TypeScriptTerm constraintType = 1;
}
message ParenthesizedType {
TypeScriptTerm parenthesizedType = 1;
}
message DefaultType {
TypeScriptTerm defaultType = 1;
}
message PredefinedType {
string predefinedType = 1;
}
message TypeIdentifier {
string contents = 1;
}
message NestedIdentifier {
TypeScriptTerm left = 1;
TypeScriptTerm right = 2;
}
message NestedTypeIdentifier {
TypeScriptTerm left = 1;
TypeScriptTerm right = 2;
}
message GenericType {
TypeScriptTerm genericTypeIdentifier = 1;
TypeScriptTerm genericTypeArguments = 2;
}
message TypeArguments {
repeated TypeScriptTerm typeArguments = 1;
}
message TypePredicate {
TypeScriptTerm typePredicateIdentifier = 1;
TypeScriptTerm typePredicateType = 2;
}
message CallSignature {
TypeScriptTerm callSignatureTypeParameters = 1;
repeated TypeScriptTerm callSignatureParameters = 2;
TypeScriptTerm callSignatureType = 3;
}
message ConstructSignature {
TypeScriptTerm constructSignatureTypeParameters = 1;
repeated TypeScriptTerm constructSignatureParameters = 2;
TypeScriptTerm constructSignatureType = 3;
}
message ArrayType {
TypeScriptTerm arrayType = 1;
}
message LookupType {
TypeScriptTerm lookupTypeIdentifier = 1;
TypeScriptTerm lookupTypeKey = 2;
}
message FlowMaybeType {
TypeScriptTerm flowMaybeType = 1;
}
message TypeQuery {
TypeScriptTerm typeQuerySubject = 1;
}
message IndexTypeQuery {
TypeScriptTerm indexTypeQuerySubject = 1;
}
message ThisType {
string contents = 1;
}
message ExistentialType {
string contents = 1;
}
message AbstractMethodSignature {
repeated TypeScriptTerm abstractMethodSignatureContext = 1;
TypeScriptTerm abstractMethodSignatureName = 2;
repeated TypeScriptTerm abstractMethodSignatureParameters = 3;
}
message IndexSignature {
TypeScriptTerm indexSignatureSubject = 1;
TypeScriptTerm indexSignatureType = 2;
}
message ObjectType {
repeated TypeScriptTerm objectTypeElements = 1;
}
message LiteralType {
TypeScriptTerm literalTypeSubject = 1;
}
message Union {
TypeScriptTerm unionLeft = 1;
TypeScriptTerm unionRight = 2;
}
message Intersection {
TypeScriptTerm intersectionLeft = 1;
TypeScriptTerm intersectionRight = 2;
}
message Module {
TypeScriptTerm moduleIdentifier = 1;
repeated TypeScriptTerm moduleStatements = 2;
}
message InternalModule {
TypeScriptTerm internalModuleIdentifier = 1;
repeated TypeScriptTerm internalModuleStatements = 2;
}
message FunctionType {
TypeScriptTerm functionTypeParameters = 1;
repeated TypeScriptTerm functionFormalParameters = 2;
TypeScriptTerm functionType = 3;
}
message Tuple {
repeated TypeScriptTerm tupleElements = 1;
}
message Constructor {
TypeScriptTerm constructorTypeParameters = 1;
repeated TypeScriptTerm constructorFormalParameters = 2;
TypeScriptTerm constructorType = 3;
}
message TypeAssertion {
TypeScriptTerm typeAssertionParameters = 1;
TypeScriptTerm typeAssertionExpression = 2;
}
message ImportAlias {
TypeScriptTerm importAliasSubject = 1;
TypeScriptTerm importAlias = 2;
}
message Debugger { }
message ShorthandPropertyIdentifier {
string contents = 1;
}
message Super { }
message Undefined { }
message ClassHeritage {
TypeScriptTerm classHeritageExtendsClause = 1;
TypeScriptTerm implementsClause = 2;
}
message AbstractClass {
TypeScriptTerm abstractClassIdentifier = 1;
TypeScriptTerm abstractClassTypeParameters = 2;
repeated TypeScriptTerm classHeritage = 3;
TypeScriptTerm classBody = 4;
}
message ExtendsClause {
repeated TypeScriptTerm extendsClauses = 1;
}
message ImplementsClause {
repeated TypeScriptTerm implementsClauseTypes = 1;
}
message JsxElement {
TypeScriptTerm jsxOpeningElement = 1;
repeated TypeScriptTerm jsxElements = 2;
TypeScriptTerm jsxClosingElement = 3;
}
message JsxSelfClosingElement {
TypeScriptTerm jsxSelfClosingElementIdentifier = 1;
repeated TypeScriptTerm jsxSelfClosingElementAttributes = 2;
}
message JsxOpeningElement {
TypeScriptTerm jsxOpeningElementIdentifier = 1;
repeated TypeScriptTerm jsxAttributes = 2;
}
message JsxText {
string contents = 1;
}
message JsxClosingElement {
TypeScriptTerm jsxClosingElementIdentifier = 1;
}
message JsxExpression {
TypeScriptTerm jsxExpression = 1;
}
message JsxAttribute {
TypeScriptTerm jsxAttributeTarget = 1;
TypeScriptTerm jsxAttributeValue = 2;
}
message JsxFragment {
repeated TypeScriptTerm terms = 1;
}
message JsxNamespaceName {
TypeScriptTerm left = 1;
TypeScriptTerm right = 2;
}
message OptionalParameter {
repeated TypeScriptTerm optionalParameterContext = 1;
TypeScriptTerm optionalParameterSubject = 2;
}
message RequiredParameter {
repeated TypeScriptTerm requiredParameterContext = 1;
TypeScriptTerm requiredParameterSubject = 2;
}
message RestParameter {
repeated TypeScriptTerm restParameterContext = 1;
TypeScriptTerm restParameterSubject = 2;
}
message PropertySignature {
repeated TypeScriptTerm modifiers = 1;
TypeScriptTerm propertySignaturePropertyName = 2;
}
message AmbientDeclaration {
TypeScriptTerm ambientDeclarationBody = 1;
}
message EnumDeclaration {
TypeScriptTerm enumDeclarationIdentifier = 1;
repeated TypeScriptTerm enumDeclarationBody = 2;
}
message AmbientFunction {
repeated TypeScriptTerm ambientFunctionContext = 1;
TypeScriptTerm ambientFunctionIdentifier = 2;
repeated TypeScriptTerm ambientFunctionParameters = 3;
}
message ImportRequireClause {
TypeScriptTerm importRequireIdentifier = 1;
TypeScriptTerm importRequireSubject = 2;
}
message ImportClause {
repeated TypeScriptTerm importClauseElements = 1;
}
message LabeledStatement {
TypeScriptTerm labeledStatementIdentifier = 1;
TypeScriptTerm labeledStatementSubject = 2;
}
message Annotation {
TypeScriptTerm annotationType = 1;
}
message With {
TypeScriptTerm withExpression = 1;
TypeScriptTerm withBody = 2;
}
message ForOf {
TypeScriptTerm forOfBinding = 1;
TypeScriptTerm forOfSubject = 2;
TypeScriptTerm forOfBody = 3;
}
message This { }
message Update {
TypeScriptTerm updateSubject = 1;
}
message ComputedPropertyName {
TypeScriptTerm propertyName = 1;
}
message Decorator {
TypeScriptTerm decoratorTerm = 1;
}
message Import {
repeated Alias importSymbols = 1;
ImportPath importFrom = 2;
}
message QualifiedAliasedImport {
TypeScriptTerm qualifiedAliasedImportAlias = 1;
ImportPath qualifiedAliasedImportFrom = 2;
}
message SideEffectImport {
ImportPath sideEffectImportFrom = 1;
}
message DefaultExport {
TypeScriptTerm defaultExport = 1;
}
message QualifiedExport {
repeated Alias qualifiedExportSymbols = 1;
}
message QualifiedExportFrom {
ImportPath qualifiedExportFrom = 1;
repeated Alias qualifiedExportFromSymbols = 2;
}
message JavaScriptRequire {
TypeScriptTerm javascriptRequireIden = 1;
ImportPath javascriptRequireFrom = 2;
}
message List {
repeated TypeScriptTerm listContent = 1;
}