rawsql-ts 0.1.0-beta.11 → 0.1.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -18
- package/dist/esm/index.js +17 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/models/BinarySelectQuery.js +137 -0
- package/dist/esm/models/BinarySelectQuery.js.map +1 -0
- package/dist/esm/models/Clause.js +289 -0
- package/dist/esm/models/Clause.js.map +1 -0
- package/dist/esm/models/KeywordTrie.js +48 -0
- package/dist/esm/models/KeywordTrie.js.map +1 -0
- package/dist/esm/models/Lexeme.js +18 -0
- package/dist/esm/models/Lexeme.js.map +1 -0
- package/dist/esm/models/SelectQuery.js +5 -0
- package/dist/esm/models/SelectQuery.js.map +1 -0
- package/dist/esm/models/SimpleSelectQuery.js +288 -0
- package/dist/esm/models/SimpleSelectQuery.js.map +1 -0
- package/dist/esm/models/SqlComponent.js +22 -0
- package/dist/esm/models/SqlComponent.js.map +1 -0
- package/dist/esm/models/ValueComponent.js +223 -0
- package/dist/esm/models/ValueComponent.js.map +1 -0
- package/dist/esm/models/ValuesQuery.js +12 -0
- package/dist/esm/models/ValuesQuery.js.map +1 -0
- package/dist/esm/parsers/CommandExpressionParser.js +120 -0
- package/dist/esm/parsers/CommandExpressionParser.js.map +1 -0
- package/dist/esm/parsers/CommonTableParser.js +58 -0
- package/dist/esm/parsers/CommonTableParser.js.map +1 -0
- package/dist/esm/parsers/ForClauseParser.js +54 -0
- package/dist/esm/parsers/ForClauseParser.js.map +1 -0
- package/dist/esm/parsers/FromClauseParser.js +43 -0
- package/dist/esm/parsers/FromClauseParser.js.map +1 -0
- package/dist/esm/parsers/FunctionExpressionParser.js +174 -0
- package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -0
- package/dist/esm/parsers/GroupByParser.js +54 -0
- package/dist/esm/parsers/GroupByParser.js.map +1 -0
- package/dist/esm/parsers/HavingParser.js +32 -0
- package/dist/esm/parsers/HavingParser.js.map +1 -0
- package/dist/esm/parsers/IdentifierParser.js +35 -0
- package/dist/esm/parsers/IdentifierParser.js.map +1 -0
- package/dist/esm/parsers/JoinClauseParser.js +101 -0
- package/dist/esm/parsers/JoinClauseParser.js.map +1 -0
- package/dist/esm/parsers/KeywordParser.js +87 -0
- package/dist/esm/parsers/KeywordParser.js.map +1 -0
- package/dist/esm/parsers/LimitClauseParser.js +46 -0
- package/dist/esm/parsers/LimitClauseParser.js.map +1 -0
- package/dist/esm/parsers/LiteralParser.js +34 -0
- package/dist/esm/parsers/LiteralParser.js.map +1 -0
- package/dist/esm/parsers/OrderByClauseParser.js +73 -0
- package/dist/esm/parsers/OrderByClauseParser.js.map +1 -0
- package/dist/esm/parsers/OverExpressionParser.js +40 -0
- package/dist/esm/parsers/OverExpressionParser.js.map +1 -0
- package/dist/esm/parsers/ParameterExpressionParser.js +11 -0
- package/dist/esm/parsers/ParameterExpressionParser.js.map +1 -0
- package/dist/esm/parsers/ParenExpressionParser.js +29 -0
- package/dist/esm/parsers/ParenExpressionParser.js.map +1 -0
- package/dist/esm/parsers/PartitionByParser.js +49 -0
- package/dist/esm/parsers/PartitionByParser.js.map +1 -0
- package/dist/esm/parsers/SelectClauseParser.js +80 -0
- package/dist/esm/parsers/SelectClauseParser.js.map +1 -0
- package/dist/esm/parsers/SelectQueryParser.js +149 -0
- package/dist/esm/parsers/SelectQueryParser.js.map +1 -0
- package/dist/esm/parsers/SourceAliasExpressionParser.js +45 -0
- package/dist/esm/parsers/SourceAliasExpressionParser.js.map +1 -0
- package/dist/esm/parsers/SourceExpressionParser.js +31 -0
- package/dist/esm/parsers/SourceExpressionParser.js.map +1 -0
- package/dist/esm/parsers/SourceParser.js +115 -0
- package/dist/esm/parsers/SourceParser.js.map +1 -0
- package/dist/esm/parsers/SqlTokenizer.js +170 -0
- package/dist/esm/parsers/SqlTokenizer.js.map +1 -0
- package/dist/esm/parsers/StringSpecifierExpressionParser.js +18 -0
- package/dist/esm/parsers/StringSpecifierExpressionParser.js.map +1 -0
- package/dist/esm/parsers/UnaryExpressionParser.js +26 -0
- package/dist/esm/parsers/UnaryExpressionParser.js.map +1 -0
- package/dist/esm/parsers/ValueParser.js +132 -0
- package/dist/esm/parsers/ValueParser.js.map +1 -0
- package/dist/esm/parsers/ValuesQueryParser.js +82 -0
- package/dist/esm/parsers/ValuesQueryParser.js.map +1 -0
- package/dist/esm/parsers/WhereClauseParser.js +32 -0
- package/dist/esm/parsers/WhereClauseParser.js.map +1 -0
- package/dist/esm/parsers/WindowClauseParser.js +41 -0
- package/dist/esm/parsers/WindowClauseParser.js.map +1 -0
- package/dist/esm/parsers/WindowExpressionParser.js +159 -0
- package/dist/esm/parsers/WindowExpressionParser.js.map +1 -0
- package/dist/esm/parsers/WithClauseParser.js +53 -0
- package/dist/esm/parsers/WithClauseParser.js.map +1 -0
- package/dist/esm/tokenReaders/BaseTokenReader.js +78 -0
- package/dist/esm/tokenReaders/BaseTokenReader.js.map +1 -0
- package/dist/esm/tokenReaders/CommandTokenReader.js +141 -0
- package/dist/esm/tokenReaders/CommandTokenReader.js.map +1 -0
- package/dist/esm/tokenReaders/FunctionTokenReader.js +41 -0
- package/dist/esm/tokenReaders/FunctionTokenReader.js.map +1 -0
- package/dist/esm/tokenReaders/IdentifierTokenReader.js +66 -0
- package/dist/esm/tokenReaders/IdentifierTokenReader.js.map +1 -0
- package/dist/esm/tokenReaders/LiteralTokenReader.js +185 -0
- package/dist/esm/tokenReaders/LiteralTokenReader.js.map +1 -0
- package/dist/esm/tokenReaders/OperatorTokenReader.js +94 -0
- package/dist/esm/tokenReaders/OperatorTokenReader.js.map +1 -0
- package/dist/esm/tokenReaders/ParameterTokenReader.js +40 -0
- package/dist/esm/tokenReaders/ParameterTokenReader.js.map +1 -0
- package/dist/esm/tokenReaders/StringSpecifierTokenReader.js +27 -0
- package/dist/esm/tokenReaders/StringSpecifierTokenReader.js.map +1 -0
- package/dist/esm/tokenReaders/SymbolTokenReader.js +31 -0
- package/dist/esm/tokenReaders/SymbolTokenReader.js.map +1 -0
- package/dist/esm/tokenReaders/TokenReaderManager.js +106 -0
- package/dist/esm/tokenReaders/TokenReaderManager.js.map +1 -0
- package/dist/esm/tokenReaders/TypeTokenReader.js +55 -0
- package/dist/esm/tokenReaders/TypeTokenReader.js.map +1 -0
- package/dist/esm/transformers/CTEBuilder.js +184 -0
- package/dist/esm/transformers/CTEBuilder.js.map +1 -0
- package/dist/esm/transformers/CTECollector.js +380 -0
- package/dist/esm/transformers/CTECollector.js.map +1 -0
- package/dist/esm/transformers/CTEDisabler.js +321 -0
- package/dist/esm/transformers/CTEDisabler.js.map +1 -0
- package/dist/esm/transformers/CTEInjector.js +79 -0
- package/dist/esm/transformers/CTEInjector.js.map +1 -0
- package/dist/esm/transformers/CTENormalizer.js +42 -0
- package/dist/esm/transformers/CTENormalizer.js.map +1 -0
- package/dist/esm/transformers/Formatter.js +463 -0
- package/dist/esm/transformers/Formatter.js.map +1 -0
- package/dist/esm/transformers/QueryConverter.js +115 -0
- package/dist/esm/transformers/QueryConverter.js.map +1 -0
- package/dist/esm/transformers/SelectValueCollector.js +245 -0
- package/dist/esm/transformers/SelectValueCollector.js.map +1 -0
- package/dist/esm/transformers/SelectableColumnCollector.js +304 -0
- package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -0
- package/dist/esm/transformers/TableColumnResolver.js +2 -0
- package/dist/esm/transformers/TableColumnResolver.js.map +1 -0
- package/dist/esm/transformers/TableSourceCollector.js +380 -0
- package/dist/esm/transformers/TableSourceCollector.js.map +1 -0
- package/dist/esm/transformers/UpstreamSelectQueryFinder.js +125 -0
- package/dist/esm/transformers/UpstreamSelectQueryFinder.js.map +1 -0
- package/dist/esm/types/index.d.ts +14 -0
- package/dist/esm/types/models/BinarySelectQuery.d.ts +91 -0
- package/dist/esm/types/models/Clause.d.ts +189 -0
- package/dist/esm/types/models/KeywordTrie.d.ts +11 -0
- package/dist/esm/types/models/Lexeme.d.ts +25 -0
- package/dist/esm/types/models/SelectQuery.d.ts +5 -0
- package/dist/esm/types/models/SimpleSelectQuery.d.ts +167 -0
- package/dist/esm/types/models/SqlComponent.d.ts +18 -0
- package/dist/esm/types/models/ValueComponent.d.ts +158 -0
- package/dist/esm/types/models/ValuesQuery.d.ts +10 -0
- package/dist/esm/types/parsers/CommandExpressionParser.d.ts +15 -0
- package/dist/esm/types/parsers/CommonTableParser.d.ts +9 -0
- package/dist/esm/types/parsers/ForClauseParser.d.ts +9 -0
- package/dist/esm/types/parsers/FromClauseParser.d.ts +9 -0
- package/dist/esm/types/parsers/FunctionExpressionParser.d.ts +22 -0
- package/dist/esm/types/parsers/GroupByParser.d.ts +10 -0
- package/dist/esm/types/parsers/HavingParser.d.ts +9 -0
- package/dist/esm/types/parsers/IdentifierParser.d.ts +8 -0
- package/dist/esm/types/parsers/JoinClauseParser.d.ts +14 -0
- package/dist/esm/types/parsers/KeywordParser.d.ts +17 -0
- package/dist/esm/types/parsers/LimitClauseParser.d.ts +9 -0
- package/dist/esm/types/parsers/LiteralParser.d.ts +8 -0
- package/dist/esm/types/parsers/OrderByClauseParser.d.ts +10 -0
- package/dist/esm/types/parsers/OverExpressionParser.d.ts +9 -0
- package/dist/esm/types/parsers/ParameterExpressionParser.d.ts +8 -0
- package/dist/esm/types/parsers/ParenExpressionParser.d.ts +8 -0
- package/dist/esm/types/parsers/PartitionByParser.d.ts +9 -0
- package/dist/esm/types/parsers/SelectClauseParser.d.ts +10 -0
- package/dist/esm/types/parsers/SelectQueryParser.d.ts +13 -0
- package/dist/esm/types/parsers/SourceAliasExpressionParser.d.ts +8 -0
- package/dist/esm/types/parsers/SourceExpressionParser.d.ts +8 -0
- package/dist/esm/types/parsers/SourceParser.d.ts +13 -0
- package/dist/esm/types/parsers/SqlTokenizer.d.ts +64 -0
- package/dist/esm/types/parsers/StringSpecifierExpressionParser.d.ts +8 -0
- package/dist/esm/types/parsers/UnaryExpressionParser.d.ts +8 -0
- package/dist/esm/types/parsers/ValueParser.d.ts +14 -0
- package/dist/esm/types/parsers/ValuesQueryParser.d.ts +10 -0
- package/dist/esm/types/parsers/WhereClauseParser.d.ts +9 -0
- package/dist/esm/types/parsers/WindowClauseParser.d.ts +9 -0
- package/dist/esm/types/parsers/WindowExpressionParser.d.ts +12 -0
- package/dist/esm/types/parsers/WithClauseParser.d.ts +9 -0
- package/dist/esm/types/tokenReaders/BaseTokenReader.d.ts +43 -0
- package/dist/esm/types/tokenReaders/CommandTokenReader.d.ts +7 -0
- package/dist/esm/types/tokenReaders/FunctionTokenReader.d.ts +11 -0
- package/dist/esm/types/tokenReaders/IdentifierTokenReader.d.ts +15 -0
- package/dist/esm/types/tokenReaders/LiteralTokenReader.d.ts +23 -0
- package/dist/esm/types/tokenReaders/OperatorTokenReader.d.ts +5 -0
- package/dist/esm/types/tokenReaders/ParameterTokenReader.d.ts +11 -0
- package/dist/esm/types/tokenReaders/StringSpecifierTokenReader.d.ts +8 -0
- package/dist/esm/types/tokenReaders/SymbolTokenReader.d.ts +12 -0
- package/dist/esm/types/tokenReaders/TokenReaderManager.d.ts +53 -0
- package/dist/esm/types/tokenReaders/TypeTokenReader.d.ts +11 -0
- package/dist/esm/types/transformers/CTEBuilder.d.ts +52 -0
- package/dist/esm/types/transformers/CTECollector.d.ts +81 -0
- package/dist/esm/types/transformers/CTEDisabler.d.ts +77 -0
- package/dist/esm/types/transformers/CTEInjector.d.ts +40 -0
- package/dist/esm/types/transformers/CTENormalizer.d.ts +25 -0
- package/dist/esm/types/transformers/Formatter.d.ts +82 -0
- package/dist/esm/types/transformers/QueryConverter.d.ts +41 -0
- package/dist/esm/types/transformers/SelectValueCollector.d.ts +60 -0
- package/dist/esm/types/transformers/SelectableColumnCollector.d.ts +70 -0
- package/dist/esm/types/transformers/TableColumnResolver.d.ts +10 -0
- package/dist/esm/types/transformers/TableSourceCollector.d.ts +92 -0
- package/dist/esm/types/transformers/UpstreamSelectQueryFinder.d.ts +27 -0
- package/dist/esm/types/utils/charLookupTable.d.ts +11 -0
- package/dist/esm/types/utils/stringUtils.d.ts +43 -0
- package/dist/esm/utils/charLookupTable.js +69 -0
- package/dist/esm/utils/charLookupTable.js.map +1 -0
- package/dist/esm/utils/stringUtils.js +164 -0
- package/dist/esm/utils/stringUtils.js.map +1 -0
- package/package.json +4 -1
@@ -0,0 +1,81 @@
|
|
1
|
+
import { CommonTable } from "../models/Clause";
|
2
|
+
import { SelectQuery } from "../models/SelectQuery";
|
3
|
+
import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
|
4
|
+
/**
|
5
|
+
* A visitor that collects all CommonTable instances from a SQL query structure.
|
6
|
+
* This includes tables from:
|
7
|
+
* - WITH clauses
|
8
|
+
* - Subqueries
|
9
|
+
* - Inline queries
|
10
|
+
* - UNION queries
|
11
|
+
* - Value components that may contain queries
|
12
|
+
*/
|
13
|
+
export declare class CTECollector implements SqlComponentVisitor<void> {
|
14
|
+
private handlers;
|
15
|
+
private commonTables;
|
16
|
+
private visitedNodes;
|
17
|
+
private isRootVisit;
|
18
|
+
constructor();
|
19
|
+
/**
|
20
|
+
* Get all collected CommonTables
|
21
|
+
*/
|
22
|
+
getCommonTables(): CommonTable[];
|
23
|
+
/**
|
24
|
+
* Reset the collection of CommonTables
|
25
|
+
*/
|
26
|
+
private reset;
|
27
|
+
collect(query: SelectQuery): CommonTable[];
|
28
|
+
/**
|
29
|
+
* Main entry point for the visitor pattern.
|
30
|
+
* Implements the shallow visit pattern to distinguish between root and recursive visits.
|
31
|
+
*/
|
32
|
+
visit(arg: SqlComponent): void;
|
33
|
+
/**
|
34
|
+
* Internal visit method used for all nodes.
|
35
|
+
* This separates the visit flag management from the actual node visitation logic.
|
36
|
+
*/
|
37
|
+
private visitNode;
|
38
|
+
private visitSimpleSelectQuery;
|
39
|
+
private visitBinarySelectQuery;
|
40
|
+
private visitValuesQuery;
|
41
|
+
private visitWithClause;
|
42
|
+
private visitCommonTable;
|
43
|
+
private visitSelectClause;
|
44
|
+
private visitSelectItem;
|
45
|
+
private visitFromClause;
|
46
|
+
private visitSourceExpression;
|
47
|
+
private visitTableSource;
|
48
|
+
private visitParenSource;
|
49
|
+
private visitSubQuerySource;
|
50
|
+
private visitInlineQuery;
|
51
|
+
private visitJoinClause;
|
52
|
+
private visitJoinOnClause;
|
53
|
+
private visitJoinUsingClause;
|
54
|
+
private visitWhereClause;
|
55
|
+
private visitGroupByClause;
|
56
|
+
private visitHavingClause;
|
57
|
+
private visitOrderByClause;
|
58
|
+
private visitWindowFrameClause;
|
59
|
+
private visitLimitClause;
|
60
|
+
private visitForClause;
|
61
|
+
private visitOrderByItem;
|
62
|
+
private visitParenExpression;
|
63
|
+
private visitBinaryExpression;
|
64
|
+
private visitUnaryExpression;
|
65
|
+
private visitCaseExpression;
|
66
|
+
private visitSwitchCaseArgument;
|
67
|
+
private visitCaseKeyValuePair;
|
68
|
+
private visitBetweenExpression;
|
69
|
+
private visitFunctionCall;
|
70
|
+
private visitArrayExpression;
|
71
|
+
private visitTupleExpression;
|
72
|
+
private visitCastExpression;
|
73
|
+
private visitTypeValue;
|
74
|
+
private visitWindowFrameExpression;
|
75
|
+
private visitWindowFrameSpec;
|
76
|
+
private visitIdentifierString;
|
77
|
+
private visitRawString;
|
78
|
+
private visitColumnReference;
|
79
|
+
private visitParameterExpression;
|
80
|
+
private visitLiteralValue;
|
81
|
+
}
|
@@ -0,0 +1,77 @@
|
|
1
|
+
import { ForClause, FromClause, GroupByClause, HavingClause, JoinClause, JoinOnClause, JoinUsingClause, LimitClause, OrderByClause, OrderByItem, ParenSource, SelectClause, SelectItem, SourceExpression, SubQuerySource, TableSource, WhereClause, WindowFrameClause } from "../models/Clause";
|
2
|
+
import { BinarySelectQuery, SimpleSelectQuery, SelectQuery, ValuesQuery } from "../models/SelectQuery";
|
3
|
+
import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
|
4
|
+
import { ArrayExpression, BetweenExpression, BinaryExpression, CaseExpression, CaseKeyValuePair, CastExpression, ColumnReference, FunctionCall, InlineQuery, ParenExpression, ParameterExpression, SwitchCaseArgument, TupleExpression, UnaryExpression, ValueComponent, WindowFrameExpression, IdentifierString, RawString, WindowFrameSpec, TypeValue } from "../models/ValueComponent";
|
5
|
+
/**
|
6
|
+
* A visitor that disables all WITH clauses in a SQL query structure.
|
7
|
+
* This processes and removes WITH clauses from:
|
8
|
+
* - Simple SELECT queries
|
9
|
+
* - Binary queries (UNION, EXCEPT, etc.)
|
10
|
+
* - Subqueries
|
11
|
+
* - Inline queries
|
12
|
+
*
|
13
|
+
* It maintains the CTE queries themselves but restructures the query to not use
|
14
|
+
* the WITH clause syntactical construct.
|
15
|
+
*/
|
16
|
+
export declare class CTEDisabler implements SqlComponentVisitor<SqlComponent> {
|
17
|
+
private handlers;
|
18
|
+
private visitedNodes;
|
19
|
+
private isRootVisit;
|
20
|
+
constructor();
|
21
|
+
/**
|
22
|
+
* Reset the visited nodes tracking
|
23
|
+
*/
|
24
|
+
private reset;
|
25
|
+
execute(arg: SqlComponent): SelectQuery;
|
26
|
+
/**
|
27
|
+
* Main entry point for the visitor pattern.
|
28
|
+
* Implements the shallow visit pattern to distinguish between root and recursive visits.
|
29
|
+
*/
|
30
|
+
visit(arg: SqlComponent): SqlComponent;
|
31
|
+
/**
|
32
|
+
* Internal visit method used for all nodes.
|
33
|
+
* This separates the visit flag management from the actual node visitation logic.
|
34
|
+
*/
|
35
|
+
private visitNode;
|
36
|
+
visitSimpleSelectQuery(arg: SimpleSelectQuery): SqlComponent;
|
37
|
+
visitBinarySelectQuery(query: BinarySelectQuery): SqlComponent;
|
38
|
+
visitValuesQuery(query: ValuesQuery): SqlComponent;
|
39
|
+
visitSelectClause(clause: SelectClause): SqlComponent;
|
40
|
+
visitFromClause(clause: FromClause): SqlComponent;
|
41
|
+
visitSubQuerySource(subQuery: SubQuerySource): SqlComponent;
|
42
|
+
visitInlineQuery(inlineQuery: InlineQuery): SqlComponent;
|
43
|
+
visitJoinClause(joinClause: JoinClause): SqlComponent;
|
44
|
+
visitJoinOnClause(joinOn: JoinOnClause): SqlComponent;
|
45
|
+
visitJoinUsingClause(joinUsing: JoinUsingClause): SqlComponent;
|
46
|
+
visitWhereClause(whereClause: WhereClause): SqlComponent;
|
47
|
+
visitGroupByClause(clause: GroupByClause): SqlComponent;
|
48
|
+
visitHavingClause(clause: HavingClause): SqlComponent;
|
49
|
+
visitOrderByClause(clause: OrderByClause): SqlComponent;
|
50
|
+
visitWindowFrameClause(clause: WindowFrameClause): SqlComponent;
|
51
|
+
visitLimitClause(clause: LimitClause): SqlComponent;
|
52
|
+
visitForClause(clause: ForClause): SqlComponent;
|
53
|
+
visitParenExpression(expr: ParenExpression): SqlComponent;
|
54
|
+
visitBinaryExpression(expr: BinaryExpression): SqlComponent;
|
55
|
+
visitUnaryExpression(expr: UnaryExpression): SqlComponent;
|
56
|
+
visitCaseExpression(expr: CaseExpression): SqlComponent;
|
57
|
+
visitSwitchCaseArgument(switchCase: SwitchCaseArgument): SqlComponent;
|
58
|
+
visitCaseKeyValuePair(pair: CaseKeyValuePair): SqlComponent;
|
59
|
+
visitBetweenExpression(expr: BetweenExpression): SqlComponent;
|
60
|
+
visitFunctionCall(func: FunctionCall): SqlComponent;
|
61
|
+
visitArrayExpression(expr: ArrayExpression): SqlComponent;
|
62
|
+
visitTupleExpression(expr: TupleExpression): SqlComponent;
|
63
|
+
visitCastExpression(expr: CastExpression): SqlComponent;
|
64
|
+
visitTypeValue(typeValue: TypeValue): SqlComponent;
|
65
|
+
visitSelectItem(item: SelectItem): SqlComponent;
|
66
|
+
visitIdentifierString(ident: IdentifierString): SqlComponent;
|
67
|
+
visitRawString(raw: RawString): SqlComponent;
|
68
|
+
visitColumnReference(column: ColumnReference): SqlComponent;
|
69
|
+
visitSourceExpression(source: SourceExpression): SqlComponent;
|
70
|
+
visitTableSource(source: TableSource): SqlComponent;
|
71
|
+
visitParenSource(source: ParenSource): SqlComponent;
|
72
|
+
visitParameterExpression(param: ParameterExpression): SqlComponent;
|
73
|
+
visitWindowFrameExpression(expr: WindowFrameExpression): SqlComponent;
|
74
|
+
visitWindowFrameSpec(spec: WindowFrameSpec): SqlComponent;
|
75
|
+
visitLiteralValue(value: ValueComponent): SqlComponent;
|
76
|
+
visitOrderByItem(item: OrderByItem): SqlComponent;
|
77
|
+
}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { CommonTable } from "../models/Clause";
|
2
|
+
import { SelectQuery } from "../models/SelectQuery";
|
3
|
+
/**
|
4
|
+
* CTEInjector accepts a SelectQuery object and an array of CommonTables,
|
5
|
+
* and inserts Common Table Expressions into the query.
|
6
|
+
* For BinarySelectQuery, CTEs are inserted into the left query.
|
7
|
+
*
|
8
|
+
* Uses CTENameConflictResolver to resolve naming conflicts between CTEs.
|
9
|
+
*/
|
10
|
+
export declare class CTEInjector {
|
11
|
+
private nameConflictResolver;
|
12
|
+
private cteCollector;
|
13
|
+
constructor();
|
14
|
+
/**
|
15
|
+
* Inserts Common Table Expressions into a SelectQuery object.
|
16
|
+
*
|
17
|
+
* @param query The query to inject CTEs into
|
18
|
+
* @param commonTables Array of CommonTables to be inserted
|
19
|
+
* @returns A new query with the injected CTEs
|
20
|
+
*/
|
21
|
+
inject(query: SelectQuery, commonTables: CommonTable[]): SelectQuery;
|
22
|
+
/**
|
23
|
+
* Inserts Common Table Expressions into a SimpleSelectQuery.
|
24
|
+
*
|
25
|
+
* @param query The SimpleSelectQuery to inject CTEs into
|
26
|
+
* @param commonTables Array of CommonTables to be inserted
|
27
|
+
* @param needRecursive Boolean indicating if recursive WITH clause is needed
|
28
|
+
* @returns A new SimpleSelectQuery with the injected CTEs
|
29
|
+
*/
|
30
|
+
private injectIntoSimpleQuery;
|
31
|
+
/**
|
32
|
+
* Inserts Common Table Expressions into the left query of a BinarySelectQuery.
|
33
|
+
*
|
34
|
+
* @param query The BinarySelectQuery to inject CTEs into
|
35
|
+
* @param commonTables Array of CommonTables to be inserted
|
36
|
+
* @param needRecursive Boolean indicating if recursive WITH clause is needed
|
37
|
+
* @returns A new BinarySelectQuery with the injected CTEs
|
38
|
+
*/
|
39
|
+
private injectIntoBinaryQuery;
|
40
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import { SelectQuery } from "../models/SelectQuery";
|
2
|
+
/**
|
3
|
+
* CTENormalizer is responsible for normalizing Common Table Expressions (CTEs) within SQL queries.
|
4
|
+
* It collects all CTEs from various parts of the query and consolidates them into a single WITH clause
|
5
|
+
* at the root level of the query.
|
6
|
+
*
|
7
|
+
* This implementation uses:
|
8
|
+
* 1. CommonTableCollector - to gather all CTEs from the query structure
|
9
|
+
* 2. WithClauseDisabler - to remove all original WITH clauses from the query
|
10
|
+
* 3. CTENameConflictResolver - to resolve name conflicts among CTEs and sort them properly
|
11
|
+
*/
|
12
|
+
export declare class CTENormalizer {
|
13
|
+
/**
|
14
|
+
* Private constructor to prevent instantiation of this utility class.
|
15
|
+
*/
|
16
|
+
private constructor();
|
17
|
+
/**
|
18
|
+
* Normalizes a SQL query by consolidating all CTEs into a single WITH clause
|
19
|
+
* at the root level of the query.
|
20
|
+
*
|
21
|
+
* @param query The query to normalize
|
22
|
+
* @returns A new normalized query with all CTEs at the root level
|
23
|
+
*/
|
24
|
+
static normalize(query: SelectQuery): SelectQuery;
|
25
|
+
}
|
@@ -0,0 +1,82 @@
|
|
1
|
+
import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
|
2
|
+
interface FormatterConfig {
|
3
|
+
identifierEscape: {
|
4
|
+
start: string;
|
5
|
+
end: string;
|
6
|
+
};
|
7
|
+
parameterSymbol: string;
|
8
|
+
}
|
9
|
+
export declare class Formatter implements SqlComponentVisitor<string> {
|
10
|
+
private handlers;
|
11
|
+
private config;
|
12
|
+
constructor();
|
13
|
+
/**
|
14
|
+
* Formats the given SQL AST node into a SQL string.
|
15
|
+
* This is the recommended public API for users.
|
16
|
+
* @param arg The root SQL AST node to format.
|
17
|
+
* @param config (Optional) Formatter configuration.
|
18
|
+
* @returns The formatted SQL string.
|
19
|
+
*/
|
20
|
+
format(arg: SqlComponent, config?: FormatterConfig | null): string;
|
21
|
+
/**
|
22
|
+
* Visitor entry point for SQL AST nodes.
|
23
|
+
* Note: This method is public only for interface compatibility.
|
24
|
+
* Users should call the format() method instead of visit() directly.
|
25
|
+
* (If you call visit() directly, you are basically breaking the abstraction, so don't do it!)
|
26
|
+
* @param arg The SQL AST node to visit.
|
27
|
+
* @returns The formatted SQL string for the node.
|
28
|
+
*/
|
29
|
+
visit(arg: SqlComponent): string;
|
30
|
+
private visitBinarySelectQuery;
|
31
|
+
private visitWindowFrameBoundaryValue;
|
32
|
+
private visitWindowFrameBoundStatic;
|
33
|
+
private visitWindowFrameExpression;
|
34
|
+
private visitWindowFrameSpec;
|
35
|
+
private visitJoinUsingClause;
|
36
|
+
private visitJoinOnClause;
|
37
|
+
private visitTypeValue;
|
38
|
+
private visitStringSpecifierExpression;
|
39
|
+
private visitWithClause;
|
40
|
+
private visitCommonTable;
|
41
|
+
private visitDistinctOn;
|
42
|
+
private visitDistinct;
|
43
|
+
private visitHavingClause;
|
44
|
+
private visitGroupByClause;
|
45
|
+
private visitFromClause;
|
46
|
+
private visitJoinClause;
|
47
|
+
private visitSourceAliasExpression;
|
48
|
+
private visitSourceExpression;
|
49
|
+
private visitSubQuerySource;
|
50
|
+
private visitFunctionSource;
|
51
|
+
private visitTableSource;
|
52
|
+
private visitValueList;
|
53
|
+
private visitSwitchCaseArgument;
|
54
|
+
private visitColumnReference;
|
55
|
+
private visitFunctionCall;
|
56
|
+
private visitUnaryExpression;
|
57
|
+
private visitBinaryExpression;
|
58
|
+
private visitLiteralExpression;
|
59
|
+
private visitParameterExpression;
|
60
|
+
private visitSelectExpression;
|
61
|
+
private visitSelectClause;
|
62
|
+
private visitSelectQuery;
|
63
|
+
private visitArrayExpression;
|
64
|
+
private visitCaseExpression;
|
65
|
+
private visitCastExpression;
|
66
|
+
private visitBracketExpression;
|
67
|
+
private visitBetweenExpression;
|
68
|
+
private visitPartitionByClause;
|
69
|
+
private visitOrderByClause;
|
70
|
+
private visitOrderByItem;
|
71
|
+
private visitWindowFrameClause;
|
72
|
+
private visitLimitClause;
|
73
|
+
private visitFetchSpecification;
|
74
|
+
private visitForClause;
|
75
|
+
private visitWhereClause;
|
76
|
+
private visitInlineQuery;
|
77
|
+
private visitRawString;
|
78
|
+
private visitIdentifierString;
|
79
|
+
private visitValuesQuery;
|
80
|
+
private visitTupleExpression;
|
81
|
+
}
|
82
|
+
export {};
|
@@ -0,0 +1,41 @@
|
|
1
|
+
import { SelectQuery, SimpleSelectQuery } from "../models/SelectQuery";
|
2
|
+
/**
|
3
|
+
* Converts various SELECT query types to a standard SimpleSelectQuery format.
|
4
|
+
* - SimpleSelectQuery is returned as-is
|
5
|
+
* - BinarySelectQuery (UNION, etc.) is wrapped in a subquery: SELECT * FROM (original) AS bq
|
6
|
+
* - ValuesQuery is wrapped with sequentially numbered columns: SELECT * FROM (original) AS vq(column1, column2, ...)
|
7
|
+
*/
|
8
|
+
export declare class QueryConverter {
|
9
|
+
/**
|
10
|
+
* Private constructor to prevent instantiation of this utility class.
|
11
|
+
*/
|
12
|
+
private constructor();
|
13
|
+
/**
|
14
|
+
* Converts a SELECT query to a standard SimpleSelectQuery form.
|
15
|
+
*
|
16
|
+
* @param query The query to convert
|
17
|
+
* @returns A SimpleSelectQuery
|
18
|
+
*/
|
19
|
+
static toSimple(query: SelectQuery): SimpleSelectQuery;
|
20
|
+
/**
|
21
|
+
* Converts a BinarySelectQuery (UNION, EXCEPT, etc.) to a SimpleSelectQuery
|
22
|
+
* by wrapping it in SELECT * FROM (original) AS bq
|
23
|
+
*
|
24
|
+
* @param query The binary query to convert
|
25
|
+
* @returns A SimpleSelectQuery
|
26
|
+
*/
|
27
|
+
private static toSimpleBinaryQuery;
|
28
|
+
/**
|
29
|
+
* Converts a ValuesQuery to a SimpleSelectQuery with sequentially numbered columns
|
30
|
+
*
|
31
|
+
* @param query The VALUES query to convert
|
32
|
+
* @returns A SimpleSelectQuery
|
33
|
+
*/
|
34
|
+
private static toSimpleValuesQuery;
|
35
|
+
/**
|
36
|
+
* Creates a SELECT clause with a single * (all columns) item
|
37
|
+
*
|
38
|
+
* @returns A SELECT clause with *
|
39
|
+
*/
|
40
|
+
private static createSelectAllClause;
|
41
|
+
}
|
@@ -0,0 +1,60 @@
|
|
1
|
+
import { CommonTable } from "../models/Clause";
|
2
|
+
import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
|
3
|
+
import { ValueComponent } from "../models/ValueComponent";
|
4
|
+
import { TableColumnResolver } from "./TableColumnResolver";
|
5
|
+
/**
|
6
|
+
* A visitor that collects all SelectItem instances from a SQL query structure.
|
7
|
+
* This visitor scans through select clauses and collects all the SelectItem objects.
|
8
|
+
* It can also resolve wildcard selectors (table.* or *) using a provided table column resolver.
|
9
|
+
*/
|
10
|
+
export declare class SelectValueCollector implements SqlComponentVisitor<void> {
|
11
|
+
private handlers;
|
12
|
+
private selectValues;
|
13
|
+
private visitedNodes;
|
14
|
+
private isRootVisit;
|
15
|
+
private tableColumnResolver?;
|
16
|
+
private commonTableCollector;
|
17
|
+
private commonTables;
|
18
|
+
initialCommonTables: CommonTable[] | null;
|
19
|
+
constructor(tableColumnResolver?: TableColumnResolver, initialCommonTables?: CommonTable[] | null);
|
20
|
+
/**
|
21
|
+
* Get all collected SelectItems as an array of objects with name and value properties
|
22
|
+
* @returns An array of objects with name (string) and value (ValueComponent) properties
|
23
|
+
*/
|
24
|
+
getValues(): {
|
25
|
+
name: string;
|
26
|
+
value: ValueComponent;
|
27
|
+
}[];
|
28
|
+
/**
|
29
|
+
* Reset the collection of SelectItems
|
30
|
+
*/
|
31
|
+
private reset;
|
32
|
+
collect(arg: SqlComponent): {
|
33
|
+
name: string;
|
34
|
+
value: ValueComponent;
|
35
|
+
}[];
|
36
|
+
/**
|
37
|
+
* Main entry point for the visitor pattern.
|
38
|
+
* Implements the shallow visit pattern to distinguish between root and recursive visits.
|
39
|
+
*/
|
40
|
+
visit(arg: SqlComponent): void;
|
41
|
+
/**
|
42
|
+
* Internal visit method used for all nodes.
|
43
|
+
* This separates the visit flag management from the actual node visitation logic.
|
44
|
+
*/
|
45
|
+
private visitNode;
|
46
|
+
/**
|
47
|
+
* Process a SimpleSelectQuery to collect data and store the current context
|
48
|
+
*/
|
49
|
+
private visitSimpleSelectQuery;
|
50
|
+
private processFromClause;
|
51
|
+
private processJoinClause;
|
52
|
+
private processSourceExpression;
|
53
|
+
private visitSelectClause;
|
54
|
+
private processSelectItem;
|
55
|
+
private processValueComponent;
|
56
|
+
private visitSourceExpression;
|
57
|
+
private visitFromClause;
|
58
|
+
private addSelectValueAsUnique;
|
59
|
+
}
|
60
|
+
export { TableColumnResolver };
|
@@ -0,0 +1,70 @@
|
|
1
|
+
import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
|
2
|
+
import { ValueComponent } from "../models/ValueComponent";
|
3
|
+
import { TableColumnResolver } from "./SelectValueCollector";
|
4
|
+
/**
|
5
|
+
* A visitor that collects all ColumnReference instances from a SQL query structure.
|
6
|
+
* This visitor scans through all clauses and collects all unique ColumnReference objects.
|
7
|
+
* It does not scan Common Table Expressions (CTEs) or subqueries.
|
8
|
+
*
|
9
|
+
* Important: Only collects column references to tables defined in the root FROM/JOIN clauses,
|
10
|
+
* as these are the only columns that can be directly referenced in the query.
|
11
|
+
*/
|
12
|
+
export declare class SelectableColumnCollector implements SqlComponentVisitor<void> {
|
13
|
+
private handlers;
|
14
|
+
private selectValues;
|
15
|
+
private visitedNodes;
|
16
|
+
private formatter;
|
17
|
+
private isRootVisit;
|
18
|
+
private tableColumnResolver?;
|
19
|
+
private commonTableCollector;
|
20
|
+
private selectValueCollector;
|
21
|
+
private commonTables;
|
22
|
+
constructor(tableColumnResolver?: TableColumnResolver);
|
23
|
+
getValues(): {
|
24
|
+
name: string;
|
25
|
+
value: ValueComponent;
|
26
|
+
}[];
|
27
|
+
collect(arg: SqlComponent): {
|
28
|
+
name: string;
|
29
|
+
value: ValueComponent;
|
30
|
+
}[];
|
31
|
+
/**
|
32
|
+
* Reset the collection of ColumnReferences
|
33
|
+
*/
|
34
|
+
private reset;
|
35
|
+
private addSelectValueAsUnique;
|
36
|
+
/**
|
37
|
+
* Main entry point for the visitor pattern.
|
38
|
+
* Implements the shallow visit pattern to distinguish between root and recursive visits.
|
39
|
+
*/
|
40
|
+
visit(arg: SqlComponent): void;
|
41
|
+
/**
|
42
|
+
* Internal visit method used for all nodes.
|
43
|
+
* This separates the visit flag management from the actual node visitation logic.
|
44
|
+
*/
|
45
|
+
private visitNode;
|
46
|
+
/**
|
47
|
+
* Process a SimpleSelectQuery to collect ColumnReferences from all its clauses
|
48
|
+
*/
|
49
|
+
private visitSimpleSelectQuery;
|
50
|
+
private visitSelectClause;
|
51
|
+
private visitFromClause;
|
52
|
+
private visitWhereClause;
|
53
|
+
private visitGroupByClause;
|
54
|
+
private visitHavingClause;
|
55
|
+
private visitOrderByClause;
|
56
|
+
private visitWindowFrameClause;
|
57
|
+
private visitLimitClause;
|
58
|
+
private visitJoinOnClause;
|
59
|
+
private visitJoinUsingClause;
|
60
|
+
private visitColumnReference;
|
61
|
+
private visitBinaryExpression;
|
62
|
+
private visitUnaryExpression;
|
63
|
+
private visitFunctionCall;
|
64
|
+
private visitParenExpression;
|
65
|
+
private visitCaseExpression;
|
66
|
+
private visitCastExpression;
|
67
|
+
private visitBetweenExpression;
|
68
|
+
private visitArrayExpression;
|
69
|
+
private visitValueList;
|
70
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/**
|
2
|
+
* Type definition for a function that resolves column names from a table name.
|
3
|
+
*
|
4
|
+
* This is used to provide table structure information (column names) for physical tables
|
5
|
+
* when expanding wildcard selectors (e.g., table.*) in SQL query analysis.
|
6
|
+
*
|
7
|
+
* @param tableName The name of the table to resolve columns for.
|
8
|
+
* @returns An array of column names (strings) for the specified table.
|
9
|
+
*/
|
10
|
+
export type TableColumnResolver = (tableName: string) => string[];
|
@@ -0,0 +1,92 @@
|
|
1
|
+
import { TableSource } from "../models/Clause";
|
2
|
+
import { SqlComponent, SqlComponentVisitor } from "../models/SqlComponent";
|
3
|
+
/**
|
4
|
+
* A visitor that collects all table source names from a SQL query structure.
|
5
|
+
*
|
6
|
+
* When selectableOnly is true (default behavior):
|
7
|
+
* - Includes only table sources from FROM and JOIN clauses
|
8
|
+
* - Excludes inline queries, subqueries, and CTEs
|
9
|
+
*
|
10
|
+
* When selectableOnly is false:
|
11
|
+
* - Scans all parts of the query including WITH clauses, subqueries, etc.
|
12
|
+
* - Collects all table sources from the entire query
|
13
|
+
* - Excludes tables that are managed by CTEs
|
14
|
+
*
|
15
|
+
* For UNION-like queries, it scans both the left and right parts.
|
16
|
+
*/
|
17
|
+
export declare class TableSourceCollector implements SqlComponentVisitor<void> {
|
18
|
+
private handlers;
|
19
|
+
private tableSources;
|
20
|
+
private visitedNodes;
|
21
|
+
private tableNameMap;
|
22
|
+
private selectableOnly;
|
23
|
+
private cteNames;
|
24
|
+
private isRootVisit;
|
25
|
+
constructor(selectableOnly?: boolean);
|
26
|
+
/**
|
27
|
+
* Gets all collected table sources
|
28
|
+
*/
|
29
|
+
getTableSources(): TableSource[];
|
30
|
+
/**
|
31
|
+
* Reset the collection of table sources
|
32
|
+
*/
|
33
|
+
private reset;
|
34
|
+
/**
|
35
|
+
* Gets a unique identifier for a table source
|
36
|
+
*/
|
37
|
+
private getTableIdentifier;
|
38
|
+
collect(query: SqlComponent): TableSource[];
|
39
|
+
/**
|
40
|
+
* Main entry point for the visitor pattern.
|
41
|
+
* Implements the shallow visit pattern to distinguish between root and recursive visits.
|
42
|
+
*/
|
43
|
+
visit(arg: SqlComponent): void;
|
44
|
+
/**
|
45
|
+
* Internal visit method used for all nodes.
|
46
|
+
* This separates the visit flag management from the actual node visitation logic.
|
47
|
+
*/
|
48
|
+
private visitNode;
|
49
|
+
/**
|
50
|
+
* Collects all CTE names to exclude them from real table sources
|
51
|
+
*/
|
52
|
+
private collectCTEs;
|
53
|
+
private visitSimpleSelectQuery;
|
54
|
+
private visitBinarySelectQuery;
|
55
|
+
private visitValuesQuery;
|
56
|
+
private visitWithClause;
|
57
|
+
private visitCommonTable;
|
58
|
+
private visitFromClause;
|
59
|
+
private visitSourceExpression;
|
60
|
+
private visitTableSource;
|
61
|
+
/**
|
62
|
+
* Checks if a table name is a CTE name
|
63
|
+
*/
|
64
|
+
private isCTETable;
|
65
|
+
private visitParenSource;
|
66
|
+
private visitSubQuerySource;
|
67
|
+
private visitInlineQuery;
|
68
|
+
private visitJoinClause;
|
69
|
+
private visitJoinOnClause;
|
70
|
+
private visitJoinUsingClause;
|
71
|
+
private visitWhereClause;
|
72
|
+
private visitGroupByClause;
|
73
|
+
private visitHavingClause;
|
74
|
+
private visitOrderByClause;
|
75
|
+
private visitWindowFrameClause;
|
76
|
+
private visitLimitClause;
|
77
|
+
private visitForClause;
|
78
|
+
private visitOrderByItem;
|
79
|
+
private visitSelectClause;
|
80
|
+
private visitSelectItem;
|
81
|
+
private visitParenExpression;
|
82
|
+
private visitBinaryExpression;
|
83
|
+
private visitUnaryExpression;
|
84
|
+
private visitCaseExpression;
|
85
|
+
private visitSwitchCaseArgument;
|
86
|
+
private visitCaseKeyValuePair;
|
87
|
+
private visitBetweenExpression;
|
88
|
+
private visitFunctionCall;
|
89
|
+
private visitArrayExpression;
|
90
|
+
private visitTupleExpression;
|
91
|
+
private visitCastExpression;
|
92
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import { SelectQuery } from "../models/SelectQuery";
|
2
|
+
/**
|
3
|
+
* UpstreamSelectQueryFinder searches upstream queries for the specified columns.
|
4
|
+
* If a query (including its upstream CTEs or subqueries) contains all columns,
|
5
|
+
* it returns the highest such SelectQuery. Otherwise, it searches downstream.
|
6
|
+
* For UNION queries, it checks each branch independently.
|
7
|
+
*/
|
8
|
+
export declare class UpstreamSelectQueryFinder {
|
9
|
+
private tableColumnResolver?;
|
10
|
+
private columnCollector;
|
11
|
+
constructor(tableColumnResolver?: (tableName: string) => string[]);
|
12
|
+
/**
|
13
|
+
* Finds the highest SelectQuery containing all specified columns.
|
14
|
+
* @param query The root SelectQuery to search.
|
15
|
+
* @param columnNames Array of column names to check for.
|
16
|
+
* @returns An array of SelectQuery objects, or an empty array if not found.
|
17
|
+
*/
|
18
|
+
find(query: SelectQuery, columnNames: string[]): SelectQuery[];
|
19
|
+
private handleTableSource;
|
20
|
+
private handleSubQuerySource;
|
21
|
+
/**
|
22
|
+
* Processes all source branches in a FROM clause and checks if all upstream queries contain the specified columns.
|
23
|
+
* Returns a flat array of SelectQuery if all branches are valid, otherwise null.
|
24
|
+
*/
|
25
|
+
private processFromClauseBranches;
|
26
|
+
private findUpstream;
|
27
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
/**
|
2
|
+
* Fast character classification utilities for SQL tokenization
|
3
|
+
*/
|
4
|
+
export declare class CharLookupTable {
|
5
|
+
static isWhitespace(char: string): boolean;
|
6
|
+
static isDigit(char: string): boolean;
|
7
|
+
static isHexChar(char: string): boolean;
|
8
|
+
static isOperatorSymbol(char: string): boolean;
|
9
|
+
static isDelimiter(char: string): boolean;
|
10
|
+
static isNamedParameterPrefix(char: string): boolean;
|
11
|
+
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
/**
|
2
|
+
* Utilities for string operations during tokenization
|
3
|
+
*/
|
4
|
+
export declare class StringUtils {
|
5
|
+
/**
|
6
|
+
* Creates a visual representation of an error position in text
|
7
|
+
* @param input The input text
|
8
|
+
* @param errPosition The error position
|
9
|
+
* @returns A string with a caret pointing to the error position
|
10
|
+
*/
|
11
|
+
static getDebugPositionInfo(input: string, errPosition: number): string;
|
12
|
+
/**
|
13
|
+
* Skip white space characters.
|
14
|
+
*/
|
15
|
+
private static skipWhiteSpace;
|
16
|
+
/**
|
17
|
+
* Skip line comment.
|
18
|
+
*/
|
19
|
+
private static readLineComment;
|
20
|
+
/**
|
21
|
+
* Skip block comment.
|
22
|
+
*/
|
23
|
+
private static readBlockComment;
|
24
|
+
/**
|
25
|
+
* Skip white space characters and SQL comments.
|
26
|
+
* @returns Object containing the new position and an array of skipped comments
|
27
|
+
*/
|
28
|
+
static readWhiteSpaceAndComment(input: string, position: number): {
|
29
|
+
position: number;
|
30
|
+
lines: string[];
|
31
|
+
};
|
32
|
+
/**
|
33
|
+
* Read a regular identifier.
|
34
|
+
*/
|
35
|
+
static readRegularIdentifier(input: string, position: number): {
|
36
|
+
identifier: string;
|
37
|
+
newPosition: number;
|
38
|
+
};
|
39
|
+
static tryReadRegularIdentifier(input: string, position: number): {
|
40
|
+
identifier: string;
|
41
|
+
newPosition: number;
|
42
|
+
} | null;
|
43
|
+
}
|