UNPKG

@creditkarma/thrift-parser

Version:

A parser for Thrift written in TypeScript

306 lines (305 loc) 10.1 kB
export interface ThriftError { type: ErrorType; message: string; loc: TextLocation; } export interface ParseError extends ThriftError { type: ErrorType.ParseError; } export interface ScanError extends ThriftError { type: ErrorType.ScanError; } export interface Node { type: SyntaxType; } export interface SyntaxNode extends Node { loc: TextLocation; } export interface StructLike { name: Identifier; fields: Array<FieldDefinition>; comments: Array<Comment>; loc: TextLocation; } export interface TextLocation { start: TextPosition; end: TextPosition; } export interface TextPosition { line: number; column: number; index: number; } export interface Token extends SyntaxNode { text: string; } export interface ThriftDocument extends Node { type: SyntaxType.ThriftDocument; body: Array<ThriftStatement>; tokens?: Array<Token>; } export interface ThriftErrors { type: SyntaxType.ThriftErrors; errors: Array<ThriftError>; } export declare type ThriftStatement = NamespaceDefinition | IncludeDefinition | CppIncludeDefinition | ConstDefinition | StructDefinition | EnumDefinition | ExceptionDefinition | UnionDefinition | TypedefDefinition | ServiceDefinition; export declare type CommentType = SyntaxType.CommentLine | SyntaxType.CommentBlock; export declare type Comment = CommentLine | CommentBlock; export interface CommentLine extends SyntaxNode { type: SyntaxType.CommentLine; value: string; } export interface CommentBlock extends SyntaxNode { type: SyntaxType.CommentBlock; value: Array<string>; } export interface PrimarySyntax extends SyntaxNode { comments: Array<Comment>; } export declare type FieldType = BaseType | ContainerType | Identifier; export declare type FunctionType = FieldType | VoidType; export declare type KeywordType = SyntaxType.StringKeyword | SyntaxType.DoubleKeyword | SyntaxType.BoolKeyword | SyntaxType.I8Keyword | SyntaxType.I16Keyword | SyntaxType.I32Keyword | SyntaxType.I64Keyword | SyntaxType.BinaryKeyword | SyntaxType.ByteKeyword; export interface VoidType extends SyntaxNode { type: SyntaxType.VoidKeyword; } export declare type ContainerType = SetType | MapType | ListType; export interface BaseType extends SyntaxNode { type: KeywordType; } export interface SetType extends SyntaxNode { type: SyntaxType.SetType; valueType: FieldType; } export interface ListType extends SyntaxNode { type: SyntaxType.ListType; valueType: FieldType; } export interface MapType extends SyntaxNode { type: SyntaxType.MapType; keyType: FieldType; valueType: FieldType; } export declare type ConstValue = StringLiteral | IntConstant | DoubleConstant | BooleanLiteral | ConstMap | ConstList | Identifier; export interface NamespaceDefinition extends PrimarySyntax { type: SyntaxType.NamespaceDefinition; scope: Identifier; name: Identifier; } export interface ConstDefinition extends PrimarySyntax { type: SyntaxType.ConstDefinition; name: Identifier; fieldType: FieldType; initializer: ConstValue; } export declare type FieldRequired = 'required' | 'optional'; export interface IncludeDefinition extends PrimarySyntax { type: SyntaxType.IncludeDefinition; path: StringLiteral; } export interface CppIncludeDefinition extends PrimarySyntax { type: SyntaxType.CppIncludeDefinition; path: StringLiteral; } export interface InterfaceWithFields extends PrimarySyntax { name: Identifier; fields: Array<FieldDefinition>; } export interface StructDefinition extends InterfaceWithFields { type: SyntaxType.StructDefinition; } export interface UnionDefinition extends InterfaceWithFields { type: SyntaxType.UnionDefinition; } export interface ExceptionDefinition extends InterfaceWithFields { type: SyntaxType.ExceptionDefinition; } export interface FieldDefinition extends PrimarySyntax { type: SyntaxType.FieldDefinition; name: Identifier; fieldID: FieldID | null; fieldType: FunctionType; requiredness: FieldRequired | null; defaultValue: ConstValue | null; } export interface FieldID extends SyntaxNode { type: SyntaxType.FieldID; value: number; } export interface EnumDefinition extends PrimarySyntax { type: SyntaxType.EnumDefinition; name: Identifier; members: Array<EnumMember>; } export interface EnumMember extends PrimarySyntax { type: SyntaxType.EnumMember; name: Identifier; initializer: IntConstant | null; } export interface TypedefDefinition extends PrimarySyntax { type: SyntaxType.TypedefDefinition; name: Identifier; definitionType: FieldType; } export interface ServiceDefinition extends PrimarySyntax { type: SyntaxType.ServiceDefinition; name: Identifier; extends: Identifier | null; functions: Array<FunctionDefinition>; } export interface FunctionDefinition extends PrimarySyntax { type: SyntaxType.FunctionDefinition; name: Identifier; oneway: boolean; returnType: FunctionType; fields: Array<FieldDefinition>; throws: Array<FieldDefinition>; modifiers: Array<Token>; } export interface ParametersDefinition extends SyntaxNode { type: SyntaxType.ParametersDefinition; fields: Array<FieldDefinition>; } export interface ThrowsDefinition extends SyntaxNode { type: SyntaxType.ThrowsDefinition; fields: Array<FieldDefinition>; } export interface StringLiteral extends SyntaxNode { type: SyntaxType.StringLiteral; value: string; } export interface BooleanLiteral extends SyntaxNode { type: SyntaxType.BooleanLiteral; value: boolean; } export interface IntegerLiteral extends SyntaxNode { type: SyntaxType.IntegerLiteral; value: string; } export interface HexLiteral extends SyntaxNode { type: SyntaxType.HexLiteral; value: string; } export interface FloatLiteral extends SyntaxNode { type: SyntaxType.FloatLiteral; value: string; } export interface ExponentialLiteral extends SyntaxNode { type: SyntaxType.ExponentialLiteral; value: string; } export interface IntConstant extends SyntaxNode { type: SyntaxType.IntConstant; value: IntegerLiteral | HexLiteral; } export interface DoubleConstant extends SyntaxNode { type: SyntaxType.DoubleConstant; value: FloatLiteral | ExponentialLiteral; } export interface ConstMap extends SyntaxNode { type: SyntaxType.ConstMap; properties: Array<PropertyAssignment>; } export interface ConstList extends SyntaxNode { type: SyntaxType.ConstList; elements: Array<ConstValue>; } export interface PropertyAssignment extends SyntaxNode { type: SyntaxType.PropertyAssignment; name: ConstValue; initializer: ConstValue; } export interface Identifier extends SyntaxNode { type: SyntaxType.Identifier; value: string; } export declare const enum ErrorType { ParseError = "ParseError", ScanError = "ScanError", } export declare const enum SyntaxType { ThriftDocument = "ThriftDocument", ThriftErrors = "ThriftErrors", Identifier = "Identifier", FieldID = "FieldID", NamespaceDefinition = "NamespaceDefinition", IncludeDefinition = "IncludeDefinition", CppIncludeDefinition = "CppIncludeDefinition", ConstDefinition = "ConstDefinition", StructDefinition = "StructDefinition", EnumDefinition = "EnumDefinition", ServiceDefinition = "ServiceDefinition", ExceptionDefinition = "ExceptionDefinition", TypedefDefinition = "TypedefDefinition", UnionDefinition = "UnionDefinition", FieldDefinition = "FieldDefinition", FunctionDefinition = "FunctionDefinition", ParametersDefinition = "ParametersDefinition", ThrowsDefinition = "ThrowsDefinition", FieldType = "FieldType", BaseType = "BaseType", SetType = "SetType", MapType = "MapType", ListType = "ListType", ConstValue = "ConstValue", IntConstant = "IntConstant", DoubleConstant = "DoubleConstant", ConstList = "ConstList", ConstMap = "ConstMap", EnumMember = "EnumMember", CommentLine = "CommentLine", CommentBlock = "CommentBlock", StringLiteral = "StringLiteral", IntegerLiteral = "IntegerLiteral", FloatLiteral = "FloatLiteral", HexLiteral = "HexLiteral", ExponentialLiteral = "ExponentialLiteral", BooleanLiteral = "BooleanLiteral", PropertyAssignment = "PropertyAssignment", LeftParenToken = "LeftParenToken", RightParenToken = "RightParenToken", LeftBraceToken = "LeftBraceToken", RightBraceToken = "RightBraceToken", LeftBracketToken = "LeftBracketToken", RightBracketToken = "RightBracketToken", CommaToken = "CommaToken", DotToken = "DotToken", MinusToken = "MinusToken", SemicolonToken = "SemicolonToken", ColonToken = "ColonToken", StarToken = "StarToken", EqualToken = "EqualToken", LessThanToken = "LessThanToken", GreaterThanToken = "GreaterThanToken", NamespaceKeyword = "NamespaceKeyword", IncludeKeyword = "IncludeKeyword", CppIncludeKeyword = "CppIncludeKeyword", ExceptionKeyword = "ExceptionKeyword", ServiceKeyword = "ServiceKeyword", ExtendsKeyword = "ExtendsKeyword", RequiredKeyword = "RequiredKeyword", OptionalKeyword = "OptionalKeyword", FalseKeyword = "FalseKeyword", TrueKeyword = "TrueKeyword", ConstKeyword = "ConstKeyword", DoubleKeyword = "DoubleKeyword", StructKeyword = "StructKeyword", TypedefKeyword = "TypedefKeyword", UnionKeyword = "UnionKeyword", StringKeyword = "StringKeyword", BinaryKeyword = "BinaryKeyword", BoolKeyword = "BoolKeyword", ByteKeyword = "ByteKeyword", EnumKeyword = "EnumKeyword", SenumKeyword = "SenumKeyword", ListKeyword = "ListKeyword", SetKeyword = "SetKeyword", MapKeyword = "MapKeyword", I8Keyword = "I8Keyword", I16Keyword = "I16Keyword", I32Keyword = "I32Keyword", I64Keyword = "I64Keyword", ThrowsKeyword = "ThrowsKeyword", VoidKeyword = "VoidKeyword", OnewayKeyword = "OnewayKeyword", EOF = "EOF", }