UNPKG

@uwdata/mosaic-sql

Version:

SQL query construction and analysis.

32 lines 960 B
import { isNode } from '../ast/node.js'; import { recurse } from './recurse.js'; /** * Perform a traversal of a SQL expression AST. * @param node Root node for AST traversal. * @param visit Visitor callback function. */ export function walk(node, visit) { if (!isNode(node)) return; const result = visit(node); if (result) return result; const props = recurse[node.type]; const n = props?.length ?? 0; for (let i = 0; i < n; ++i) { // @ts-expect-error lookup of valid property const value = node[props[i]]; if (Array.isArray(value)) { const m = value.length; for (let j = 0; j < m; ++j) { if (value[j] && Number(walk(value[j], visit)) < 0) { return result; } } } else if (value && Number(walk(value, visit)) < 0) { return -1; } } } //# sourceMappingURL=walk.js.map