UNPKG

rawsql-ts

Version:

High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.

54 lines (53 loc) 2.06 kB
import { CTEQuery } from "../models/Clause"; import { SqlComponent } from "../models/SqlComponent"; /** * Source span for a named query definition when parser position metadata is available. * * @remarks The current extractor does not synthesize ranges. `range` and `nameRange` * are returned as `null` until AST nodes expose reliable definition spans. */ export interface NamedQueryDefinitionSourceRange { start: number; end: number; } /** * DTO-style representation of a named query definition from a SQL AST. */ export interface NamedQueryDefinition { /** The stable definition name, such as a CTE alias. */ name: string; /** The AST query node that defines the named query. */ query: CTEQuery; /** Whether the definition belongs to a `WITH RECURSIVE` clause, when that context is available. */ recursive?: boolean; /** Full definition source range when available. Currently `null`. */ range: NamedQueryDefinitionSourceRange | null; /** Definition-name source range when available. Currently `null`. */ nameRange: NamedQueryDefinitionSourceRange | null; } /** * Extracts named query definitions, starting with CTE definitions from `WITH` clauses. * * @remarks Definitions are emitted in SQL source order. For nested CTEs, the outer * CTE definition is emitted when its name is encountered, then definitions inside * that CTE body are emitted before later sibling CTE definitions. */ export declare class NamedQueryDefinitionExtractor { private readonly definitions; private readonly visited; /** * Extract named query definitions from an AST component. */ static extract(input: SqlComponent | null | undefined): NamedQueryDefinition[]; private visit; private visitSelectQuery; private visitSimpleSelectQuery; private visitInsertQuery; private visitUpdateQuery; private visitDeleteQuery; private visitMergeQuery; private visitWithClause; private visitCommonTable; private visitKnownSqlComponent; private visitKnownValueComponent; }