rawsql-ts 0.12.0 → 0.13.0
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/LICENSE +21 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +16 -16
- package/dist/esm/index.min.js.map +3 -3
- package/dist/esm/src/index.d.ts +12 -0
- package/dist/esm/src/index.js +11 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/models/Clause.d.ts +7 -3
- package/dist/esm/src/models/Clause.js +17 -4
- package/dist/esm/src/models/Clause.js.map +1 -1
- package/dist/esm/src/models/DDLStatements.d.ts +14 -2
- package/dist/esm/src/models/DDLStatements.js +12 -0
- package/dist/esm/src/models/DDLStatements.js.map +1 -1
- package/dist/esm/src/models/InsertQuery.d.ts +1 -4
- package/dist/esm/src/models/InsertQuery.js +3 -5
- package/dist/esm/src/models/InsertQuery.js.map +1 -1
- package/dist/esm/src/models/SqlPrintToken.d.ts +1 -0
- package/dist/esm/src/models/SqlPrintToken.js +1 -0
- package/dist/esm/src/models/SqlPrintToken.js.map +1 -1
- package/dist/esm/src/models/TableDefinitionModel.d.ts +39 -0
- package/dist/esm/src/models/TableDefinitionModel.js +77 -0
- package/dist/esm/src/models/TableDefinitionModel.js.map +1 -0
- package/dist/esm/src/models/ValuesQuery.d.ts +2 -0
- package/dist/esm/src/models/ValuesQuery.js +1 -0
- package/dist/esm/src/models/ValuesQuery.js.map +1 -1
- package/dist/esm/src/parsers/AlterTableParser.js +1 -1
- package/dist/esm/src/parsers/AlterTableParser.js.map +1 -1
- package/dist/esm/src/parsers/InsertQueryParser.js +4 -1
- package/dist/esm/src/parsers/InsertQueryParser.js.map +1 -1
- package/dist/esm/src/parsers/ReturningClauseParser.js +33 -47
- package/dist/esm/src/parsers/ReturningClauseParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlParser.d.ts +0 -1
- package/dist/esm/src/parsers/SqlParser.js +44 -58
- package/dist/esm/src/parsers/SqlParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +1 -0
- package/dist/esm/src/parsers/SqlPrintTokenParser.js +23 -5
- package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/esm/src/tokenReaders/LiteralTokenReader.js +7 -0
- package/dist/esm/src/tokenReaders/LiteralTokenReader.js.map +1 -1
- package/dist/esm/src/transformers/DDLDiffGenerator.d.ts +14 -0
- package/dist/esm/src/transformers/DDLDiffGenerator.js +197 -0
- package/dist/esm/src/transformers/DDLDiffGenerator.js.map +1 -0
- package/dist/esm/src/transformers/DDLGeneralizer.d.ts +13 -0
- package/dist/esm/src/transformers/DDLGeneralizer.js +98 -0
- package/dist/esm/src/transformers/DDLGeneralizer.js.map +1 -0
- package/dist/esm/src/transformers/DDLToFixtureConverter.d.ts +19 -0
- package/dist/esm/src/transformers/DDLToFixtureConverter.js +202 -0
- package/dist/esm/src/transformers/DDLToFixtureConverter.js.map +1 -0
- package/dist/esm/src/transformers/DeleteResultSelectConverter.d.ts +53 -0
- package/dist/esm/src/transformers/DeleteResultSelectConverter.js +394 -0
- package/dist/esm/src/transformers/DeleteResultSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/FixtureCteBuilder.d.ts +60 -0
- package/dist/esm/src/transformers/FixtureCteBuilder.js +147 -0
- package/dist/esm/src/transformers/FixtureCteBuilder.js.map +1 -0
- package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js +5 -2
- package/dist/esm/src/transformers/InsertQuerySelectValuesConverter.js.map +1 -1
- package/dist/esm/src/transformers/InsertResultSelectConverter.d.ts +64 -0
- package/dist/esm/src/transformers/InsertResultSelectConverter.js +495 -0
- package/dist/esm/src/transformers/InsertResultSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/MergeResultSelectConverter.d.ts +38 -0
- package/dist/esm/src/transformers/MergeResultSelectConverter.js +306 -0
- package/dist/esm/src/transformers/MergeResultSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/QueryBuilder.d.ts +11 -0
- package/dist/esm/src/transformers/QueryBuilder.js +19 -3
- package/dist/esm/src/transformers/QueryBuilder.js.map +1 -1
- package/dist/esm/src/transformers/SelectResultSelectConverter.d.ts +10 -0
- package/dist/esm/src/transformers/SelectResultSelectConverter.js +32 -0
- package/dist/esm/src/transformers/SelectResultSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/SimulatedSelectConverter.d.ts +23 -0
- package/dist/esm/src/transformers/SimulatedSelectConverter.js +61 -0
- package/dist/esm/src/transformers/SimulatedSelectConverter.js.map +1 -0
- package/dist/esm/src/transformers/UpdateResultSelectConverter.d.ts +51 -0
- package/dist/esm/src/transformers/UpdateResultSelectConverter.js +340 -0
- package/dist/esm/src/transformers/UpdateResultSelectConverter.js.map +1 -0
- package/dist/esm/src/utils/SelectQueryWithClauseHelper.d.ts +12 -0
- package/dist/esm/src/utils/SelectQueryWithClauseHelper.js +43 -0
- package/dist/esm/src/utils/SelectQueryWithClauseHelper.js.map +1 -0
- package/dist/esm/src/utils/ValueComponentRewriter.d.ts +3 -0
- package/dist/esm/src/utils/ValueComponentRewriter.js +180 -0
- package/dist/esm/src/utils/ValueComponentRewriter.js.map +1 -0
- package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/formatters/OriginalFormatRestorer.js +139 -0
- package/dist/formatters/OriginalFormatRestorer.js.map +1 -0
- package/dist/index.js +144 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.js +17 -17
- package/dist/index.min.js.map +3 -3
- package/dist/models/BinarySelectQuery.js +198 -0
- package/dist/models/BinarySelectQuery.js.map +1 -0
- package/dist/models/CTEError.js +37 -0
- package/dist/models/CTEError.js.map +1 -0
- package/dist/models/Clause.js +535 -0
- package/dist/models/Clause.js.map +1 -0
- package/dist/models/CreateTableQuery.js +135 -0
- package/dist/models/CreateTableQuery.js.map +1 -0
- package/dist/models/DDLStatements.js +275 -0
- package/dist/models/DDLStatements.js.map +1 -0
- package/dist/models/DeleteQuery.js +20 -0
- package/dist/models/DeleteQuery.js.map +1 -0
- package/dist/models/FormattingLexeme.js +3 -0
- package/dist/models/FormattingLexeme.js.map +1 -0
- package/dist/models/HintClause.js +41 -0
- package/dist/models/HintClause.js.map +1 -0
- package/dist/models/InsertQuery.js +23 -0
- package/dist/models/InsertQuery.js.map +1 -0
- package/dist/models/KeywordTrie.js +54 -0
- package/dist/models/KeywordTrie.js.map +1 -0
- package/dist/models/Lexeme.js +22 -0
- package/dist/models/Lexeme.js.map +1 -0
- package/dist/models/MergeQuery.js +104 -0
- package/dist/models/MergeQuery.js.map +1 -0
- package/dist/models/SelectQuery.js +22 -0
- package/dist/models/SelectQuery.js.map +1 -0
- package/dist/models/SimpleSelectQuery.js +648 -0
- package/dist/models/SimpleSelectQuery.js.map +1 -0
- package/dist/models/SqlComponent.js +73 -0
- package/dist/models/SqlComponent.js.map +1 -0
- package/dist/models/SqlPrintToken.js +143 -0
- package/dist/models/SqlPrintToken.js.map +1 -0
- package/dist/models/TableDefinitionModel.js +86 -0
- package/dist/models/TableDefinitionModel.js.map +1 -0
- package/dist/models/UpdateQuery.js +29 -0
- package/dist/models/UpdateQuery.js.map +1 -0
- package/dist/models/ValueComponent.js +380 -0
- package/dist/models/ValueComponent.js.map +1 -0
- package/dist/models/ValuesQuery.js +62 -0
- package/dist/models/ValuesQuery.js.map +1 -0
- package/dist/parsers/AlterTableParser.js +490 -0
- package/dist/parsers/AlterTableParser.js.map +1 -0
- package/dist/parsers/AnalyzeStatementParser.js +94 -0
- package/dist/parsers/AnalyzeStatementParser.js.map +1 -0
- package/dist/parsers/CommandExpressionParser.js +213 -0
- package/dist/parsers/CommandExpressionParser.js.map +1 -0
- package/dist/parsers/CommonTableParser.js +177 -0
- package/dist/parsers/CommonTableParser.js.map +1 -0
- package/dist/parsers/CreateIndexParser.js +241 -0
- package/dist/parsers/CreateIndexParser.js.map +1 -0
- package/dist/parsers/CreateTableParser.js +738 -0
- package/dist/parsers/CreateTableParser.js.map +1 -0
- package/dist/parsers/DeleteClauseParser.js +37 -0
- package/dist/parsers/DeleteClauseParser.js.map +1 -0
- package/dist/parsers/DeleteQueryParser.js +77 -0
- package/dist/parsers/DeleteQueryParser.js.map +1 -0
- package/dist/parsers/DropConstraintParser.js +51 -0
- package/dist/parsers/DropConstraintParser.js.map +1 -0
- package/dist/parsers/DropIndexParser.js +73 -0
- package/dist/parsers/DropIndexParser.js.map +1 -0
- package/dist/parsers/DropTableParser.js +63 -0
- package/dist/parsers/DropTableParser.js.map +1 -0
- package/dist/parsers/ExplainStatementParser.js +189 -0
- package/dist/parsers/ExplainStatementParser.js.map +1 -0
- package/dist/parsers/FetchClauseParser.js +89 -0
- package/dist/parsers/FetchClauseParser.js.map +1 -0
- package/dist/parsers/ForClauseParser.js +58 -0
- package/dist/parsers/ForClauseParser.js.map +1 -0
- package/dist/parsers/FromClauseParser.js +54 -0
- package/dist/parsers/FromClauseParser.js.map +1 -0
- package/dist/parsers/FullNameParser.js +110 -0
- package/dist/parsers/FullNameParser.js.map +1 -0
- package/dist/parsers/FunctionExpressionParser.js +524 -0
- package/dist/parsers/FunctionExpressionParser.js.map +1 -0
- package/dist/parsers/GroupByParser.js +58 -0
- package/dist/parsers/GroupByParser.js.map +1 -0
- package/dist/parsers/HavingParser.js +36 -0
- package/dist/parsers/HavingParser.js.map +1 -0
- package/dist/parsers/IdentifierDecorator.js +17 -0
- package/dist/parsers/IdentifierDecorator.js.map +1 -0
- package/dist/parsers/IdentifierParser.js +15 -0
- package/dist/parsers/IdentifierParser.js.map +1 -0
- package/dist/parsers/InsertQueryParser.js +162 -0
- package/dist/parsers/InsertQueryParser.js.map +1 -0
- package/dist/parsers/JoinClauseParser.js +117 -0
- package/dist/parsers/JoinClauseParser.js.map +1 -0
- package/dist/parsers/JoinOnClauseParser.js +21 -0
- package/dist/parsers/JoinOnClauseParser.js.map +1 -0
- package/dist/parsers/JoinUsingClauseParser.js +23 -0
- package/dist/parsers/JoinUsingClauseParser.js.map +1 -0
- package/dist/parsers/KeywordParser.js +99 -0
- package/dist/parsers/KeywordParser.js.map +1 -0
- package/dist/parsers/LimitClauseParser.js +38 -0
- package/dist/parsers/LimitClauseParser.js.map +1 -0
- package/dist/parsers/LiteralParser.js +48 -0
- package/dist/parsers/LiteralParser.js.map +1 -0
- package/dist/parsers/MergeQueryParser.js +483 -0
- package/dist/parsers/MergeQueryParser.js.map +1 -0
- package/dist/parsers/OffsetClauseParser.js +42 -0
- package/dist/parsers/OffsetClauseParser.js.map +1 -0
- package/dist/parsers/OrderByClauseParser.js +108 -0
- package/dist/parsers/OrderByClauseParser.js.map +1 -0
- package/dist/parsers/OverExpressionParser.js +44 -0
- package/dist/parsers/OverExpressionParser.js.map +1 -0
- package/dist/parsers/ParameterDecorator.js +40 -0
- package/dist/parsers/ParameterDecorator.js.map +1 -0
- package/dist/parsers/ParameterExpressionParser.js +24 -0
- package/dist/parsers/ParameterExpressionParser.js.map +1 -0
- package/dist/parsers/ParenExpressionParser.js +109 -0
- package/dist/parsers/ParenExpressionParser.js.map +1 -0
- package/dist/parsers/ParseError.js +25 -0
- package/dist/parsers/ParseError.js.map +1 -0
- package/dist/parsers/PartitionByParser.js +53 -0
- package/dist/parsers/PartitionByParser.js.map +1 -0
- package/dist/parsers/ReturningClauseParser.js +64 -0
- package/dist/parsers/ReturningClauseParser.js.map +1 -0
- package/dist/parsers/SelectClauseParser.js +244 -0
- package/dist/parsers/SelectClauseParser.js.map +1 -0
- package/dist/parsers/SelectQueryParser.js +564 -0
- package/dist/parsers/SelectQueryParser.js.map +1 -0
- package/dist/parsers/SequenceParser.js +245 -0
- package/dist/parsers/SequenceParser.js.map +1 -0
- package/dist/parsers/SetClauseParser.js +125 -0
- package/dist/parsers/SetClauseParser.js.map +1 -0
- package/dist/parsers/SourceAliasExpressionParser.js +60 -0
- package/dist/parsers/SourceAliasExpressionParser.js.map +1 -0
- package/dist/parsers/SourceExpressionParser.js +69 -0
- package/dist/parsers/SourceExpressionParser.js.map +1 -0
- package/dist/parsers/SourceParser.js +144 -0
- package/dist/parsers/SourceParser.js.map +1 -0
- package/dist/parsers/SqlParser.js +431 -0
- package/dist/parsers/SqlParser.js.map +1 -0
- package/dist/parsers/SqlPrintTokenParser.js +3289 -0
- package/dist/parsers/SqlPrintTokenParser.js.map +1 -0
- package/dist/parsers/SqlTokenizer.js +553 -0
- package/dist/parsers/SqlTokenizer.js.map +1 -0
- package/dist/parsers/StringSpecifierExpressionParser.js +22 -0
- package/dist/parsers/StringSpecifierExpressionParser.js.map +1 -0
- package/dist/parsers/UnaryExpressionParser.js +39 -0
- package/dist/parsers/UnaryExpressionParser.js.map +1 -0
- package/dist/parsers/UpdateClauseParser.js +21 -0
- package/dist/parsers/UpdateClauseParser.js.map +1 -0
- package/dist/parsers/UpdateQueryParser.js +98 -0
- package/dist/parsers/UpdateQueryParser.js.map +1 -0
- package/dist/parsers/UsingClauseParser.js +33 -0
- package/dist/parsers/UsingClauseParser.js.map +1 -0
- package/dist/parsers/ValueParser.js +562 -0
- package/dist/parsers/ValueParser.js.map +1 -0
- package/dist/parsers/ValuesQueryParser.js +112 -0
- package/dist/parsers/ValuesQueryParser.js.map +1 -0
- package/dist/parsers/WhereClauseParser.js +51 -0
- package/dist/parsers/WhereClauseParser.js.map +1 -0
- package/dist/parsers/WindowClauseParser.js +57 -0
- package/dist/parsers/WindowClauseParser.js.map +1 -0
- package/dist/parsers/WindowExpressionParser.js +163 -0
- package/dist/parsers/WindowExpressionParser.js.map +1 -0
- package/dist/parsers/WithClauseParser.js +165 -0
- package/dist/parsers/WithClauseParser.js.map +1 -0
- package/dist/parsers/utils/LexemeCommentUtils.js +29 -0
- package/dist/parsers/utils/LexemeCommentUtils.js.map +1 -0
- package/dist/reporting/models/DataFlowEdge.js +58 -0
- package/dist/reporting/models/DataFlowEdge.js.map +1 -0
- package/dist/reporting/models/DataFlowGraph.js +138 -0
- package/dist/reporting/models/DataFlowGraph.js.map +1 -0
- package/dist/reporting/models/DataFlowNode.js +148 -0
- package/dist/reporting/models/DataFlowNode.js.map +1 -0
- package/dist/reporting/services/CTEHandler.js +58 -0
- package/dist/reporting/services/CTEHandler.js.map +1 -0
- package/dist/reporting/services/DataSourceHandler.js +95 -0
- package/dist/reporting/services/DataSourceHandler.js.map +1 -0
- package/dist/reporting/services/JoinHandler.js +84 -0
- package/dist/reporting/services/JoinHandler.js.map +1 -0
- package/dist/reporting/services/ProcessHandler.js +26 -0
- package/dist/reporting/services/ProcessHandler.js.map +1 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.js +13 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Clause.d.ts +7 -3
- package/dist/src/models/Clause.js +16 -3
- package/dist/src/models/Clause.js.map +1 -1
- package/dist/src/models/DDLStatements.d.ts +97 -2
- package/dist/src/models/DDLStatements.js +14 -1
- package/dist/src/models/DDLStatements.js.map +1 -1
- package/dist/src/models/InsertQuery.d.ts +1 -4
- package/dist/src/models/InsertQuery.js +3 -5
- package/dist/src/models/InsertQuery.js.map +1 -1
- package/dist/src/models/SqlPrintToken.d.ts +6 -0
- package/dist/src/models/SqlPrintToken.js +1 -0
- package/dist/src/models/SqlPrintToken.js.map +1 -1
- package/dist/src/models/TableDefinitionModel.d.ts +41 -0
- package/dist/src/models/TableDefinitionModel.js +85 -0
- package/dist/src/models/TableDefinitionModel.js.map +1 -0
- package/dist/src/models/ValueComponent.d.ts +2 -1
- package/dist/src/models/ValuesQuery.d.ts +2 -0
- package/dist/src/models/ValuesQuery.js +1 -0
- package/dist/src/models/ValuesQuery.js.map +1 -1
- package/dist/src/parsers/AlterTableParser.d.ts +1 -0
- package/dist/src/parsers/AlterTableParser.js +26 -5
- package/dist/src/parsers/AlterTableParser.js.map +1 -1
- package/dist/src/parsers/FunctionExpressionParser.d.ts +1 -0
- package/dist/src/parsers/InsertQueryParser.js +4 -1
- package/dist/src/parsers/InsertQueryParser.js.map +1 -1
- package/dist/src/parsers/ReturningClauseParser.js +33 -47
- package/dist/src/parsers/ReturningClauseParser.js.map +1 -1
- package/dist/src/parsers/SequenceParser.d.ts +16 -0
- package/dist/src/parsers/SqlParser.d.ts +4 -3
- package/dist/src/parsers/SqlParser.js +44 -63
- package/dist/src/parsers/SqlParser.js.map +1 -1
- package/dist/src/parsers/SqlPrintTokenParser.d.ts +9 -0
- package/dist/src/parsers/SqlPrintTokenParser.js +22 -4
- package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/src/parsers/SqlTokenizer.d.ts +1 -0
- package/dist/src/tokenReaders/LiteralTokenReader.js +7 -0
- package/dist/src/tokenReaders/LiteralTokenReader.js.map +1 -1
- package/dist/src/transformers/DDLDiffGenerator.d.ts +18 -0
- package/dist/src/transformers/DDLDiffGenerator.js +313 -0
- package/dist/src/transformers/DDLDiffGenerator.js.map +1 -0
- package/dist/src/transformers/DDLGeneralizer.d.ts +13 -0
- package/dist/src/transformers/DDLGeneralizer.js +119 -0
- package/dist/src/transformers/DDLGeneralizer.js.map +1 -0
- package/dist/src/transformers/DDLToFixtureConverter.d.ts +19 -0
- package/dist/src/transformers/DDLToFixtureConverter.js +206 -0
- package/dist/src/transformers/DDLToFixtureConverter.js.map +1 -0
- package/dist/src/transformers/DeleteResultSelectConverter.d.ts +53 -0
- package/dist/src/transformers/DeleteResultSelectConverter.js +398 -0
- package/dist/src/transformers/DeleteResultSelectConverter.js.map +1 -0
- package/dist/src/transformers/FixtureCteBuilder.d.ts +60 -0
- package/dist/src/transformers/FixtureCteBuilder.js +151 -0
- package/dist/src/transformers/FixtureCteBuilder.js.map +1 -0
- package/dist/src/transformers/InsertQuerySelectValuesConverter.js +5 -2
- package/dist/src/transformers/InsertQuerySelectValuesConverter.js.map +1 -1
- package/dist/src/transformers/InsertResultSelectConverter.d.ts +67 -0
- package/dist/src/transformers/InsertResultSelectConverter.js +499 -0
- package/dist/src/transformers/InsertResultSelectConverter.js.map +1 -0
- package/dist/src/transformers/MergeResultSelectConverter.d.ts +38 -0
- package/dist/src/transformers/MergeResultSelectConverter.js +310 -0
- package/dist/src/transformers/MergeResultSelectConverter.js.map +1 -0
- package/dist/src/transformers/QueryBuilder.d.ts +11 -0
- package/dist/src/transformers/QueryBuilder.js +19 -3
- package/dist/src/transformers/QueryBuilder.js.map +1 -1
- package/dist/src/transformers/SelectResultSelectConverter.d.ts +10 -0
- package/dist/src/transformers/SelectResultSelectConverter.js +36 -0
- package/dist/src/transformers/SelectResultSelectConverter.js.map +1 -0
- package/dist/src/transformers/SimulatedSelectConverter.d.ts +23 -0
- package/dist/src/transformers/SimulatedSelectConverter.js +65 -0
- package/dist/src/transformers/SimulatedSelectConverter.js.map +1 -0
- package/dist/src/transformers/UpdateResultSelectConverter.d.ts +51 -0
- package/dist/src/transformers/UpdateResultSelectConverter.js +344 -0
- package/dist/src/transformers/UpdateResultSelectConverter.js.map +1 -0
- package/dist/src/types/GenericFixture.d.ts +17 -0
- package/dist/src/utils/SelectQueryWithClauseHelper.d.ts +12 -0
- package/dist/src/utils/SelectQueryWithClauseHelper.js +47 -0
- package/dist/src/utils/SelectQueryWithClauseHelper.js.map +1 -0
- package/dist/src/utils/TableNameUtils.d.ts +10 -0
- package/dist/src/utils/ValueComponentRewriter.d.ts +3 -0
- package/dist/src/utils/ValueComponentRewriter.js +183 -0
- package/dist/src/utils/ValueComponentRewriter.js.map +1 -0
- package/dist/tokenReaders/BaseTokenReader.js +86 -0
- package/dist/tokenReaders/BaseTokenReader.js.map +1 -0
- package/dist/tokenReaders/CommandTokenReader.js +221 -0
- package/dist/tokenReaders/CommandTokenReader.js.map +1 -0
- package/dist/tokenReaders/EscapedIdentifierTokenReader.js +99 -0
- package/dist/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -0
- package/dist/tokenReaders/FunctionTokenReader.js +47 -0
- package/dist/tokenReaders/FunctionTokenReader.js.map +1 -0
- package/dist/tokenReaders/IdentifierTokenReader.js +34 -0
- package/dist/tokenReaders/IdentifierTokenReader.js.map +1 -0
- package/dist/tokenReaders/LiteralTokenReader.js +329 -0
- package/dist/tokenReaders/LiteralTokenReader.js.map +1 -0
- package/dist/tokenReaders/OperatorTokenReader.js +152 -0
- package/dist/tokenReaders/OperatorTokenReader.js.map +1 -0
- package/dist/tokenReaders/ParameterTokenReader.js +190 -0
- package/dist/tokenReaders/ParameterTokenReader.js.map +1 -0
- package/dist/tokenReaders/StringSpecifierTokenReader.js +31 -0
- package/dist/tokenReaders/StringSpecifierTokenReader.js.map +1 -0
- package/dist/tokenReaders/SymbolTokenReader.js +35 -0
- package/dist/tokenReaders/SymbolTokenReader.js.map +1 -0
- package/dist/tokenReaders/TokenReaderManager.js +110 -0
- package/dist/tokenReaders/TokenReaderManager.js.map +1 -0
- package/dist/tokenReaders/TypeTokenReader.js +69 -0
- package/dist/tokenReaders/TypeTokenReader.js.map +1 -0
- package/dist/transformers/AliasRenamer.js +600 -0
- package/dist/transformers/AliasRenamer.js.map +1 -0
- package/dist/transformers/CTEBuilder.js +188 -0
- package/dist/transformers/CTEBuilder.js.map +1 -0
- package/dist/transformers/CTECollector.js +409 -0
- package/dist/transformers/CTECollector.js.map +1 -0
- package/dist/transformers/CTEComposer.js +302 -0
- package/dist/transformers/CTEComposer.js.map +1 -0
- package/dist/transformers/CTEDependencyAnalyzer.js +285 -0
- package/dist/transformers/CTEDependencyAnalyzer.js.map +1 -0
- package/dist/transformers/CTEDependencyTracer.js +253 -0
- package/dist/transformers/CTEDependencyTracer.js.map +1 -0
- package/dist/transformers/CTEDisabler.js +355 -0
- package/dist/transformers/CTEDisabler.js.map +1 -0
- package/dist/transformers/CTEInjector.js +83 -0
- package/dist/transformers/CTEInjector.js.map +1 -0
- package/dist/transformers/CTENormalizer.js +46 -0
- package/dist/transformers/CTENormalizer.js.map +1 -0
- package/dist/transformers/CTEQueryDecomposer.js +589 -0
- package/dist/transformers/CTEQueryDecomposer.js.map +1 -0
- package/dist/transformers/CTERenamer.js +486 -0
- package/dist/transformers/CTERenamer.js.map +1 -0
- package/dist/transformers/CTETableReferenceCollector.js +358 -0
- package/dist/transformers/CTETableReferenceCollector.js.map +1 -0
- package/dist/transformers/ColumnReferenceCollector.js +478 -0
- package/dist/transformers/ColumnReferenceCollector.js.map +1 -0
- package/dist/transformers/DDLDiffGenerator.js +313 -0
- package/dist/transformers/DDLDiffGenerator.js.map +1 -0
- package/dist/transformers/DDLGeneralizer.js +119 -0
- package/dist/transformers/DDLGeneralizer.js.map +1 -0
- package/dist/transformers/DDLToFixtureConverter.js +206 -0
- package/dist/transformers/DDLToFixtureConverter.js.map +1 -0
- package/dist/transformers/DeleteResultSelectConverter.js +414 -0
- package/dist/transformers/DeleteResultSelectConverter.js.map +1 -0
- package/dist/transformers/DynamicQueryBuilder.js +164 -0
- package/dist/transformers/DynamicQueryBuilder.js.map +1 -0
- package/dist/transformers/EnhancedJsonMapping.js +223 -0
- package/dist/transformers/EnhancedJsonMapping.js.map +1 -0
- package/dist/transformers/FilterableItemCollector.js +259 -0
- package/dist/transformers/FilterableItemCollector.js.map +1 -0
- package/dist/transformers/FixtureCteBuilder.js +151 -0
- package/dist/transformers/FixtureCteBuilder.js.map +1 -0
- package/dist/transformers/FormatOptionResolver.js +67 -0
- package/dist/transformers/FormatOptionResolver.js.map +1 -0
- package/dist/transformers/Formatter.js +38 -0
- package/dist/transformers/Formatter.js.map +1 -0
- package/dist/transformers/InsertQuerySelectValuesConverter.js +125 -0
- package/dist/transformers/InsertQuerySelectValuesConverter.js.map +1 -0
- package/dist/transformers/InsertResultSelectConverter.js +589 -0
- package/dist/transformers/InsertResultSelectConverter.js.map +1 -0
- package/dist/transformers/JoinAggregationDecomposer.js +497 -0
- package/dist/transformers/JoinAggregationDecomposer.js.map +1 -0
- package/dist/transformers/JsonMappingConverter.js +392 -0
- package/dist/transformers/JsonMappingConverter.js.map +1 -0
- package/dist/transformers/JsonMappingUnifier.js +216 -0
- package/dist/transformers/JsonMappingUnifier.js.map +1 -0
- package/dist/transformers/LinePrinter.js +148 -0
- package/dist/transformers/LinePrinter.js.map +1 -0
- package/dist/transformers/MergeResultSelectConverter.js +310 -0
- package/dist/transformers/MergeResultSelectConverter.js.map +1 -0
- package/dist/transformers/ModelDrivenJsonMapping.js +122 -0
- package/dist/transformers/ModelDrivenJsonMapping.js.map +1 -0
- package/dist/transformers/OnelineFormattingHelper.js +99 -0
- package/dist/transformers/OnelineFormattingHelper.js.map +1 -0
- package/dist/transformers/ParameterCollector.js +37 -0
- package/dist/transformers/ParameterCollector.js.map +1 -0
- package/dist/transformers/PostgresArrayEntityCteBuilder.js +458 -0
- package/dist/transformers/PostgresArrayEntityCteBuilder.js.map +1 -0
- package/dist/transformers/PostgresJsonQueryBuilder.js +245 -0
- package/dist/transformers/PostgresJsonQueryBuilder.js.map +1 -0
- package/dist/transformers/PostgresObjectEntityCteBuilder.js +347 -0
- package/dist/transformers/PostgresObjectEntityCteBuilder.js.map +1 -0
- package/dist/transformers/QueryBuilder.js +649 -0
- package/dist/transformers/QueryBuilder.js.map +1 -0
- package/dist/transformers/QueryFlowDiagramGenerator.js +157 -0
- package/dist/transformers/QueryFlowDiagramGenerator.js.map +1 -0
- package/dist/transformers/SchemaCollector.js +523 -0
- package/dist/transformers/SchemaCollector.js.map +1 -0
- package/dist/transformers/SelectResultSelectConverter.js +36 -0
- package/dist/transformers/SelectResultSelectConverter.js.map +1 -0
- package/dist/transformers/SelectValueCollector.js +244 -0
- package/dist/transformers/SelectValueCollector.js.map +1 -0
- package/dist/transformers/SelectableColumnCollector.js +674 -0
- package/dist/transformers/SelectableColumnCollector.js.map +1 -0
- package/dist/transformers/SimulatedSelectConverter.js +65 -0
- package/dist/transformers/SimulatedSelectConverter.js.map +1 -0
- package/dist/transformers/SmartRenamer.js +422 -0
- package/dist/transformers/SmartRenamer.js.map +1 -0
- package/dist/transformers/SqlFormatter.js +77 -0
- package/dist/transformers/SqlFormatter.js.map +1 -0
- package/dist/transformers/SqlIdentifierRenamer.js +504 -0
- package/dist/transformers/SqlIdentifierRenamer.js.map +1 -0
- package/dist/transformers/SqlOutputToken.js +13 -0
- package/dist/transformers/SqlOutputToken.js.map +1 -0
- package/dist/transformers/SqlPaginationInjector.js +108 -0
- package/dist/transformers/SqlPaginationInjector.js.map +1 -0
- package/dist/transformers/SqlParamInjector.js +802 -0
- package/dist/transformers/SqlParamInjector.js.map +1 -0
- package/dist/transformers/SqlParameterBinder.js +70 -0
- package/dist/transformers/SqlParameterBinder.js.map +1 -0
- package/dist/transformers/SqlPrinter.js +1478 -0
- package/dist/transformers/SqlPrinter.js.map +1 -0
- package/dist/transformers/SqlSortInjector.js +153 -0
- package/dist/transformers/SqlSortInjector.js.map +1 -0
- package/dist/transformers/TableColumnResolver.js +3 -0
- package/dist/transformers/TableColumnResolver.js.map +1 -0
- package/dist/transformers/TableSourceCollector.js +439 -0
- package/dist/transformers/TableSourceCollector.js.map +1 -0
- package/dist/transformers/TypeTransformationPostProcessor.js +363 -0
- package/dist/transformers/TypeTransformationPostProcessor.js.map +1 -0
- package/dist/transformers/UpdateResultSelectConverter.js +359 -0
- package/dist/transformers/UpdateResultSelectConverter.js.map +1 -0
- package/dist/transformers/UpstreamSelectQueryFinder.js +184 -0
- package/dist/transformers/UpstreamSelectQueryFinder.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/Formatting.js +3 -0
- package/dist/types/Formatting.js.map +1 -0
- package/dist/types/GenericFixture.js +3 -0
- package/dist/types/GenericFixture.js.map +1 -0
- package/dist/utils/CTERegionDetector.js +464 -0
- package/dist/utils/CTERegionDetector.js.map +1 -0
- package/dist/utils/CommentEditor.js +345 -0
- package/dist/utils/CommentEditor.js.map +1 -0
- package/dist/utils/CommentUtils.js +69 -0
- package/dist/utils/CommentUtils.js.map +1 -0
- package/dist/utils/CursorContextAnalyzer.js +338 -0
- package/dist/utils/CursorContextAnalyzer.js.map +1 -0
- package/dist/utils/IntelliSenseApi.js +292 -0
- package/dist/utils/IntelliSenseApi.js.map +1 -0
- package/dist/utils/JsonSchemaValidator.js +215 -0
- package/dist/utils/JsonSchemaValidator.js.map +1 -0
- package/dist/utils/KeywordCache.js +206 -0
- package/dist/utils/KeywordCache.js.map +1 -0
- package/dist/utils/LexemeCursor.js +314 -0
- package/dist/utils/LexemeCursor.js.map +1 -0
- package/dist/utils/MultiQuerySplitter.js +292 -0
- package/dist/utils/MultiQuerySplitter.js.map +1 -0
- package/dist/utils/OperatorPrecedence.js +107 -0
- package/dist/utils/OperatorPrecedence.js.map +1 -0
- package/dist/utils/ParameterDetector.js +53 -0
- package/dist/utils/ParameterDetector.js.map +1 -0
- package/dist/utils/ParameterHelper.js +31 -0
- package/dist/utils/ParameterHelper.js.map +1 -0
- package/dist/utils/ParameterRemover.js +783 -0
- package/dist/utils/ParameterRemover.js.map +1 -0
- package/dist/utils/ParserStringUtils.js +31 -0
- package/dist/utils/ParserStringUtils.js.map +1 -0
- package/dist/utils/PositionAwareParser.js +363 -0
- package/dist/utils/PositionAwareParser.js.map +1 -0
- package/dist/utils/SchemaManager.js +217 -0
- package/dist/utils/SchemaManager.js.map +1 -0
- package/dist/utils/ScopeResolver.js +272 -0
- package/dist/utils/ScopeResolver.js.map +1 -0
- package/dist/utils/SelectQueryWithClauseHelper.js +47 -0
- package/dist/utils/SelectQueryWithClauseHelper.js.map +1 -0
- package/dist/utils/SqlSchemaValidator.js +55 -0
- package/dist/utils/SqlSchemaValidator.js.map +1 -0
- package/dist/utils/TableNameUtils.js +35 -0
- package/dist/utils/TableNameUtils.js.map +1 -0
- package/dist/utils/TextPositionUtils.js +128 -0
- package/dist/utils/TextPositionUtils.js.map +1 -0
- package/dist/utils/ValueComponentRewriter.js +187 -0
- package/dist/utils/ValueComponentRewriter.js.map +1 -0
- package/dist/utils/charLookupTable.js +73 -0
- package/dist/utils/charLookupTable.js.map +1 -0
- package/dist/utils/stringUtils.js +230 -0
- package/dist/utils/stringUtils.js.map +1 -0
- package/package.json +62 -62
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TextPositionUtils = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Utility functions for text position conversion and manipulation
|
|
6
|
+
*
|
|
7
|
+
* Provides centralized functionality for converting between different
|
|
8
|
+
* position representations commonly used in text processing and SQL parsing.
|
|
9
|
+
*/
|
|
10
|
+
class TextPositionUtils {
|
|
11
|
+
/**
|
|
12
|
+
* Convert line/column position to character offset
|
|
13
|
+
*
|
|
14
|
+
* @param text - Source text
|
|
15
|
+
* @param position - Line/column position (1-based)
|
|
16
|
+
* @returns Character offset (0-based) or -1 if invalid
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const text = "SELECT id\nFROM users";
|
|
21
|
+
* const charOffset = TextPositionUtils.lineColumnToCharOffset(text, { line: 2, column: 1 });
|
|
22
|
+
* console.log(charOffset); // 10 (position of 'F' in 'FROM')
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
static lineColumnToCharOffset(text, position) {
|
|
26
|
+
if (position.line < 1 || position.column < 1) {
|
|
27
|
+
return -1;
|
|
28
|
+
}
|
|
29
|
+
const lines = text.split('\n');
|
|
30
|
+
if (position.line > lines.length) {
|
|
31
|
+
return -1;
|
|
32
|
+
}
|
|
33
|
+
const targetLine = lines[position.line - 1];
|
|
34
|
+
if (position.column > targetLine.length + 1) {
|
|
35
|
+
return -1;
|
|
36
|
+
}
|
|
37
|
+
let offset = 0;
|
|
38
|
+
for (let i = 0; i < position.line - 1; i++) {
|
|
39
|
+
offset += lines[i].length + 1; // +1 for newline
|
|
40
|
+
}
|
|
41
|
+
offset += position.column - 1;
|
|
42
|
+
return offset;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Convert character offset to line/column position
|
|
46
|
+
*
|
|
47
|
+
* @param text - Source text
|
|
48
|
+
* @param charOffset - Character offset (0-based)
|
|
49
|
+
* @returns Line/column position (1-based) or null if invalid
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const text = "SELECT id\nFROM users";
|
|
54
|
+
* const position = TextPositionUtils.charOffsetToLineColumn(text, 10);
|
|
55
|
+
* console.log(position); // { line: 2, column: 1 }
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
static charOffsetToLineColumn(text, charOffset) {
|
|
59
|
+
if (charOffset < 0 || charOffset > text.length) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
const lines = text.split('\n');
|
|
63
|
+
let currentOffset = 0;
|
|
64
|
+
for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
|
|
65
|
+
const lineLength = lines[lineIndex].length;
|
|
66
|
+
if (charOffset < currentOffset + lineLength) {
|
|
67
|
+
return {
|
|
68
|
+
line: lineIndex + 1,
|
|
69
|
+
column: charOffset - currentOffset + 1
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (charOffset === currentOffset + lineLength && lineIndex < lines.length - 1) {
|
|
73
|
+
return {
|
|
74
|
+
line: lineIndex + 2,
|
|
75
|
+
column: 1
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
currentOffset += lineLength + 1; // +1 for newline
|
|
79
|
+
}
|
|
80
|
+
// Handle position at very end
|
|
81
|
+
if (charOffset === text.length) {
|
|
82
|
+
const lastLine = lines[lines.length - 1];
|
|
83
|
+
return {
|
|
84
|
+
line: lines.length,
|
|
85
|
+
column: lastLine.length + 1
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Check if a position is within text bounds
|
|
92
|
+
*
|
|
93
|
+
* @param text - Source text
|
|
94
|
+
* @param position - Line/column position (1-based)
|
|
95
|
+
* @returns True if position is valid
|
|
96
|
+
*/
|
|
97
|
+
static isValidPosition(text, position) {
|
|
98
|
+
return this.lineColumnToCharOffset(text, position) !== -1;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get the line at the specified line number
|
|
102
|
+
*
|
|
103
|
+
* @param text - Source text
|
|
104
|
+
* @param lineNumber - Line number (1-based)
|
|
105
|
+
* @returns Line content or null if invalid
|
|
106
|
+
*/
|
|
107
|
+
static getLine(text, lineNumber) {
|
|
108
|
+
if (lineNumber < 1) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const lines = text.split('\n');
|
|
112
|
+
if (lineNumber > lines.length) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
return lines[lineNumber - 1];
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Get the total number of lines in text
|
|
119
|
+
*
|
|
120
|
+
* @param text - Source text
|
|
121
|
+
* @returns Number of lines
|
|
122
|
+
*/
|
|
123
|
+
static getLineCount(text) {
|
|
124
|
+
return text.split('\n').length;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.TextPositionUtils = TextPositionUtils;
|
|
128
|
+
//# sourceMappingURL=TextPositionUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextPositionUtils.js","sourceRoot":"","sources":["../../src/utils/TextPositionUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.rewriteValueComponentWithColumnResolver = rewriteValueComponentWithColumnResolver;
|
|
4
|
+
const ValueComponent_1 = require("../models/ValueComponent");
|
|
5
|
+
const Clause_1 = require("../models/Clause");
|
|
6
|
+
function rewriteValueComponentWithColumnResolver(value, resolver) {
|
|
7
|
+
if (value instanceof ValueComponent_1.ColumnReference) {
|
|
8
|
+
return resolver(value);
|
|
9
|
+
}
|
|
10
|
+
if (value instanceof ValueComponent_1.FunctionCall) {
|
|
11
|
+
const rewrittenArgument = value.argument
|
|
12
|
+
? rewriteValueComponentWithColumnResolver(value.argument, resolver)
|
|
13
|
+
: null;
|
|
14
|
+
const rewrittenOver = value.over ? rewriteOverExpression(value.over, resolver) : null;
|
|
15
|
+
const rewrittenWithinGroup = value.withinGroup
|
|
16
|
+
? rewriteOrderByClause(value.withinGroup, resolver)
|
|
17
|
+
: null;
|
|
18
|
+
const rewrittenInternalOrderBy = value.internalOrderBy
|
|
19
|
+
? rewriteOrderByClause(value.internalOrderBy, resolver)
|
|
20
|
+
: null;
|
|
21
|
+
// Preserve FILTER predicates so aggregate behaviour remains intact.
|
|
22
|
+
const rewrittenFilterCondition = value.filterCondition
|
|
23
|
+
? rewriteValueComponentWithColumnResolver(value.filterCondition, resolver)
|
|
24
|
+
: null;
|
|
25
|
+
return new ValueComponent_1.FunctionCall(value.qualifiedName.namespaces, value.qualifiedName.name, rewrittenArgument, rewrittenOver, rewrittenWithinGroup, value.withOrdinality, rewrittenInternalOrderBy, rewrittenFilterCondition);
|
|
26
|
+
}
|
|
27
|
+
if (value instanceof ValueComponent_1.UnaryExpression) {
|
|
28
|
+
const rewrittenExpression = rewriteValueComponentWithColumnResolver(value.expression, resolver);
|
|
29
|
+
return new ValueComponent_1.UnaryExpression(value.operator.value, rewrittenExpression);
|
|
30
|
+
}
|
|
31
|
+
if (value instanceof ValueComponent_1.BinaryExpression) {
|
|
32
|
+
const left = rewriteValueComponentWithColumnResolver(value.left, resolver);
|
|
33
|
+
const right = rewriteValueComponentWithColumnResolver(value.right, resolver);
|
|
34
|
+
return new ValueComponent_1.BinaryExpression(left, value.operator.value, right);
|
|
35
|
+
}
|
|
36
|
+
if (value instanceof ValueComponent_1.CaseExpression) {
|
|
37
|
+
const condition = value.condition
|
|
38
|
+
? rewriteValueComponentWithColumnResolver(value.condition, resolver)
|
|
39
|
+
: null;
|
|
40
|
+
const switchCase = rewriteSwitchCaseArgument(value.switchCase, resolver);
|
|
41
|
+
return new ValueComponent_1.CaseExpression(condition, switchCase);
|
|
42
|
+
}
|
|
43
|
+
if (value instanceof ValueComponent_1.SwitchCaseArgument) {
|
|
44
|
+
return rewriteSwitchCaseArgument(value, resolver);
|
|
45
|
+
}
|
|
46
|
+
if (value instanceof ValueComponent_1.CaseKeyValuePair) {
|
|
47
|
+
return rewriteCaseKeyValuePair(value, resolver);
|
|
48
|
+
}
|
|
49
|
+
if (value instanceof ValueComponent_1.BetweenExpression) {
|
|
50
|
+
const expression = rewriteValueComponentWithColumnResolver(value.expression, resolver);
|
|
51
|
+
const lower = rewriteValueComponentWithColumnResolver(value.lower, resolver);
|
|
52
|
+
const upper = rewriteValueComponentWithColumnResolver(value.upper, resolver);
|
|
53
|
+
return new ValueComponent_1.BetweenExpression(expression, lower, upper, value.negated);
|
|
54
|
+
}
|
|
55
|
+
if (value instanceof ValueComponent_1.CastExpression) {
|
|
56
|
+
const input = rewriteValueComponentWithColumnResolver(value.input, resolver);
|
|
57
|
+
const castType = rewriteTypeValue(value.castType, resolver);
|
|
58
|
+
return new ValueComponent_1.CastExpression(input, castType);
|
|
59
|
+
}
|
|
60
|
+
if (value instanceof ValueComponent_1.ParenExpression) {
|
|
61
|
+
const expression = rewriteValueComponentWithColumnResolver(value.expression, resolver);
|
|
62
|
+
return new ValueComponent_1.ParenExpression(expression);
|
|
63
|
+
}
|
|
64
|
+
if (value instanceof ValueComponent_1.TupleExpression) {
|
|
65
|
+
const rewrittenValues = value.values.map((item) => rewriteValueComponentWithColumnResolver(item, resolver));
|
|
66
|
+
return new ValueComponent_1.TupleExpression(rewrittenValues);
|
|
67
|
+
}
|
|
68
|
+
if (value instanceof ValueComponent_1.ArrayExpression) {
|
|
69
|
+
const expression = rewriteValueComponentWithColumnResolver(value.expression, resolver);
|
|
70
|
+
return new ValueComponent_1.ArrayExpression(expression);
|
|
71
|
+
}
|
|
72
|
+
if (value instanceof ValueComponent_1.ArraySliceExpression) {
|
|
73
|
+
const array = rewriteValueComponentWithColumnResolver(value.array, resolver);
|
|
74
|
+
const startIndex = value.startIndex
|
|
75
|
+
? rewriteValueComponentWithColumnResolver(value.startIndex, resolver)
|
|
76
|
+
: null;
|
|
77
|
+
const endIndex = value.endIndex
|
|
78
|
+
? rewriteValueComponentWithColumnResolver(value.endIndex, resolver)
|
|
79
|
+
: null;
|
|
80
|
+
return new ValueComponent_1.ArraySliceExpression(array, startIndex, endIndex);
|
|
81
|
+
}
|
|
82
|
+
if (value instanceof ValueComponent_1.ArrayIndexExpression) {
|
|
83
|
+
const array = rewriteValueComponentWithColumnResolver(value.array, resolver);
|
|
84
|
+
const index = rewriteValueComponentWithColumnResolver(value.index, resolver);
|
|
85
|
+
return new ValueComponent_1.ArrayIndexExpression(array, index);
|
|
86
|
+
}
|
|
87
|
+
if (value instanceof ValueComponent_1.ArrayQueryExpression) {
|
|
88
|
+
return value;
|
|
89
|
+
}
|
|
90
|
+
if (value instanceof ValueComponent_1.ValueList) {
|
|
91
|
+
const rewrittenList = value.values.map((item) => rewriteValueComponentWithColumnResolver(item, resolver));
|
|
92
|
+
return new ValueComponent_1.ValueList(rewrittenList);
|
|
93
|
+
}
|
|
94
|
+
if (value instanceof ValueComponent_1.InlineQuery) {
|
|
95
|
+
return value;
|
|
96
|
+
}
|
|
97
|
+
if (value instanceof ValueComponent_1.WindowFrameExpression) {
|
|
98
|
+
return rewriteWindowFrameExpression(value, resolver);
|
|
99
|
+
}
|
|
100
|
+
if (value instanceof ValueComponent_1.WindowFrameSpec) {
|
|
101
|
+
return rewriteWindowFrameSpec(value, resolver);
|
|
102
|
+
}
|
|
103
|
+
if (value instanceof ValueComponent_1.WindowFrameBoundaryValue) {
|
|
104
|
+
const rewrittenValue = rewriteValueComponentWithColumnResolver(value.value, resolver);
|
|
105
|
+
return new ValueComponent_1.WindowFrameBoundaryValue(rewrittenValue, value.isFollowing);
|
|
106
|
+
}
|
|
107
|
+
if (value instanceof ValueComponent_1.WindowFrameBoundStatic) {
|
|
108
|
+
return value;
|
|
109
|
+
}
|
|
110
|
+
if (value instanceof ValueComponent_1.TypeValue) {
|
|
111
|
+
return rewriteTypeValue(value, resolver);
|
|
112
|
+
}
|
|
113
|
+
if (value instanceof ValueComponent_1.StringSpecifierExpression) {
|
|
114
|
+
return value;
|
|
115
|
+
}
|
|
116
|
+
if (value instanceof ValueComponent_1.LiteralValue || value instanceof ValueComponent_1.RawString || value instanceof ValueComponent_1.IdentifierString) {
|
|
117
|
+
return value;
|
|
118
|
+
}
|
|
119
|
+
if (value instanceof ValueComponent_1.ParameterExpression) {
|
|
120
|
+
return value;
|
|
121
|
+
}
|
|
122
|
+
return value;
|
|
123
|
+
}
|
|
124
|
+
function rewriteSwitchCaseArgument(argument, resolver) {
|
|
125
|
+
const rewrittenCases = argument.cases.map((pair) => rewriteCaseKeyValuePair(pair, resolver));
|
|
126
|
+
const elseValue = argument.elseValue
|
|
127
|
+
? rewriteValueComponentWithColumnResolver(argument.elseValue, resolver)
|
|
128
|
+
: null;
|
|
129
|
+
return new ValueComponent_1.SwitchCaseArgument(rewrittenCases, elseValue);
|
|
130
|
+
}
|
|
131
|
+
function rewriteCaseKeyValuePair(pair, resolver) {
|
|
132
|
+
const key = rewriteValueComponentWithColumnResolver(pair.key, resolver);
|
|
133
|
+
const value = rewriteValueComponentWithColumnResolver(pair.value, resolver);
|
|
134
|
+
return new ValueComponent_1.CaseKeyValuePair(key, value);
|
|
135
|
+
}
|
|
136
|
+
function rewriteOrderByClause(clause, resolver) {
|
|
137
|
+
const rewrittenOrder = clause.order.map((component) => rewriteOrderByComponent(component, resolver));
|
|
138
|
+
return new Clause_1.OrderByClause(rewrittenOrder);
|
|
139
|
+
}
|
|
140
|
+
function rewriteOrderByComponent(component, resolver) {
|
|
141
|
+
if (component instanceof Clause_1.OrderByItem) {
|
|
142
|
+
const rewrittenValue = rewriteValueComponentWithColumnResolver(component.value, resolver);
|
|
143
|
+
return new Clause_1.OrderByItem(rewrittenValue, component.sortDirection, component.nullsPosition);
|
|
144
|
+
}
|
|
145
|
+
return rewriteValueComponentWithColumnResolver(component, resolver);
|
|
146
|
+
}
|
|
147
|
+
function rewriteOverExpression(over, resolver) {
|
|
148
|
+
if (over instanceof ValueComponent_1.WindowFrameExpression) {
|
|
149
|
+
return rewriteWindowFrameExpression(over, resolver);
|
|
150
|
+
}
|
|
151
|
+
return over;
|
|
152
|
+
}
|
|
153
|
+
function rewriteWindowFrameExpression(expression, resolver) {
|
|
154
|
+
const partition = expression.partition
|
|
155
|
+
? rewritePartitionByClause(expression.partition, resolver)
|
|
156
|
+
: null;
|
|
157
|
+
const order = expression.order ? rewriteOrderByClause(expression.order, resolver) : null;
|
|
158
|
+
const frameSpec = expression.frameSpec
|
|
159
|
+
? rewriteWindowFrameSpec(expression.frameSpec, resolver)
|
|
160
|
+
: null;
|
|
161
|
+
return new ValueComponent_1.WindowFrameExpression(partition, order, frameSpec);
|
|
162
|
+
}
|
|
163
|
+
function rewritePartitionByClause(clause, resolver) {
|
|
164
|
+
const value = rewriteValueComponentWithColumnResolver(clause.value, resolver);
|
|
165
|
+
return new Clause_1.PartitionByClause(value);
|
|
166
|
+
}
|
|
167
|
+
function rewriteWindowFrameSpec(spec, resolver) {
|
|
168
|
+
const startBound = rewriteFrameBoundaryComponent(spec.startBound, resolver);
|
|
169
|
+
const endBound = spec.endBound
|
|
170
|
+
? rewriteFrameBoundaryComponent(spec.endBound, resolver)
|
|
171
|
+
: null;
|
|
172
|
+
return new ValueComponent_1.WindowFrameSpec(spec.frameType, startBound, endBound);
|
|
173
|
+
}
|
|
174
|
+
function rewriteFrameBoundaryComponent(bound, resolver) {
|
|
175
|
+
if (bound instanceof ValueComponent_1.WindowFrameBoundaryValue) {
|
|
176
|
+
const value = rewriteValueComponentWithColumnResolver(bound.value, resolver);
|
|
177
|
+
return new ValueComponent_1.WindowFrameBoundaryValue(value, bound.isFollowing);
|
|
178
|
+
}
|
|
179
|
+
return bound;
|
|
180
|
+
}
|
|
181
|
+
function rewriteTypeValue(value, resolver) {
|
|
182
|
+
const argument = value.argument
|
|
183
|
+
? rewriteValueComponentWithColumnResolver(value.argument, resolver)
|
|
184
|
+
: null;
|
|
185
|
+
return new ValueComponent_1.TypeValue(value.namespaces, value.qualifiedName.name, argument);
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=ValueComponentRewriter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValueComponentRewriter.js","sourceRoot":"","sources":["../../src/utils/ValueComponentRewriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CharLookupTable = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Fast character classification utilities for SQL tokenization
|
|
6
|
+
*/
|
|
7
|
+
class CharLookupTable {
|
|
8
|
+
static isWhitespace(char) {
|
|
9
|
+
if (char.length !== 1)
|
|
10
|
+
return false;
|
|
11
|
+
const code = char.charCodeAt(0);
|
|
12
|
+
// Check for space(32), tab(9), line feed(10), carriage return(13)
|
|
13
|
+
return code === 32 || code === 9 || code === 10 || code === 13;
|
|
14
|
+
}
|
|
15
|
+
static isDigit(char) {
|
|
16
|
+
if (char.length !== 1)
|
|
17
|
+
return false;
|
|
18
|
+
const code = char.charCodeAt(0);
|
|
19
|
+
// Check if within '0'(48) to '9'(57) range
|
|
20
|
+
return code >= 48 && code <= 57;
|
|
21
|
+
}
|
|
22
|
+
static isHexChar(char) {
|
|
23
|
+
if (char.length !== 1)
|
|
24
|
+
return false;
|
|
25
|
+
const code = char.charCodeAt(0);
|
|
26
|
+
// Check if '0'(48) to '9'(57) or 'a'(97) to 'f'(102) or 'A'(65) to 'F'(70)
|
|
27
|
+
return (code >= 48 && code <= 57) ||
|
|
28
|
+
(code >= 97 && code <= 102) ||
|
|
29
|
+
(code >= 65 && code <= 70);
|
|
30
|
+
}
|
|
31
|
+
static isOperatorSymbol(char) {
|
|
32
|
+
if (char.length !== 1)
|
|
33
|
+
return false;
|
|
34
|
+
const code = char.charCodeAt(0);
|
|
35
|
+
// Check for specific operator character codes
|
|
36
|
+
// '+'=43, '-'=45, '*'=42, '/'=47, '%'=37, '~'=126, '@'=64, '#'=35, '^'=94,
|
|
37
|
+
// '&'=38, ':'=58, '!'=33, '<'=60, '>'=62, '='=61, '|'=124, '?'=63
|
|
38
|
+
return code === 43 || code === 45 || code === 42 || code === 47 ||
|
|
39
|
+
code === 37 || code === 126 || code === 64 || code === 35 ||
|
|
40
|
+
code === 94 || code === 38 || code === 58 || code === 33 ||
|
|
41
|
+
code === 60 || code === 62 || code === 61 || code === 124 || code === 63;
|
|
42
|
+
}
|
|
43
|
+
static isDelimiter(char) {
|
|
44
|
+
if (char.length !== 1)
|
|
45
|
+
return false;
|
|
46
|
+
const code = char.charCodeAt(0);
|
|
47
|
+
// First check delimiters: '.'=46, ','=44, '('=40, ')'=41, '['=91, ']'=93, '{'=123, '}'=125, ';'=59
|
|
48
|
+
if (code === 46 || code === 44 || code === 40 || code === 41 ||
|
|
49
|
+
code === 91 || code === 93 || code === 123 || code === 125 || code === 59) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
// Then check for whitespace: ' '=32, '\t'=9, '\n'=10, '\r'=13
|
|
53
|
+
if (code === 32 || code === 9 || code === 10 || code === 13) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
// Finally check for operator symbols
|
|
57
|
+
// '+'=43, '-'=45, '*'=42, '/'=47, '%'=37, '~'=126, '@'=64, '#'=35, '^'=94,
|
|
58
|
+
// '&'=38, ':'=58, '!'=33, '<'=60, '>'=62, '='=61, '|'=124, '?'=63
|
|
59
|
+
return code === 43 || code === 45 || code === 42 || code === 47 ||
|
|
60
|
+
code === 37 || code === 126 || code === 64 || code === 35 ||
|
|
61
|
+
code === 94 || code === 38 || code === 58 || code === 33 ||
|
|
62
|
+
code === 60 || code === 62 || code === 61 || code === 124 || code === 63;
|
|
63
|
+
}
|
|
64
|
+
static isNamedParameterPrefix(char) {
|
|
65
|
+
if (char.length !== 1)
|
|
66
|
+
return false;
|
|
67
|
+
const code = char.charCodeAt(0);
|
|
68
|
+
// Check for parameter prefix characters: '@'=64, ':'=58, '$'=36
|
|
69
|
+
return code === 64 || code === 58 || code === 36;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.CharLookupTable = CharLookupTable;
|
|
73
|
+
//# sourceMappingURL=charLookupTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charLookupTable.js","sourceRoot":"","sources":["../../src/utils/charLookupTable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StringUtils = void 0;
|
|
4
|
+
const charLookupTable_1 = require("./charLookupTable");
|
|
5
|
+
/**
|
|
6
|
+
* Utilities for string operations during tokenization
|
|
7
|
+
*/
|
|
8
|
+
class StringUtils {
|
|
9
|
+
/**
|
|
10
|
+
* Creates a visual representation of an error position in text
|
|
11
|
+
* @param input The input text
|
|
12
|
+
* @param errPosition The error position
|
|
13
|
+
* @returns A string with a caret pointing to the error position
|
|
14
|
+
*/
|
|
15
|
+
static getDebugPositionInfo(input, errPosition) {
|
|
16
|
+
// Get 5 characters before and after the error
|
|
17
|
+
// If the start and end points are out of the string range, keep them within the range
|
|
18
|
+
// Display ^ at the error position on the next line
|
|
19
|
+
const start = Math.max(0, errPosition - 5);
|
|
20
|
+
const end = Math.min(input.length, errPosition + 5);
|
|
21
|
+
const debugInfo = input.slice(start, end);
|
|
22
|
+
const caret = ' '.repeat(errPosition - start) + '^';
|
|
23
|
+
return `${debugInfo}\n${caret}`;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Skip white space characters.
|
|
27
|
+
*/
|
|
28
|
+
static skipWhiteSpace(input, position) {
|
|
29
|
+
const length = input.length;
|
|
30
|
+
/*
|
|
31
|
+
* Optimization: Try to skip 4 spaces at once (for 4-space indents).
|
|
32
|
+
* This is effective when SQL is deeply nested and uses 4-space indentation.
|
|
33
|
+
* In typical cases, charCodeAt in a loop is fastest, but for large/indented SQL,
|
|
34
|
+
* this can reduce the number of iterations and improve stability (lower error/deviation in benchmarks).
|
|
35
|
+
* If indentation is not 4 spaces, this check is skipped quickly, so overhead is minimal.
|
|
36
|
+
*
|
|
37
|
+
* Even for 2-space indents or mixed indents (2, 4, tab),
|
|
38
|
+
* the remaining whitespace is handled by the following loop, so there is no performance loss.
|
|
39
|
+
*
|
|
40
|
+
* Benchmark results show that this optimization does not slow down short queries,
|
|
41
|
+
* and can make long/indented queries more stable and slightly faster.
|
|
42
|
+
*/
|
|
43
|
+
while (position + 4 <= length && input.slice(position, position + 4) === ' ') {
|
|
44
|
+
position += 4;
|
|
45
|
+
}
|
|
46
|
+
// Then skip remaining whitespace one by one (space, tab, newline, carriage return)
|
|
47
|
+
while (position < length) {
|
|
48
|
+
const charCode = input.charCodeAt(position);
|
|
49
|
+
// ' '=32, '\t'=9, '\n'=10, '\r'=13
|
|
50
|
+
if (charCode !== 32 && charCode !== 9 && charCode !== 10 && charCode !== 13) {
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
position++;
|
|
54
|
+
}
|
|
55
|
+
return position;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Skip line comment.
|
|
59
|
+
*/
|
|
60
|
+
static readLineComment(input, position) {
|
|
61
|
+
if (position + 1 >= input.length) {
|
|
62
|
+
return { newPosition: position, comment: null };
|
|
63
|
+
}
|
|
64
|
+
// '-'=45
|
|
65
|
+
if (input.charCodeAt(position) === 45 && input.charCodeAt(position + 1) === 45) {
|
|
66
|
+
const start = position;
|
|
67
|
+
position += 2;
|
|
68
|
+
// '\n'=10
|
|
69
|
+
while (position < input.length && input.charCodeAt(position) !== 10) {
|
|
70
|
+
position++;
|
|
71
|
+
}
|
|
72
|
+
// Return the trimmed comment content (excluding -- tokens)
|
|
73
|
+
const comment = input.slice(start + 2, position).trim();
|
|
74
|
+
return { newPosition: position, comment };
|
|
75
|
+
}
|
|
76
|
+
return { newPosition: position, comment: null };
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Skip block comment.
|
|
80
|
+
*/
|
|
81
|
+
static readBlockComment(input, position) {
|
|
82
|
+
if (position + 1 >= input.length) {
|
|
83
|
+
return { newPosition: position, comments: null };
|
|
84
|
+
}
|
|
85
|
+
// Fast check for /* ('/'=47, '*'=42)
|
|
86
|
+
if (input.charCodeAt(position) !== 47 || input.charCodeAt(position + 1) !== 42) {
|
|
87
|
+
return { newPosition: position, comments: null };
|
|
88
|
+
}
|
|
89
|
+
// Treat Oracle style hints (/*+) as non-comment so other readers can process them. ('+'=43)
|
|
90
|
+
const isHint = position + 2 < input.length && input.charCodeAt(position + 2) === 43;
|
|
91
|
+
if (isHint) {
|
|
92
|
+
return { newPosition: position, comments: null };
|
|
93
|
+
}
|
|
94
|
+
const start = position;
|
|
95
|
+
position += 2;
|
|
96
|
+
while (position + 1 < input.length) {
|
|
97
|
+
// Look for closing */ ('*'/=42, '/'=47)
|
|
98
|
+
if (input.charCodeAt(position) === 42 && input.charCodeAt(position + 1) === 47) {
|
|
99
|
+
position += 2;
|
|
100
|
+
const processedLines = this.processBlockCommentContent(input.slice(start + 2, position - 2));
|
|
101
|
+
return { newPosition: position, comments: processedLines };
|
|
102
|
+
}
|
|
103
|
+
position++;
|
|
104
|
+
}
|
|
105
|
+
// Unterminated comment: consume rest of input and return collected lines.
|
|
106
|
+
const processedLinesUnterminated = this.processBlockCommentContent(input.slice(start + 2));
|
|
107
|
+
return { newPosition: input.length, comments: processedLinesUnterminated };
|
|
108
|
+
}
|
|
109
|
+
static processBlockCommentContent(rawContent) {
|
|
110
|
+
const rawLines = rawContent.replace(/\r/g, '').split('\n');
|
|
111
|
+
const processedLines = [];
|
|
112
|
+
for (const rawLine of rawLines) {
|
|
113
|
+
const trimmedLine = rawLine.trim();
|
|
114
|
+
const isSeparatorLine = /^\s*[-=_+*#]+\s*$/.test(rawLine);
|
|
115
|
+
if (trimmedLine !== '' || isSeparatorLine) {
|
|
116
|
+
processedLines.push(isSeparatorLine ? rawLine.trim() : trimmedLine);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
processedLines.push('');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
while (processedLines.length > 0 && processedLines[0] === '') {
|
|
123
|
+
processedLines.shift();
|
|
124
|
+
}
|
|
125
|
+
while (processedLines.length > 0 && processedLines[processedLines.length - 1] === '') {
|
|
126
|
+
processedLines.pop();
|
|
127
|
+
}
|
|
128
|
+
return processedLines;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Skip white space characters and SQL comments.
|
|
132
|
+
* @returns Object containing the new position and an array of skipped comments
|
|
133
|
+
*/
|
|
134
|
+
static readWhiteSpaceAndComment(input, position) {
|
|
135
|
+
let lines = null;
|
|
136
|
+
const length = input.length;
|
|
137
|
+
while (position < length) {
|
|
138
|
+
// Store current position
|
|
139
|
+
const oldPosition = position;
|
|
140
|
+
// Skip whitespace first
|
|
141
|
+
position = StringUtils.skipWhiteSpace(input, position);
|
|
142
|
+
if (position !== oldPosition) {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
// Fast character code check
|
|
146
|
+
const charCode = input.charCodeAt(position);
|
|
147
|
+
// '-'=45 (Line comment)
|
|
148
|
+
if (charCode === 45) {
|
|
149
|
+
const lineCommentResult = StringUtils.readLineComment(input, position);
|
|
150
|
+
if (lineCommentResult.newPosition !== position) {
|
|
151
|
+
position = lineCommentResult.newPosition;
|
|
152
|
+
if (lineCommentResult.comment) {
|
|
153
|
+
if (lines === null) {
|
|
154
|
+
lines = [];
|
|
155
|
+
}
|
|
156
|
+
lines.push(lineCommentResult.comment.trim());
|
|
157
|
+
}
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// '/'=47 (Block comment)
|
|
162
|
+
else if (charCode === 47) {
|
|
163
|
+
const blockCommentResult = StringUtils.readBlockComment(input, position);
|
|
164
|
+
if (blockCommentResult.newPosition !== position) {
|
|
165
|
+
position = blockCommentResult.newPosition;
|
|
166
|
+
if (blockCommentResult.comments) {
|
|
167
|
+
if (lines === null) {
|
|
168
|
+
lines = [];
|
|
169
|
+
}
|
|
170
|
+
lines.push(...blockCommentResult.comments);
|
|
171
|
+
}
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// No more whitespace or comments found
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
return { position, lines };
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Read a regular identifier.
|
|
182
|
+
*/
|
|
183
|
+
static readRegularIdentifier(input, position) {
|
|
184
|
+
const result = this.tryReadRegularIdentifier(input, position);
|
|
185
|
+
if (!result) {
|
|
186
|
+
throw new Error(`Unexpected character. position: ${position}\n${StringUtils.getDebugPositionInfo(input, position)}`);
|
|
187
|
+
}
|
|
188
|
+
return result;
|
|
189
|
+
}
|
|
190
|
+
static tryReadRegularIdentifier(input, position) {
|
|
191
|
+
const start = position;
|
|
192
|
+
while (position < input.length) {
|
|
193
|
+
if (charLookupTable_1.CharLookupTable.isDelimiter(input[position])) {
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
position++;
|
|
197
|
+
}
|
|
198
|
+
if (start === position) {
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
// Check index range before checking for [] (array type)
|
|
202
|
+
// But don't include [] if it looks like array access rather than type declaration
|
|
203
|
+
while (position + 1 < input.length &&
|
|
204
|
+
input[position] === '[' &&
|
|
205
|
+
input[position + 1] === ']') {
|
|
206
|
+
// Check if this looks like array access context by looking at what comes before
|
|
207
|
+
// Array access context: after an expression/identifier that could be an array
|
|
208
|
+
// Type context: in type declarations, parameter lists, etc.
|
|
209
|
+
// Simple heuristic: if we're at the end of what looks like a variable/column name
|
|
210
|
+
// and not in a clear type context, treat [] as array access, not type suffix
|
|
211
|
+
const beforeIdentifier = input.slice(0, start).trim();
|
|
212
|
+
// Don't treat as type suffix if:
|
|
213
|
+
// 1. We're at the start of input (standalone identifier)
|
|
214
|
+
// 2. Previous context suggests this is a variable/column reference
|
|
215
|
+
if (beforeIdentifier === '' ||
|
|
216
|
+
/[)]$/.test(beforeIdentifier) || // After closing paren
|
|
217
|
+
/\b(select|from|where|and|or|set|values|insert|update|delete)\s*$/i.test(beforeIdentifier)) {
|
|
218
|
+
// This looks like array access context, don't include []
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
position += 2; // Skip the [] (keep existing behavior for type contexts)
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
identifier: input.slice(start, position),
|
|
225
|
+
newPosition: position
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
exports.StringUtils = StringUtils;
|
|
230
|
+
//# sourceMappingURL=stringUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringUtils.js","sourceRoot":"","sources":["../../src/utils/stringUtils.ts"],"names":[],"mappings":"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"}
|