@@ -331,12 +331,59 @@ function getProtobufShapeForNode(node: TSESTree.Node) {
331331 case 'TSModuleDeclaration' :
332332 shape = visitTSModuleDeclaration ( node ) ;
333333 break ;
334+ // JSX node types
335+ case 'JSXElement' :
336+ shape = visitJSXElement ( node ) ;
337+ break ;
338+ case 'JSXFragment' :
339+ shape = visitJSXFragment ( node ) ;
340+ break ;
341+ case 'JSXOpeningElement' :
342+ shape = visitJSXOpeningElement ( node ) ;
343+ break ;
344+ case 'JSXClosingElement' :
345+ shape = visitJSXClosingElement ( node ) ;
346+ break ;
347+ case 'JSXOpeningFragment' :
348+ shape = visitJSXOpeningFragment ( node ) ;
349+ break ;
350+ case 'JSXClosingFragment' :
351+ shape = visitJSXClosingFragment ( node ) ;
352+ break ;
353+ case 'JSXAttribute' :
354+ shape = visitJSXAttribute ( node ) ;
355+ break ;
356+ case 'JSXIdentifier' :
357+ shape = visitJSXIdentifier ( node ) ;
358+ break ;
359+ case 'JSXMemberExpression' :
360+ shape = visitJSXMemberExpression ( node ) ;
361+ break ;
362+ case 'JSXNamespacedName' :
363+ shape = visitJSXNamespacedName ( node ) ;
364+ break ;
365+ case 'JSXSpreadAttribute' :
366+ shape = visitJSXSpreadAttribute ( node ) ;
367+ break ;
368+ case 'JSXExpressionContainer' :
369+ shape = visitJSXExpressionContainer ( node ) ;
370+ break ;
371+ case 'JSXSpreadChild' :
372+ shape = visitJSXSpreadChild ( node ) ;
373+ break ;
374+ case 'JSXText' :
375+ shape = visitJSXText ( node ) ;
376+ break ;
377+ case 'JSXEmptyExpression' :
378+ shape = visitJSXEmptyExpression ( node ) ;
379+ break ;
334380 case 'TSTypeAliasDeclaration' :
335381 case 'TSInterfaceDeclaration' :
336382 case 'TSEmptyBodyFunctionExpression' :
337383 case 'TSEnumDeclaration' :
338384 case 'TSDeclareFunction' :
339385 case 'TSAbstractMethodDefinition' :
386+ case 'TSTypeParameterInstantiation' :
340387 shape = { } ;
341388 break ;
342389 default :
@@ -956,3 +1003,182 @@ function visitTSParameterProperty(node: TSESTree.TSParameterProperty) {
9561003export function lowerCaseFirstLetter ( str : string ) {
9571004 return str . charAt ( 0 ) . toLowerCase ( ) + str . slice ( 1 ) ;
9581005}
1006+
1007+ function visitJSXElement ( node : TSESTree . JSXElement ) {
1008+ /*
1009+ * export interface JSXElement extends BaseNode {
1010+ * type: AST_NODE_TYPES.JSXElement;
1011+ * children: JSXChild[];
1012+ * closingElement: JSXClosingElement | null;
1013+ * openingElement: JSXOpeningElement;
1014+ * }
1015+ */
1016+ return {
1017+ openingElement : visitNode ( node . openingElement ) ,
1018+ closingElement : visitNode ( node . closingElement ) ,
1019+ children : node . children . map ( visitNode ) ,
1020+ } ;
1021+ }
1022+ function visitJSXFragment ( node : TSESTree . JSXFragment ) {
1023+ /*
1024+ * export interface JSXFragment extends BaseNode {
1025+ * type: AST_NODE_TYPES.JSXFragment;
1026+ * children: JSXChild[];
1027+ * closingFragment: JSXClosingFragment;
1028+ * openingFragment: JSXOpeningFragment;
1029+ * }
1030+ */
1031+ return {
1032+ openingFragment : visitNode ( node . openingFragment ) ,
1033+ closingFragment : visitNode ( node . closingFragment ) ,
1034+ children : node . children . map ( visitNode ) ,
1035+ } ;
1036+ }
1037+ function visitJSXOpeningElement ( node : TSESTree . JSXOpeningElement ) {
1038+ /*
1039+ * export interface JSXOpeningElement extends BaseNode {
1040+ * type: AST_NODE_TYPES.JSXOpeningElement;
1041+ * attributes: (JSXAttribute | JSXSpreadAttribute)[];
1042+ * name: JSXTagNameExpression;
1043+ * selfClosing: boolean;
1044+ * typeArguments: TSTypeParameterInstantiation | undefined;
1045+ * }
1046+ */
1047+ return {
1048+ name : visitNode ( node . name ) ,
1049+ attributes : node . attributes . map ( visitNode ) ,
1050+ selfClosing : node . selfClosing ,
1051+ typeArguments : visitNode ( node . typeArguments ) ,
1052+ } ;
1053+ }
1054+ function visitJSXClosingElement ( node : TSESTree . JSXClosingElement ) {
1055+ /*
1056+ * export interface JSXClosingElement extends BaseNode {
1057+ * type: AST_NODE_TYPES.JSXClosingElement;
1058+ * name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName;
1059+ * }
1060+ */
1061+ return {
1062+ name : visitNode ( node . name ) ,
1063+ } ;
1064+ }
1065+ function visitJSXOpeningFragment ( _node : TSESTree . JSXOpeningFragment ) {
1066+ /*
1067+ * export interface JSXOpeningFragment extends BaseNode {
1068+ * type: AST_NODE_TYPES.JSXOpeningFragment;
1069+ * }
1070+ */
1071+ return { } ;
1072+ }
1073+ function visitJSXClosingFragment ( _node : TSESTree . JSXClosingFragment ) {
1074+ /*
1075+ * export interface JSXClosingFragment extends BaseNode {
1076+ * type: AST_NODE_TYPES.JSXClosingFragment;
1077+ * }
1078+ */
1079+ return { } ;
1080+ }
1081+ function visitJSXAttribute ( node : TSESTree . JSXAttribute ) {
1082+ /*
1083+ * export interface JSXAttribute extends BaseNode {
1084+ * type: AST_NODE_TYPES.JSXAttribute;
1085+ * name: JSXIdentifier | JSXNamespacedName;
1086+ * value: JSXElement | JSXExpression | Literal | null;
1087+ * }
1088+ */
1089+ return {
1090+ name : visitNode ( node . name ) ,
1091+ value : visitNode ( node . value ) ,
1092+ } ;
1093+ }
1094+ function visitJSXIdentifier ( node : TSESTree . JSXIdentifier ) {
1095+ /*
1096+ * export interface JSXIdentifier extends BaseNode {
1097+ * type: AST_NODE_TYPES.JSXIdentifier;
1098+ * name: string;
1099+ * }
1100+ */
1101+ return {
1102+ name : node . name ,
1103+ } ;
1104+ }
1105+ function visitJSXMemberExpression ( node : TSESTree . JSXMemberExpression ) {
1106+ /*
1107+ * export interface JSXMemberExpression extends BaseNode {
1108+ * type: AST_NODE_TYPES.JSXMemberExpression;
1109+ * object: JSXTagNameExpression;
1110+ * property: JSXIdentifier;
1111+ * }
1112+ */
1113+ return {
1114+ object : visitNode ( node . object ) ,
1115+ property : visitNode ( node . property ) ,
1116+ } ;
1117+ }
1118+ function visitJSXNamespacedName ( node : TSESTree . JSXNamespacedName ) {
1119+ /*
1120+ * export interface JSXNamespacedName extends BaseNode {
1121+ * type: AST_NODE_TYPES.JSXNamespacedName;
1122+ * name: JSXIdentifier;
1123+ * namespace: JSXIdentifier;
1124+ * }
1125+ */
1126+ return {
1127+ name : visitNode ( node . name ) ,
1128+ namespace : visitNode ( node . namespace ) ,
1129+ } ;
1130+ }
1131+ function visitJSXSpreadAttribute ( node : TSESTree . JSXSpreadAttribute ) {
1132+ /*
1133+ * export interface JSXSpreadAttribute extends BaseNode {
1134+ * type: AST_NODE_TYPES.JSXSpreadAttribute;
1135+ * argument: Expression;
1136+ * }
1137+ */
1138+ return {
1139+ argument : visitNode ( node . argument ) ,
1140+ } ;
1141+ }
1142+ function visitJSXExpressionContainer ( node : TSESTree . JSXExpressionContainer ) {
1143+ /*
1144+ * export interface JSXExpressionContainer extends BaseNode {
1145+ * type: AST_NODE_TYPES.JSXExpressionContainer;
1146+ * expression: Expression | JSXEmptyExpression;
1147+ * }
1148+ */
1149+ return {
1150+ expression : visitNode ( node . expression ) ,
1151+ } ;
1152+ }
1153+ function visitJSXSpreadChild ( node : TSESTree . JSXSpreadChild ) {
1154+ /*
1155+ * export interface JSXSpreadChild extends BaseNode {
1156+ * type: AST_NODE_TYPES.JSXSpreadChild;
1157+ * expression: Expression | JSXEmptyExpression;
1158+ * }
1159+ */
1160+ return {
1161+ expression : visitNode ( node . expression ) ,
1162+ } ;
1163+ }
1164+ function visitJSXText ( node : TSESTree . JSXText ) {
1165+ /*
1166+ * export interface JSXText extends BaseNode {
1167+ * type: AST_NODE_TYPES.JSXText;
1168+ * raw: string;
1169+ * value: string;
1170+ * }
1171+ */
1172+ return {
1173+ raw : node . raw ,
1174+ value : node . value ,
1175+ } ;
1176+ }
1177+ function visitJSXEmptyExpression ( _node : TSESTree . JSXEmptyExpression ) {
1178+ /*
1179+ * export interface JSXEmptyExpression extends BaseNode {
1180+ * type: AST_NODE_TYPES.JSXEmptyExpression;
1181+ * }
1182+ */
1183+ return { } ;
1184+ }
0 commit comments