1
1
mirror of https://github.com/github/semantic.git synced 2024-12-23 23:11:50 +03:00
semantic/proto/typescript.proto
2018-07-02 18:17:17 -04:00

624 lines
30 KiB
Protocol Buffer

syntax = "proto3";
import "types.proto";
package github.semantic.typescript;
message TypeScriptTerm { TypeScriptSyntax syntax = 1;
}
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 Alias { bytes aliasValue = 1;
bytes aliasName = 2;
}
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;
}