@phenomnomnominal/tsquery
    TypeScript icon, indicating that this package has built-in type declarations

    4.1.1 • Public • Published

    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

    Keywords

    none

    Install

    npm i @phenomnomnominal/tsquery

    DownloadsWeekly Downloads

    214,746

    Version

    4.1.1

    License

    MIT

    Unpacked Size

    60.5 kB

    Total Files

    78

    Last publish

    Collaborators

    • phenomnomnominal