UNPKG

rawsql-ts

Version:

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

39 lines (38 loc) 1.95 kB
import type { SelectQuery } from '../models/SelectQuery'; import type { InsertQuery } from '../models/InsertQuery'; import type { UpdateQuery } from '../models/UpdateQuery'; import type { DeleteQuery } from '../models/DeleteQuery'; import type { CreateTableQuery } from '../models/CreateTableQuery'; import type { MergeQuery } from '../models/MergeQuery'; import type { DropTableStatement, DropIndexStatement, CreateIndexStatement, AlterTableStatement, DropConstraintStatement } from '../models/DDLStatements'; export type ParsedStatement = SelectQuery | InsertQuery | UpdateQuery | DeleteQuery | CreateTableQuery | MergeQuery | DropTableStatement | DropIndexStatement | CreateIndexStatement | AlterTableStatement | DropConstraintStatement; export interface SqlParserOptions { mode?: 'single' | 'multiple'; skipEmptyStatements?: boolean; } export interface SqlParserManyOptions { skipEmptyStatements?: boolean; } /** * Canonical entry point for SQL parsing. * Delegates to dedicated parsers for SELECT, INSERT, UPDATE, and DELETE statements, and is designed to embrace additional statement types next. */ export declare class SqlParser { static parse(sql: string, options?: SqlParserOptions): ParsedStatement; static parseMany(sql: string, options?: SqlParserManyOptions): ParsedStatement[]; private static dispatchParse; private static parseSelectStatement; private static parseInsertStatement; private static parseUpdateStatement; private static parseDeleteStatement; private static parseCreateTableStatement; private static parseDropTableStatement; private static parseDropIndexStatement; private static parseCreateIndexStatement; private static parseAlterTableStatement; private static parseDropConstraintStatement; private static parseMergeStatement; private static getCommandAfterWith; private static cloneLexemeArray; private static consumeNextStatement; }