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,486 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CTERenamer = void 0;
|
|
4
|
+
const SimpleSelectQuery_1 = require("../models/SimpleSelectQuery");
|
|
5
|
+
const BinarySelectQuery_1 = require("../models/BinarySelectQuery");
|
|
6
|
+
const CTEDependencyAnalyzer_1 = require("./CTEDependencyAnalyzer");
|
|
7
|
+
const TableSourceCollector_1 = require("./TableSourceCollector");
|
|
8
|
+
const ColumnReferenceCollector_1 = require("./ColumnReferenceCollector");
|
|
9
|
+
const ValueComponent_1 = require("../models/ValueComponent");
|
|
10
|
+
const LexemeCursor_1 = require("../utils/LexemeCursor");
|
|
11
|
+
const SelectQueryParser_1 = require("../parsers/SelectQueryParser");
|
|
12
|
+
const Lexeme_1 = require("../models/Lexeme");
|
|
13
|
+
const SqlFormatter_1 = require("./SqlFormatter");
|
|
14
|
+
const KeywordParser_1 = require("../parsers/KeywordParser");
|
|
15
|
+
const CommandTokenReader_1 = require("../tokenReaders/CommandTokenReader");
|
|
16
|
+
/**
|
|
17
|
+
* Error messages for CTE renaming operations.
|
|
18
|
+
*/
|
|
19
|
+
const ERROR_MESSAGES = {
|
|
20
|
+
nullQuery: 'Query cannot be null or undefined',
|
|
21
|
+
invalidOldName: 'Old CTE name must be a non-empty string',
|
|
22
|
+
invalidNewName: 'New CTE name must be a non-empty string',
|
|
23
|
+
sameNames: 'Old and new CTE names cannot be the same',
|
|
24
|
+
unsupportedQuery: 'Unsupported query type for CTE renaming',
|
|
25
|
+
cteNotExists: (name) => `CTE '${name}' does not exist`,
|
|
26
|
+
cteAlreadyExists: (name) => `CTE '${name}' already exists`,
|
|
27
|
+
cteNotFound: (name) => `CTE '${name}' not found`,
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* A utility class for renaming Common Table Expressions (CTEs) in SQL queries.
|
|
31
|
+
*
|
|
32
|
+
* This class provides functionality to safely rename CTEs while automatically updating
|
|
33
|
+
* all column references and table references throughout the query, including within
|
|
34
|
+
* nested CTE definitions and subqueries.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* import { CTERenamer, SelectQueryParser } from 'rawsql-ts';
|
|
39
|
+
*
|
|
40
|
+
* const sql = `
|
|
41
|
+
* WITH user_data AS (
|
|
42
|
+
* SELECT id, name FROM users
|
|
43
|
+
* ),
|
|
44
|
+
* order_summary AS (
|
|
45
|
+
* SELECT user_data.id, COUNT(*) as order_count
|
|
46
|
+
* FROM user_data
|
|
47
|
+
* JOIN orders ON user_data.id = orders.user_id
|
|
48
|
+
* GROUP BY user_data.id
|
|
49
|
+
* )
|
|
50
|
+
* SELECT * FROM order_summary
|
|
51
|
+
* `;
|
|
52
|
+
*
|
|
53
|
+
* const query = SelectQueryParser.parse(sql);
|
|
54
|
+
* const renamer = new CTERenamer();
|
|
55
|
+
*
|
|
56
|
+
* // Rename 'user_data' to 'customer_data'
|
|
57
|
+
* renamer.renameCTE(query, 'user_data', 'customer_data');
|
|
58
|
+
*
|
|
59
|
+
* // All references are automatically updated:
|
|
60
|
+
* // - CTE definition: WITH customer_data AS (...)
|
|
61
|
+
* // - Column references: customer_data.id
|
|
62
|
+
* // - Table references: FROM customer_data
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* // Error handling
|
|
68
|
+
* try {
|
|
69
|
+
* renamer.renameCTE(query, 'nonexistent_cte', 'new_name');
|
|
70
|
+
* } catch (error) {
|
|
71
|
+
* console.error(error.message); // "CTE 'nonexistent_cte' does not exist"
|
|
72
|
+
* }
|
|
73
|
+
*
|
|
74
|
+
* try {
|
|
75
|
+
* renamer.renameCTE(query, 'existing_cte', 'already_exists');
|
|
76
|
+
* } catch (error) {
|
|
77
|
+
* console.error(error.message); // "CTE 'already_exists' already exists"
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* Related tests: packages/core/tests/transformers/CTERenamer.test.ts
|
|
82
|
+
* @since 0.11.16
|
|
83
|
+
*/
|
|
84
|
+
class CTERenamer {
|
|
85
|
+
/**
|
|
86
|
+
* Creates a new instance of CTERenamer.
|
|
87
|
+
*
|
|
88
|
+
* The constructor initializes internal collectors and analyzers needed for
|
|
89
|
+
* comprehensive CTE renaming operations.
|
|
90
|
+
*/
|
|
91
|
+
constructor() {
|
|
92
|
+
this.dependencyAnalyzer = new CTEDependencyAnalyzer_1.CTEDependencyAnalyzer();
|
|
93
|
+
this.columnReferenceCollector = new ColumnReferenceCollector_1.ColumnReferenceCollector();
|
|
94
|
+
this.tableSourceCollector = new TableSourceCollector_1.TableSourceCollector(); // Use default selectableOnly=true to avoid infinite recursion
|
|
95
|
+
this.keywordParser = new KeywordParser_1.KeywordParser(CommandTokenReader_1.commandKeywordTrie);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Renames a Common Table Expression (CTE) and updates all references to it.
|
|
99
|
+
*
|
|
100
|
+
* This method performs a comprehensive rename operation that includes:
|
|
101
|
+
* - Updating the CTE definition name in the WITH clause
|
|
102
|
+
* - Updating all column references (e.g., `old_name.column` -> `new_name.column`)
|
|
103
|
+
* - Updating all table references in FROM and JOIN clauses
|
|
104
|
+
* - Processing references within nested CTEs and subqueries
|
|
105
|
+
*
|
|
106
|
+
* @param query - The SQL query containing the CTE to rename. Can be either SimpleSelectQuery or BinarySelectQuery (UNION/INTERSECT/EXCEPT).
|
|
107
|
+
* @param oldName - The current name of the CTE to rename.
|
|
108
|
+
* @param newName - The new name for the CTE.
|
|
109
|
+
*
|
|
110
|
+
* @throws {Error} When the specified CTE does not exist in the query.
|
|
111
|
+
* @throws {Error} When a CTE with the new name already exists.
|
|
112
|
+
* @throws {Error} When the query type is not supported (not a SelectQuery).
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* const renamer = new CTERenamer();
|
|
117
|
+
*
|
|
118
|
+
* // Basic usage
|
|
119
|
+
* renamer.renameCTE(query, 'old_cte_name', 'new_cte_name');
|
|
120
|
+
*
|
|
121
|
+
* // With error handling
|
|
122
|
+
* try {
|
|
123
|
+
* renamer.renameCTE(query, 'user_data', 'customer_data');
|
|
124
|
+
* } catch (error) {
|
|
125
|
+
* if (error.message.includes('does not exist')) {
|
|
126
|
+
* console.log('CTE not found');
|
|
127
|
+
* } else if (error.message.includes('already exists')) {
|
|
128
|
+
* console.log('Name conflict');
|
|
129
|
+
* }
|
|
130
|
+
* }
|
|
131
|
+
* ```
|
|
132
|
+
*
|
|
133
|
+
* Related tests: packages/core/tests/transformers/CTERenamer.test.ts
|
|
134
|
+
* @since 0.11.16
|
|
135
|
+
*/
|
|
136
|
+
renameCTE(query, oldName, newName) {
|
|
137
|
+
// Input validation
|
|
138
|
+
this.validateInputs(query, oldName, newName);
|
|
139
|
+
// Sanitize input names
|
|
140
|
+
const sanitizedOldName = oldName.trim();
|
|
141
|
+
const sanitizedNewName = newName.trim();
|
|
142
|
+
if (query instanceof SimpleSelectQuery_1.SimpleSelectQuery) {
|
|
143
|
+
this.renameInSimpleQuery(query, sanitizedOldName, sanitizedNewName);
|
|
144
|
+
}
|
|
145
|
+
else if (query instanceof BinarySelectQuery_1.BinarySelectQuery) {
|
|
146
|
+
this.renameInBinaryQuery(query, sanitizedOldName, sanitizedNewName);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
throw new Error(ERROR_MESSAGES.unsupportedQuery);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Validates input parameters for CTE renaming.
|
|
154
|
+
*/
|
|
155
|
+
validateInputs(query, oldName, newName) {
|
|
156
|
+
if (!query) {
|
|
157
|
+
throw new Error(ERROR_MESSAGES.nullQuery);
|
|
158
|
+
}
|
|
159
|
+
if (!oldName || typeof oldName !== 'string' || oldName.trim() === '') {
|
|
160
|
+
throw new Error(ERROR_MESSAGES.invalidOldName);
|
|
161
|
+
}
|
|
162
|
+
if (!newName || typeof newName !== 'string' || newName.trim() === '') {
|
|
163
|
+
throw new Error(ERROR_MESSAGES.invalidNewName);
|
|
164
|
+
}
|
|
165
|
+
if (oldName.trim() === newName.trim()) {
|
|
166
|
+
throw new Error(ERROR_MESSAGES.sameNames);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Handles CTE renaming for SimpleSelectQuery.
|
|
171
|
+
*/
|
|
172
|
+
renameInSimpleQuery(query, oldName, newName) {
|
|
173
|
+
// Get available CTE names
|
|
174
|
+
const availableCTEs = query.getCTENames();
|
|
175
|
+
// Check if CTE exists
|
|
176
|
+
if (!availableCTEs.includes(oldName)) {
|
|
177
|
+
throw new Error(ERROR_MESSAGES.cteNotExists(oldName));
|
|
178
|
+
}
|
|
179
|
+
// Check for name conflicts
|
|
180
|
+
if (availableCTEs.includes(newName)) {
|
|
181
|
+
throw new Error(ERROR_MESSAGES.cteAlreadyExists(newName));
|
|
182
|
+
}
|
|
183
|
+
// Rename CTE definition
|
|
184
|
+
this.renameCTEDefinition(query, oldName, newName);
|
|
185
|
+
// Update all references
|
|
186
|
+
this.updateAllReferences(query, oldName, newName);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Handles CTE renaming for BinarySelectQuery.
|
|
190
|
+
*/
|
|
191
|
+
renameInBinaryQuery(query, oldName, newName) {
|
|
192
|
+
// Use toSimpleQuery() only for WITH clause inspection (not for writing back)
|
|
193
|
+
const withClauseQuery = query.toSimpleQuery();
|
|
194
|
+
// Get available CTE names from the converted query
|
|
195
|
+
let availableCTEs = [];
|
|
196
|
+
if (withClauseQuery.withClause && withClauseQuery.withClause.tables) {
|
|
197
|
+
availableCTEs = withClauseQuery.withClause.tables.map(cte => cte.aliasExpression.table.name);
|
|
198
|
+
}
|
|
199
|
+
// Check if CTE exists
|
|
200
|
+
if (!availableCTEs.includes(oldName)) {
|
|
201
|
+
throw new Error(ERROR_MESSAGES.cteNotExists(oldName));
|
|
202
|
+
}
|
|
203
|
+
// Check for name conflicts
|
|
204
|
+
if (availableCTEs.includes(newName)) {
|
|
205
|
+
throw new Error(ERROR_MESSAGES.cteAlreadyExists(newName));
|
|
206
|
+
}
|
|
207
|
+
// Rename CTE definition in the converted query (this affects the original BinarySelectQuery)
|
|
208
|
+
this.renameCTEDefinition(withClauseQuery, oldName, newName);
|
|
209
|
+
// Add withClause to original BinarySelectQuery and left query for proper formatting
|
|
210
|
+
if (withClauseQuery.withClause) {
|
|
211
|
+
query.withClause = withClauseQuery.withClause;
|
|
212
|
+
// Also add to left query so formatter can display it
|
|
213
|
+
if (query.left instanceof SimpleSelectQuery_1.SimpleSelectQuery) {
|
|
214
|
+
query.left.withClause = withClauseQuery.withClause;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// Recursively update references in left and right branches
|
|
218
|
+
this.renameInSelectQuery(query.left, oldName, newName);
|
|
219
|
+
this.renameInSelectQuery(query.right, oldName, newName);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Recursively handles CTE renaming for any SelectQuery type.
|
|
223
|
+
*/
|
|
224
|
+
renameInSelectQuery(query, oldName, newName) {
|
|
225
|
+
if (query instanceof SimpleSelectQuery_1.SimpleSelectQuery) {
|
|
226
|
+
// For SimpleSelectQuery, only update references (not CTE definitions)
|
|
227
|
+
this.updateAllReferences(query, oldName, newName);
|
|
228
|
+
}
|
|
229
|
+
else if (query instanceof BinarySelectQuery_1.BinarySelectQuery) {
|
|
230
|
+
// Recursively process left and right branches
|
|
231
|
+
this.renameInSelectQuery(query.left, oldName, newName);
|
|
232
|
+
this.renameInSelectQuery(query.right, oldName, newName);
|
|
233
|
+
}
|
|
234
|
+
// ValuesQuery: do nothing
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Renames the CTE definition in the WITH clause.
|
|
238
|
+
*/
|
|
239
|
+
renameCTEDefinition(query, oldName, newName) {
|
|
240
|
+
if (!query.withClause || !query.withClause.tables) {
|
|
241
|
+
throw new Error(ERROR_MESSAGES.cteNotFound(oldName));
|
|
242
|
+
}
|
|
243
|
+
const cteToRename = query.withClause.tables.find(cte => cte.aliasExpression.table.name === oldName);
|
|
244
|
+
if (!cteToRename) {
|
|
245
|
+
throw new Error(ERROR_MESSAGES.cteNotFound(oldName));
|
|
246
|
+
}
|
|
247
|
+
cteToRename.aliasExpression.table.name = newName;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Updates all references to the old CTE name (column references and table sources).
|
|
251
|
+
*/
|
|
252
|
+
updateAllReferences(query, oldName, newName) {
|
|
253
|
+
// Collect all column references from the query (including CTE internals)
|
|
254
|
+
const columnReferences = this.columnReferenceCollector.collect(query);
|
|
255
|
+
// Update all column references that reference the old CTE name
|
|
256
|
+
for (const columnRef of columnReferences) {
|
|
257
|
+
// Check namespaces for the old CTE name
|
|
258
|
+
if (columnRef.namespaces && columnRef.namespaces.length > 0) {
|
|
259
|
+
// Check if any namespace matches the old CTE name
|
|
260
|
+
for (const namespace of columnRef.namespaces) {
|
|
261
|
+
if (namespace.name === oldName) {
|
|
262
|
+
namespace.name = newName;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// Update table sources in the main query
|
|
269
|
+
const tableSources = this.tableSourceCollector.collect(query);
|
|
270
|
+
for (const tableSource of tableSources) {
|
|
271
|
+
if (tableSource.getSourceName() === oldName) {
|
|
272
|
+
if (tableSource.qualifiedName.name instanceof ValueComponent_1.ColumnReference) {
|
|
273
|
+
// Handle ColumnReference case if needed
|
|
274
|
+
}
|
|
275
|
+
else if ('name' in tableSource.qualifiedName.name) {
|
|
276
|
+
// Handle IdentifierString
|
|
277
|
+
tableSource.qualifiedName.name.name = newName;
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
// Handle RawString
|
|
281
|
+
tableSource.qualifiedName.name.value = newName;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
// Update table sources that reference the old CTE name within CTEs
|
|
286
|
+
this.updateTableSourcesInCTEs(query, oldName, newName);
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Updates table sources within CTE definitions that reference the old CTE name.
|
|
290
|
+
* This method manually traverses CTE internals to avoid infinite recursion
|
|
291
|
+
* that occurs when using TableSourceCollector with selectableOnly=false.
|
|
292
|
+
*/
|
|
293
|
+
updateTableSourcesInCTEs(query, oldName, newName) {
|
|
294
|
+
if (!query.withClause || !query.withClause.tables) {
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
// Traverse each CTE and update table sources in their FROM clauses
|
|
298
|
+
for (const cte of query.withClause.tables) {
|
|
299
|
+
this.updateTableSourcesInQuery(cte.query, oldName, newName);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Updates table sources in a specific query (used for CTE internals).
|
|
304
|
+
*/
|
|
305
|
+
updateTableSourcesInQuery(query, oldName, newName) {
|
|
306
|
+
// Update FROM clause
|
|
307
|
+
if (query.fromClause && query.fromClause.source.datasource) {
|
|
308
|
+
this.updateTableSource(query.fromClause.source.datasource, oldName, newName);
|
|
309
|
+
}
|
|
310
|
+
// Update JOIN clauses
|
|
311
|
+
if (query.fromClause && query.fromClause.joins) {
|
|
312
|
+
for (const join of query.fromClause.joins) {
|
|
313
|
+
if (join.source.datasource) {
|
|
314
|
+
this.updateTableSource(join.source.datasource, oldName, newName);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Updates a specific table source if it matches the old CTE name.
|
|
321
|
+
*/
|
|
322
|
+
updateTableSource(datasource, oldName, newName) {
|
|
323
|
+
// Type guard and null checks for security
|
|
324
|
+
if (!datasource || typeof datasource !== 'object') {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
const source = datasource;
|
|
328
|
+
// Safely check if this is a TableSource
|
|
329
|
+
if (typeof source.getSourceName === 'function') {
|
|
330
|
+
try {
|
|
331
|
+
const sourceName = source.getSourceName();
|
|
332
|
+
if (sourceName === oldName && source.qualifiedName && typeof source.qualifiedName === 'object') {
|
|
333
|
+
const qualifiedName = source.qualifiedName;
|
|
334
|
+
if (qualifiedName.name && typeof qualifiedName.name === 'object') {
|
|
335
|
+
const nameObj = qualifiedName.name;
|
|
336
|
+
if ('name' in nameObj && typeof nameObj.name === 'string') {
|
|
337
|
+
// Handle IdentifierString
|
|
338
|
+
nameObj.name = newName;
|
|
339
|
+
}
|
|
340
|
+
else if ('value' in nameObj && typeof nameObj.value === 'string') {
|
|
341
|
+
// Handle RawString
|
|
342
|
+
nameObj.value = newName;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
catch (error) {
|
|
348
|
+
// Safely handle any unexpected errors during table source update
|
|
349
|
+
console.warn('Warning: Failed to update table source:', error);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* GUI-integrated CTE renaming with line/column position support.
|
|
355
|
+
*
|
|
356
|
+
* Designed for editor integration where users can right-click on CTE names
|
|
357
|
+
* and rename them. Automatically detects the CTE name at the cursor position
|
|
358
|
+
* and performs the rename operation.
|
|
359
|
+
*
|
|
360
|
+
* @param sql - The complete SQL string containing CTE definitions
|
|
361
|
+
* @param position - Line and column position where the user clicked (1-based)
|
|
362
|
+
* @param newName - The new name for the CTE
|
|
363
|
+
* @returns The updated SQL string with the CTE renamed
|
|
364
|
+
*
|
|
365
|
+
* @throws {Error} When no CTE name is found at the specified position
|
|
366
|
+
* @throws {Error} When the new name conflicts with existing CTE names
|
|
367
|
+
*
|
|
368
|
+
* @example
|
|
369
|
+
* ```typescript
|
|
370
|
+
* const sql = `
|
|
371
|
+
* WITH user_data AS (SELECT * FROM users),
|
|
372
|
+
* order_data AS (SELECT * FROM orders)
|
|
373
|
+
* SELECT * FROM user_data JOIN order_data ON ...
|
|
374
|
+
* `;
|
|
375
|
+
*
|
|
376
|
+
* const renamer = new CTERenamer();
|
|
377
|
+
* // User right-clicks on 'user_data' at line 2, column 8
|
|
378
|
+
* const result = renamer.renameCTEAtPosition(sql, { line: 2, column: 8 }, 'customer_data');
|
|
379
|
+
* console.log(result);
|
|
380
|
+
* // Returns SQL with 'user_data' renamed to 'customer_data' everywhere
|
|
381
|
+
* ```
|
|
382
|
+
*/
|
|
383
|
+
renameCTEAtPosition(sql, position, newName) {
|
|
384
|
+
// Input validation
|
|
385
|
+
if (!(sql === null || sql === void 0 ? void 0 : sql.trim())) {
|
|
386
|
+
throw new Error('SQL cannot be empty');
|
|
387
|
+
}
|
|
388
|
+
if (!position || position.line < 1 || position.column < 1) {
|
|
389
|
+
throw new Error('Position must be a valid line/column (1-based)');
|
|
390
|
+
}
|
|
391
|
+
if (!(newName === null || newName === void 0 ? void 0 : newName.trim())) {
|
|
392
|
+
throw new Error('New CTE name cannot be empty');
|
|
393
|
+
}
|
|
394
|
+
// Find the lexeme at the specified position
|
|
395
|
+
const lexeme = LexemeCursor_1.LexemeCursor.findLexemeAtLineColumn(sql, position);
|
|
396
|
+
if (!lexeme) {
|
|
397
|
+
throw new Error(`No CTE name found at line ${position.line}, column ${position.column}`);
|
|
398
|
+
}
|
|
399
|
+
const cteName = lexeme.value;
|
|
400
|
+
// Parse the SQL to get the query structure
|
|
401
|
+
const query = SelectQueryParser_1.SelectQueryParser.parse(sql);
|
|
402
|
+
// First check if this is actually a CTE name in the query
|
|
403
|
+
if (!this.isCTENameInQuery(query, cteName)) {
|
|
404
|
+
throw new Error(`'${cteName}' is not a CTE name in this query`);
|
|
405
|
+
}
|
|
406
|
+
// Validate that the lexeme is a valid identifier or function (not a command/keyword)
|
|
407
|
+
if (!(lexeme.type & (Lexeme_1.TokenType.Identifier | Lexeme_1.TokenType.Function))) {
|
|
408
|
+
throw new Error(`Token at position is not a CTE name: '${lexeme.value}'`);
|
|
409
|
+
}
|
|
410
|
+
// Check for naming conflicts
|
|
411
|
+
const conflicts = this.checkNameConflicts(query, newName, cteName);
|
|
412
|
+
if (conflicts.length > 0) {
|
|
413
|
+
throw new Error(conflicts.join(', '));
|
|
414
|
+
}
|
|
415
|
+
// Perform the CTE rename operation
|
|
416
|
+
this.renameCTE(query, cteName, newName);
|
|
417
|
+
// Return the formatted SQL using SqlFormatter
|
|
418
|
+
const formatter = new SqlFormatter_1.SqlFormatter();
|
|
419
|
+
const result = formatter.format(query);
|
|
420
|
+
return result.formattedSql;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Check for naming conflicts with existing CTEs and reserved keywords.
|
|
424
|
+
* @private
|
|
425
|
+
*/
|
|
426
|
+
checkNameConflicts(query, newName, currentName) {
|
|
427
|
+
const conflicts = [];
|
|
428
|
+
// Skip checks if the name isn't actually changing
|
|
429
|
+
if (currentName === newName) {
|
|
430
|
+
return conflicts;
|
|
431
|
+
}
|
|
432
|
+
// Check for reserved keyword conflicts
|
|
433
|
+
conflicts.push(...this.checkKeywordConflicts(newName));
|
|
434
|
+
// Check for existing CTE name conflicts
|
|
435
|
+
if (this.isCTENameInQuery(query, newName)) {
|
|
436
|
+
conflicts.push(`CTE name '${newName}' already exists`);
|
|
437
|
+
}
|
|
438
|
+
return conflicts;
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Checks if the new name conflicts with SQL keywords using the existing KeywordTrie.
|
|
442
|
+
* @private
|
|
443
|
+
*/
|
|
444
|
+
checkKeywordConflicts(newName) {
|
|
445
|
+
const conflicts = [];
|
|
446
|
+
try {
|
|
447
|
+
// Use the KeywordParser to check if the new name is a reserved keyword
|
|
448
|
+
const keywordResult = this.keywordParser.parse(newName, 0);
|
|
449
|
+
if (keywordResult !== null && keywordResult.keyword.toLowerCase() === newName.toLowerCase()) {
|
|
450
|
+
conflicts.push(`'${newName}' is a reserved SQL keyword and should not be used as a CTE name`);
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
catch (error) {
|
|
454
|
+
console.warn(`Failed to check keyword conflicts for '${newName}':`, error);
|
|
455
|
+
// Fallback to basic check if KeywordParser fails
|
|
456
|
+
if (this.isBasicReservedKeyword(newName)) {
|
|
457
|
+
conflicts.push(`'${newName}' is a reserved SQL keyword and should not be used as a CTE name`);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
return conflicts;
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Fallback method for basic reserved keyword checking.
|
|
464
|
+
* @private
|
|
465
|
+
*/
|
|
466
|
+
isBasicReservedKeyword(name) {
|
|
467
|
+
const basicKeywords = ['select', 'from', 'where', 'with', 'as', 'union', 'join', 'table', 'null'];
|
|
468
|
+
return basicKeywords.includes(name.toLowerCase());
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Check if a CTE name exists in the query.
|
|
472
|
+
* @private
|
|
473
|
+
*/
|
|
474
|
+
isCTENameInQuery(query, cteName) {
|
|
475
|
+
if (query instanceof SimpleSelectQuery_1.SimpleSelectQuery && query.withClause) {
|
|
476
|
+
return query.withClause.tables.some(cte => cte.aliasExpression && cte.aliasExpression.table && cte.aliasExpression.table.name === cteName);
|
|
477
|
+
}
|
|
478
|
+
if (query instanceof BinarySelectQuery_1.BinarySelectQuery) {
|
|
479
|
+
return this.isCTENameInQuery(query.left, cteName) ||
|
|
480
|
+
this.isCTENameInQuery(query.right, cteName);
|
|
481
|
+
}
|
|
482
|
+
return false;
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
exports.CTERenamer = CTERenamer;
|
|
486
|
+
//# sourceMappingURL=CTERenamer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CTERenamer.js","sourceRoot":"","sources":["../../src/transformers/CTERenamer.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAChE,mEAAgE;AAEhE,mEAAgE;AAChE,iEAA8D;AAC9D,yEAAsE;AACtE,6DAA2D;AAC3D,wDAAiE;AACjE,oEAAiE;AACjE,6CAA6C;AAC7C,iDAA8C;AAC9C,4DAAyD;AACzD,2EAAwE;AAExE;;GAEG;AACH,MAAM,cAAc,GAAG;IACnB,SAAS,EAAE,mCAAmC;IAC9C,cAAc,EAAE,yCAAyC;IACzD,cAAc,EAAE,yCAAyC;IACzD,SAAS,EAAE,0CAA0C;IACrD,gBAAgB,EAAE,yCAAyC;IAC3D,YAAY,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,IAAI,kBAAkB;IAC9D,gBAAgB,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,IAAI,kBAAkB;IAClE,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,IAAI,aAAa;CAClD,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,MAAa,UAAU;IAQnB;;;;;OAKG;IACH;QACI,IAAI,CAAC,kBAAkB,GAAG,IAAI,6CAAqB,EAAE,CAAC;QACtD,IAAI,CAAC,wBAAwB,GAAG,IAAI,mDAAwB,EAAE,CAAC;QAC/D,IAAI,CAAC,oBAAoB,GAAG,IAAI,2CAAoB,EAAE,CAAC,CAAC,8DAA8D;QACtH,IAAI,CAAC,aAAa,GAAG,IAAI,6BAAa,CAAC,uCAAkB,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACI,SAAS,CAAC,KAAkB,EAAE,OAAe,EAAE,OAAe;QACjE,mBAAmB;QACnB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAE7C,uBAAuB;QACvB,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAExC,IAAI,KAAK,YAAY,qCAAiB,EAAE,CAAC;YACrC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,KAAK,YAAY,qCAAiB,EAAE,CAAC;YAC5C,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,KAAkB,EAAE,OAAe,EAAE,OAAe;QACvE,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,KAAwB,EAAE,OAAe,EAAE,OAAe;QAClF,0BAA0B;QAC1B,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAE1C,sBAAsB;QACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,2BAA2B;QAC3B,IAAI,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAElD,wBAAwB;QACxB,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,KAAwB,EAAE,OAAe,EAAE,OAAe;QAClF,6EAA6E;QAC7E,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QAE9C,mDAAmD;QACnD,IAAI,aAAa,GAAa,EAAE,CAAC;QACjC,IAAI,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAClE,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjG,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,2BAA2B;QAC3B,IAAI,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,6FAA6F;QAC7F,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAE5D,oFAAoF;QACpF,IAAI,eAAe,CAAC,UAAU,EAAE,CAAC;YAC5B,KAAa,CAAC,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;YAEvD,qDAAqD;YACrD,IAAI,KAAK,CAAC,IAAI,YAAY,qCAAiB,EAAE,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;YACvD,CAAC;QACL,CAAC;QAED,2DAA2D;QAC3D,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,KAAkB,EAAE,OAAe,EAAE,OAAe;QAC5E,IAAI,KAAK,YAAY,qCAAiB,EAAE,CAAC;YACrC,sEAAsE;YACtE,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,KAAK,YAAY,qCAAiB,EAAE,CAAC;YAC5C,8CAA8C;YAC9C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACvD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC;QACD,0BAA0B;IAC9B,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,KAAwB,EAAE,OAAe,EAAE,OAAe;QAClF,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QACpG,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;IACrD,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,KAAwB,EAAE,OAAe,EAAE,OAAe;QAClF,yEAAyE;QACzE,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtE,+DAA+D;QAC/D,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;YACvC,wCAAwC;YACxC,IAAI,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,kDAAkD;gBAClD,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;oBAC3C,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC7B,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC;wBACzB,MAAM;oBACV,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,yCAAyC;QACzC,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9D,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACrC,IAAI,WAAW,CAAC,aAAa,EAAE,KAAK,OAAO,EAAE,CAAC;gBAC1C,IAAI,WAAW,CAAC,aAAa,CAAC,IAAI,YAAY,gCAAe,EAAE,CAAC;oBAC5D,wCAAwC;gBAC5C,CAAC;qBAAM,IAAI,MAAM,IAAI,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;oBAClD,0BAA0B;oBACzB,WAAW,CAAC,aAAa,CAAC,IAAY,CAAC,IAAI,GAAG,OAAO,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACJ,mBAAmB;oBAClB,WAAW,CAAC,aAAa,CAAC,IAAY,CAAC,KAAK,GAAG,OAAO,CAAC;gBAC5D,CAAC;YACL,CAAC;QACL,CAAC;QAED,mEAAmE;QACnE,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACK,wBAAwB,CAAC,KAAwB,EAAE,OAAe,EAAE,OAAe;QACvF,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAChD,OAAO;QACX,CAAC;QAED,mEAAmE;QACnE,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,KAA0B,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACrF,CAAC;IACL,CAAC;IAED;;OAEG;IACK,yBAAyB,CAAC,KAAwB,EAAE,OAAe,EAAE,OAAe;QACxF,qBAAqB;QACrB,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACjF,CAAC;QAED,sBAAsB;QACtB,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACxC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;oBACzB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBACrE,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,UAAmB,EAAE,OAAe,EAAE,OAAe;QAC3E,0CAA0C;QAC1C,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YAChD,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,UAAqC,CAAC;QAErD,wCAAwC;QACxC,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACD,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;gBAC1C,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,CAAC,aAAa,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;oBAC7F,MAAM,aAAa,GAAG,MAAM,CAAC,aAAwC,CAAC;oBAEtE,IAAI,aAAa,CAAC,IAAI,IAAI,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC/D,MAAM,OAAO,GAAG,aAAa,CAAC,IAA+B,CAAC;wBAE9D,IAAI,MAAM,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;4BACxD,0BAA0B;4BAC1B,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;wBAC3B,CAAC;6BAAM,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;4BACjE,mBAAmB;4BACnB,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;wBAC5B,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,iEAAiE;gBACjE,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;YACnE,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACI,mBAAmB,CAAC,GAAW,EAAE,QAAoB,EAAE,OAAe;QACzE,mBAAmB;QACnB,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,EAAE,CAAA,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAA,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACpD,CAAC;QAED,4CAA4C;QAC5C,MAAM,MAAM,GAAG,2BAAY,CAAC,sBAAsB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,IAAI,YAAY,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;QAE7B,2CAA2C;QAC3C,MAAM,KAAK,GAAG,qCAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE3C,0DAA0D;QAC1D,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,mCAAmC,CAAC,CAAC;QACpE,CAAC;QAED,qFAAqF;QACrF,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,kBAAS,CAAC,UAAU,GAAG,kBAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,yCAAyC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAC9E,CAAC;QAED,6BAA6B;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACnE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAExC,8CAA8C;QAC9C,MAAM,SAAS,GAAG,IAAI,2BAAY,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,MAAM,CAAC,YAAY,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,KAAkB,EAAE,OAAe,EAAE,WAAmB;QAC/E,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,kDAAkD;QAClD,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,uCAAuC;QACvC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;QAEvD,wCAAwC;QACxC,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YACxC,SAAS,CAAC,IAAI,CAAC,aAAa,OAAO,kBAAkB,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,OAAe;QACzC,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,IAAI,CAAC;YACD,uEAAuE;YACvE,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAE3D,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC1F,SAAS,CAAC,IAAI,CAAC,IAAI,OAAO,kEAAkE,CAAC,CAAC;YAClG,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,0CAA0C,OAAO,IAAI,EAAE,KAAK,CAAC,CAAC;YAC3E,iDAAiD;YACjD,IAAI,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,SAAS,CAAC,IAAI,CAAC,IAAI,OAAO,kEAAkE,CAAC,CAAC;YAClG,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;OAGG;IACK,sBAAsB,CAAC,IAAY;QACvC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAClG,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACK,gBAAgB,CAAC,KAAkB,EAAE,OAAe;QACxD,IAAI,KAAK,YAAY,qCAAiB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACzD,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACtC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,IAAI,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CACjG,CAAC;QACN,CAAC;QACD,IAAI,KAAK,YAAY,qCAAiB,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;gBAC1C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AAvcD,gCAucC"}
|