| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370 | // Generated by typings// Source: https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/estree/estree.d.ts// Type definitions for ESTree AST specification// Project: https://github.com/estree/estree// Definitions by: RReverser <https://github.com/RReverser>// Definitions: https://github.com/DefinitelyTyped/DefinitelyTypeddeclare namespace ESTree {  interface Node {    type: string;    loc?: SourceLocation;    range?: [number, number];  }  interface SourceLocation {    source?: string;    start: Position;    end: Position;  }  interface Position {    line: number;    column: number;  }  interface Program extends Node {    body: Array<Statement | ModuleDeclaration>;    sourceType: string;  }  interface Function extends Node {    id?: Identifier;    params: Array<Pattern>;    body: BlockStatement | Expression;    generator: boolean;  }  interface Statement extends Node {}  interface EmptyStatement extends Statement {}  interface BlockStatement extends Statement {    body: Array<Statement>;  }  interface ExpressionStatement extends Statement {    expression: Expression;  }  interface IfStatement extends Statement {    test: Expression;    consequent: Statement;    alternate?: Statement;  }  interface LabeledStatement extends Statement {    label: Identifier;    body: Statement;  }  interface BreakStatement extends Statement {    label?: Identifier;  }  interface ContinueStatement extends Statement {    label?: Identifier;  }  interface WithStatement extends Statement {    object: Expression;    body: Statement;  }  interface SwitchStatement extends Statement {    discriminant: Expression;    cases: Array<SwitchCase>;  }  interface ReturnStatement extends Statement {    argument?: Expression;  }  interface ThrowStatement extends Statement {    argument: Expression;  }  interface TryStatement extends Statement {    block: BlockStatement;    handler?: CatchClause;    finalizer?: BlockStatement;  }  interface WhileStatement extends Statement {    test: Expression;    body: Statement;  }  interface DoWhileStatement extends Statement {    body: Statement;    test: Expression;  }  interface ForStatement extends Statement {    init?: VariableDeclaration | Expression;    test?: Expression;    update?: Expression;    body: Statement;  }  interface ForInStatement extends Statement {    left: VariableDeclaration | Expression;    right: Expression;    body: Statement;  }  interface DebuggerStatement extends Statement {}  interface Declaration extends Statement {}  interface FunctionDeclaration extends Function, Declaration {    id: Identifier;  }  interface VariableDeclaration extends Declaration {    declarations: Array<VariableDeclarator>;    kind: string;  }  interface VariableDeclarator extends Node {    id: Pattern;    init?: Expression;  }  interface Expression extends Node {}  interface ThisExpression extends Expression {}  interface ArrayExpression extends Expression {    elements: Array<Expression | SpreadElement>;  }  interface ObjectExpression extends Expression {    properties: Array<Property>;  }  interface Property extends Node {    key: Expression;    value: Expression;    kind: string;    method: boolean;    shorthand: boolean;    computed: boolean;  }  interface FunctionExpression extends Function, Expression {}  interface SequenceExpression extends Expression {    expressions: Array<Expression>;  }  interface UnaryExpression extends Expression {    operator: UnaryOperator;    prefix: boolean;    argument: Expression;  }  interface BinaryExpression extends Expression {    operator: BinaryOperator;    left: Expression;    right: Expression;  }  interface AssignmentExpression extends Expression {    operator: AssignmentOperator;    left: Pattern | MemberExpression;    right: Expression;  }  interface UpdateExpression extends Expression {    operator: UpdateOperator;    argument: Expression;    prefix: boolean;  }  interface LogicalExpression extends Expression {    operator: LogicalOperator;    left: Expression;    right: Expression;  }  interface ConditionalExpression extends Expression {    test: Expression;    alternate: Expression;    consequent: Expression;  }  interface CallExpression extends Expression {    callee: Expression | Super;    arguments: Array<Expression | SpreadElement>;  }  interface NewExpression extends CallExpression {}  interface MemberExpression extends Expression, Pattern {    object: Expression | Super;    property: Expression;    computed: boolean;  }  interface Pattern extends Node {}  interface SwitchCase extends Node {    test?: Expression;    consequent: Array<Statement>;  }  interface CatchClause extends Node {    param: Pattern;    body: BlockStatement;  }  interface Identifier extends Node, Expression, Pattern {    name: string;  }  interface Literal extends Node, Expression {    value?: string | boolean | number | RegExp;  }  interface RegExpLiteral extends Literal {    regex: {      pattern: string;      flags: string;    };  }  type UnaryOperator = string;  type BinaryOperator = string;  type LogicalOperator = string;  type AssignmentOperator = string;  type UpdateOperator = string;  interface ForOfStatement extends ForInStatement {}  interface Super extends Node {}  interface SpreadElement extends Node {    argument: Expression;  }  interface ArrowFunctionExpression extends Function, Expression {    expression: boolean;  }  interface YieldExpression extends Expression {    argument?: Expression;    delegate: boolean;  }  interface TemplateLiteral extends Expression {    quasis: Array<TemplateElement>;    expressions: Array<Expression>;  }  interface TaggedTemplateExpression extends Expression {    tag: Expression;    quasi: TemplateLiteral;  }  interface TemplateElement extends Node {    tail: boolean;    value: {      cooked: string;      raw: string;    };  }  interface AssignmentProperty extends Property {    value: Pattern;    kind: string;    method: boolean;  }  interface ObjectPattern extends Pattern {    properties: Array<AssignmentProperty>;  }  interface ArrayPattern extends Pattern {    elements: Array<Pattern>;  }  interface RestElement extends Pattern {    argument: Pattern;  }  interface AssignmentPattern extends Pattern {    left: Pattern;    right: Expression;  }  interface Class extends Node {    id?: Identifier;    superClass: Expression;    body: ClassBody;  }  interface ClassBody extends Node {    body: Array<MethodDefinition>;  }  interface MethodDefinition extends Node {    key: Expression;    value: FunctionExpression;    kind: string;    computed: boolean;    static: boolean;  }  interface ClassDeclaration extends Class, Declaration {    id: Identifier;  }  interface ClassExpression extends Class, Expression {}  interface MetaProperty extends Expression {    meta: Identifier;    property: Identifier;  }  interface ModuleDeclaration extends Node {}  interface ModuleSpecifier extends Node {    local: Identifier;  }  interface ImportDeclaration extends ModuleDeclaration {    specifiers: Array<ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier>;    source: Literal;  }  interface ImportSpecifier extends ModuleSpecifier {    imported: Identifier;  }  interface ImportDefaultSpecifier extends ModuleSpecifier {}  interface ImportNamespaceSpecifier extends ModuleSpecifier {}  interface ExportNamedDeclaration extends ModuleDeclaration {    declaration?: Declaration;    specifiers: Array<ExportSpecifier>;    source?: Literal;  }  interface ExportSpecifier extends ModuleSpecifier {    exported: Identifier;  }  interface ExportDefaultDeclaration extends ModuleDeclaration {    declaration: Declaration | Expression;  }  interface ExportAllDeclaration extends ModuleDeclaration {    source: Literal;  }}
 |