rawsql-ts 0.5.0-beta → 0.7.0-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 +152 -121
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/models/Clause.js +185 -19
- package/dist/esm/models/Clause.js.map +1 -1
- package/dist/esm/models/CreateTableQuery.js +12 -22
- package/dist/esm/models/CreateTableQuery.js.map +1 -1
- package/dist/esm/models/InsertQuery.js +2 -9
- package/dist/esm/models/InsertQuery.js.map +1 -1
- package/dist/esm/models/KeywordTrie.js +2 -0
- package/dist/esm/models/KeywordTrie.js.map +1 -1
- package/dist/esm/models/SimpleSelectQuery.js +17 -15
- package/dist/esm/models/SimpleSelectQuery.js.map +1 -1
- package/dist/esm/models/SqlPrintToken.js +94 -0
- package/dist/esm/models/SqlPrintToken.js.map +1 -0
- package/dist/esm/models/UpdateQuery.js +25 -0
- package/dist/esm/models/UpdateQuery.js.map +1 -0
- package/dist/esm/models/ValueComponent.js +105 -19
- package/dist/esm/models/ValueComponent.js.map +1 -1
- package/dist/esm/parsers/FetchClauseParser.js +84 -0
- package/dist/esm/parsers/FetchClauseParser.js.map +1 -0
- package/dist/esm/parsers/FullNameParser.js +94 -0
- package/dist/esm/parsers/FullNameParser.js.map +1 -0
- package/dist/esm/parsers/FunctionExpressionParser.js +33 -32
- package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/esm/parsers/IdentifierDecorator.js +13 -0
- package/dist/esm/parsers/IdentifierDecorator.js.map +1 -0
- package/dist/esm/parsers/IdentifierParser.js +5 -30
- package/dist/esm/parsers/IdentifierParser.js.map +1 -1
- package/dist/esm/parsers/InsertQueryParser.js +7 -28
- package/dist/esm/parsers/InsertQueryParser.js.map +1 -1
- package/dist/esm/parsers/JoinClauseParser.js +13 -35
- package/dist/esm/parsers/JoinClauseParser.js.map +1 -1
- package/dist/esm/parsers/JoinOnClauseParser.js +17 -0
- package/dist/esm/parsers/JoinOnClauseParser.js.map +1 -0
- package/dist/esm/parsers/JoinUsingClauseParser.js +19 -0
- package/dist/esm/parsers/JoinUsingClauseParser.js.map +1 -0
- package/dist/esm/parsers/LimitClauseParser.js +1 -13
- package/dist/esm/parsers/LimitClauseParser.js.map +1 -1
- package/dist/esm/parsers/OffsetClauseParser.js +38 -0
- package/dist/esm/parsers/OffsetClauseParser.js.map +1 -0
- package/dist/esm/parsers/ParameterDecorator.js +36 -0
- package/dist/esm/parsers/ParameterDecorator.js.map +1 -0
- package/dist/esm/parsers/ReturningClauseParser.js +31 -0
- package/dist/esm/parsers/ReturningClauseParser.js.map +1 -0
- package/dist/esm/parsers/SelectClauseParser.js +25 -2
- package/dist/esm/parsers/SelectClauseParser.js.map +1 -1
- package/dist/esm/parsers/SelectQueryParser.js +40 -13
- package/dist/esm/parsers/SelectQueryParser.js.map +1 -1
- package/dist/esm/parsers/SetClauseParser.js +39 -0
- package/dist/esm/parsers/SetClauseParser.js.map +1 -0
- package/dist/esm/parsers/SourceExpressionParser.js +19 -0
- package/dist/esm/parsers/SourceExpressionParser.js.map +1 -1
- package/dist/esm/parsers/SourceParser.js +31 -19
- package/dist/esm/parsers/SourceParser.js.map +1 -1
- package/dist/esm/parsers/SqlPrintTokenParser.js +1058 -0
- package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -0
- package/dist/esm/parsers/UpdateClauseParser.js +17 -0
- package/dist/esm/parsers/UpdateClauseParser.js.map +1 -0
- package/dist/esm/parsers/UpdateQueryParser.js +84 -0
- package/dist/esm/parsers/UpdateQueryParser.js.map +1 -0
- package/dist/esm/parsers/ValueParser.js +13 -11
- package/dist/esm/parsers/ValueParser.js.map +1 -1
- package/dist/esm/parsers/WindowClauseParser.js +27 -15
- package/dist/esm/parsers/WindowClauseParser.js.map +1 -1
- package/dist/esm/tokenReaders/BaseTokenReader.js +3 -3
- package/dist/esm/tokenReaders/BaseTokenReader.js.map +1 -1
- package/dist/esm/tokenReaders/CommandTokenReader.js +8 -2
- package/dist/esm/tokenReaders/CommandTokenReader.js.map +1 -1
- package/dist/esm/transformers/CTECollector.js +9 -10
- package/dist/esm/transformers/CTECollector.js.map +1 -1
- package/dist/esm/transformers/CTEDisabler.js +12 -11
- package/dist/esm/transformers/CTEDisabler.js.map +1 -1
- package/dist/esm/transformers/CTEInjector.js +2 -2
- package/dist/esm/transformers/Formatter.js +19 -569
- package/dist/esm/transformers/Formatter.js.map +1 -1
- package/dist/esm/transformers/LinePrinter.js +81 -0
- package/dist/esm/transformers/LinePrinter.js.map +1 -0
- package/dist/esm/transformers/QueryBuilder.js +62 -24
- package/dist/esm/transformers/QueryBuilder.js.map +1 -1
- package/dist/esm/transformers/SelectValueCollector.js +4 -4
- package/dist/esm/transformers/SelectableColumnCollector.js +26 -9
- package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -1
- package/dist/esm/transformers/SqlFormatter.js +31 -0
- package/dist/esm/transformers/SqlFormatter.js.map +1 -0
- package/dist/esm/transformers/SqlOutputToken.js +9 -0
- package/dist/esm/transformers/SqlOutputToken.js.map +1 -0
- package/dist/esm/transformers/SqlPrinter.js +144 -0
- package/dist/esm/transformers/SqlPrinter.js.map +1 -0
- package/dist/esm/transformers/TableSourceCollector.js +32 -16
- package/dist/esm/transformers/TableSourceCollector.js.map +1 -1
- package/dist/esm/transformers/UpstreamSelectQueryFinder.js +1 -1
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/models/Clause.d.ts +119 -14
- package/dist/esm/types/models/InsertQuery.d.ts +4 -9
- package/dist/esm/types/models/SimpleSelectQuery.d.ts +20 -5
- package/dist/esm/types/models/SqlPrintToken.d.ts +102 -0
- package/dist/esm/types/models/UpdateQuery.d.ts +31 -0
- package/dist/esm/types/models/ValueComponent.d.ts +45 -8
- package/dist/esm/types/parsers/FetchClauseParser.d.ts +24 -0
- package/dist/esm/types/parsers/FullNameParser.d.ts +27 -0
- package/dist/esm/types/parsers/IdentifierDecorator.d.ts +9 -0
- package/dist/esm/types/parsers/InsertQueryParser.d.ts +0 -1
- package/dist/esm/types/parsers/JoinClauseParser.d.ts +0 -2
- package/dist/esm/types/parsers/JoinOnClauseParser.d.ts +8 -0
- package/dist/esm/types/parsers/JoinUsingClauseParser.d.ts +8 -0
- package/dist/esm/types/parsers/OffsetClauseParser.d.ts +9 -0
- package/dist/esm/types/parsers/ParameterDecorator.d.ts +20 -0
- package/dist/esm/types/parsers/ReturningClauseParser.d.ts +12 -0
- package/dist/esm/types/parsers/SelectClauseParser.d.ts +19 -2
- package/dist/esm/types/parsers/SetClauseParser.d.ts +11 -0
- package/dist/esm/types/parsers/SourceExpressionParser.d.ts +8 -0
- package/dist/esm/types/parsers/SourceParser.d.ts +14 -0
- package/dist/esm/types/parsers/SqlPrintTokenParser.d.ts +144 -0
- package/dist/esm/types/parsers/UpdateClauseParser.d.ts +15 -0
- package/dist/esm/types/parsers/UpdateQueryParser.d.ts +16 -0
- package/dist/esm/types/parsers/WindowClauseParser.d.ts +3 -3
- package/dist/esm/types/transformers/Formatter.d.ts +8 -99
- package/dist/esm/types/transformers/LinePrinter.d.ts +41 -0
- package/dist/esm/types/transformers/QueryBuilder.d.ts +9 -0
- package/dist/esm/types/transformers/SelectableColumnCollector.d.ts +2 -0
- package/dist/esm/types/transformers/SqlFormatter.d.ts +40 -0
- package/dist/esm/types/transformers/SqlOutputToken.d.ts +6 -0
- package/dist/esm/types/transformers/SqlPrinter.d.ts +54 -0
- package/dist/esm/types/transformers/TableSourceCollector.d.ts +2 -0
- package/dist/esm/utils/stringUtils.js +17 -0
- package/dist/esm/utils/stringUtils.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/models/Clause.d.ts +119 -14
- package/dist/models/Clause.js +194 -20
- package/dist/models/Clause.js.map +1 -1
- package/dist/models/CreateTableQuery.js +12 -22
- package/dist/models/CreateTableQuery.js.map +1 -1
- package/dist/models/InsertQuery.d.ts +4 -9
- package/dist/models/InsertQuery.js +2 -9
- package/dist/models/InsertQuery.js.map +1 -1
- package/dist/models/KeywordTrie.js +2 -0
- package/dist/models/KeywordTrie.js.map +1 -1
- package/dist/models/SimpleSelectQuery.d.ts +20 -5
- package/dist/models/SimpleSelectQuery.js +17 -15
- package/dist/models/SimpleSelectQuery.js.map +1 -1
- package/dist/models/SqlPrintToken.d.ts +102 -0
- package/dist/models/SqlPrintToken.js +98 -0
- package/dist/models/SqlPrintToken.js.map +1 -0
- package/dist/models/UpdateQuery.d.ts +31 -0
- package/dist/models/UpdateQuery.js +29 -0
- package/dist/models/UpdateQuery.js.map +1 -0
- package/dist/models/ValueComponent.d.ts +45 -8
- package/dist/models/ValueComponent.js +107 -20
- package/dist/models/ValueComponent.js.map +1 -1
- package/dist/parsers/FetchClauseParser.d.ts +24 -0
- package/dist/parsers/FetchClauseParser.js +89 -0
- package/dist/parsers/FetchClauseParser.js.map +1 -0
- package/dist/parsers/FullNameParser.d.ts +27 -0
- package/dist/parsers/FullNameParser.js +98 -0
- package/dist/parsers/FullNameParser.js.map +1 -0
- package/dist/parsers/FunctionExpressionParser.js +32 -31
- package/dist/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/parsers/IdentifierDecorator.d.ts +9 -0
- package/dist/parsers/IdentifierDecorator.js +17 -0
- package/dist/parsers/IdentifierDecorator.js.map +1 -0
- package/dist/parsers/IdentifierParser.js +5 -30
- package/dist/parsers/IdentifierParser.js.map +1 -1
- package/dist/parsers/InsertQueryParser.d.ts +0 -1
- package/dist/parsers/InsertQueryParser.js +7 -28
- package/dist/parsers/InsertQueryParser.js.map +1 -1
- package/dist/parsers/JoinClauseParser.d.ts +0 -2
- package/dist/parsers/JoinClauseParser.js +12 -34
- package/dist/parsers/JoinClauseParser.js.map +1 -1
- package/dist/parsers/JoinOnClauseParser.d.ts +8 -0
- package/dist/parsers/JoinOnClauseParser.js +21 -0
- package/dist/parsers/JoinOnClauseParser.js.map +1 -0
- package/dist/parsers/JoinUsingClauseParser.d.ts +8 -0
- package/dist/parsers/JoinUsingClauseParser.js +23 -0
- package/dist/parsers/JoinUsingClauseParser.js.map +1 -0
- package/dist/parsers/LimitClauseParser.js +1 -13
- package/dist/parsers/LimitClauseParser.js.map +1 -1
- package/dist/parsers/OffsetClauseParser.d.ts +9 -0
- package/dist/parsers/OffsetClauseParser.js +42 -0
- package/dist/parsers/OffsetClauseParser.js.map +1 -0
- package/dist/parsers/ParameterDecorator.d.ts +20 -0
- package/dist/parsers/ParameterDecorator.js +40 -0
- package/dist/parsers/ParameterDecorator.js.map +1 -0
- package/dist/parsers/ReturningClauseParser.d.ts +12 -0
- package/dist/parsers/ReturningClauseParser.js +35 -0
- package/dist/parsers/ReturningClauseParser.js.map +1 -0
- package/dist/parsers/SelectClauseParser.d.ts +19 -2
- package/dist/parsers/SelectClauseParser.js +28 -4
- package/dist/parsers/SelectClauseParser.js.map +1 -1
- package/dist/parsers/SelectQueryParser.js +40 -13
- package/dist/parsers/SelectQueryParser.js.map +1 -1
- package/dist/parsers/SetClauseParser.d.ts +11 -0
- package/dist/parsers/SetClauseParser.js +43 -0
- package/dist/parsers/SetClauseParser.js.map +1 -0
- package/dist/parsers/SourceExpressionParser.d.ts +8 -0
- package/dist/parsers/SourceExpressionParser.js +19 -0
- package/dist/parsers/SourceExpressionParser.js.map +1 -1
- package/dist/parsers/SourceParser.d.ts +14 -0
- package/dist/parsers/SourceParser.js +31 -19
- package/dist/parsers/SourceParser.js.map +1 -1
- package/dist/parsers/SqlPrintTokenParser.d.ts +144 -0
- package/dist/parsers/SqlPrintTokenParser.js +1062 -0
- package/dist/parsers/SqlPrintTokenParser.js.map +1 -0
- package/dist/parsers/UpdateClauseParser.d.ts +15 -0
- package/dist/parsers/UpdateClauseParser.js +21 -0
- package/dist/parsers/UpdateClauseParser.js.map +1 -0
- package/dist/parsers/UpdateQueryParser.d.ts +16 -0
- package/dist/parsers/UpdateQueryParser.js +88 -0
- package/dist/parsers/UpdateQueryParser.js.map +1 -0
- package/dist/parsers/ValueParser.js +13 -11
- package/dist/parsers/ValueParser.js.map +1 -1
- package/dist/parsers/WindowClauseParser.d.ts +3 -3
- package/dist/parsers/WindowClauseParser.js +26 -14
- package/dist/parsers/WindowClauseParser.js.map +1 -1
- package/dist/tokenReaders/BaseTokenReader.js +3 -3
- package/dist/tokenReaders/BaseTokenReader.js.map +1 -1
- package/dist/tokenReaders/CommandTokenReader.js +8 -2
- package/dist/tokenReaders/CommandTokenReader.js.map +1 -1
- package/dist/transformers/CTECollector.js +9 -10
- package/dist/transformers/CTECollector.js.map +1 -1
- package/dist/transformers/CTEDisabler.js +11 -10
- package/dist/transformers/CTEDisabler.js.map +1 -1
- package/dist/transformers/CTEInjector.js +2 -2
- package/dist/transformers/Formatter.d.ts +8 -99
- package/dist/transformers/Formatter.js +20 -570
- package/dist/transformers/Formatter.js.map +1 -1
- package/dist/transformers/LinePrinter.d.ts +41 -0
- package/dist/transformers/LinePrinter.js +86 -0
- package/dist/transformers/LinePrinter.js.map +1 -0
- package/dist/transformers/QueryBuilder.d.ts +9 -0
- package/dist/transformers/QueryBuilder.js +61 -23
- package/dist/transformers/QueryBuilder.js.map +1 -1
- package/dist/transformers/SelectValueCollector.js +4 -4
- package/dist/transformers/SelectableColumnCollector.d.ts +2 -0
- package/dist/transformers/SelectableColumnCollector.js +25 -8
- package/dist/transformers/SelectableColumnCollector.js.map +1 -1
- package/dist/transformers/SqlFormatter.d.ts +40 -0
- package/dist/transformers/SqlFormatter.js +35 -0
- package/dist/transformers/SqlFormatter.js.map +1 -0
- package/dist/transformers/SqlOutputToken.d.ts +6 -0
- package/dist/transformers/SqlOutputToken.js +13 -0
- package/dist/transformers/SqlOutputToken.js.map +1 -0
- package/dist/transformers/SqlPrinter.d.ts +54 -0
- package/dist/transformers/SqlPrinter.js +148 -0
- package/dist/transformers/SqlPrinter.js.map +1 -0
- package/dist/transformers/TableSourceCollector.d.ts +2 -0
- package/dist/transformers/TableSourceCollector.js +30 -14
- package/dist/transformers/TableSourceCollector.js.map +1 -1
- package/dist/transformers/UpstreamSelectQueryFinder.js +1 -1
- package/dist/utils/stringUtils.js +17 -0
- package/dist/utils/stringUtils.js.map +1 -1
- package/package.json +2 -1
- package/dist/esm/types/utils/extractNamespacesAndName.d.ts +0 -5
- package/dist/esm/types/utils/parseEscapedOrDotSeparatedIdentifiers.d.ts +0 -9
- package/dist/esm/utils/extractNamespacesAndName.js +0 -16
- package/dist/esm/utils/extractNamespacesAndName.js.map +0 -1
- package/dist/esm/utils/parseEscapedOrDotSeparatedIdentifiers.js +0 -39
- package/dist/esm/utils/parseEscapedOrDotSeparatedIdentifiers.js.map +0 -1
- package/dist/utils/extractNamespacesAndName.d.ts +0 -5
- package/dist/utils/extractNamespacesAndName.js +0 -18
- package/dist/utils/extractNamespacesAndName.js.map +0 -1
- package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.d.ts +0 -9
- package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.js +0 -42
- package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.js.map +0 -1
package/README.md
CHANGED
@@ -24,8 +24,14 @@ With rawsql-ts, raw SQL can be represented as objects, enabling flexible manipul
|
|
24
24
|
## Features
|
25
25
|
|
26
26
|
- Zero dependencies: fully self-contained and lightweight
|
27
|
-
- High-speed SQL parsing and AST analysis
|
27
|
+
- High-speed SQL parsing and AST analysis (over 3x faster than major libraries)
|
28
28
|
- Rich utilities for SQL structure transformation and analysis
|
29
|
+
- Advanced SQL formatting capabilities, including multi-line formatting and customizable styles
|
30
|
+
|
31
|
+
',borderColor:'rgba(54,162,235,1)',borderWidth:1},{label:'node-sql-parser',data:[0.210,0.223,0.420,0.871],backgroundColor:'rgba(255,206,86,0.8)',borderColor:'rgba(255,206,86,1)',borderWidth:1},{label:'sql-formatter',data:[0.228,0.547,1.057,1.906],backgroundColor:'rgba(255,99,132,0.8)',borderColor:'rgba(255,99,132,1)',borderWidth:1}]},options:{plugins:{legend:{labels:{color:'black'}}},scales:{x:{ticks:{color:'black'}},y:{ticks:{color:'black'}}},backgroundColor:'white'}})
|
32
|
+
|
33
|
+
> [!Note]
|
34
|
+
> The "Mean" column represents the average time taken to process a query. Lower values indicate faster performance. For more details, see the [Benchmark](#benchmarks).
|
29
35
|
|
30
36
|
## ✨ Browser & CDN Ready!
|
31
37
|
|
@@ -58,12 +64,12 @@ npm install rawsql-ts
|
|
58
64
|
## Quick Start
|
59
65
|
|
60
66
|
```typescript
|
61
|
-
import { SelectQueryParser,
|
67
|
+
import { SelectQueryParser, SqlFormatter } from 'rawsql-ts';
|
62
68
|
|
63
69
|
const sql = `SELECT user_id, name FROM users WHERE active = TRUE`;
|
64
70
|
const query = SelectQueryParser.parse(sql);
|
65
|
-
const formatter = new
|
66
|
-
const formattedSql = formatter.format(query);
|
71
|
+
const formatter = new SqlFormatter();
|
72
|
+
const { formattedSql } = formatter.format(query);
|
67
73
|
|
68
74
|
console.log(formattedSql);
|
69
75
|
// => select "user_id", "name" from "users" where "active" = true
|
@@ -73,141 +79,152 @@ console.log(formattedSql);
|
|
73
79
|
|
74
80
|
## Formatter Functionality
|
75
81
|
|
76
|
-
The `
|
82
|
+
The `SqlFormatter` class in rawsql-ts is the recommended way to format SQL queries. It provides advanced SQL formatting capabilities, including support for indentation, keyword casing, and line breaks, making it ideal for generating human-readable SQL.
|
83
|
+
|
84
|
+
> [!Note]
|
85
|
+
> While the older `Formatter` class is still available for backward compatibility, `SqlFormatter` offers enhanced functionality and is the preferred choice for new projects. `SqlFormatter` is available starting from version 0.7.
|
86
|
+
|
87
|
+
### Key Features of SqlFormatter
|
77
88
|
|
78
|
-
|
89
|
+
- **Indentation and Keyword Casing**: Supports customizable indentation and keyword casing (e.g., UPPERCASE, lowercase).
|
90
|
+
- **Preset Configurations**: Includes presets for common SQL dialects (MySQL, PostgreSQL, SQL Server, SQLite) to simplify configuration.
|
91
|
+
- **Customizable Options**: Allows fine-grained control over formatting styles, such as comma placement, parameter styles, and newline characters.
|
92
|
+
- **Parameterized Query Formatting**: Supports anonymous (`?`), indexed (`$1`, `$2`), and named (`:name`, `@name`) parameter styles for compatibility with various database systems.
|
79
93
|
|
80
|
-
|
94
|
+
### Preset Configurations (SqlFormatter.PRESETS)
|
95
|
+
|
96
|
+
The `SqlFormatter` class provides preset configurations for common SQL dialects. Use these presets to quickly format queries without manually specifying options each time.
|
81
97
|
|
82
98
|
```typescript
|
83
|
-
const
|
84
|
-
const
|
85
|
-
|
86
|
-
const sqliteSql = formatter.format(query, Formatter.PRESETS.sqlite);
|
99
|
+
const formatter = new SqlFormatter({ preset: 'mysql' });
|
100
|
+
const { formattedSql } = formatter.format(query);
|
101
|
+
console.log(formattedSql);
|
87
102
|
```
|
88
103
|
|
89
104
|
**Preset Details:**
|
90
|
-
- `
|
91
|
-
- `
|
92
|
-
- `
|
93
|
-
- `
|
105
|
+
- `mysql`: Backtick identifier, `?` parameter, no named parameters
|
106
|
+
- `postgres`: Double quote identifier, `$` parameter, indexed parameters
|
107
|
+
- `sqlserver`: Square bracket identifier, `@` parameter, named parameters
|
108
|
+
- `sqlite`: Double quote identifier, `:` parameter, named parameters
|
94
109
|
|
95
|
-
###
|
110
|
+
### Customizing SqlFormatter
|
96
111
|
|
97
112
|
You can override any preset option as needed. For example, to use variable-style parameters (`${name}`):
|
98
113
|
|
99
114
|
```typescript
|
100
|
-
const
|
101
|
-
|
115
|
+
const formatter = new SqlFormatter({
|
116
|
+
preset: 'postgres',
|
102
117
|
parameterSymbol: { start: '${', end: '}' },
|
103
118
|
});
|
119
|
+
const { formattedSql } = formatter.format(query);
|
120
|
+
console.log(formattedSql);
|
104
121
|
// => select "user_id", "name" from "users" where "active" = ${active}
|
105
122
|
```
|
106
123
|
|
107
|
-
|
124
|
+
### Configurable Options
|
108
125
|
|
109
|
-
|
110
|
-
const customSql = formatter.format(query, {
|
111
|
-
...Formatter.PRESETS.mysql,
|
112
|
-
identifierEscape: { start: '"', end: '"' }
|
113
|
-
});
|
114
|
-
```
|
126
|
+
SqlFormatter supports a wide range of options to customize the output:
|
115
127
|
|
116
|
-
|
128
|
+
- `identifierEscape`: How identifiers are escaped (e.g., `"`, `[`, `` ` ``).
|
129
|
+
- `parameterSymbol`: The symbol or pattern for parameters (e.g., `:`, `@`, `?`, or `{ start: '${', end: '}' }`).
|
130
|
+
- `parameterStyle`: Controls the parameter style (anonymous, indexed, or named).
|
131
|
+
- `indentSize`: Number of spaces or tabs for indentation.
|
132
|
+
- `keywordCase`: Casing for SQL keywords (`upper`, `lower`, or `none`).
|
133
|
+
- `commaBreak`: Placement of commas (`before` or `after`).
|
134
|
+
- `andBreak`: Placement of `AND`/`OR` in conditions (`before` or `after`).
|
135
|
+
- `newline`: Specifies the newline character used in the output (e.g., `\n`, `\r\n`, or a single space for compact formatting).
|
117
136
|
|
118
|
-
|
119
|
-
- `identifierEscape`: How identifiers are escaped (e.g., `"`, `[`, `` ` ``)
|
120
|
-
- `parameterSymbol`: The symbol or pattern for parameters (e.g., `:`, `@`, `?`, or `{ start: '${', end: '}' }`)
|
121
|
-
- `parameterStyle`: Controls the parameter style (anonymous, indexed, or named)
|
137
|
+
### Parameterized Query Formatting
|
122
138
|
|
123
|
-
|
124
|
-
|
139
|
+
`SqlFormatter` supports advanced parameterized query formatting for all major SQL dialects. You can output SQL with parameters in three styles:
|
140
|
+
|
141
|
+
- **Anonymous** (`?`): For MySQL and similar drivers. Parameters are output as `?` and values are provided as an array.
|
142
|
+
- **Indexed** (`$1`, `$2`, ...): For PostgreSQL and compatible drivers. Parameters are output as `$1`, `$2`, ... and values are provided as an array in the correct order.
|
143
|
+
- **Named** (`:name`, `@name`): For SQL Server, SQLite, and ORMs. Parameters are output as `:name` or `@name` and values are provided as an object.
|
144
|
+
|
145
|
+
The `parameterStyle` option in `SqlFormatter` allows you to control the parameter style, or you can use built-in presets (e.g., `mysql`, `postgres`, `sqlserver`, `sqlite`) to apply the correct style automatically.
|
125
146
|
|
126
147
|
### Usage Example
|
127
148
|
|
128
149
|
#### Using a Preset
|
129
150
|
|
130
151
|
```typescript
|
131
|
-
import {
|
152
|
+
import { SqlFormatter } from 'rawsql-ts';
|
132
153
|
|
133
154
|
const sql = `SELECT user_id, name FROM users WHERE active = TRUE`;
|
134
155
|
const query = SelectQueryParser.parse(sql);
|
135
|
-
const formatter = new
|
136
|
-
const
|
137
|
-
console.log(
|
138
|
-
|
139
|
-
|
140
|
-
|
156
|
+
const formatter = new SqlFormatter({ preset: 'postgres' });
|
157
|
+
const { formattedSql } = formatter.format(query);
|
158
|
+
console.log(formattedSql);
|
159
|
+
/*
|
160
|
+
select "user_id", "name" from "users" where "active" = true
|
161
|
+
*/
|
141
162
|
```
|
142
163
|
|
143
|
-
#### Using
|
164
|
+
#### Using Custom Configuration
|
144
165
|
|
145
166
|
```typescript
|
146
|
-
import {
|
167
|
+
import { SqlFormatter } from 'rawsql-ts';
|
147
168
|
|
148
169
|
const sql = `SELECT user_id, name FROM users WHERE active = TRUE`;
|
149
170
|
const query = SelectQueryParser.parse(sql);
|
150
|
-
const formatter = new
|
151
|
-
const formatted = formatter.formatWithParameters(query, {
|
171
|
+
const formatter = new SqlFormatter({
|
152
172
|
identifierEscape: { start: '`', end: '`' },
|
153
173
|
parameterSymbol: '?',
|
154
174
|
parameterStyle: 'anonymous',
|
175
|
+
indentSize: 2,
|
176
|
+
keywordCase: 'upper',
|
177
|
+
newline: '\r\n',
|
178
|
+
commaBreak: 'before', // Specify the "before comma" option
|
155
179
|
});
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
180
|
+
const { formattedSql } = formatter.format(query);
|
181
|
+
console.log(formattedSql);
|
182
|
+
/*
|
183
|
+
SELECT
|
184
|
+
`user_id`
|
185
|
+
, `name`
|
186
|
+
FROM
|
187
|
+
`users`
|
188
|
+
WHERE
|
189
|
+
`active` = ?
|
190
|
+
*/
|
160
191
|
```
|
161
192
|
|
162
|
-
|
163
|
-
|
164
|
-
---
|
165
|
-
|
166
|
-
### Advanced Parameterized Query Formatting
|
167
|
-
|
168
|
-
rawsql-ts's `Formatter` class supports advanced parameterized query formatting for all major SQL dialects. You can output SQL with parameters in three styles:
|
169
|
-
|
170
|
-
- **Anonymous** (`?`): For MySQL and similar drivers. Parameters are output as `?` and values are provided as an array.
|
171
|
-
- **Indexed** (`$1`, `$2`, ...): For PostgreSQL and compatible drivers. Parameters are output as `$1`, `$2`, ... and values are provided as an array in the correct order.
|
172
|
-
- **Named** (`:name`, `@name`, `$name`): For SQL Server, SQLite, and ORMs that support named parameters. Parameters are output as `:name`, `@name`, or `$name` and values are provided as an object (dictionary).
|
173
|
-
|
174
|
-
You can control the parameter style using the `parameterStyle` option in the Formatter configuration, or by using one of the built-in presets. **In most cases, you do not need to set this manually—just use the appropriate preset (e.g., `Formatter.PRESETS.mysql`, `Formatter.PRESETS.postgres`, etc.) and the correct parameter style will be applied automatically.**
|
175
|
-
|
176
|
-
#### Example: Parameterized Query Output
|
193
|
+
#### Parameterized Query Output
|
177
194
|
|
178
195
|
```typescript
|
179
|
-
import { SelectQueryParser,
|
196
|
+
import { SelectQueryParser, SqlFormatter } from 'rawsql-ts';
|
180
197
|
|
181
198
|
const sql = 'SELECT * FROM users WHERE id = :id AND status = :status';
|
182
199
|
const query = SelectQueryParser.parse(sql);
|
183
200
|
query.setParameter('id', 123);
|
184
201
|
query.setParameter('status', 'active');
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
//
|
191
|
-
|
192
|
-
//
|
193
|
-
const indexed = formatter.formatWithParameters(query, { parameterStyle: ParameterStyle.Indexed });
|
194
|
-
// indexed.sql: 'select * from "users" where "id" = $1 and "status" = $2'
|
195
|
-
// indexed.params: [123, 'active']
|
196
|
-
|
197
|
-
// Named style (SQL Server, SQLite, ORMs)
|
198
|
-
const named = formatter.formatWithParameters(query, { parameterStyle: ParameterStyle.Named });
|
199
|
-
// named.sql: 'select * from "users" where "id" = :id and "status" = :status'
|
200
|
-
// named.params: { id: 123, status: 'active' }
|
202
|
+
|
203
|
+
const formatter = new SqlFormatter({ parameterStyle: 'named' });
|
204
|
+
const { formattedSql, params } = formatter.format(query);
|
205
|
+
|
206
|
+
console.log(formattedSql);
|
207
|
+
// => select * from "users" where "id" = :id and "status" = :status
|
208
|
+
console.log(params);
|
209
|
+
// => { id: 123, status: 'active' }
|
201
210
|
```
|
202
211
|
|
203
|
-
|
212
|
+
For anonymous or indexed styles, simply change the `parameterStyle` option:
|
204
213
|
|
205
|
-
|
214
|
+
```typescript
|
215
|
+
const formatter = new SqlFormatter({ parameterStyle: 'anonymous' });
|
216
|
+
// formattedSql: 'select * from "users" where "id" = ? and "status" = ?'
|
217
|
+
// params: [123, 'active']
|
206
218
|
|
207
|
-
|
219
|
+
const formatterIndexed = new SqlFormatter({ parameterStyle: 'indexed' });
|
220
|
+
// formattedSql: 'select * from "users" where "id" = $1 and "status" = $2'
|
221
|
+
// params: [123, 'active']
|
222
|
+
```
|
223
|
+
|
224
|
+
`SqlFormatter` ensures parameter indexes are assigned correctly, even for complex queries with CTEs, subqueries, or set operations. This makes it easy to build safe, maintainable, and portable SQL in TypeScript.
|
208
225
|
|
209
226
|
> [!Tip]
|
210
|
-
>
|
227
|
+
> Use named parameters in your source code for better readability and maintainability. You can always output the final SQL and parameters in the style required by your database client (e.g., anonymous or indexed) at formatting time.
|
211
228
|
|
212
229
|
---
|
213
230
|
|
@@ -234,6 +251,11 @@ A unique feature of rawsql-ts is the `setParameter` method. Instead of passing p
|
|
234
251
|
- `parse(sql: string): InsertQuery`
|
235
252
|
Converts an INSERT SQL string to an AST. Throws an exception on error.
|
236
253
|
|
254
|
+
- **UpdateQueryParser**
|
255
|
+
The main class for parsing `UPDATE` statements and converting them into AST. Supports PostgreSQL-style UPDATE with optional CTE (WITH clause), table alias, SET, WHERE, FROM, and RETURNING clauses.
|
256
|
+
- `parse(sql: string): UpdateQuery`
|
257
|
+
Converts an UPDATE SQL string to an AST. Throws an exception on error.
|
258
|
+
|
237
259
|
---
|
238
260
|
|
239
261
|
## Core SQL Query Classes
|
@@ -314,7 +336,7 @@ const query = SelectQueryParser.parse(`
|
|
314
336
|
// Add a filter to the CTE using upstream support
|
315
337
|
query.appendWhereExpr('amount', expr => `${expr} > 100`, { upstream: true });
|
316
338
|
|
317
|
-
const sql = new
|
339
|
+
const sql = new SqlFormatter().format(query).formattedSql;
|
318
340
|
console.log(sql);
|
319
341
|
// => with "temp_sales" as (select "id", "amount", "date" from "sales" where "date" >= '2024-01-01' and "amount" > 100) select * from "temp_sales"
|
320
342
|
```
|
@@ -340,7 +362,7 @@ const query = SelectQueryParser.parse(`
|
|
340
362
|
// Add a filter to all upstream queries that provide 'amount'
|
341
363
|
query.appendWhereExpr('amount', expr => `${expr} > 100`, { upstream: true });
|
342
364
|
|
343
|
-
const sql = new
|
365
|
+
const sql = new SqlFormatter().format(query).formattedSql;
|
344
366
|
console.log(sql);
|
345
367
|
// => with "sales_transactions" as (select ... where ... and "amount" > 100),
|
346
368
|
// "support_transactions" as (select ... where ... and "fee" > 100)
|
@@ -383,8 +405,8 @@ A suite of utilities for transforming and analyzing SQL ASTs.
|
|
383
405
|
|
384
406
|
### Main Transformers
|
385
407
|
|
386
|
-
- **
|
387
|
-
Converts ASTs to formatted SQL strings. Handles identifier escaping.
|
408
|
+
- **SqlFormatter**
|
409
|
+
Converts ASTs to formatted SQL strings. Handles identifier escaping. Supports both single-line (compact) and multi-line (formatted) styles.
|
388
410
|
- **SelectValueCollector**
|
389
411
|
Extracts all columns, aliases, and expressions from SELECT clauses. Supports wildcard expansion (e.g., `*`, `table.*`) with TableColumnResolver.
|
390
412
|
- **SelectableColumnCollector**
|
@@ -399,12 +421,18 @@ A suite of utilities for transforming and analyzing SQL ASTs.
|
|
399
421
|
Consolidates all CTEs into a single root-level WITH clause. Throws an error if duplicate CTE names with different definitions are found.
|
400
422
|
- **QueryNormalizer**
|
401
423
|
Converts any SELECT/UNION/VALUES query into a standard SimpleSelectQuery. Handles subquery wrapping and automatic column name generation.
|
424
|
+
|
402
425
|
- **QueryBuilder**
|
403
426
|
Converts any SELECT/UNION/VALUES query into a standard SimpleSelectQuery. Handles subquery wrapping and automatic column name generation.
|
404
427
|
Supports CREATE TABLE ... AS SELECT ... conversion:
|
405
428
|
- `QueryBuilder.buildCreateTableQuery(query, tableName, isTemporary?)` creates a `CreateTableQuery` from any SELECT query.
|
406
429
|
Supports combining multiple queries:
|
407
430
|
- `QueryBuilder.buildBinaryQuery(queries, operator)` combines an array of SelectQuery objects into a single BinarySelectQuery using the specified set operator (e.g., 'union', 'intersect', 'except').
|
431
|
+
Supports INSERT and UPDATE statement generation from SELECT:
|
432
|
+
- `QueryBuilder.buildInsertQuery(selectQuery, tableName)` creates an `InsertQuery` from a `SimpleSelectQuery` and a target table name.
|
433
|
+
The columns are inferred from the select query. Throws if columns cannot be determined.
|
434
|
+
- `QueryBuilder.buildUpdateQuery(selectQuery, selectSourceName, updateTableExprRaw, primaryKeys)` creates an `UpdateQuery` from a `SimpleSelectQuery`, the source alias, the update target table, and primary key(s).
|
435
|
+
This generates an UPDATE ... SET ... FROM ... WHERE ... statement using the SELECT as the value source. Throws if PK columns are missing or ambiguous.
|
408
436
|
|
409
437
|
- **TableColumnResolver**
|
410
438
|
A function type for resolving column names from a table name, mainly used for wildcard expansion (e.g., `table.*`). Used by analyzers like SelectValueCollector.
|
@@ -420,7 +448,7 @@ A suite of utilities for transforming and analyzing SQL ASTs.
|
|
420
448
|
## Usage Example
|
421
449
|
|
422
450
|
```typescript
|
423
|
-
import { TableColumnResolver, SelectQueryParser, SelectableColumnCollector, SelectValueCollector, TableSourceCollector,
|
451
|
+
import { TableColumnResolver, SelectQueryParser, SelectableColumnCollector, SelectValueCollector, TableSourceCollector, SqlFormatter } from 'rawsql-ts';
|
424
452
|
|
425
453
|
// TableColumnResolver example
|
426
454
|
const resolver: TableColumnResolver = (tableName) => {
|
@@ -431,7 +459,7 @@ const resolver: TableColumnResolver = (tableName) => {
|
|
431
459
|
|
432
460
|
const sql = `SELECT u.*, p.title as post_title FROM users u INNER JOIN posts p ON u.user_id = p.user_id`;
|
433
461
|
const query = SelectQueryParser.parse(sql);
|
434
|
-
const formatter = new
|
462
|
+
const formatter = new SqlFormatter();
|
435
463
|
|
436
464
|
// Collects information from the SELECT clause.
|
437
465
|
// To expand wildcards, you must specify a TableColumnResolver.
|
@@ -440,7 +468,7 @@ const selectValues = selectValueCollector.collect(query);
|
|
440
468
|
// Log the name and formatted value of each select value
|
441
469
|
console.log('Select values:');
|
442
470
|
selectValues.forEach(val => {
|
443
|
-
console.log(` name: ${val.name}, value: ${formatter.format(val.value)}`);
|
471
|
+
console.log(` name: ${val.name}, value: ${formatter.format(val.value).formattedSql}`);
|
444
472
|
});
|
445
473
|
/*
|
446
474
|
Select values:
|
@@ -460,7 +488,7 @@ const selectableColumns = selectableColumnCollector.collect(query);
|
|
460
488
|
// Log detailed info for each selectable column
|
461
489
|
console.log('Selectable columns:');
|
462
490
|
selectableColumns.forEach(val => {
|
463
|
-
console.log(` name: ${val.name}, value: ${formatter.format(val.value)}`);
|
491
|
+
console.log(` name: ${val.name}, value: ${formatter.format(val.value).formattedSql}`);
|
464
492
|
});
|
465
493
|
/*
|
466
494
|
Selectable columns:
|
@@ -476,16 +504,16 @@ Selectable columns:
|
|
476
504
|
|
477
505
|
```typescript
|
478
506
|
// Create Table from SELECT Example
|
479
|
-
import { QueryBuilder, SelectQueryParser,
|
507
|
+
import { QueryBuilder, SelectQueryParser, SqlFormatter } from 'rawsql-ts';
|
480
508
|
|
481
509
|
const select = SelectQueryParser.parse('SELECT id, name FROM users');
|
482
510
|
const create = QueryBuilder.buildCreateTableQuery(select, 'my_table');
|
483
|
-
const sqlCreate = new
|
511
|
+
const sqlCreate = new SqlFormatter().format(create).formattedSql;
|
484
512
|
console.log(sqlCreate);
|
485
513
|
// => create table "my_table" as select "id", "name" from "users"
|
486
514
|
|
487
515
|
const createTemp = QueryBuilder.buildCreateTableQuery(select, 'tmp_table', true);
|
488
|
-
const sqlTemp = new
|
516
|
+
const sqlTemp = new SqlFormatter().format(createTemp).formattedSql;
|
489
517
|
console.log(sqlTemp);
|
490
518
|
// => create temporary table "tmp_table" as select "id", "name" from "users"
|
491
519
|
```
|
@@ -513,7 +541,7 @@ TableSources:
|
|
513
541
|
This example demonstrates how to join two tables using rawsql-ts. You do not need to understand the internal structure or manage aliases manually. By specifying the join key(s), the ON clause is generated automatically.
|
514
542
|
|
515
543
|
```typescript
|
516
|
-
import { SelectQueryParser,
|
544
|
+
import { SelectQueryParser, SqlFormatter, SimpleSelectQuery } from 'rawsql-ts';
|
517
545
|
|
518
546
|
// Parse the base query
|
519
547
|
const query = SelectQueryParser.parse('SELECT u.user_id, u.name FROM users u') as SimpleSelectQuery;
|
@@ -524,8 +552,8 @@ query.leftJoinRaw('orders', 'o', ['user_id']);
|
|
524
552
|
// Add WHERE clause
|
525
553
|
query.appendWhereRaw('o.order_id IS NULL');
|
526
554
|
|
527
|
-
const formatter = new
|
528
|
-
const formattedSql = formatter.format(query);
|
555
|
+
const formatter = new SqlFormatter();
|
556
|
+
const formattedSql = formatter.format(query).formattedSql;
|
529
557
|
|
530
558
|
console.log(formattedSql);
|
531
559
|
// => select "u"."user_id", "u"."name" from "users" as "u" left join "orders" as "o" on "u"."user_id" = "o"."user_id" where "o"."order_id" is null
|
@@ -570,39 +598,42 @@ Node.js v22.14.0
|
|
570
598
|
### Results
|
571
599
|
|
572
600
|
#### Tokens20
|
573
|
-
| Method
|
574
|
-
|
575
|
-
| rawsql-ts
|
576
|
-
| node-sql-parser
|
577
|
-
| sql-formatter
|
601
|
+
| Method | Mean (ms) | Error (ms) | StdDev (ms) | Times slower vs rawsql-ts |
|
602
|
+
|---------------------------------- |-----------:|----------:|----------:|--------------------------:|
|
603
|
+
| rawsql-ts | 0.029 | 0.0087 | 0.0044 | - |
|
604
|
+
| node-sql-parser | 0.210 | 0.4505 | 0.2298 | 7.3x |
|
605
|
+
| sql-formatter | 0.228 | 0.1598 | 0.0815 | 8.0x |
|
606
|
+
|
607
|
+
> [!Note] When the token count is extremely low, `rawsql-ts` becomes disproportionately fast. However, such small queries are rare in real-world scenarios, so this result is excluded from the overall performance summary.
|
578
608
|
|
579
609
|
#### Tokens70
|
580
|
-
| Method
|
581
|
-
|
582
|
-
| rawsql-ts
|
583
|
-
| node-sql-parser
|
584
|
-
| sql-formatter
|
610
|
+
| Method | Mean (ms) | Error (ms) | StdDev (ms) | Times slower vs rawsql-ts |
|
611
|
+
|---------------------------------- |-----------:|----------:|----------:|--------------------------:|
|
612
|
+
| rawsql-ts | 0.075 | 0.0541 | 0.0276 | - |
|
613
|
+
| node-sql-parser | 0.223 | 0.0848 | 0.0432 | 3.0x |
|
614
|
+
| sql-formatter | 0.547 | 0.1432 | 0.0731 | 7.3x |
|
585
615
|
|
586
616
|
#### Tokens140
|
587
|
-
| Method
|
588
|
-
|
589
|
-
| rawsql-ts
|
590
|
-
| node-sql-parser
|
591
|
-
| sql-formatter
|
617
|
+
| Method | Mean (ms) | Error (ms) | StdDev (ms) | Times slower vs rawsql-ts |
|
618
|
+
|---------------------------------- |-----------:|----------:|----------:|--------------------------:|
|
619
|
+
| rawsql-ts | 0.137 | 0.0175 | 0.0089 | - |
|
620
|
+
| node-sql-parser | 0.420 | 0.1030 | 0.0526 | 3.1x |
|
621
|
+
| sql-formatter | 1.057 | 0.2390 | 0.1220 | 7.7x |
|
592
622
|
|
593
623
|
#### Tokens230
|
594
|
-
| Method
|
595
|
-
|
596
|
-
| rawsql-ts
|
597
|
-
| node-sql-parser
|
598
|
-
| sql-formatter |
|
624
|
+
| Method | Mean (ms) | Error (ms) | StdDev (ms) | Times slower vs rawsql-ts |
|
625
|
+
|---------------------------------- |-----------:|----------:|----------:|--------------------------:|
|
626
|
+
| rawsql-ts | 0.239 | 0.0577 | 0.0294 | - |
|
627
|
+
| node-sql-parser | 0.871 | 0.2042 | 0.1042 | 3.6x |
|
628
|
+
| sql-formatter | 1.906 | 1.4631 | 0.7465 | 8.0x |
|
599
629
|
|
600
630
|
### Performance Summary
|
601
631
|
|
602
|
-
- `rawsql-ts`
|
603
|
-
-
|
604
|
-
-
|
605
|
-
-
|
632
|
+
- `rawsql-ts` remains one of the fastest parsers, though it is approximately 10% slower in version 0.7 compared to previous versions. This is due to the addition of enhanced parameterized query parsing and SQL formatting capabilities.
|
633
|
+
- About 3–4x faster than `node-sql-parser`.
|
634
|
+
- About 4–5x faster than `sql-parser-cst`.
|
635
|
+
- About 7–8x faster than `sql-formatter`.
|
636
|
+
- Maintains high performance even for complex SQL, while providing comprehensive features.
|
606
637
|
|
607
638
|
> **Note:** These benchmarks are based on a specific hardware and software environment. Actual performance may vary depending on system configuration and query complexity.
|
608
639
|
|
package/dist/esm/index.js
CHANGED
@@ -8,6 +8,7 @@ export * from './models/ValuesQuery';
|
|
8
8
|
export * from './transformers/CTECollector';
|
9
9
|
export * from './transformers/CTENormalizer';
|
10
10
|
export * from './transformers/Formatter';
|
11
|
+
export * from './transformers/SqlFormatter';
|
11
12
|
export * from './transformers/QueryBuilder'; // old name:QueryConverter
|
12
13
|
export * from './transformers/SelectValueCollector';
|
13
14
|
export * from './transformers/SelectableColumnCollector';
|
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;AAErC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC,CAAC,0BAA0B;AACvE,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,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;AAErC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC,CAAC,0BAA0B;AACvE,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0CAA0C,CAAC;AACzD,oEAAoE"}
|