rawsql-ts
Version:
High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.
42 lines (41 loc) • 2.12 kB
TypeScript
import { SelectQuery, SimpleSelectQuery } from '../models/SelectQuery';
import { SqlParameterValue, ValueComponent } from '../models/ValueComponent';
export type OptionalConditionPruningParameters = Record<string, SqlParameterValue>;
export type OptionalConditionParameterState = 'absent' | 'present' | 'unknown';
export type OptionalConditionParameterStates = Record<string, OptionalConditionParameterState>;
export type SupportedOptionalConditionBranchKind = 'expression';
export interface SupportedOptionalConditionBranch {
query: SimpleSelectQuery;
parameterName: string;
expression: ValueComponent;
kind: SupportedOptionalConditionBranchKind;
}
export interface OptionalConditionSourceRange {
start: number;
end: number;
text: string;
}
export interface SupportedOptionalConditionBranchSpan {
parameterName: string;
kind: SupportedOptionalConditionBranchKind;
sourceRange: OptionalConditionSourceRange;
removalRange: OptionalConditionSourceRange;
}
/**
* Prunes supported optional WHERE branches when an explicitly targeted parameter is absent-equivalent.
* For the MVP, only `null` and `undefined` are treated as absent and unsupported shapes remain exact no-op.
*/
export declare const pruneOptionalConditionBranches: (query: SelectQuery, pruningParameters: OptionalConditionPruningParameters) => SelectQuery;
/**
* Collects supported top-level optional condition branches from the query graph.
* The returned branch expressions keep object identity so callers can move them without re-rendering.
*/
export declare const collectSupportedOptionalConditionBranches: (query: SelectQuery) => SupportedOptionalConditionBranch[];
/**
* Collects supported optional condition branches with source-text ranges.
*
* The AST collector remains the authority for whether a branch is supported. The range metadata
* is derived from tokenizer positions so development tools can generate runtime metadata without
* reparsing SQL in production.
*/
export declare const collectSupportedOptionalConditionBranchSpans: (sql: string) => SupportedOptionalConditionBranchSpan[];