rawsql-ts 0.11.35-beta → 0.11.37-beta
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/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +28 -27
- package/dist/esm/index.min.js.map +3 -3
- package/dist/esm/src/index.d.ts +1 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/models/BinarySelectQuery.d.ts +2 -0
- package/dist/esm/src/models/BinarySelectQuery.js +2 -0
- package/dist/esm/src/models/BinarySelectQuery.js.map +1 -1
- package/dist/esm/src/models/Clause.d.ts +2 -0
- package/dist/esm/src/models/Clause.js +2 -0
- package/dist/esm/src/models/Clause.js.map +1 -1
- package/dist/esm/src/models/SelectQuery.d.ts +2 -0
- package/dist/esm/src/models/SelectQuery.js.map +1 -1
- package/dist/esm/src/models/SimpleSelectQuery.d.ts +2 -0
- package/dist/esm/src/models/SimpleSelectQuery.js +2 -0
- package/dist/esm/src/models/SimpleSelectQuery.js.map +1 -1
- package/dist/esm/src/models/ValuesQuery.d.ts +2 -0
- package/dist/esm/src/models/ValuesQuery.js +2 -0
- package/dist/esm/src/models/ValuesQuery.js.map +1 -1
- package/dist/esm/src/parsers/CommonTableParser.d.ts +1 -0
- package/dist/esm/src/parsers/CommonTableParser.js +9 -2
- package/dist/esm/src/parsers/CommonTableParser.js.map +1 -1
- package/dist/esm/src/parsers/SelectClauseParser.js +7 -1
- package/dist/esm/src/parsers/SelectClauseParser.js.map +1 -1
- package/dist/esm/src/parsers/SelectQueryParser.d.ts +6 -0
- package/dist/esm/src/parsers/SelectQueryParser.js +51 -12
- package/dist/esm/src/parsers/SelectQueryParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +2 -1
- package/dist/esm/src/parsers/SqlPrintTokenParser.js +73 -4
- package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/esm/src/parsers/WithClauseParser.d.ts +1 -0
- package/dist/esm/src/parsers/WithClauseParser.js +27 -3
- package/dist/esm/src/parsers/WithClauseParser.js.map +1 -1
- package/dist/esm/src/transformers/CTEQueryDecomposer.d.ts +69 -0
- package/dist/esm/src/transformers/CTEQueryDecomposer.js +123 -0
- package/dist/esm/src/transformers/CTEQueryDecomposer.js.map +1 -1
- package/dist/esm/src/transformers/SqlFormatter.d.ts +34 -16
- package/dist/esm/src/transformers/SqlFormatter.js +1 -1
- package/dist/esm/src/transformers/SqlFormatter.js.map +1 -1
- package/dist/esm/src/transformers/SqlPrinter.d.ts +25 -20
- package/dist/esm/src/transformers/SqlPrinter.js +51 -2
- package/dist/esm/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/esm/src/utils/CommentEditor.d.ts +11 -0
- package/dist/esm/src/utils/CommentEditor.js +141 -29
- package/dist/esm/src/utils/CommentEditor.js.map +1 -1
- package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/index.min.js +31 -30
- package/dist/index.min.js.map +3 -3
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/BinarySelectQuery.d.ts +2 -0
- package/dist/src/models/BinarySelectQuery.js +2 -0
- package/dist/src/models/BinarySelectQuery.js.map +1 -1
- package/dist/src/models/Clause.d.ts +2 -0
- package/dist/src/models/Clause.js +2 -0
- package/dist/src/models/Clause.js.map +1 -1
- package/dist/src/models/SelectQuery.d.ts +2 -0
- package/dist/src/models/SelectQuery.js.map +1 -1
- package/dist/src/models/SimpleSelectQuery.d.ts +2 -0
- package/dist/src/models/SimpleSelectQuery.js +2 -0
- package/dist/src/models/SimpleSelectQuery.js.map +1 -1
- package/dist/src/models/ValuesQuery.d.ts +2 -0
- package/dist/src/models/ValuesQuery.js +2 -0
- package/dist/src/models/ValuesQuery.js.map +1 -1
- package/dist/src/parsers/CommonTableParser.d.ts +1 -0
- package/dist/src/parsers/CommonTableParser.js +9 -2
- package/dist/src/parsers/CommonTableParser.js.map +1 -1
- package/dist/src/parsers/SelectClauseParser.js +7 -1
- package/dist/src/parsers/SelectClauseParser.js.map +1 -1
- package/dist/src/parsers/SelectQueryParser.d.ts +6 -0
- package/dist/src/parsers/SelectQueryParser.js +51 -12
- package/dist/src/parsers/SelectQueryParser.js.map +1 -1
- package/dist/src/parsers/SqlPrintTokenParser.d.ts +2 -1
- package/dist/src/parsers/SqlPrintTokenParser.js +73 -4
- package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/src/parsers/WithClauseParser.d.ts +1 -0
- package/dist/src/parsers/WithClauseParser.js +27 -3
- package/dist/src/parsers/WithClauseParser.js.map +1 -1
- package/dist/src/transformers/CTEQueryDecomposer.d.ts +69 -0
- package/dist/src/transformers/CTEQueryDecomposer.js +123 -0
- package/dist/src/transformers/CTEQueryDecomposer.js.map +1 -1
- package/dist/src/transformers/SqlFormatter.d.ts +34 -16
- package/dist/src/transformers/SqlFormatter.js +9 -1
- package/dist/src/transformers/SqlFormatter.js.map +1 -1
- package/dist/src/transformers/SqlPrinter.d.ts +25 -20
- package/dist/src/transformers/SqlPrinter.js +51 -2
- package/dist/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/src/utils/CommentEditor.d.ts +11 -0
- package/dist/src/utils/CommentEditor.js +141 -29
- package/dist/src/utils/CommentEditor.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -6,43 +6,89 @@ import { SqlComponent } from '../models/SqlComponent';
|
|
|
6
6
|
export class CommentEditor {
|
|
7
7
|
/**
|
|
8
8
|
* Add a comment to a SQL component
|
|
9
|
+
* For SelectQuery components, adds to headerComments for query-level comments
|
|
9
10
|
* @param component The SQL component to add comment to
|
|
10
11
|
* @param comment The comment text to add
|
|
11
12
|
*/
|
|
12
13
|
static addComment(component, comment) {
|
|
13
|
-
if
|
|
14
|
-
|
|
14
|
+
// Check if this is a SelectQuery component - add to headerComments for query-level comments
|
|
15
|
+
if (this.isSelectQuery(component)) {
|
|
16
|
+
const selectQuery = component;
|
|
17
|
+
if (!selectQuery.headerComments) {
|
|
18
|
+
selectQuery.headerComments = [];
|
|
19
|
+
}
|
|
20
|
+
selectQuery.headerComments.push(comment);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
// For other components, add to regular comments
|
|
24
|
+
if (!component.comments) {
|
|
25
|
+
component.comments = [];
|
|
26
|
+
}
|
|
27
|
+
component.comments.push(comment);
|
|
15
28
|
}
|
|
16
|
-
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Check if a component implements SelectQuery interface
|
|
32
|
+
* Uses discriminator property for robust type detection
|
|
33
|
+
* @param component The component to check
|
|
34
|
+
* @returns true if the component is a SelectQuery
|
|
35
|
+
*/
|
|
36
|
+
static isSelectQuery(component) {
|
|
37
|
+
// Use discriminator property for robust type detection
|
|
38
|
+
return '__selectQueryType' in component &&
|
|
39
|
+
component.__selectQueryType === 'SelectQuery';
|
|
17
40
|
}
|
|
18
41
|
/**
|
|
19
42
|
* Edit an existing comment by index
|
|
43
|
+
* For SelectQuery components, edits headerComments
|
|
20
44
|
* @param component The SQL component containing the comment
|
|
21
45
|
* @param index The index of the comment to edit (0-based)
|
|
22
46
|
* @param newComment The new comment text
|
|
23
47
|
* @throws Error if index is invalid
|
|
24
48
|
*/
|
|
25
49
|
static editComment(component, index, newComment) {
|
|
26
|
-
var _a;
|
|
27
|
-
if (
|
|
28
|
-
|
|
50
|
+
var _a, _b;
|
|
51
|
+
if (this.isSelectQuery(component)) {
|
|
52
|
+
const selectQuery = component;
|
|
53
|
+
if (!selectQuery.headerComments || index < 0 || index >= selectQuery.headerComments.length) {
|
|
54
|
+
throw new Error(`Invalid comment index: ${index}. Component has ${((_a = selectQuery.headerComments) === null || _a === void 0 ? void 0 : _a.length) || 0} comments.`);
|
|
55
|
+
}
|
|
56
|
+
selectQuery.headerComments[index] = newComment;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
if (!component.comments || index < 0 || index >= component.comments.length) {
|
|
60
|
+
throw new Error(`Invalid comment index: ${index}. Component has ${((_b = component.comments) === null || _b === void 0 ? void 0 : _b.length) || 0} comments.`);
|
|
61
|
+
}
|
|
62
|
+
component.comments[index] = newComment;
|
|
29
63
|
}
|
|
30
|
-
component.comments[index] = newComment;
|
|
31
64
|
}
|
|
32
65
|
/**
|
|
33
66
|
* Delete a comment by index
|
|
67
|
+
* For SelectQuery components, deletes from headerComments
|
|
34
68
|
* @param component The SQL component containing the comment
|
|
35
69
|
* @param index The index of the comment to delete (0-based)
|
|
36
70
|
* @throws Error if index is invalid
|
|
37
71
|
*/
|
|
38
72
|
static deleteComment(component, index) {
|
|
39
|
-
var _a;
|
|
40
|
-
if (
|
|
41
|
-
|
|
73
|
+
var _a, _b;
|
|
74
|
+
if (this.isSelectQuery(component)) {
|
|
75
|
+
const selectQuery = component;
|
|
76
|
+
if (!selectQuery.headerComments || index < 0 || index >= selectQuery.headerComments.length) {
|
|
77
|
+
throw new Error(`Invalid comment index: ${index}. Component has ${((_a = selectQuery.headerComments) === null || _a === void 0 ? void 0 : _a.length) || 0} comments.`);
|
|
78
|
+
}
|
|
79
|
+
selectQuery.headerComments.splice(index, 1);
|
|
80
|
+
if (selectQuery.headerComments.length === 0) {
|
|
81
|
+
selectQuery.headerComments = null;
|
|
82
|
+
}
|
|
42
83
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
84
|
+
else {
|
|
85
|
+
if (!component.comments || index < 0 || index >= component.comments.length) {
|
|
86
|
+
throw new Error(`Invalid comment index: ${index}. Component has ${((_b = component.comments) === null || _b === void 0 ? void 0 : _b.length) || 0} comments.`);
|
|
87
|
+
}
|
|
88
|
+
component.comments.splice(index, 1);
|
|
89
|
+
if (component.comments.length === 0) {
|
|
90
|
+
component.comments = null;
|
|
91
|
+
}
|
|
46
92
|
}
|
|
47
93
|
}
|
|
48
94
|
/**
|
|
@@ -50,14 +96,25 @@ export class CommentEditor {
|
|
|
50
96
|
* @param component The SQL component to clear comments from
|
|
51
97
|
*/
|
|
52
98
|
static deleteAllComments(component) {
|
|
53
|
-
component
|
|
99
|
+
if (this.isSelectQuery(component)) {
|
|
100
|
+
const selectQuery = component;
|
|
101
|
+
selectQuery.headerComments = null;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
component.comments = null;
|
|
105
|
+
}
|
|
54
106
|
}
|
|
55
107
|
/**
|
|
56
108
|
* Get all comments from a component
|
|
109
|
+
* For SelectQuery components, returns headerComments instead of regular comments
|
|
57
110
|
* @param component The SQL component to get comments from
|
|
58
111
|
* @returns Array of comment strings (empty array if no comments)
|
|
59
112
|
*/
|
|
60
113
|
static getComments(component) {
|
|
114
|
+
if (this.isSelectQuery(component)) {
|
|
115
|
+
const selectQuery = component;
|
|
116
|
+
return selectQuery.headerComments || [];
|
|
117
|
+
}
|
|
61
118
|
return component.comments || [];
|
|
62
119
|
}
|
|
63
120
|
/**
|
|
@@ -72,10 +129,25 @@ export class CommentEditor {
|
|
|
72
129
|
const searchTerm = caseSensitive ? searchText : searchText.toLowerCase();
|
|
73
130
|
const traverse = (component) => {
|
|
74
131
|
if (component && component instanceof SqlComponent) {
|
|
132
|
+
let hasMatchingComment = false;
|
|
133
|
+
// Check regular comments
|
|
75
134
|
if (component.comments && component.comments.some(c => {
|
|
76
135
|
const commentText = caseSensitive ? c : c.toLowerCase();
|
|
77
136
|
return commentText.includes(searchTerm);
|
|
78
137
|
})) {
|
|
138
|
+
hasMatchingComment = true;
|
|
139
|
+
}
|
|
140
|
+
// Check headerComments for SelectQuery components
|
|
141
|
+
if (this.isSelectQuery(component)) {
|
|
142
|
+
const selectQuery = component;
|
|
143
|
+
if (selectQuery.headerComments && selectQuery.headerComments.some(c => {
|
|
144
|
+
const commentText = caseSensitive ? c : c.toLowerCase();
|
|
145
|
+
return commentText.includes(searchTerm);
|
|
146
|
+
})) {
|
|
147
|
+
hasMatchingComment = true;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (hasMatchingComment) {
|
|
79
151
|
results.push(component);
|
|
80
152
|
}
|
|
81
153
|
}
|
|
@@ -105,15 +177,34 @@ export class CommentEditor {
|
|
|
105
177
|
static replaceInComments(root, searchText, replaceText, caseSensitive = false) {
|
|
106
178
|
let replacementCount = 0;
|
|
107
179
|
const traverse = (component) => {
|
|
108
|
-
if (component && component instanceof SqlComponent
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
180
|
+
if (component && component instanceof SqlComponent) {
|
|
181
|
+
// Handle regular comments
|
|
182
|
+
if (component.comments) {
|
|
183
|
+
for (let i = 0; i < component.comments.length; i++) {
|
|
184
|
+
const originalComment = component.comments[i];
|
|
185
|
+
const flags = caseSensitive ? 'g' : 'gi';
|
|
186
|
+
const regex = new RegExp(searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), flags);
|
|
187
|
+
const newComment = originalComment.replace(regex, replaceText);
|
|
188
|
+
if (newComment !== originalComment) {
|
|
189
|
+
component.comments[i] = newComment;
|
|
190
|
+
replacementCount++;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Handle headerComments for SelectQuery components
|
|
195
|
+
if (this.isSelectQuery(component)) {
|
|
196
|
+
const selectQuery = component;
|
|
197
|
+
if (selectQuery.headerComments) {
|
|
198
|
+
for (let i = 0; i < selectQuery.headerComments.length; i++) {
|
|
199
|
+
const originalComment = selectQuery.headerComments[i];
|
|
200
|
+
const flags = caseSensitive ? 'g' : 'gi';
|
|
201
|
+
const regex = new RegExp(searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), flags);
|
|
202
|
+
const newComment = originalComment.replace(regex, replaceText);
|
|
203
|
+
if (newComment !== originalComment) {
|
|
204
|
+
selectQuery.headerComments[i] = newComment;
|
|
205
|
+
replacementCount++;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
117
208
|
}
|
|
118
209
|
}
|
|
119
210
|
}
|
|
@@ -140,8 +231,17 @@ export class CommentEditor {
|
|
|
140
231
|
static countComments(root) {
|
|
141
232
|
let count = 0;
|
|
142
233
|
const traverse = (component) => {
|
|
143
|
-
if (component && component instanceof SqlComponent
|
|
144
|
-
|
|
234
|
+
if (component && component instanceof SqlComponent) {
|
|
235
|
+
if (component.comments) {
|
|
236
|
+
count += component.comments.length;
|
|
237
|
+
}
|
|
238
|
+
// Count headerComments for SelectQuery components
|
|
239
|
+
if (this.isSelectQuery(component)) {
|
|
240
|
+
const selectQuery = component;
|
|
241
|
+
if (selectQuery.headerComments) {
|
|
242
|
+
count += selectQuery.headerComments.length;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
145
245
|
}
|
|
146
246
|
// Traverse all properties recursively
|
|
147
247
|
for (const key in component) {
|
|
@@ -166,10 +266,22 @@ export class CommentEditor {
|
|
|
166
266
|
static getAllComments(root) {
|
|
167
267
|
const results = [];
|
|
168
268
|
const traverse = (component) => {
|
|
169
|
-
if (component && component instanceof SqlComponent
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
269
|
+
if (component && component instanceof SqlComponent) {
|
|
270
|
+
// Add regular comments
|
|
271
|
+
if (component.comments) {
|
|
272
|
+
component.comments.forEach((comment, index) => {
|
|
273
|
+
results.push({ comment, component, index });
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
// Add headerComments for SelectQuery components
|
|
277
|
+
if (this.isSelectQuery(component)) {
|
|
278
|
+
const selectQuery = component;
|
|
279
|
+
if (selectQuery.headerComments) {
|
|
280
|
+
selectQuery.headerComments.forEach((comment, index) => {
|
|
281
|
+
results.push({ comment, component, index });
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
}
|
|
173
285
|
}
|
|
174
286
|
// Traverse all properties recursively
|
|
175
287
|
for (const key in component) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentEditor.js","sourceRoot":"","sources":["../../../../src/utils/CommentEditor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"CommentEditor.js","sourceRoot":"","sources":["../../../../src/utils/CommentEditor.ts"],"names":[],"mappings":"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"}
|