UNPKG

rawsql-ts

Version:

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

146 lines (145 loc) 6.05 kB
import { FromClause, JoinClause, JoinOnClause, JoinUsingClause, FunctionSource, SourceAliasExpression, WhereClause, GroupByClause, HavingClause, SubQuerySource, WindowFrameClause, LimitClause, ForClause, OffsetClause, WindowsClause as WindowClause, CommonTable, WithClause, FetchClause, FetchExpression, UpdateClause, SetClause, ReturningClause, SetClauseItem } from "../models/Clause"; import { SimpleSelectQuery, ValuesQuery } from "../models/SelectQuery"; import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent"; import { SqlPrintToken } from "../models/SqlPrintToken"; import { InlineQuery } from "../models/ValueComponent"; import { IdentifierDecorator } from "./IdentifierDecorator"; import { ParameterDecorator } from "./ParameterDecorator"; import { CreateTableQuery } from "../models/CreateTableQuery"; export declare enum ParameterStyle { Anonymous = "anonymous", Indexed = "indexed", Named = "named" } export interface FormatterConfig { identifierEscape?: { start: string; end: string; }; parameterSymbol?: string | { start: string; end: string; }; /** * Parameter style: anonymous (?), indexed ($1), or named (:name) */ parameterStyle?: ParameterStyle; } export declare const PRESETS: Record<string, FormatterConfig>; export declare class SqlPrintTokenParser implements SqlComponentVisitor<SqlPrintToken> { private static readonly SPACE_TOKEN; private static readonly COMMA_TOKEN; private static readonly ARGUMENT_SPLIT_COMMA_TOKEN; private static readonly PAREN_OPEN_TOKEN; private static readonly PAREN_CLOSE_TOKEN; private static readonly DOT_TOKEN; private handlers; parameterDecorator: ParameterDecorator; identifierDecorator: IdentifierDecorator; index: number; constructor(options?: { preset?: FormatterConfig; identifierEscape?: { start: string; end: string; }; parameterSymbol?: string | { start: string; end: string; }; parameterStyle?: 'anonymous' | 'indexed' | 'named'; }); /** * Pretty-prints a BinarySelectQuery (e.g., UNION, INTERSECT, EXCEPT). * This will recursively print left and right queries, separated by the operator. * @param arg BinarySelectQuery */ private visitBinarySelectQuery; /** * Returns an array of tokens representing a comma followed by a space. * This is a common pattern in SQL pretty-printing. */ private static commaSpaceTokens; private static argumentCommaSpaceTokens; private visitQualifiedName; private visitPartitionByClause; private visitOrderByClause; /** * Print an OrderByItem (expression [asc|desc] [nulls first|last]) */ private visitOrderByItem; parse(arg: SqlComponent): { token: SqlPrintToken; params: any[] | Record<string, any>[] | Record<string, any>; }; visit(arg: SqlComponent): SqlPrintToken; private visitValueList; private visitColumnReference; private visitFunctionCall; private visitUnaryExpression; private visitBinaryExpression; private visitLiteralValue; private visitParameterExpression; private visitSwitchCaseArgument; private createElseToken; private visitCaseKeyValuePair; private visitRawString; private visitIdentifierString; private visitParenExpression; private visitCastExpression; private visitCaseExpression; private visitArrayExpression; private visitArrayQueryExpression; private visitBetweenExpression; private visitStringSpecifierExpression; private visitTypeValue; private visitTupleExpression; private visitWindowFrameExpression; private visitWindowFrameSpec; /** * Prints a window frame boundary value, such as "5 preceding" or "3 following". * @param arg WindowFrameBoundaryValue */ private visitWindowFrameBoundaryValue; /** * Prints a static window frame bound, such as "unbounded preceding", "current row", or "unbounded following". * @param arg WindowFrameBoundStatic */ private visitWindowFrameBoundStatic; private visitSelectItem; private visitSelectClause; private visitDistinct; private visitDistinctOn; private visitTableSource; private visitSourceExpression; visitFromClause(arg: FromClause): SqlPrintToken; visitJoinClause(arg: JoinClause): SqlPrintToken; visitJoinOnClause(arg: JoinOnClause): SqlPrintToken; visitJoinUsingClause(arg: JoinUsingClause): SqlPrintToken; visitFunctionSource(arg: FunctionSource): SqlPrintToken; visitSourceAliasExpression(arg: SourceAliasExpression): SqlPrintToken; visitWhereClause(arg: WhereClause): SqlPrintToken; visitGroupByClause(arg: GroupByClause): SqlPrintToken; visitHavingClause(arg: HavingClause): SqlPrintToken; visitWindowClause(arg: WindowClause): SqlPrintToken; visitWindowFrameClause(arg: WindowFrameClause): SqlPrintToken; visitLimitClause(arg: LimitClause): SqlPrintToken; visitOffsetClause(arg: OffsetClause): SqlPrintToken; visitFetchClause(arg: FetchClause): SqlPrintToken; visitFetchExpression(arg: FetchExpression): SqlPrintToken; visitForClause(arg: ForClause): SqlPrintToken; visitWithClause(arg: WithClause): SqlPrintToken; visitCommonTable(arg: CommonTable): SqlPrintToken; visitSimpleQuery(arg: SimpleSelectQuery): SqlPrintToken; visitSubQuerySource(arg: SubQuerySource): SqlPrintToken; visitValuesQuery(arg: ValuesQuery): SqlPrintToken; visitInlineQuery(arg: InlineQuery): SqlPrintToken; private visitInsertQuery; private visitInsertClause; private visitUpdateQuery; visitUpdateClause(arg: UpdateClause): SqlPrintToken; visitSetClause(arg: SetClause): SqlPrintToken; visitSetClauseItem(arg: SetClauseItem): SqlPrintToken; visitReturningClause(arg: ReturningClause): SqlPrintToken; visitCreateTableQuery(arg: CreateTableQuery): SqlPrintToken; }