rawsql-ts
Version:
[beta]High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.
33 lines • 1.04 kB
JavaScript
import { ParameterExpression } from "../models/ValueComponent";
/**
* Utility class to collect all ParameterExpression nodes from an AST.
*/
export class ParameterCollector {
/**
* Recursively collect all ParameterExpression nodes from AST.
* @param node AST root
* @returns ParameterExpression[]
*/
static collect(node) {
const result = [];
function walk(n) {
if (!n || typeof n !== 'object')
return;
if (n.constructor && n.constructor.kind === ParameterExpression.kind) {
result.push(n);
}
for (const key of Object.keys(n)) {
const v = n[key];
if (Array.isArray(v)) {
v.forEach(walk);
}
else if (v && typeof v === 'object' && v.constructor && v.constructor.kind) {
walk(v);
}
}
}
walk(node);
return result;
}
}
//# sourceMappingURL=ParameterCollector.js.map