rawsql-ts 0.16.0 → 0.18.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 -21
- package/README.md +161 -875
- package/dist/esm/index.d.ts +11 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +23 -21
- package/dist/esm/index.min.js.map +4 -4
- package/dist/esm/models/Clause.d.ts +15 -3
- package/dist/esm/models/Clause.js +2 -1
- package/dist/esm/models/Clause.js.map +1 -1
- package/dist/esm/models/CreateTableQuery.d.ts +3 -0
- package/dist/esm/models/CreateTableQuery.js +5 -4
- package/dist/esm/models/CreateTableQuery.js.map +1 -1
- package/dist/esm/models/DDLStatements.d.ts +71 -0
- package/dist/esm/models/DDLStatements.js +63 -0
- package/dist/esm/models/DDLStatements.js.map +1 -1
- package/dist/esm/models/KeywordTrie.d.ts +2 -3
- package/dist/esm/models/KeywordTrie.js +26 -27
- package/dist/esm/models/KeywordTrie.js.map +1 -1
- package/dist/esm/models/SqlPrintToken.d.ts +1 -0
- package/dist/esm/models/SqlPrintToken.js +1 -0
- package/dist/esm/models/SqlPrintToken.js.map +1 -1
- package/dist/esm/parsers/CheckpointStatementParser.d.ts +8 -0
- package/dist/esm/parsers/CheckpointStatementParser.js +14 -0
- package/dist/esm/parsers/CheckpointStatementParser.js.map +1 -0
- package/dist/esm/parsers/ClusterStatementParser.d.ts +8 -0
- package/dist/esm/parsers/ClusterStatementParser.js +14 -0
- package/dist/esm/parsers/ClusterStatementParser.js.map +1 -0
- package/dist/esm/parsers/CommandExpressionParser.js.map +1 -1
- package/dist/esm/parsers/CommentOnParser.d.ts +23 -0
- package/dist/esm/parsers/CommentOnParser.js +61 -0
- package/dist/esm/parsers/CommentOnParser.js.map +1 -0
- package/dist/esm/parsers/CommonTableParser.d.ts +5 -1
- package/dist/esm/parsers/CommonTableParser.js +94 -16
- package/dist/esm/parsers/CommonTableParser.js.map +1 -1
- package/dist/esm/parsers/CreateIndexParser.js +12 -6
- package/dist/esm/parsers/CreateIndexParser.js.map +1 -1
- package/dist/esm/parsers/CreateTableParser.d.ts +2 -0
- package/dist/esm/parsers/CreateTableParser.js +11 -2
- package/dist/esm/parsers/CreateTableParser.js.map +1 -1
- package/dist/esm/parsers/ExplainStatementParser.js.map +1 -1
- package/dist/esm/parsers/FullNameParser.js +35 -3
- package/dist/esm/parsers/FullNameParser.js.map +1 -1
- package/dist/esm/parsers/OrderByClauseParser.js.map +1 -1
- package/dist/esm/parsers/ReindexStatementParser.d.ts +8 -0
- package/dist/esm/parsers/ReindexStatementParser.js +14 -0
- package/dist/esm/parsers/ReindexStatementParser.js.map +1 -0
- package/dist/esm/parsers/SelectQueryParser.js.map +1 -1
- package/dist/esm/parsers/SourceParser.js +6 -1
- package/dist/esm/parsers/SourceParser.js.map +1 -1
- package/dist/esm/parsers/SqlParser.d.ts +12 -2
- package/dist/esm/parsers/SqlParser.js +117 -251
- package/dist/esm/parsers/SqlParser.js.map +1 -1
- package/dist/esm/parsers/SqlPrintTokenParser.d.ts +1 -0
- package/dist/esm/parsers/SqlPrintTokenParser.js +32 -4
- package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/esm/parsers/SqlTokenizer.d.ts +5 -0
- package/dist/esm/parsers/SqlTokenizer.js +181 -67
- package/dist/esm/parsers/SqlTokenizer.js.map +1 -1
- package/dist/esm/parsers/UsingClauseParser.js.map +1 -1
- package/dist/esm/parsers/VacuumStatementParser.d.ts +8 -0
- package/dist/esm/parsers/VacuumStatementParser.js +14 -0
- package/dist/esm/parsers/VacuumStatementParser.js.map +1 -0
- package/dist/esm/tokenReaders/CommandTokenReader.js +22 -4
- package/dist/esm/tokenReaders/CommandTokenReader.js.map +1 -1
- package/dist/esm/tokenReaders/StringSpecifierTokenReader.d.ts +2 -0
- package/dist/esm/tokenReaders/StringSpecifierTokenReader.js +30 -13
- package/dist/esm/tokenReaders/StringSpecifierTokenReader.js.map +1 -1
- package/dist/esm/tokenReaders/TokenReaderManager.d.ts +0 -7
- package/dist/esm/tokenReaders/TokenReaderManager.js +16 -48
- package/dist/esm/tokenReaders/TokenReaderManager.js.map +1 -1
- package/dist/esm/transformers/AliasRenamer.d.ts +1 -0
- package/dist/esm/transformers/AliasRenamer.js +7 -1
- package/dist/esm/transformers/AliasRenamer.js.map +1 -1
- package/dist/esm/transformers/CTECollector.d.ts +5 -2
- package/dist/esm/transformers/CTECollector.js +49 -0
- package/dist/esm/transformers/CTECollector.js.map +1 -1
- package/dist/esm/transformers/CTEDependencyTracer.d.ts +6 -1
- package/dist/esm/transformers/CTEDependencyTracer.js +44 -2
- package/dist/esm/transformers/CTEDependencyTracer.js.map +1 -1
- package/dist/esm/transformers/CTEDisabler.d.ts +6 -0
- package/dist/esm/transformers/CTEDisabler.js +19 -0
- package/dist/esm/transformers/CTEDisabler.js.map +1 -1
- package/dist/esm/transformers/CTERenamer.js +5 -2
- package/dist/esm/transformers/CTERenamer.js.map +1 -1
- package/dist/esm/transformers/ColumnReferenceCollector.d.ts +4 -0
- package/dist/esm/transformers/ColumnReferenceCollector.js +69 -1
- package/dist/esm/transformers/ColumnReferenceCollector.js.map +1 -1
- package/dist/esm/transformers/DeleteResultSelectConverter.js.map +1 -1
- package/dist/esm/transformers/DynamicQueryBuilder.d.ts +88 -16
- package/dist/esm/transformers/DynamicQueryBuilder.js +146 -18
- package/dist/esm/transformers/DynamicQueryBuilder.js.map +1 -1
- package/dist/esm/transformers/ExistsPredicateInjector.d.ts +33 -0
- package/dist/esm/transformers/ExistsPredicateInjector.js +294 -0
- package/dist/esm/transformers/ExistsPredicateInjector.js.map +1 -0
- package/dist/esm/transformers/FixtureCteBuilder.js +5 -2
- package/dist/esm/transformers/FixtureCteBuilder.js.map +1 -1
- package/dist/esm/transformers/InsertResultSelectConverter.d.ts +1 -0
- package/dist/esm/transformers/InsertResultSelectConverter.js +28 -7
- package/dist/esm/transformers/InsertResultSelectConverter.js.map +1 -1
- package/dist/esm/transformers/LinePrinter.d.ts +4 -2
- package/dist/esm/transformers/LinePrinter.js +93 -22
- package/dist/esm/transformers/LinePrinter.js.map +1 -1
- package/dist/esm/transformers/MergeResultSelectConverter.js.map +1 -1
- package/dist/esm/transformers/OptimizeUnusedLeftJoins.d.ts +33 -0
- package/dist/esm/transformers/OptimizeUnusedLeftJoins.js +333 -0
- package/dist/esm/transformers/OptimizeUnusedLeftJoins.js.map +1 -0
- package/dist/esm/transformers/PruneOptionalConditionBranches.d.ts +22 -0
- package/dist/esm/transformers/PruneOptionalConditionBranches.js +265 -0
- package/dist/esm/transformers/PruneOptionalConditionBranches.js.map +1 -0
- package/dist/esm/transformers/SSSQLFilterBuilder.d.ts +30 -0
- package/dist/esm/transformers/SSSQLFilterBuilder.js +253 -0
- package/dist/esm/transformers/SSSQLFilterBuilder.js.map +1 -0
- package/dist/esm/transformers/SchemaCollector.d.ts +3 -0
- package/dist/esm/transformers/SchemaCollector.js +37 -1
- package/dist/esm/transformers/SchemaCollector.js.map +1 -1
- package/dist/esm/transformers/SelectValueCollector.d.ts +5 -0
- package/dist/esm/transformers/SelectValueCollector.js +44 -2
- package/dist/esm/transformers/SelectValueCollector.js.map +1 -1
- package/dist/esm/transformers/SqlParamInjector.d.ts +5 -1
- package/dist/esm/transformers/SqlParamInjector.js +47 -11
- package/dist/esm/transformers/SqlParamInjector.js.map +1 -1
- package/dist/esm/transformers/SqlPrinter.js +8 -2
- package/dist/esm/transformers/SqlPrinter.js.map +1 -1
- package/dist/esm/transformers/TableSourceCollector.d.ts +9 -1
- package/dist/esm/transformers/TableSourceCollector.js +72 -5
- package/dist/esm/transformers/TableSourceCollector.js.map +1 -1
- package/dist/esm/transformers/UpdateResultSelectConverter.js.map +1 -1
- package/dist/esm/transformers/UpstreamSelectQueryFinder.d.ts +5 -0
- package/dist/esm/transformers/UpstreamSelectQueryFinder.js +46 -1
- package/dist/esm/transformers/UpstreamSelectQueryFinder.js.map +1 -1
- package/dist/esm/utils/CommentUtils.d.ts +1 -0
- package/dist/esm/utils/CommentUtils.js +14 -4
- package/dist/esm/utils/CommentUtils.js.map +1 -1
- package/dist/esm/utils/MultiQuerySplitter.d.ts +7 -11
- package/dist/esm/utils/MultiQuerySplitter.js +105 -66
- package/dist/esm/utils/MultiQuerySplitter.js.map +1 -1
- package/dist/esm/utils/ParameterRemover.d.ts +4 -0
- package/dist/esm/utils/ParameterRemover.js +23 -0
- package/dist/esm/utils/ParameterRemover.js.map +1 -1
- package/dist/esm/utils/RelationGraph.d.ts +43 -0
- package/dist/esm/utils/RelationGraph.js +117 -0
- package/dist/esm/utils/RelationGraph.js.map +1 -0
- package/dist/esm/utils/ScopeResolver.d.ts +5 -2
- package/dist/esm/utils/ScopeResolver.js +37 -18
- package/dist/esm/utils/ScopeResolver.js.map +1 -1
- package/dist/esm/utils/charLookupTable.d.ts +6 -0
- package/dist/esm/utils/charLookupTable.js +9 -1
- package/dist/esm/utils/charLookupTable.js.map +1 -1
- package/dist/esm/utils/serialTypeNormalization.d.ts +15 -0
- package/dist/esm/utils/serialTypeNormalization.js +55 -0
- package/dist/esm/utils/serialTypeNormalization.js.map +1 -0
- package/dist/esm/utils/stringUtils.js +51 -26
- package/dist/esm/utils/stringUtils.js.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +22 -20
- package/dist/index.min.js.map +4 -4
- package/dist/models/CreateTableQuery.js +5 -4
- package/dist/models/CreateTableQuery.js.map +1 -1
- package/dist/models/DDLStatements.js +14 -1
- package/dist/models/DDLStatements.js.map +1 -1
- package/dist/models/KeywordTrie.js +26 -27
- package/dist/models/KeywordTrie.js.map +1 -1
- package/dist/models/SqlPrintToken.js +1 -0
- package/dist/models/SqlPrintToken.js.map +1 -1
- package/dist/parsers/CommentOnParser.js +65 -0
- package/dist/parsers/CommentOnParser.js.map +1 -0
- package/dist/parsers/CreateIndexParser.js +12 -6
- package/dist/parsers/CreateIndexParser.js.map +1 -1
- package/dist/parsers/CreateTableParser.js +6 -1
- package/dist/parsers/CreateTableParser.js.map +1 -1
- package/dist/parsers/FullNameParser.js +35 -3
- package/dist/parsers/FullNameParser.js.map +1 -1
- package/dist/parsers/SqlParser.js +93 -307
- package/dist/parsers/SqlParser.js.map +1 -1
- package/dist/parsers/SqlPrintTokenParser.js +27 -3
- package/dist/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/parsers/SqlTokenizer.js +176 -67
- package/dist/parsers/SqlTokenizer.js.map +1 -1
- package/dist/src/index.d.ts +6 -0
- package/dist/src/models/CreateTableQuery.d.ts +3 -0
- package/dist/src/models/DDLStatements.d.ts +15 -0
- package/dist/src/models/KeywordTrie.d.ts +2 -3
- package/dist/src/models/SqlPrintToken.d.ts +1 -0
- package/dist/src/parsers/CommentOnParser.d.ts +23 -0
- package/dist/src/parsers/CreateTableParser.d.ts +1 -0
- package/dist/src/parsers/SqlParser.d.ts +8 -2
- package/dist/src/parsers/SqlPrintTokenParser.d.ts +1 -0
- package/dist/src/parsers/SqlTokenizer.d.ts +5 -0
- package/dist/src/tokenReaders/StringSpecifierTokenReader.d.ts +2 -0
- package/dist/src/tokenReaders/TokenReaderManager.d.ts +0 -7
- package/dist/src/transformers/DynamicQueryBuilder.d.ts +21 -13
- package/dist/src/transformers/LinePrinter.d.ts +4 -2
- package/dist/src/transformers/PruneOptionalConditionBranches.d.ts +22 -0
- package/dist/src/transformers/SSSQLFilterBuilder.d.ts +30 -0
- package/dist/src/utils/CommentUtils.d.ts +1 -0
- package/dist/src/utils/MultiQuerySplitter.d.ts +7 -11
- package/dist/src/utils/RelationGraph.d.ts +43 -0
- package/dist/tokenReaders/CommandTokenReader.js +21 -4
- package/dist/tokenReaders/CommandTokenReader.js.map +1 -1
- package/dist/tokenReaders/StringSpecifierTokenReader.js +30 -13
- package/dist/tokenReaders/StringSpecifierTokenReader.js.map +1 -1
- package/dist/tokenReaders/TokenReaderManager.js +16 -48
- package/dist/tokenReaders/TokenReaderManager.js.map +1 -1
- package/dist/transformers/DynamicQueryBuilder.js +28 -95
- package/dist/transformers/DynamicQueryBuilder.js.map +1 -1
- package/dist/transformers/LinePrinter.js +93 -22
- package/dist/transformers/LinePrinter.js.map +1 -1
- package/dist/transformers/PruneOptionalConditionBranches.js +270 -0
- package/dist/transformers/PruneOptionalConditionBranches.js.map +1 -0
- package/dist/transformers/SSSQLFilterBuilder.js +259 -0
- package/dist/transformers/SSSQLFilterBuilder.js.map +1 -0
- package/dist/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/utils/CommentUtils.js +14 -4
- package/dist/utils/CommentUtils.js.map +1 -1
- package/dist/utils/MultiQuerySplitter.js +105 -66
- package/dist/utils/MultiQuerySplitter.js.map +1 -1
- package/dist/utils/RelationGraph.js +123 -0
- package/dist/utils/RelationGraph.js.map +1 -0
- package/dist/utils/stringUtils.js +42 -23
- package/dist/utils/stringUtils.js.map +1 -1
- package/package.json +4 -4
|
@@ -3,8 +3,9 @@ import { SortConditions } from "./SqlSortInjector";
|
|
|
3
3
|
import { PaginationOptions } from "./SqlPaginationInjector";
|
|
4
4
|
import { JsonMapping } from "./PostgresJsonQueryBuilder";
|
|
5
5
|
import { SqlParameterValue } from "../models/ValueComponent";
|
|
6
|
-
import { type ExistsSubqueryDefinition } from "./ExistsPredicateInjector";
|
|
7
6
|
import { SchemaInfo } from "./OptimizeUnusedLeftJoins";
|
|
7
|
+
import { OptionalConditionParameterStates, OptionalConditionPruningParameters } from "./PruneOptionalConditionBranches";
|
|
8
|
+
import type { ExistsSubqueryDefinition } from "./ExistsPredicateInjector";
|
|
8
9
|
export type { ExistsSubqueryDefinition };
|
|
9
10
|
/**
|
|
10
11
|
* Object-form filter condition supporting scalar operators, logical grouping,
|
|
@@ -84,7 +85,10 @@ export type FilterConditions = Record<string, FilterConditionValue>;
|
|
|
84
85
|
* Options for dynamic query building
|
|
85
86
|
*/
|
|
86
87
|
export interface QueryBuildOptions {
|
|
87
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Legacy filter input for named-parameter binding only.
|
|
90
|
+
* Dynamic predicate injection is no longer supported and will fail fast.
|
|
91
|
+
*/
|
|
88
92
|
filter?: FilterConditions;
|
|
89
93
|
/** Sort conditions to inject into ORDER BY clause */
|
|
90
94
|
sort?: SortConditions;
|
|
@@ -130,6 +134,16 @@ export interface QueryBuildOptions {
|
|
|
130
134
|
* Defaults to false to preserve original WITH definitions.
|
|
131
135
|
*/
|
|
132
136
|
removeUnusedCtes?: boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Explicit opt-in values for truthful optional condition branches in source SQL.
|
|
139
|
+
* Only listed parameter names are eligible for pruning, and `null`/`undefined` are treated as absent-equivalent.
|
|
140
|
+
*/
|
|
141
|
+
optionalConditionParameters?: OptionalConditionPruningParameters;
|
|
142
|
+
/**
|
|
143
|
+
* Legacy state-map form for optional branch pruning.
|
|
144
|
+
* Prefer `optionalConditionParameters` for new code so SQL-facing null semantics stay intuitive.
|
|
145
|
+
*/
|
|
146
|
+
optionalConditionParameterStates?: OptionalConditionParameterStates;
|
|
133
147
|
}
|
|
134
148
|
/**
|
|
135
149
|
* Builder-level configuration that can be reused across multiple build calls.
|
|
@@ -182,24 +196,18 @@ export declare class DynamicQueryBuilder {
|
|
|
182
196
|
* ```
|
|
183
197
|
*/
|
|
184
198
|
buildQuery(sqlContent: string, options?: QueryBuildOptions): SelectQuery;
|
|
185
|
-
private
|
|
186
|
-
private handleMultiAnchorDefinitions;
|
|
187
|
-
private splitExistsProperties;
|
|
188
|
-
private isFilterConditionObject;
|
|
189
|
-
private isMultiColumnDefinitionArray;
|
|
190
|
-
private isMultiColumnDefinition;
|
|
191
|
-
private createExistsInstruction;
|
|
199
|
+
private resolveOptionalConditionPruningParameters;
|
|
192
200
|
private applyColumnFilters;
|
|
193
201
|
private normalizeColumnList;
|
|
194
202
|
private normalizeColumnIdentifier;
|
|
195
203
|
private getSelectItemName;
|
|
196
204
|
/**
|
|
197
|
-
*
|
|
198
|
-
*
|
|
205
|
+
* Legacy helper for binding existing named parameters without adding new runtime predicates.
|
|
206
|
+
* Dynamic WHERE-condition injection is no longer supported; use SSSQL scaffold/refresh instead.
|
|
199
207
|
*
|
|
200
208
|
* @param sqlContent Raw SQL string to parse and modify
|
|
201
|
-
* @param filter
|
|
202
|
-
* @returns Modified SelectQuery
|
|
209
|
+
* @param filter Named parameters to bind when they already exist in the SQL
|
|
210
|
+
* @returns Modified SelectQuery after binding existing named parameters
|
|
203
211
|
*/
|
|
204
212
|
buildFilteredQuery(sqlContent: string, filter: FilterConditions): SelectQuery;
|
|
205
213
|
/**
|
|
@@ -37,14 +37,16 @@ export declare class LinePrinter {
|
|
|
37
37
|
* @param text Text to append
|
|
38
38
|
*/
|
|
39
39
|
appendText(text: string): void;
|
|
40
|
+
private endsWithAsciiWhitespace;
|
|
40
41
|
trimTrailingWhitespaceFromPreviousLine(): void;
|
|
42
|
+
private findLineEndIndex;
|
|
41
43
|
/**
|
|
42
44
|
* Cleans up the current line for comma formatting.
|
|
43
45
|
* For 'after' and 'none' comma styles, removes empty line when a comma is being added.
|
|
44
|
-
* @param text The text being processed
|
|
45
46
|
* @returns true if cleanup was performed, false otherwise
|
|
46
47
|
*/
|
|
47
|
-
cleanupLine(
|
|
48
|
+
cleanupLine(): boolean;
|
|
49
|
+
private isAsciiWhitespaceOnly;
|
|
48
50
|
private lineHasTrailingComment;
|
|
49
51
|
getCurrentLine(): PrintLine;
|
|
50
52
|
/**
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SelectQuery, SimpleSelectQuery } from '../models/SelectQuery';
|
|
2
|
+
import { SqlParameterValue, ValueComponent } from '../models/ValueComponent';
|
|
3
|
+
export type OptionalConditionPruningParameters = Record<string, SqlParameterValue>;
|
|
4
|
+
export type OptionalConditionParameterState = 'absent' | 'present' | 'unknown';
|
|
5
|
+
export type OptionalConditionParameterStates = Record<string, OptionalConditionParameterState>;
|
|
6
|
+
export type SupportedOptionalConditionBranchKind = 'expression';
|
|
7
|
+
export interface SupportedOptionalConditionBranch {
|
|
8
|
+
query: SimpleSelectQuery;
|
|
9
|
+
parameterName: string;
|
|
10
|
+
expression: ValueComponent;
|
|
11
|
+
kind: SupportedOptionalConditionBranchKind;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Prunes supported optional WHERE branches when an explicitly targeted parameter is absent-equivalent.
|
|
15
|
+
* For the MVP, only `null` and `undefined` are treated as absent and unsupported shapes remain exact no-op.
|
|
16
|
+
*/
|
|
17
|
+
export declare const pruneOptionalConditionBranches: (query: SelectQuery, pruningParameters: OptionalConditionPruningParameters) => SelectQuery;
|
|
18
|
+
/**
|
|
19
|
+
* Collects supported top-level optional condition branches from the query graph.
|
|
20
|
+
* The returned branch expressions keep object identity so callers can move them without re-rendering.
|
|
21
|
+
*/
|
|
22
|
+
export declare const collectSupportedOptionalConditionBranches: (query: SelectQuery) => SupportedOptionalConditionBranch[];
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { SelectQuery } from "../models/SelectQuery";
|
|
2
|
+
import { type SupportedOptionalConditionBranch } from "./PruneOptionalConditionBranches";
|
|
3
|
+
export type SSSQLFilterValue = unknown;
|
|
4
|
+
export type SSSQLFilterInput = Record<string, SSSQLFilterValue>;
|
|
5
|
+
export type SssqlScaffoldFilters = SSSQLFilterInput;
|
|
6
|
+
export interface SssqlTransformResult {
|
|
7
|
+
query: SelectQuery;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Builds and refreshes truthful SSSQL optional filter branches.
|
|
11
|
+
* Runtime callers should use pruning, not dynamic predicate injection.
|
|
12
|
+
*/
|
|
13
|
+
export declare class SSSQLFilterBuilder {
|
|
14
|
+
private readonly tableColumnResolver?;
|
|
15
|
+
private readonly finder;
|
|
16
|
+
constructor(tableColumnResolver?: ((tableName: string) => string[]) | undefined);
|
|
17
|
+
scaffold(query: SelectQuery | string, filters: SSSQLFilterInput): SelectQuery;
|
|
18
|
+
refresh(query: SelectQuery | string, filters: SSSQLFilterInput): SelectQuery;
|
|
19
|
+
private parseQuery;
|
|
20
|
+
private resolveTarget;
|
|
21
|
+
private resolveTargetInQuery;
|
|
22
|
+
private resolveQualifiedTarget;
|
|
23
|
+
private resolveUnqualifiedTarget;
|
|
24
|
+
private findAliasForTable;
|
|
25
|
+
private resolveAliasForSource;
|
|
26
|
+
private rebaseMovedBranch;
|
|
27
|
+
}
|
|
28
|
+
export type { SupportedOptionalConditionBranch };
|
|
29
|
+
export declare const scaffoldSssqlQuery: (sqlContent: string, filters: SssqlScaffoldFilters) => SssqlTransformResult;
|
|
30
|
+
export declare const refreshSssqlQuery: (sqlContent: string, filters: SssqlScaffoldFilters) => SssqlTransformResult;
|
|
@@ -3,6 +3,7 @@ import { Lexeme } from "../models/Lexeme";
|
|
|
3
3
|
* Utility functions for handling comments in parsers
|
|
4
4
|
*/
|
|
5
5
|
export declare class CommentUtils {
|
|
6
|
+
private static readonly SIGNIFICANT_SQL_KEYWORDS;
|
|
6
7
|
/**
|
|
7
8
|
* Collects comments from preceding tokens that are associated with a specific keyword.
|
|
8
9
|
* This function looks for comments in tokens before the current position that might
|
|
@@ -80,19 +80,15 @@ export declare class MultiQuerySplitter {
|
|
|
80
80
|
*/
|
|
81
81
|
static split(text: string): QueryCollection;
|
|
82
82
|
/**
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
*
|
|
83
|
+
* Split text by semicolons while respecting quotes and comments.
|
|
84
|
+
* Single-pass O(n) implementation with support for:
|
|
85
|
+
* - Single-quoted strings ('...' with '' escaping)
|
|
86
|
+
* - Double-quoted identifiers ("..." with "" escaping)
|
|
87
|
+
* - Line comments (--)
|
|
88
|
+
* - Block comments (/* ... *\/)
|
|
89
|
+
* - PostgreSQL dollar-quoted strings ($$...$$ or $tag$...$tag$)
|
|
90
90
|
*/
|
|
91
91
|
private static splitRespectingQuotesAndComments;
|
|
92
|
-
/**
|
|
93
|
-
* Check if character at position is a valid semicolon (not in quotes/comments)
|
|
94
|
-
*/
|
|
95
|
-
private static isValidSemicolon;
|
|
96
92
|
/**
|
|
97
93
|
* Merge comment-only segments with previous executable segments
|
|
98
94
|
*/
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { CreateTableQuery } from '../models/CreateTableQuery';
|
|
2
|
+
import { QualifiedName } from '../models/ValueComponent';
|
|
3
|
+
export type RelationConstraintKind = 'column-reference' | 'table-foreign-key';
|
|
4
|
+
export type RelationEvidenceKind = RelationConstraintKind | 'primary-key' | 'unique-key';
|
|
5
|
+
export type RelationConfidence = 'confirmed' | 'inferred' | 'unknown';
|
|
6
|
+
export interface RelationGraphEdge {
|
|
7
|
+
childTable: string;
|
|
8
|
+
parentTable: string;
|
|
9
|
+
childColumns: string[];
|
|
10
|
+
parentColumns: string[];
|
|
11
|
+
constraintKind: RelationConstraintKind;
|
|
12
|
+
constraintName: string | null;
|
|
13
|
+
/**
|
|
14
|
+
* Evidence behind the relation edge. v1 uses FK evidence, but callers can
|
|
15
|
+
* keep the same edge shape when PK / UNIQUE inference is added later.
|
|
16
|
+
*/
|
|
17
|
+
evidenceKind: RelationEvidenceKind;
|
|
18
|
+
/**
|
|
19
|
+
* Indicates whether the relation is directly confirmed or inferred from
|
|
20
|
+
* broader schema evidence.
|
|
21
|
+
*/
|
|
22
|
+
confidence: RelationConfidence;
|
|
23
|
+
isSelfReference: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface RelationGraph {
|
|
26
|
+
relations: RelationGraphEdge[];
|
|
27
|
+
byChildTable: Map<string, RelationGraphEdge[]>;
|
|
28
|
+
byParentTable: Map<string, RelationGraphEdge[]>;
|
|
29
|
+
tableNames: Set<string>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Build a direction-aware relation graph from parsed CREATE TABLE statements.
|
|
33
|
+
*/
|
|
34
|
+
export declare function buildRelationGraphFromCreateTableQueries(queries: CreateTableQuery[]): RelationGraph;
|
|
35
|
+
/**
|
|
36
|
+
* Return the known parent relations for a child table.
|
|
37
|
+
*/
|
|
38
|
+
export declare function getOutgoingRelations(graph: RelationGraph, childTable: string): RelationGraphEdge[];
|
|
39
|
+
/**
|
|
40
|
+
* Return the known child relations for a parent table.
|
|
41
|
+
*/
|
|
42
|
+
export declare function getIncomingRelations(graph: RelationGraph, parentTable: string): RelationGraphEdge[];
|
|
43
|
+
export declare function getQualifiedNameText(value: QualifiedName): string;
|
|
@@ -117,6 +117,7 @@ const keywordTrie = new KeywordTrie_1.KeywordTrie([
|
|
|
117
117
|
["create", "table"],
|
|
118
118
|
["create", "temporary", "table"],
|
|
119
119
|
["create", "temp", "table"],
|
|
120
|
+
["create", "unlogged", "table"],
|
|
120
121
|
["create", "schema"],
|
|
121
122
|
["create", "sequence"],
|
|
122
123
|
["create", "temporary", "sequence"],
|
|
@@ -128,6 +129,8 @@ const keywordTrie = new KeywordTrie_1.KeywordTrie([
|
|
|
128
129
|
["drop", "index"],
|
|
129
130
|
["drop", "sequence"],
|
|
130
131
|
["drop", "constraint"],
|
|
132
|
+
["comment", "on", "table"],
|
|
133
|
+
["comment", "on", "column"],
|
|
131
134
|
["create", "index"],
|
|
132
135
|
["create", "unique", "index"],
|
|
133
136
|
["add"],
|
|
@@ -180,15 +183,29 @@ const keywordTrie = new KeywordTrie_1.KeywordTrie([
|
|
|
180
183
|
exports.commandKeywordTrie = keywordTrie;
|
|
181
184
|
const keywordParser = new KeywordParser_1.KeywordParser(keywordTrie);
|
|
182
185
|
exports.joinkeywordParser = new KeywordParser_1.KeywordParser(joinTrie);
|
|
186
|
+
// Keep canStartJoinKeyword in sync with the first letters used by joinTrie patterns.
|
|
187
|
+
function canStartJoinKeyword(input, position) {
|
|
188
|
+
const code = input.charCodeAt(position) | 32;
|
|
189
|
+
return code === 106 || // j
|
|
190
|
+
code === 105 || // i
|
|
191
|
+
code === 99 || // c
|
|
192
|
+
code === 108 || // l
|
|
193
|
+
code === 114 || // r
|
|
194
|
+
code === 102 || // f
|
|
195
|
+
code === 110; // n
|
|
196
|
+
}
|
|
183
197
|
class CommandTokenReader extends BaseTokenReader_1.BaseTokenReader {
|
|
184
198
|
tryRead(previous) {
|
|
185
199
|
if (this.isEndOfInput()) {
|
|
186
200
|
return null;
|
|
187
201
|
}
|
|
188
|
-
|
|
189
|
-
if (
|
|
190
|
-
|
|
191
|
-
|
|
202
|
+
// Skip JOIN-specific parsing unless the leading character can start JOIN phrases.
|
|
203
|
+
if (canStartJoinKeyword(this.input, this.position)) {
|
|
204
|
+
const keywordJoin = exports.joinkeywordParser.parse(this.input, this.position);
|
|
205
|
+
if (keywordJoin !== null) {
|
|
206
|
+
this.position = keywordJoin.newPosition;
|
|
207
|
+
return this.createLexeme(Lexeme_1.TokenType.Command, keywordJoin.keyword);
|
|
208
|
+
}
|
|
192
209
|
}
|
|
193
210
|
// Check for keyword identifiers
|
|
194
211
|
const keyword = keywordParser.parse(this.input, this.position);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandTokenReader.js","sourceRoot":"","sources":["../../src/tokenReaders/CommandTokenReader.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CommandTokenReader.js","sourceRoot":"","sources":["../../src/tokenReaders/CommandTokenReader.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,29 +3,46 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.StringSpecifierTokenReader = void 0;
|
|
4
4
|
const Lexeme_1 = require("../models/Lexeme");
|
|
5
5
|
const BaseTokenReader_1 = require("./BaseTokenReader");
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const UNICODE_STRING_SPECIFIERS = new Set(['u&\'', 'U&\'']);
|
|
6
|
+
const QUOTE_CHAR_CODE = 39; // '
|
|
7
|
+
const AMPERSAND_CHAR_CODE = 38; // &
|
|
9
8
|
class StringSpecifierTokenReader extends BaseTokenReader_1.BaseTokenReader {
|
|
10
9
|
/**
|
|
11
10
|
* Try to read an escaped literal like e'...', x'...', etc.
|
|
12
11
|
*/
|
|
13
12
|
tryRead(previous) {
|
|
14
13
|
const start = this.position;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
this.position += 1;
|
|
18
|
-
const result = this.createLexeme(Lexeme_1.TokenType.StringSpecifier, this.input.slice(start, this.position));
|
|
19
|
-
return result;
|
|
14
|
+
if (!this.canRead(1)) {
|
|
15
|
+
return null;
|
|
20
16
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
const firstCode = this.input.charCodeAt(start);
|
|
18
|
+
const secondCode = this.input.charCodeAt(start + 1);
|
|
19
|
+
// Fast path for single-letter prefixes: e', E', x', X', b', B'
|
|
20
|
+
if (secondCode === QUOTE_CHAR_CODE && this.isSingleLetterStringPrefix(firstCode)) {
|
|
21
|
+
this.position = start + 1;
|
|
22
|
+
return this.createLexeme(Lexeme_1.TokenType.StringSpecifier, this.input[start]);
|
|
23
|
+
}
|
|
24
|
+
// Fast path for unicode prefixes: u&', U&'
|
|
25
|
+
if (this.canRead(2) &&
|
|
26
|
+
this.isUnicodePrefix(firstCode) &&
|
|
27
|
+
secondCode === AMPERSAND_CHAR_CODE &&
|
|
28
|
+
this.input.charCodeAt(start + 2) === QUOTE_CHAR_CODE) {
|
|
29
|
+
this.position = start + 2;
|
|
30
|
+
return this.createLexeme(Lexeme_1.TokenType.StringSpecifier, this.input.slice(start, start + 2));
|
|
26
31
|
}
|
|
27
32
|
return null;
|
|
28
33
|
}
|
|
34
|
+
isSingleLetterStringPrefix(charCode) {
|
|
35
|
+
return charCode === 69 || // E
|
|
36
|
+
charCode === 101 || // e
|
|
37
|
+
charCode === 88 || // X
|
|
38
|
+
charCode === 120 || // x
|
|
39
|
+
charCode === 66 || // B
|
|
40
|
+
charCode === 98; // b
|
|
41
|
+
}
|
|
42
|
+
isUnicodePrefix(charCode) {
|
|
43
|
+
return charCode === 85 || // U
|
|
44
|
+
charCode === 117; // u
|
|
45
|
+
}
|
|
29
46
|
}
|
|
30
47
|
exports.StringSpecifierTokenReader = StringSpecifierTokenReader;
|
|
31
48
|
//# sourceMappingURL=StringSpecifierTokenReader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringSpecifierTokenReader.js","sourceRoot":"","sources":["../../src/tokenReaders/StringSpecifierTokenReader.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,uDAAoD;AAEpD
|
|
1
|
+
{"version":3,"file":"StringSpecifierTokenReader.js","sourceRoot":"","sources":["../../src/tokenReaders/StringSpecifierTokenReader.ts"],"names":[],"mappings":";;;AAAA,6CAAqD;AACrD,uDAAoD;AAEpD,MAAM,eAAe,GAAG,EAAE,CAAC,CAAC,IAAI;AAChC,MAAM,mBAAmB,GAAG,EAAE,CAAC,CAAC,IAAI;AAEpC,MAAa,0BAA2B,SAAQ,iCAAe;IAE3D;;OAEG;IACI,OAAO,CAAC,QAAuB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAEpD,+DAA+D;QAC/D,IAAI,UAAU,KAAK,eAAe,IAAI,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/E,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAS,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,2CAA2C;QAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;YAC/B,UAAU,KAAK,mBAAmB;YAClC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,eAAe,EAAE,CAAC;YACvD,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAS,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,0BAA0B,CAAC,QAAgB;QAC/C,OAAO,QAAQ,KAAK,EAAE,IAAK,IAAI;YACxB,QAAQ,KAAK,GAAG,IAAI,IAAI;YACxB,QAAQ,KAAK,EAAE,IAAK,IAAI;YACxB,QAAQ,KAAK,GAAG,IAAI,IAAI;YACxB,QAAQ,KAAK,EAAE,IAAK,IAAI;YACxB,QAAQ,KAAK,EAAE,CAAC,CAAI,IAAI;IACnC,CAAC;IAEO,eAAe,CAAC,QAAgB;QACpC,OAAO,QAAQ,KAAK,EAAE,IAAK,IAAI;YACxB,QAAQ,KAAK,GAAG,CAAC,CAAG,IAAI;IACnC,CAAC;CACJ;AA9CD,gEA8CC"}
|
|
@@ -6,12 +6,9 @@ exports.TokenReaderManager = void 0;
|
|
|
6
6
|
*/
|
|
7
7
|
class TokenReaderManager {
|
|
8
8
|
constructor(input, position = 0) {
|
|
9
|
-
this.cacheHits = 0;
|
|
10
|
-
this.cacheMisses = 0;
|
|
11
9
|
this.input = input;
|
|
12
10
|
this.position = position;
|
|
13
11
|
this.readers = [];
|
|
14
|
-
this.tokenCache = new Map();
|
|
15
12
|
}
|
|
16
13
|
/**
|
|
17
14
|
* Register a token reader
|
|
@@ -28,17 +25,10 @@ class TokenReaderManager {
|
|
|
28
25
|
* @returns This manager instance for chaining
|
|
29
26
|
*/
|
|
30
27
|
registerAll(readers) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Update the position for all readers
|
|
36
|
-
*/
|
|
37
|
-
setPosition(position) {
|
|
38
|
-
this.position = position;
|
|
39
|
-
for (const reader of this.readers) {
|
|
40
|
-
reader.setPosition(position);
|
|
28
|
+
for (let i = 0; i < readers.length; i++) {
|
|
29
|
+
this.readers.push(readers[i]);
|
|
41
30
|
}
|
|
31
|
+
return this;
|
|
42
32
|
}
|
|
43
33
|
/**
|
|
44
34
|
* Try to read a token using all registered readers
|
|
@@ -47,45 +37,25 @@ class TokenReaderManager {
|
|
|
47
37
|
* @returns The lexeme if a reader could read it, null otherwise
|
|
48
38
|
*/
|
|
49
39
|
tryRead(position, previous) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
// Cache miss - create new entry
|
|
58
|
-
this.cacheMisses++;
|
|
59
|
-
this.setPosition(position);
|
|
60
|
-
// Try to read with each reader
|
|
61
|
-
let lexeme = null;
|
|
62
|
-
for (const reader of this.readers) {
|
|
63
|
-
lexeme = reader.tryRead(previous);
|
|
40
|
+
this.position = position;
|
|
41
|
+
const readers = this.readers;
|
|
42
|
+
// Index-based iteration avoids iterator allocations in the hottest parse loop.
|
|
43
|
+
for (let i = 0; i < readers.length; i++) {
|
|
44
|
+
const reader = readers[i];
|
|
45
|
+
reader.setPosition(position);
|
|
46
|
+
const lexeme = reader.tryRead(previous);
|
|
64
47
|
if (lexeme) {
|
|
65
48
|
this.position = reader.getPosition();
|
|
66
|
-
|
|
49
|
+
return lexeme;
|
|
67
50
|
}
|
|
68
51
|
}
|
|
69
|
-
|
|
70
|
-
for (const reader of this.readers) {
|
|
71
|
-
reader.setPosition(this.position);
|
|
72
|
-
}
|
|
73
|
-
// Save to cache (even if null)
|
|
74
|
-
this.tokenCache.set(position, lexeme);
|
|
75
|
-
return lexeme;
|
|
52
|
+
return null;
|
|
76
53
|
}
|
|
77
54
|
/**
|
|
78
55
|
* Get the maximum position among all readers
|
|
79
56
|
*/
|
|
80
57
|
getMaxPosition() {
|
|
81
|
-
|
|
82
|
-
for (const reader of this.readers) {
|
|
83
|
-
const position = reader.getPosition();
|
|
84
|
-
if (position > maxPosition) {
|
|
85
|
-
maxPosition = position;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return maxPosition;
|
|
58
|
+
return this.position;
|
|
89
59
|
}
|
|
90
60
|
/**
|
|
91
61
|
* Get the input string
|
|
@@ -97,12 +67,10 @@ class TokenReaderManager {
|
|
|
97
67
|
* Get cache statistics
|
|
98
68
|
*/
|
|
99
69
|
getCacheStats() {
|
|
100
|
-
const total = this.cacheHits + this.cacheMisses;
|
|
101
|
-
const ratio = total > 0 ? this.cacheHits / total : 0;
|
|
102
70
|
return {
|
|
103
|
-
hits:
|
|
104
|
-
misses:
|
|
105
|
-
ratio:
|
|
71
|
+
hits: 0,
|
|
72
|
+
misses: 0,
|
|
73
|
+
ratio: 0
|
|
106
74
|
};
|
|
107
75
|
}
|
|
108
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenReaderManager.js","sourceRoot":"","sources":["../../src/tokenReaders/TokenReaderManager.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"TokenReaderManager.js","sourceRoot":"","sources":["../../src/tokenReaders/TokenReaderManager.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAa,kBAAkB;IAK3B,YAAY,KAAa,EAAE,WAAmB,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,MAAuB;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,OAA0B;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACI,OAAO,CAAC,QAAgB,EAAE,QAAuB;QACpD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,+EAA+E;QAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,MAAM,EAAE,CAAC;gBACT,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrC,OAAO,MAAM,CAAC;YAClB,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,cAAc;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,QAAQ;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,aAAa;QAChB,OAAO;YACH,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;SACX,CAAC;IACN,CAAC;CACJ;AAjFD,gDAiFC"}
|