ESQuery is a library for querying the AST output by Esprima for patterns of syntax using a CSS style selector system. Check out the demo:
The following selectors are supported: * AST node type:
ForStatement
* wildcard:
*
* attribute
existence: [attr]
* attribute
value: [attr="foo"]
or [attr=123]
*
attribute regex: [attr=/foo.*/]
or (with flags)
[attr=/foo.*/is]
* attribute conditions:
[attr!="foo"]
, [attr>2]
,
[attr<3]
, [attr>=2]
, or
[attr<=3]
* nested attribute:
[attr.level2="foo"]
* field:
FunctionDeclaration > Identifier.id
* First
or last
child: :first-child
or :last-child
* nth-child
(no ax+b support): :nth-child(2)
* nth-last-child
(no ax+b support): :nth-last-child(1)
* descendant:
ancestor descendant
* child:
parent > child
* following
sibling: node ~ sibling
* adjacent
sibling: node + adjacent
* negation:
:not(ForStatement)
* has:
:has(ForStatement)
* matches-any:
:matches([attr] > :first-child, :last-child)
* subject
indicator: !IfStatement > [name="foo"]
* class of
AST node: :statement
, :expression
,
:declaration
, :function
, or
:pattern