rawsql-ts 0.11.7-beta → 0.11.9-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/README.md +82 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +23 -15
- package/dist/esm/index.min.js.map +4 -4
- package/dist/esm/src/index.d.ts +1 -0
- package/dist/esm/src/index.js +1 -0
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/models/BinarySelectQuery.d.ts +2 -2
- package/dist/esm/src/models/BinarySelectQuery.js.map +1 -1
- package/dist/esm/src/models/SelectQuery.d.ts +2 -1
- package/dist/esm/src/models/SelectQuery.js.map +1 -1
- package/dist/esm/src/models/SimpleSelectQuery.d.ts +2 -2
- package/dist/esm/src/models/SimpleSelectQuery.js.map +1 -1
- package/dist/esm/src/models/ValueComponent.d.ts +19 -4
- package/dist/esm/src/models/ValueComponent.js +19 -1
- package/dist/esm/src/models/ValueComponent.js.map +1 -1
- package/dist/esm/src/models/ValuesQuery.d.ts +2 -1
- package/dist/esm/src/models/ValuesQuery.js.map +1 -1
- package/dist/esm/src/parsers/CommonTableParser.js +16 -0
- package/dist/esm/src/parsers/CommonTableParser.js.map +1 -1
- package/dist/esm/src/parsers/LiteralParser.js +15 -5
- package/dist/esm/src/parsers/LiteralParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +2 -0
- package/dist/esm/src/parsers/SqlPrintTokenParser.js +42 -2
- package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/esm/src/parsers/ValueParser.d.ts +13 -0
- package/dist/esm/src/parsers/ValueParser.js +134 -1
- package/dist/esm/src/parsers/ValueParser.js.map +1 -1
- package/dist/esm/src/parsers/WithClauseParser.js +8 -2
- package/dist/esm/src/parsers/WithClauseParser.js.map +1 -1
- package/dist/esm/src/reporting/models/DataFlowEdge.d.ts +33 -0
- package/dist/esm/src/reporting/models/DataFlowEdge.js +53 -0
- package/dist/esm/src/reporting/models/DataFlowEdge.js.map +1 -0
- package/dist/esm/src/reporting/models/DataFlowGraph.d.ts +49 -0
- package/dist/esm/src/reporting/models/DataFlowGraph.js +156 -0
- package/dist/esm/src/reporting/models/DataFlowGraph.js.map +1 -0
- package/dist/esm/src/reporting/models/DataFlowNode.d.ts +67 -0
- package/dist/esm/src/reporting/models/DataFlowNode.js +116 -0
- package/dist/esm/src/reporting/models/DataFlowNode.js.map +1 -0
- package/dist/esm/src/reporting/services/CTEHandler.d.ts +17 -0
- package/dist/esm/src/reporting/services/CTEHandler.js +54 -0
- package/dist/esm/src/reporting/services/CTEHandler.js.map +1 -0
- package/dist/esm/src/reporting/services/DataSourceHandler.d.ts +25 -0
- package/dist/esm/src/reporting/services/DataSourceHandler.js +91 -0
- package/dist/esm/src/reporting/services/DataSourceHandler.js.map +1 -0
- package/dist/esm/src/reporting/services/JoinHandler.d.ts +32 -0
- package/dist/esm/src/reporting/services/JoinHandler.js +80 -0
- package/dist/esm/src/reporting/services/JoinHandler.js.map +1 -0
- package/dist/esm/src/reporting/services/ProcessHandler.d.ts +55 -0
- package/dist/esm/src/reporting/services/ProcessHandler.js +177 -0
- package/dist/esm/src/reporting/services/ProcessHandler.js.map +1 -0
- package/dist/esm/src/tokenReaders/EscapedIdentifierTokenReader.d.ts +5 -0
- package/dist/esm/src/tokenReaders/EscapedIdentifierTokenReader.js +37 -1
- package/dist/esm/src/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -1
- package/dist/esm/src/tokenReaders/LiteralTokenReader.d.ts +16 -0
- package/dist/esm/src/tokenReaders/LiteralTokenReader.js +119 -0
- package/dist/esm/src/tokenReaders/LiteralTokenReader.js.map +1 -1
- package/dist/esm/src/tokenReaders/OperatorTokenReader.js +4 -0
- package/dist/esm/src/tokenReaders/OperatorTokenReader.js.map +1 -1
- package/dist/esm/src/tokenReaders/ParameterTokenReader.d.ts +14 -0
- package/dist/esm/src/tokenReaders/ParameterTokenReader.js +126 -0
- package/dist/esm/src/tokenReaders/ParameterTokenReader.js.map +1 -1
- package/dist/esm/src/transformers/DynamicQueryBuilder.d.ts +28 -2
- package/dist/esm/src/transformers/DynamicQueryBuilder.js.map +1 -1
- package/dist/esm/src/transformers/QueryFlowDiagramGenerator.d.ts +37 -0
- package/dist/esm/src/transformers/QueryFlowDiagramGenerator.js +143 -0
- package/dist/esm/src/transformers/QueryFlowDiagramGenerator.js.map +1 -0
- package/dist/esm/src/transformers/SqlParamInjector.d.ts +11 -0
- package/dist/esm/src/transformers/SqlParamInjector.js.map +1 -1
- package/dist/esm/src/transformers/TypeTransformationPostProcessor.d.ts +5 -5
- package/dist/esm/src/transformers/TypeTransformationPostProcessor.js +20 -8
- package/dist/esm/src/transformers/TypeTransformationPostProcessor.js.map +1 -1
- package/dist/esm/src/utils/OperatorPrecedence.js +23 -1
- package/dist/esm/src/utils/OperatorPrecedence.js.map +1 -1
- package/dist/esm/src/utils/charLookupTable.js +4 -4
- package/dist/esm/src/utils/charLookupTable.js.map +1 -1
- package/dist/esm/src/utils/stringUtils.js +17 -1
- package/dist/esm/src/utils/stringUtils.js.map +1 -1
- package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/index.min.js +23 -15
- package/dist/index.min.js.map +4 -4
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/BinarySelectQuery.d.ts +2 -2
- package/dist/src/models/BinarySelectQuery.js.map +1 -1
- package/dist/src/models/SelectQuery.d.ts +2 -1
- package/dist/src/models/SelectQuery.js.map +1 -1
- package/dist/src/models/SimpleSelectQuery.d.ts +2 -2
- package/dist/src/models/SimpleSelectQuery.js.map +1 -1
- package/dist/src/models/ValueComponent.d.ts +19 -4
- package/dist/src/models/ValueComponent.js +22 -2
- package/dist/src/models/ValueComponent.js.map +1 -1
- package/dist/src/models/ValuesQuery.d.ts +2 -1
- package/dist/src/models/ValuesQuery.js.map +1 -1
- package/dist/src/parsers/CommonTableParser.js +16 -0
- package/dist/src/parsers/CommonTableParser.js.map +1 -1
- package/dist/src/parsers/LiteralParser.js +15 -5
- package/dist/src/parsers/LiteralParser.js.map +1 -1
- package/dist/src/parsers/SqlPrintTokenParser.d.ts +2 -0
- package/dist/src/parsers/SqlPrintTokenParser.js +41 -1
- package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/src/parsers/ValueParser.d.ts +13 -0
- package/dist/src/parsers/ValueParser.js +133 -0
- package/dist/src/parsers/ValueParser.js.map +1 -1
- package/dist/src/parsers/WithClauseParser.js +8 -2
- package/dist/src/parsers/WithClauseParser.js.map +1 -1
- package/dist/src/reporting/models/DataFlowEdge.d.ts +33 -0
- package/dist/src/reporting/models/DataFlowEdge.js +58 -0
- package/dist/src/reporting/models/DataFlowEdge.js.map +1 -0
- package/dist/src/reporting/models/DataFlowGraph.d.ts +49 -0
- package/dist/src/reporting/models/DataFlowGraph.js +160 -0
- package/dist/src/reporting/models/DataFlowGraph.js.map +1 -0
- package/dist/src/reporting/models/DataFlowNode.d.ts +67 -0
- package/dist/src/reporting/models/DataFlowNode.js +124 -0
- package/dist/src/reporting/models/DataFlowNode.js.map +1 -0
- package/dist/src/reporting/services/CTEHandler.d.ts +17 -0
- package/dist/src/reporting/services/CTEHandler.js +58 -0
- package/dist/src/reporting/services/CTEHandler.js.map +1 -0
- package/dist/src/reporting/services/DataSourceHandler.d.ts +25 -0
- package/dist/src/reporting/services/DataSourceHandler.js +95 -0
- package/dist/src/reporting/services/DataSourceHandler.js.map +1 -0
- package/dist/src/reporting/services/JoinHandler.d.ts +32 -0
- package/dist/src/reporting/services/JoinHandler.js +84 -0
- package/dist/src/reporting/services/JoinHandler.js.map +1 -0
- package/dist/src/reporting/services/ProcessHandler.d.ts +55 -0
- package/dist/src/reporting/services/ProcessHandler.js +181 -0
- package/dist/src/reporting/services/ProcessHandler.js.map +1 -0
- package/dist/src/tokenReaders/EscapedIdentifierTokenReader.d.ts +5 -0
- package/dist/src/tokenReaders/EscapedIdentifierTokenReader.js +37 -1
- package/dist/src/tokenReaders/EscapedIdentifierTokenReader.js.map +1 -1
- package/dist/src/tokenReaders/LiteralTokenReader.d.ts +16 -0
- package/dist/src/tokenReaders/LiteralTokenReader.js +119 -0
- package/dist/src/tokenReaders/LiteralTokenReader.js.map +1 -1
- package/dist/src/tokenReaders/OperatorTokenReader.js +4 -0
- package/dist/src/tokenReaders/OperatorTokenReader.js.map +1 -1
- package/dist/src/tokenReaders/ParameterTokenReader.d.ts +14 -0
- package/dist/src/tokenReaders/ParameterTokenReader.js +126 -0
- package/dist/src/tokenReaders/ParameterTokenReader.js.map +1 -1
- package/dist/src/transformers/DynamicQueryBuilder.d.ts +28 -2
- package/dist/src/transformers/DynamicQueryBuilder.js.map +1 -1
- package/dist/src/transformers/QueryFlowDiagramGenerator.d.ts +37 -0
- package/dist/src/transformers/QueryFlowDiagramGenerator.js +147 -0
- package/dist/src/transformers/QueryFlowDiagramGenerator.js.map +1 -0
- package/dist/src/transformers/SqlParamInjector.d.ts +11 -0
- package/dist/src/transformers/SqlParamInjector.js.map +1 -1
- package/dist/src/transformers/TypeTransformationPostProcessor.d.ts +5 -5
- package/dist/src/transformers/TypeTransformationPostProcessor.js +20 -8
- package/dist/src/transformers/TypeTransformationPostProcessor.js.map +1 -1
- package/dist/src/utils/OperatorPrecedence.js +23 -1
- package/dist/src/utils/OperatorPrecedence.js.map +1 -1
- package/dist/src/utils/charLookupTable.js +4 -4
- package/dist/src/utils/charLookupTable.js.map +1 -1
- package/dist/src/utils/stringUtils.js +17 -1
- package/dist/src/utils/stringUtils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -246,7 +246,7 @@ For SelectQueryParser details, see the [SelectQueryParser Usage Guide](../../doc
|
|
|
246
246
|
|
|
247
247
|
## SqlFormatter Features
|
|
248
248
|
|
|
249
|
-
The `SqlFormatter` class is the recommended way to format SQL queries, offering advanced capabilities like indentation, keyword casing,
|
|
249
|
+
The `SqlFormatter` class is the recommended way to format SQL queries, offering advanced capabilities like indentation, keyword casing, multi-line formatting, and comprehensive comment preservation.
|
|
250
250
|
It also allows for detailed style customization. For example, you can define your own formatting rules:
|
|
251
251
|
|
|
252
252
|
```typescript
|
|
@@ -286,6 +286,43 @@ order by
|
|
|
286
286
|
*/
|
|
287
287
|
```
|
|
288
288
|
|
|
289
|
+
### Comment Handling
|
|
290
|
+
|
|
291
|
+
SqlFormatter provides comprehensive comment parsing and export capabilities:
|
|
292
|
+
|
|
293
|
+
```typescript
|
|
294
|
+
import { SqlFormatter } from 'rawsql-ts';
|
|
295
|
+
|
|
296
|
+
// Enable comment export (disabled by default for backward compatibility)
|
|
297
|
+
const formatter = new SqlFormatter({
|
|
298
|
+
exportComment: true,
|
|
299
|
+
strictCommentPlacement: true // Only export comments from clause-level keywords
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
const sqlWithComments = `
|
|
303
|
+
-- This is a query to get active users
|
|
304
|
+
SELECT
|
|
305
|
+
u.id,
|
|
306
|
+
u.name /* User's full name */
|
|
307
|
+
FROM users u
|
|
308
|
+
WHERE u.active = true -- Only active users
|
|
309
|
+
`;
|
|
310
|
+
|
|
311
|
+
const query = SelectQueryParser.parse(sqlWithComments);
|
|
312
|
+
const { formattedSql } = formatter.format(query);
|
|
313
|
+
|
|
314
|
+
console.log(formattedSql);
|
|
315
|
+
// Output includes comments preserved as block comments for SQL safety
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
**Comment Features:**
|
|
319
|
+
- **Full Comment Parsing**: Supports both `--` line comments and `/* */` block comments
|
|
320
|
+
- **AST Preservation**: Comments are stored in the Abstract Syntax Tree and preserved throughout transformations
|
|
321
|
+
- **Safe Export**: Line comments are automatically converted to block comments during export to prevent SQL structure issues
|
|
322
|
+
- **Configurable Export**: Enable/disable comment export with `exportComment` option
|
|
323
|
+
- **Comment Editing API**: Programmatically add, edit, delete, and search comments using the `CommentEditor` class
|
|
324
|
+
- **Clause Association**: Comments can be associated with specific SQL clauses and keywords
|
|
325
|
+
|
|
289
326
|
For more details, see the [SqlFormatter Usage Guide](../../docs/usage-guides/class-SqlFormatter-usage-guide.md).
|
|
290
327
|
|
|
291
328
|
---
|
|
@@ -492,6 +529,50 @@ For more details, see the [DynamicQueryBuilder Usage Guide](../../docs/usage-gui
|
|
|
492
529
|
|
|
493
530
|
---
|
|
494
531
|
|
|
532
|
+
## Query Flow Diagram Generation
|
|
533
|
+
|
|
534
|
+
Generate Mermaid flow diagrams from SQL queries to visualize data flow and query execution order.
|
|
535
|
+
|
|
536
|
+
```typescript
|
|
537
|
+
import { QueryFlowDiagramGenerator } from 'rawsql-ts';
|
|
538
|
+
|
|
539
|
+
const sql = `
|
|
540
|
+
WITH user_stats AS (
|
|
541
|
+
SELECT user_id, COUNT(*) as post_count
|
|
542
|
+
FROM posts GROUP BY user_id
|
|
543
|
+
)
|
|
544
|
+
SELECT u.name, us.post_count
|
|
545
|
+
FROM users u
|
|
546
|
+
LEFT JOIN user_stats us ON u.id = us.user_id
|
|
547
|
+
`;
|
|
548
|
+
|
|
549
|
+
const mermaid = QueryFlowDiagramGenerator.generate(sql);
|
|
550
|
+
console.log(mermaid);
|
|
551
|
+
// Output: Mermaid flowchart showing data flow through SQL operations
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
### Symbol Reference
|
|
555
|
+
|
|
556
|
+
| SQL Element | Shape | Example |
|
|
557
|
+
|-------------|-------|---------|
|
|
558
|
+
| Table/CTE/Subquery | Cylinder | `table_users[(users)]`, `cte_stats[(CTE:user_stats)]` |
|
|
559
|
+
| SELECT/WHERE/GROUP BY | Hexagon | `{{SELECT}}`, `{{WHERE}}` |
|
|
560
|
+
| JOIN/UNION | Diamond | `{LEFT JOIN}`, `{UNION ALL}` |
|
|
561
|
+
|
|
562
|
+
Example output for CTE query:
|
|
563
|
+
```mermaid
|
|
564
|
+
flowchart TD
|
|
565
|
+
table_posts[(posts)] --> cte_user_stats_group_by{{GROUP BY}}
|
|
566
|
+
cte_user_stats_group_by --> cte_user_stats_select{{SELECT}}
|
|
567
|
+
cte_user_stats_select --> cte_user_stats[(CTE:user_stats)]
|
|
568
|
+
table_users[(users)] -->|NOT NULL| join_1{LEFT JOIN}
|
|
569
|
+
cte_user_stats -->|NULLABLE| join_1
|
|
570
|
+
join_1 --> main_select{{SELECT}}
|
|
571
|
+
main_select --> main_output(Final Result)
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
---
|
|
575
|
+
|
|
495
576
|
## PostgresJsonQueryBuilder Features
|
|
496
577
|
|
|
497
578
|
The `PostgresJsonQueryBuilder` class transforms relational SQL queries into PostgreSQL JSON queries that return hierarchical JSON structures. It automatically handles complex relationships between entities and generates optimized Common Table Expressions (CTEs) for efficient JSON aggregation, making it perfect for building APIs, reports, and data exports.
|
package/dist/esm/index.js
CHANGED
|
@@ -27,6 +27,7 @@ export { unifyJsonMapping } from './transformers/JsonMappingUnifier';
|
|
|
27
27
|
export * from './transformers/UpstreamSelectQueryFinder';
|
|
28
28
|
export * from './transformers/TypeTransformationPostProcessor';
|
|
29
29
|
export * from './transformers/SchemaCollector';
|
|
30
|
+
export * from './transformers/QueryFlowDiagramGenerator';
|
|
30
31
|
export * from './transformers/SqlParamInjector';
|
|
31
32
|
export * from './transformers/SqlSortInjector';
|
|
32
33
|
export * from './transformers/SqlPaginationInjector';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAElC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC,CAAC,0BAA0B;AACvE,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,OAAO,EAEH,yBAAyB,EACzB,0BAA0B,EAK7B,MAAM,uCAAuC,CAAC;AAC/C,OAAO;AACH,6DAA6D;AAC7D,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACjB,MAAM,mCAAmC,CAAC;AAE3C,qEAAqE;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,cAAc,0CAA0C,CAAC;AACzD,cAAc,gDAAgD,CAAC;AAE/D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAGtC,oEAAoE"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAE5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAElC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC,CAAC,0BAA0B;AACvE,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,OAAO,EAEH,yBAAyB,EACzB,0BAA0B,EAK7B,MAAM,uCAAuC,CAAC;AAC/C,OAAO;AACH,6DAA6D;AAC7D,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACjB,MAAM,mCAAmC,CAAC;AAE3C,qEAAqE;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,cAAc,0CAA0C,CAAC;AACzD,cAAc,gDAAgD,CAAC;AAE/D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0CAA0C,CAAC;AACzD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAGtC,oEAAoE"}
|