rawsql-ts
Version:
[beta]High-performance SQL parser and AST analyzer written in TypeScript. Provides fast parsing and advanced transformation capabilities.
41 lines (40 loc) • 1.46 kB
TypeScript
import { Lexeme } from "../models/Lexeme";
import { SelectQuery } from "../models/SelectQuery";
export interface ParseAnalysisResult {
success: boolean;
query?: SelectQuery;
error?: string;
errorPosition?: number;
remainingTokens?: string[];
}
export declare class SelectQueryParser {
static parse(query: string): SelectQuery;
/**
* Analyzes SQL string for parsing without throwing errors.
* Returns a result object containing the parsed query on success,
* or error information if parsing fails.
*
* @param query SQL string to analyze
* @returns Analysis result containing query, error information, and success status
*/
/**
* Calculate character position from token index by finding token in original query
*/
private static calculateCharacterPosition;
static analyze(query: string): ParseAnalysisResult;
/**
* Asynchronously parse SQL string to AST.
* This method wraps the synchronous parse logic in a Promise for future extensibility.
* @param query SQL string to parse
* @returns Promise<SelectQuery>
*/
static parseAsync(query: string): Promise<SelectQuery>;
private static unionCommandSet;
private static selectCommandSet;
static parseFromLexeme(lexemes: Lexeme[], index: number): {
value: SelectQuery;
newIndex: number;
};
private static parseSimpleSelectQuery;
private static parseValuesQuery;
}