Python (3) Parser for JavaScript/TypeScript, based on antlr4ts, grammar taken from antlr4's python grammar too (so please report bugs and open pull requests related to grammars upstream)
Significantly based on java-ast - all credit to Urish
import { parse, createVisitor } from 'python-ast';
const countMethods = (source: string) => {
let ast = parse(source);
return createVisitor({
visitFuncdef: () => 1,
defaultResult: () => 0,
aggregateResult: (a, b) => a + b,
}).visit(ast);
};
console.log(
countMethods(`
class A:
a: int
def b(self):
pass
def c(self):
pass
class B:
def z(self, i):
pass
`),
); // logs 3