Need help with tsquery?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

phenomnomnominal
620 Stars 22 Forks MIT License 116 Commits 17 Opened issues

Description

TypeScript AST query library

Services available

!
?

Need anything else?

Contributors list

TSQuery

npm version Code Climate Test Coverage

TSQuery is a port of the ESQuery API for TypeScript! TSQuery allows you to query a TypeScript AST for patterns of syntax using a CSS style selector system.

Check out the ESQuery demo - note that the demo requires JavaScript code, not TypeScript

You can also check out the TSQuery Playground - Lovingly crafted by Uri Shaked

Installation

npm install @phenomnomnominal/tsquery --save-dev

Examples

Say we want to select all instances of an identifier with name "Animal", e.g. the identifier in the

class
declaration, and the identifier in the
extends
declaration.

We would do something like the following:

import { tsquery } from '@phenomnomnominal/tsquery';

const typescript = `

class Animal { constructor(public name: string) { } move(distanceInMeters: number = 0) { console.log(`${this.name} moved ${distanceInMeters}m.`); } }

class Snake extends Animal { constructor(name: string) { super(name); } move(distanceInMeters = 5) { console.log("Slithering..."); super.move(distanceInMeters); } }

`;

const ast = tsquery.ast(typescript); const nodes = tsquery(ast, 'Identifier[name="Animal"]'); console.log(nodes.length); // 2

Try running this code in StackBlitz!

Selectors

The following selectors are supported:

Common AST node types

  • Identifier
    - any identifier (name of a function, class, variable, etc)
  • IfStatement
    ,
    ForStatement
    ,
    WhileStatement
    ,
    DoStatement
    - control flow
  • FunctionDeclaration
    ,
    ClassDeclaration
    ,
    ArrowFunction
    - declarations
  • VariableStatement
    - var, const, let.
  • ImportDeclaration
    - any
    import
    statement
  • StringLiteral
    - any string
  • TrueKeyword
    ,
    FalseKeyword
    ,
    NullKeyword
    ,
    AnyKeyword
    - various keywords
  • CallExpression
    - function call
  • NumericLiteral
    - any numeric constant
  • NoSubstitutionTemplateLiteral
    ,
    TemplateExpression
    - template strings and expressions

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.