@getlago/pgsql-ast-parser
Version:
Yet another simple Postgres SQL parser/modifier
33 lines • 1.09 kB
TypeScript
import { IAstPartialMapper } from './ast-mapper';
import { ReplaceReturnType } from './utils';
export declare type IAstPartialVisitor = {
[key in keyof IAstPartialMapper]: ReplaceReturnType<IAstPartialMapper[key], any>;
};
export declare type IAstFullVisitor = {
[key in keyof IAstPartialVisitor]-?: IAstPartialVisitor[key];
};
export declare type IAstVisitor = IAstFullVisitor & {
super(): IAstVisitor;
};
/**
* Builds an AST visitor based on the default implementation, merged with the one you provide.
*
* Example of visitor which counts references to a column 'foo':
*
* ```ts
* let cnt = 0;
* const visitor = astVisitor(v => ({
* ref: r => {
* if (r.name === 'foo') {
* cnt++;
* }
* v.super().ref(r);
* }
* }));
*
* visitor.statement(myStatementToCount);
* console.log(`${cnt} references to foo !`);
* ```
*/
export declare function astVisitor<T extends IAstPartialVisitor = IAstPartialVisitor>(visitorBuilder: (defaultImplem: IAstVisitor) => T): IAstVisitor;
//# sourceMappingURL=ast-visitor.d.ts.map