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.
Files changed (266) hide show
  1. package/README.md +152 -121
  2. package/dist/esm/index.js +1 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/models/Clause.js +185 -19
  5. package/dist/esm/models/Clause.js.map +1 -1
  6. package/dist/esm/models/CreateTableQuery.js +12 -22
  7. package/dist/esm/models/CreateTableQuery.js.map +1 -1
  8. package/dist/esm/models/InsertQuery.js +2 -9
  9. package/dist/esm/models/InsertQuery.js.map +1 -1
  10. package/dist/esm/models/KeywordTrie.js +2 -0
  11. package/dist/esm/models/KeywordTrie.js.map +1 -1
  12. package/dist/esm/models/SimpleSelectQuery.js +17 -15
  13. package/dist/esm/models/SimpleSelectQuery.js.map +1 -1
  14. package/dist/esm/models/SqlPrintToken.js +94 -0
  15. package/dist/esm/models/SqlPrintToken.js.map +1 -0
  16. package/dist/esm/models/UpdateQuery.js +25 -0
  17. package/dist/esm/models/UpdateQuery.js.map +1 -0
  18. package/dist/esm/models/ValueComponent.js +105 -19
  19. package/dist/esm/models/ValueComponent.js.map +1 -1
  20. package/dist/esm/parsers/FetchClauseParser.js +84 -0
  21. package/dist/esm/parsers/FetchClauseParser.js.map +1 -0
  22. package/dist/esm/parsers/FullNameParser.js +94 -0
  23. package/dist/esm/parsers/FullNameParser.js.map +1 -0
  24. package/dist/esm/parsers/FunctionExpressionParser.js +33 -32
  25. package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -1
  26. package/dist/esm/parsers/IdentifierDecorator.js +13 -0
  27. package/dist/esm/parsers/IdentifierDecorator.js.map +1 -0
  28. package/dist/esm/parsers/IdentifierParser.js +5 -30
  29. package/dist/esm/parsers/IdentifierParser.js.map +1 -1
  30. package/dist/esm/parsers/InsertQueryParser.js +7 -28
  31. package/dist/esm/parsers/InsertQueryParser.js.map +1 -1
  32. package/dist/esm/parsers/JoinClauseParser.js +13 -35
  33. package/dist/esm/parsers/JoinClauseParser.js.map +1 -1
  34. package/dist/esm/parsers/JoinOnClauseParser.js +17 -0
  35. package/dist/esm/parsers/JoinOnClauseParser.js.map +1 -0
  36. package/dist/esm/parsers/JoinUsingClauseParser.js +19 -0
  37. package/dist/esm/parsers/JoinUsingClauseParser.js.map +1 -0
  38. package/dist/esm/parsers/LimitClauseParser.js +1 -13
  39. package/dist/esm/parsers/LimitClauseParser.js.map +1 -1
  40. package/dist/esm/parsers/OffsetClauseParser.js +38 -0
  41. package/dist/esm/parsers/OffsetClauseParser.js.map +1 -0
  42. package/dist/esm/parsers/ParameterDecorator.js +36 -0
  43. package/dist/esm/parsers/ParameterDecorator.js.map +1 -0
  44. package/dist/esm/parsers/ReturningClauseParser.js +31 -0
  45. package/dist/esm/parsers/ReturningClauseParser.js.map +1 -0
  46. package/dist/esm/parsers/SelectClauseParser.js +25 -2
  47. package/dist/esm/parsers/SelectClauseParser.js.map +1 -1
  48. package/dist/esm/parsers/SelectQueryParser.js +40 -13
  49. package/dist/esm/parsers/SelectQueryParser.js.map +1 -1
  50. package/dist/esm/parsers/SetClauseParser.js +39 -0
  51. package/dist/esm/parsers/SetClauseParser.js.map +1 -0
  52. package/dist/esm/parsers/SourceExpressionParser.js +19 -0
  53. package/dist/esm/parsers/SourceExpressionParser.js.map +1 -1
  54. package/dist/esm/parsers/SourceParser.js +31 -19
  55. package/dist/esm/parsers/SourceParser.js.map +1 -1
  56. package/dist/esm/parsers/SqlPrintTokenParser.js +1058 -0
  57. package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -0
  58. package/dist/esm/parsers/UpdateClauseParser.js +17 -0
  59. package/dist/esm/parsers/UpdateClauseParser.js.map +1 -0
  60. package/dist/esm/parsers/UpdateQueryParser.js +84 -0
  61. package/dist/esm/parsers/UpdateQueryParser.js.map +1 -0
  62. package/dist/esm/parsers/ValueParser.js +13 -11
  63. package/dist/esm/parsers/ValueParser.js.map +1 -1
  64. package/dist/esm/parsers/WindowClauseParser.js +27 -15
  65. package/dist/esm/parsers/WindowClauseParser.js.map +1 -1
  66. package/dist/esm/tokenReaders/BaseTokenReader.js +3 -3
  67. package/dist/esm/tokenReaders/BaseTokenReader.js.map +1 -1
  68. package/dist/esm/tokenReaders/CommandTokenReader.js +8 -2
  69. package/dist/esm/tokenReaders/CommandTokenReader.js.map +1 -1
  70. package/dist/esm/transformers/CTECollector.js +9 -10
  71. package/dist/esm/transformers/CTECollector.js.map +1 -1
  72. package/dist/esm/transformers/CTEDisabler.js +12 -11
  73. package/dist/esm/transformers/CTEDisabler.js.map +1 -1
  74. package/dist/esm/transformers/CTEInjector.js +2 -2
  75. package/dist/esm/transformers/Formatter.js +19 -569
  76. package/dist/esm/transformers/Formatter.js.map +1 -1
  77. package/dist/esm/transformers/LinePrinter.js +81 -0
  78. package/dist/esm/transformers/LinePrinter.js.map +1 -0
  79. package/dist/esm/transformers/QueryBuilder.js +62 -24
  80. package/dist/esm/transformers/QueryBuilder.js.map +1 -1
  81. package/dist/esm/transformers/SelectValueCollector.js +4 -4
  82. package/dist/esm/transformers/SelectableColumnCollector.js +26 -9
  83. package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -1
  84. package/dist/esm/transformers/SqlFormatter.js +31 -0
  85. package/dist/esm/transformers/SqlFormatter.js.map +1 -0
  86. package/dist/esm/transformers/SqlOutputToken.js +9 -0
  87. package/dist/esm/transformers/SqlOutputToken.js.map +1 -0
  88. package/dist/esm/transformers/SqlPrinter.js +144 -0
  89. package/dist/esm/transformers/SqlPrinter.js.map +1 -0
  90. package/dist/esm/transformers/TableSourceCollector.js +32 -16
  91. package/dist/esm/transformers/TableSourceCollector.js.map +1 -1
  92. package/dist/esm/transformers/UpstreamSelectQueryFinder.js +1 -1
  93. package/dist/esm/types/index.d.ts +1 -0
  94. package/dist/esm/types/models/Clause.d.ts +119 -14
  95. package/dist/esm/types/models/InsertQuery.d.ts +4 -9
  96. package/dist/esm/types/models/SimpleSelectQuery.d.ts +20 -5
  97. package/dist/esm/types/models/SqlPrintToken.d.ts +102 -0
  98. package/dist/esm/types/models/UpdateQuery.d.ts +31 -0
  99. package/dist/esm/types/models/ValueComponent.d.ts +45 -8
  100. package/dist/esm/types/parsers/FetchClauseParser.d.ts +24 -0
  101. package/dist/esm/types/parsers/FullNameParser.d.ts +27 -0
  102. package/dist/esm/types/parsers/IdentifierDecorator.d.ts +9 -0
  103. package/dist/esm/types/parsers/InsertQueryParser.d.ts +0 -1
  104. package/dist/esm/types/parsers/JoinClauseParser.d.ts +0 -2
  105. package/dist/esm/types/parsers/JoinOnClauseParser.d.ts +8 -0
  106. package/dist/esm/types/parsers/JoinUsingClauseParser.d.ts +8 -0
  107. package/dist/esm/types/parsers/OffsetClauseParser.d.ts +9 -0
  108. package/dist/esm/types/parsers/ParameterDecorator.d.ts +20 -0
  109. package/dist/esm/types/parsers/ReturningClauseParser.d.ts +12 -0
  110. package/dist/esm/types/parsers/SelectClauseParser.d.ts +19 -2
  111. package/dist/esm/types/parsers/SetClauseParser.d.ts +11 -0
  112. package/dist/esm/types/parsers/SourceExpressionParser.d.ts +8 -0
  113. package/dist/esm/types/parsers/SourceParser.d.ts +14 -0
  114. package/dist/esm/types/parsers/SqlPrintTokenParser.d.ts +144 -0
  115. package/dist/esm/types/parsers/UpdateClauseParser.d.ts +15 -0
  116. package/dist/esm/types/parsers/UpdateQueryParser.d.ts +16 -0
  117. package/dist/esm/types/parsers/WindowClauseParser.d.ts +3 -3
  118. package/dist/esm/types/transformers/Formatter.d.ts +8 -99
  119. package/dist/esm/types/transformers/LinePrinter.d.ts +41 -0
  120. package/dist/esm/types/transformers/QueryBuilder.d.ts +9 -0
  121. package/dist/esm/types/transformers/SelectableColumnCollector.d.ts +2 -0
  122. package/dist/esm/types/transformers/SqlFormatter.d.ts +40 -0
  123. package/dist/esm/types/transformers/SqlOutputToken.d.ts +6 -0
  124. package/dist/esm/types/transformers/SqlPrinter.d.ts +54 -0
  125. package/dist/esm/types/transformers/TableSourceCollector.d.ts +2 -0
  126. package/dist/esm/utils/stringUtils.js +17 -0
  127. package/dist/esm/utils/stringUtils.js.map +1 -1
  128. package/dist/index.d.ts +1 -0
  129. package/dist/index.js +1 -0
  130. package/dist/index.js.map +1 -1
  131. package/dist/models/Clause.d.ts +119 -14
  132. package/dist/models/Clause.js +194 -20
  133. package/dist/models/Clause.js.map +1 -1
  134. package/dist/models/CreateTableQuery.js +12 -22
  135. package/dist/models/CreateTableQuery.js.map +1 -1
  136. package/dist/models/InsertQuery.d.ts +4 -9
  137. package/dist/models/InsertQuery.js +2 -9
  138. package/dist/models/InsertQuery.js.map +1 -1
  139. package/dist/models/KeywordTrie.js +2 -0
  140. package/dist/models/KeywordTrie.js.map +1 -1
  141. package/dist/models/SimpleSelectQuery.d.ts +20 -5
  142. package/dist/models/SimpleSelectQuery.js +17 -15
  143. package/dist/models/SimpleSelectQuery.js.map +1 -1
  144. package/dist/models/SqlPrintToken.d.ts +102 -0
  145. package/dist/models/SqlPrintToken.js +98 -0
  146. package/dist/models/SqlPrintToken.js.map +1 -0
  147. package/dist/models/UpdateQuery.d.ts +31 -0
  148. package/dist/models/UpdateQuery.js +29 -0
  149. package/dist/models/UpdateQuery.js.map +1 -0
  150. package/dist/models/ValueComponent.d.ts +45 -8
  151. package/dist/models/ValueComponent.js +107 -20
  152. package/dist/models/ValueComponent.js.map +1 -1
  153. package/dist/parsers/FetchClauseParser.d.ts +24 -0
  154. package/dist/parsers/FetchClauseParser.js +89 -0
  155. package/dist/parsers/FetchClauseParser.js.map +1 -0
  156. package/dist/parsers/FullNameParser.d.ts +27 -0
  157. package/dist/parsers/FullNameParser.js +98 -0
  158. package/dist/parsers/FullNameParser.js.map +1 -0
  159. package/dist/parsers/FunctionExpressionParser.js +32 -31
  160. package/dist/parsers/FunctionExpressionParser.js.map +1 -1
  161. package/dist/parsers/IdentifierDecorator.d.ts +9 -0
  162. package/dist/parsers/IdentifierDecorator.js +17 -0
  163. package/dist/parsers/IdentifierDecorator.js.map +1 -0
  164. package/dist/parsers/IdentifierParser.js +5 -30
  165. package/dist/parsers/IdentifierParser.js.map +1 -1
  166. package/dist/parsers/InsertQueryParser.d.ts +0 -1
  167. package/dist/parsers/InsertQueryParser.js +7 -28
  168. package/dist/parsers/InsertQueryParser.js.map +1 -1
  169. package/dist/parsers/JoinClauseParser.d.ts +0 -2
  170. package/dist/parsers/JoinClauseParser.js +12 -34
  171. package/dist/parsers/JoinClauseParser.js.map +1 -1
  172. package/dist/parsers/JoinOnClauseParser.d.ts +8 -0
  173. package/dist/parsers/JoinOnClauseParser.js +21 -0
  174. package/dist/parsers/JoinOnClauseParser.js.map +1 -0
  175. package/dist/parsers/JoinUsingClauseParser.d.ts +8 -0
  176. package/dist/parsers/JoinUsingClauseParser.js +23 -0
  177. package/dist/parsers/JoinUsingClauseParser.js.map +1 -0
  178. package/dist/parsers/LimitClauseParser.js +1 -13
  179. package/dist/parsers/LimitClauseParser.js.map +1 -1
  180. package/dist/parsers/OffsetClauseParser.d.ts +9 -0
  181. package/dist/parsers/OffsetClauseParser.js +42 -0
  182. package/dist/parsers/OffsetClauseParser.js.map +1 -0
  183. package/dist/parsers/ParameterDecorator.d.ts +20 -0
  184. package/dist/parsers/ParameterDecorator.js +40 -0
  185. package/dist/parsers/ParameterDecorator.js.map +1 -0
  186. package/dist/parsers/ReturningClauseParser.d.ts +12 -0
  187. package/dist/parsers/ReturningClauseParser.js +35 -0
  188. package/dist/parsers/ReturningClauseParser.js.map +1 -0
  189. package/dist/parsers/SelectClauseParser.d.ts +19 -2
  190. package/dist/parsers/SelectClauseParser.js +28 -4
  191. package/dist/parsers/SelectClauseParser.js.map +1 -1
  192. package/dist/parsers/SelectQueryParser.js +40 -13
  193. package/dist/parsers/SelectQueryParser.js.map +1 -1
  194. package/dist/parsers/SetClauseParser.d.ts +11 -0
  195. package/dist/parsers/SetClauseParser.js +43 -0
  196. package/dist/parsers/SetClauseParser.js.map +1 -0
  197. package/dist/parsers/SourceExpressionParser.d.ts +8 -0
  198. package/dist/parsers/SourceExpressionParser.js +19 -0
  199. package/dist/parsers/SourceExpressionParser.js.map +1 -1
  200. package/dist/parsers/SourceParser.d.ts +14 -0
  201. package/dist/parsers/SourceParser.js +31 -19
  202. package/dist/parsers/SourceParser.js.map +1 -1
  203. package/dist/parsers/SqlPrintTokenParser.d.ts +144 -0
  204. package/dist/parsers/SqlPrintTokenParser.js +1062 -0
  205. package/dist/parsers/SqlPrintTokenParser.js.map +1 -0
  206. package/dist/parsers/UpdateClauseParser.d.ts +15 -0
  207. package/dist/parsers/UpdateClauseParser.js +21 -0
  208. package/dist/parsers/UpdateClauseParser.js.map +1 -0
  209. package/dist/parsers/UpdateQueryParser.d.ts +16 -0
  210. package/dist/parsers/UpdateQueryParser.js +88 -0
  211. package/dist/parsers/UpdateQueryParser.js.map +1 -0
  212. package/dist/parsers/ValueParser.js +13 -11
  213. package/dist/parsers/ValueParser.js.map +1 -1
  214. package/dist/parsers/WindowClauseParser.d.ts +3 -3
  215. package/dist/parsers/WindowClauseParser.js +26 -14
  216. package/dist/parsers/WindowClauseParser.js.map +1 -1
  217. package/dist/tokenReaders/BaseTokenReader.js +3 -3
  218. package/dist/tokenReaders/BaseTokenReader.js.map +1 -1
  219. package/dist/tokenReaders/CommandTokenReader.js +8 -2
  220. package/dist/tokenReaders/CommandTokenReader.js.map +1 -1
  221. package/dist/transformers/CTECollector.js +9 -10
  222. package/dist/transformers/CTECollector.js.map +1 -1
  223. package/dist/transformers/CTEDisabler.js +11 -10
  224. package/dist/transformers/CTEDisabler.js.map +1 -1
  225. package/dist/transformers/CTEInjector.js +2 -2
  226. package/dist/transformers/Formatter.d.ts +8 -99
  227. package/dist/transformers/Formatter.js +20 -570
  228. package/dist/transformers/Formatter.js.map +1 -1
  229. package/dist/transformers/LinePrinter.d.ts +41 -0
  230. package/dist/transformers/LinePrinter.js +86 -0
  231. package/dist/transformers/LinePrinter.js.map +1 -0
  232. package/dist/transformers/QueryBuilder.d.ts +9 -0
  233. package/dist/transformers/QueryBuilder.js +61 -23
  234. package/dist/transformers/QueryBuilder.js.map +1 -1
  235. package/dist/transformers/SelectValueCollector.js +4 -4
  236. package/dist/transformers/SelectableColumnCollector.d.ts +2 -0
  237. package/dist/transformers/SelectableColumnCollector.js +25 -8
  238. package/dist/transformers/SelectableColumnCollector.js.map +1 -1
  239. package/dist/transformers/SqlFormatter.d.ts +40 -0
  240. package/dist/transformers/SqlFormatter.js +35 -0
  241. package/dist/transformers/SqlFormatter.js.map +1 -0
  242. package/dist/transformers/SqlOutputToken.d.ts +6 -0
  243. package/dist/transformers/SqlOutputToken.js +13 -0
  244. package/dist/transformers/SqlOutputToken.js.map +1 -0
  245. package/dist/transformers/SqlPrinter.d.ts +54 -0
  246. package/dist/transformers/SqlPrinter.js +148 -0
  247. package/dist/transformers/SqlPrinter.js.map +1 -0
  248. package/dist/transformers/TableSourceCollector.d.ts +2 -0
  249. package/dist/transformers/TableSourceCollector.js +30 -14
  250. package/dist/transformers/TableSourceCollector.js.map +1 -1
  251. package/dist/transformers/UpstreamSelectQueryFinder.js +1 -1
  252. package/dist/utils/stringUtils.js +17 -0
  253. package/dist/utils/stringUtils.js.map +1 -1
  254. package/package.json +2 -1
  255. package/dist/esm/types/utils/extractNamespacesAndName.d.ts +0 -5
  256. package/dist/esm/types/utils/parseEscapedOrDotSeparatedIdentifiers.d.ts +0 -9
  257. package/dist/esm/utils/extractNamespacesAndName.js +0 -16
  258. package/dist/esm/utils/extractNamespacesAndName.js.map +0 -1
  259. package/dist/esm/utils/parseEscapedOrDotSeparatedIdentifiers.js +0 -39
  260. package/dist/esm/utils/parseEscapedOrDotSeparatedIdentifiers.js.map +0 -1
  261. package/dist/utils/extractNamespacesAndName.d.ts +0 -5
  262. package/dist/utils/extractNamespacesAndName.js +0 -18
  263. package/dist/utils/extractNamespacesAndName.js.map +0 -1
  264. package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.d.ts +0 -9
  265. package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.js +0 -42
  266. package/dist/utils/parseEscapedOrDotSeparatedIdentifiers.js.map +0 -1
@@ -1,588 +1,38 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Formatter = exports.ParameterStyle = void 0;
4
- const SelectQuery_1 = require("../models/SelectQuery");
5
- const ValueComponent_1 = require("../models/ValueComponent");
6
- const Clause_1 = require("../models/Clause");
7
- const CreateTableQuery_1 = require("../models/CreateTableQuery");
8
- const InsertQuery_1 = require("../models/InsertQuery");
9
- const ParameterCollector_1 = require("./ParameterCollector");
10
- var ParameterStyle;
11
- (function (ParameterStyle) {
12
- ParameterStyle["Anonymous"] = "anonymous";
13
- ParameterStyle["Indexed"] = "indexed";
14
- ParameterStyle["Named"] = "named";
15
- })(ParameterStyle || (exports.ParameterStyle = ParameterStyle = {}));
3
+ exports.SqlFormatter = exports.Formatter = void 0;
4
+ const SqlFormatter_1 = require("./SqlFormatter");
5
+ Object.defineProperty(exports, "SqlFormatter", { enumerable: true, get: function () { return SqlFormatter_1.SqlFormatter; } });
6
+ /**
7
+ * @deprecated The Formatter class is deprecated. Use SqlFormatter instead.
8
+ */
16
9
  class Formatter {
17
10
  constructor() {
18
- this.parameterIndex = 0;
19
- this.handlers = new Map();
20
- // Default settings
21
- this.config = {
22
- identifierEscape: {
23
- start: '"',
24
- end: '"'
25
- },
11
+ this.sqlFormatter = new SqlFormatter_1.SqlFormatter({
12
+ identifierEscape: { start: '"', end: '"' },
26
13
  parameterSymbol: ':',
27
- parameterStyle: ParameterStyle.Named,
28
- };
29
- // value
30
- this.handlers.set(ValueComponent_1.LiteralValue.kind, (expr) => this.visitLiteralExpression(expr));
31
- this.handlers.set(ValueComponent_1.RawString.kind, (expr) => this.visitRawString(expr));
32
- this.handlers.set(ValueComponent_1.StringSpecifierExpression.kind, (expr) => this.visitStringSpecifierExpression(expr));
33
- this.handlers.set(ValueComponent_1.IdentifierString.kind, (expr) => this.visitIdentifierString(expr));
34
- this.handlers.set(ValueComponent_1.SwitchCaseArgument.kind, (expr) => this.visitSwitchCaseArgument(expr));
35
- this.handlers.set(ValueComponent_1.ValueList.kind, (expr) => this.visitValueList(expr));
36
- this.handlers.set(ValueComponent_1.ColumnReference.kind, (expr) => this.visitColumnReference(expr));
37
- this.handlers.set(ValueComponent_1.FunctionCall.kind, (expr) => this.visitFunctionCall(expr));
38
- this.handlers.set(ValueComponent_1.UnaryExpression.kind, (expr) => this.visitUnaryExpression(expr));
39
- this.handlers.set(ValueComponent_1.BinaryExpression.kind, (expr) => this.visitBinaryExpression(expr));
40
- this.handlers.set(ValueComponent_1.ParameterExpression.kind, (expr) => this.visitParameterExpression(expr));
41
- this.handlers.set(Clause_1.SelectItem.kind, (expr) => this.visitSelectItemExpression(expr));
42
- this.handlers.set(ValueComponent_1.ArrayExpression.kind, (expr) => this.visitArrayExpression(expr));
43
- this.handlers.set(ValueComponent_1.CaseExpression.kind, (expr) => this.visitCaseExpression(expr));
44
- this.handlers.set(ValueComponent_1.CastExpression.kind, (expr) => this.visitCastExpression(expr));
45
- this.handlers.set(ValueComponent_1.ParenExpression.kind, (expr) => this.visitBracketExpression(expr));
46
- this.handlers.set(ValueComponent_1.BetweenExpression.kind, (expr) => this.visitBetweenExpression(expr));
47
- this.handlers.set(ValueComponent_1.TypeValue.kind, (expr) => this.visitTypeValue(expr));
48
- this.handlers.set(ValueComponent_1.InlineQuery.kind, (expr) => this.visitInlineQuery(expr));
49
- // source alias
50
- this.handlers.set(Clause_1.SourceAliasExpression.kind, (expr) => this.visitSourceAliasExpression(expr));
51
- // from
52
- this.handlers.set(Clause_1.FromClause.kind, (expr) => this.visitFromClause(expr));
53
- this.handlers.set(Clause_1.JoinClause.kind, (expr) => this.visitJoinClause(expr));
54
- this.handlers.set(Clause_1.JoinOnClause.kind, (expr) => this.visitJoinOnClause(expr));
55
- this.handlers.set(Clause_1.JoinUsingClause.kind, (expr) => this.visitJoinUsingClause(expr));
56
- this.handlers.set(Clause_1.SourceExpression.kind, (expr) => this.visitSourceExpression(expr));
57
- this.handlers.set(Clause_1.SubQuerySource.kind, (expr) => this.visitSubQuerySource(expr));
58
- this.handlers.set(Clause_1.FunctionSource.kind, (expr) => this.visitFunctionSource(expr));
59
- this.handlers.set(Clause_1.TableSource.kind, (expr) => this.visitTableSource(expr));
60
- // order by
61
- this.handlers.set(Clause_1.OrderByClause.kind, (expr) => this.visitOrderByClause(expr));
62
- this.handlers.set(Clause_1.OrderByItem.kind, (expr) => this.visitOrderByItem(expr));
63
- // partition by
64
- this.handlers.set(Clause_1.PartitionByClause.kind, (expr) => this.visitPartitionByClause(expr));
65
- // window frame
66
- this.handlers.set(ValueComponent_1.WindowFrameExpression.kind, (expr) => this.visitWindowFrameExpression(expr));
67
- this.handlers.set(ValueComponent_1.WindowFrameSpec.kind, (arg) => this.visitWindowFrameSpec(arg));
68
- this.handlers.set(ValueComponent_1.WindowFrameBoundStatic.kind, (arg) => this.visitWindowFrameBoundStatic(arg));
69
- this.handlers.set(ValueComponent_1.WindowFrameBoundaryValue.kind, (arg) => this.visitWindowFrameBoundaryValue(arg));
70
- this.handlers.set(Clause_1.WindowFrameClause.kind, (arg) => this.visitWindowFrameClause(arg));
71
- // where
72
- this.handlers.set(Clause_1.WhereClause.kind, (expr) => this.visitWhereClause(expr));
73
- // group by
74
- this.handlers.set(Clause_1.GroupByClause.kind, (expr) => this.visitGroupByClause(expr));
75
- this.handlers.set(Clause_1.HavingClause.kind, (expr) => this.visitHavingClause(expr));
76
- // with
77
- this.handlers.set(Clause_1.CommonTable.kind, (expr) => this.visitCommonTable(expr));
78
- this.handlers.set(Clause_1.WithClause.kind, (expr) => this.visitWithClause(expr));
79
- // select
80
- this.handlers.set(Clause_1.SelectClause.kind, (expr) => this.visitSelectClause(expr));
81
- this.handlers.set(Clause_1.Distinct.kind, (expr) => this.visitDistinct(expr));
82
- this.handlers.set(Clause_1.DistinctOn.kind, (expr) => this.visitDistinctOn(expr));
83
- // row limit
84
- this.handlers.set(Clause_1.LimitClause.kind, (expr) => this.visitLimitClause(expr));
85
- this.handlers.set(Clause_1.FetchSpecification.kind, (expr) => this.visitFetchSpecification(expr));
86
- // for clause
87
- this.handlers.set(Clause_1.ForClause.kind, (expr) => this.visitForClause(expr));
88
- // values clause
89
- this.handlers.set(SelectQuery_1.ValuesQuery.kind, (expr) => this.visitValuesQuery(expr));
90
- this.handlers.set(ValueComponent_1.TupleExpression.kind, (expr) => this.visitTupleExpression(expr));
91
- // select query
92
- this.handlers.set(SelectQuery_1.SimpleSelectQuery.kind, (expr) => this.visitSelectQuery(expr));
93
- this.handlers.set(SelectQuery_1.BinarySelectQuery.kind, (expr) => this.visitBinarySelectQuery(expr));
94
- this.handlers.set(CreateTableQuery_1.CreateTableQuery.kind, (expr) => this.visitCreateTableQuery(expr));
95
- this.handlers.set(InsertQuery_1.InsertQuery.kind, (expr) => this.visitInsertQuery(expr));
14
+ parameterStyle: 'named' // Default to 'named' for backward compatibility
15
+ });
96
16
  }
97
- /**
98
- * Formats the given SQL AST node into a SQL string.
99
- * This is the recommended public API for users.
100
- * @param arg The root SQL AST node to format.
101
- * @param config (Optional) Formatter configuration.
102
- * @returns The formatted SQL string.
103
- */
104
17
  format(arg, config = null) {
105
- this.parameterIndex = 0; // Reset counter for each format
18
+ // Use the sqlFormatter instance to format the SQL component
106
19
  if (config) {
107
- // Always reset to default before merging user config
108
- this.config = Object.assign({ identifierEscape: { start: '"', end: '"' }, parameterSymbol: ':' }, config);
20
+ this.sqlFormatter = new SqlFormatter_1.SqlFormatter(config);
109
21
  }
110
- return this.visit(arg);
22
+ const result = this.sqlFormatter.format(arg);
23
+ return result.formattedSql;
111
24
  }
112
25
  formatWithParameters(arg, config = null) {
113
- var _a;
114
- const sql = this.format(arg, config); // Sort parameters by index
115
- const paramsRaw = ParameterCollector_1.ParameterCollector.collect(arg).sort((a, b) => { var _a, _b; return ((_a = a.index) !== null && _a !== void 0 ? _a : 0) - ((_b = b.index) !== null && _b !== void 0 ? _b : 0); });
116
- const style = ((_a = this.config.parameterStyle) !== null && _a !== void 0 ? _a : ParameterStyle.Named);
117
- if (style === ParameterStyle.Named) {
118
- // Named: { name: value, ... }
119
- const paramsObj = {};
120
- for (const p of paramsRaw) {
121
- const key = p.name.value;
122
- if (paramsObj.hasOwnProperty(key)) {
123
- if (paramsObj[key] !== p.value) {
124
- throw new Error(`Duplicate parameter name '${key}' with different values detected during query composition.`);
125
- }
126
- // If value is the same, skip (already set)
127
- continue;
128
- }
129
- paramsObj[key] = p.value;
130
- }
131
- return { sql, params: paramsObj };
132
- }
133
- else if (style === ParameterStyle.Indexed) {
134
- // Indexed: [value1, value2, ...] (sorted by index)
135
- const paramsArr = paramsRaw.map(p => p.value);
136
- return { sql, params: paramsArr };
137
- }
138
- else if (style === ParameterStyle.Anonymous) {
139
- // Anonymous: [value1, value2, ...] (sorted by index, name is empty)
140
- const paramsArr = paramsRaw.map(p => p.value);
141
- return { sql, params: paramsArr };
26
+ // Use the sqlFormatter instance to format the SQL component with parameters
27
+ if (config) {
28
+ this.sqlFormatter = new SqlFormatter_1.SqlFormatter(config);
142
29
  }
143
- // Fallback (just in case)
144
- return { sql, params: [] };
30
+ const result = this.sqlFormatter.format(arg);
31
+ return { sql: result.formattedSql, params: result.params };
145
32
  }
146
- /**
147
- * Visitor entry point for SQL AST nodes.
148
- * Note: This method is public only for interface compatibility.
149
- * Users should call the format() method instead of visit() directly.
150
- * (If you call visit() directly, you are basically breaking the abstraction, so don't do it!)
151
- * @param arg The SQL AST node to visit.
152
- * @returns The formatted SQL string for the node.
153
- */
154
33
  visit(arg) {
155
- var _a, _b;
156
- const handler = this.handlers.get(arg.getKind());
157
- if (handler) {
158
- return handler(arg);
159
- }
160
- // Provide more detailed error message
161
- const kindSymbol = ((_a = arg.getKind()) === null || _a === void 0 ? void 0 : _a.toString()) || 'unknown';
162
- const constructor = ((_b = arg.constructor) === null || _b === void 0 ? void 0 : _b.name) || 'unknown';
163
- throw new Error(`[Formatter] No handler for ${constructor} with kind ${kindSymbol}.`);
164
- }
165
- visitBinarySelectQuery(arg) {
166
- const left = arg.left.accept(this);
167
- const operator = arg.operator.accept(this);
168
- const right = arg.right.accept(this);
169
- return `${left} ${operator} ${right}`;
170
- }
171
- visitWindowFrameBoundaryValue(arg) {
172
- const value = arg.value.accept(this);
173
- const following = arg.isFollowing ? "following" : "preceding";
174
- return `${value} ${following}`;
175
- }
176
- visitWindowFrameBoundStatic(arg) {
177
- switch (arg.bound) {
178
- case ValueComponent_1.WindowFrameBound.UnboundedPreceding:
179
- return "unbounded preceding";
180
- case ValueComponent_1.WindowFrameBound.CurrentRow:
181
- return "current row";
182
- case ValueComponent_1.WindowFrameBound.UnboundedFollowing:
183
- return "unbounded following";
184
- default:
185
- throw new Error(`Unknown WindowFrameBound: ${arg.bound}`);
186
- }
187
- }
188
- visitWindowFrameExpression(arg) {
189
- const partitionBy = arg.partition !== null ? arg.partition.accept(this) : null;
190
- const orderBy = arg.order !== null ? arg.order.accept(this) : null;
191
- const frameSpec = arg.frameSpec !== null ? arg.frameSpec.accept(this) : null;
192
- const parts = [];
193
- if (partitionBy)
194
- parts.push(partitionBy);
195
- if (orderBy)
196
- parts.push(orderBy);
197
- if (frameSpec)
198
- parts.push(frameSpec);
199
- if (parts.length > 0) {
200
- return `(${parts.join(" ")})`;
201
- }
202
- return `()`;
203
- }
204
- visitWindowFrameSpec(arg) {
205
- const frameType = arg.frameType;
206
- const startBound = arg.startBound.accept(this);
207
- if (arg.endBound === null) {
208
- return `${frameType} ${startBound}`;
209
- }
210
- else {
211
- const endBound = arg.endBound.accept(this);
212
- return `${frameType} between ${startBound} and ${endBound}`;
213
- }
214
- }
215
- visitJoinUsingClause(arg) {
216
- return `using (${arg.condition.accept(this)})`;
217
- }
218
- visitJoinOnClause(arg) {
219
- if (arg.condition !== null) {
220
- return `on ${arg.condition.accept(this)}`;
221
- }
222
- return `on`;
223
- }
224
- visitTypeValue(arg) {
225
- if (arg.argument !== null) {
226
- return `${arg.type.accept(this)}(${arg.argument.accept(this)})`;
227
- }
228
- return `${arg.type.accept(this)}`;
229
- }
230
- visitStringSpecifierExpression(arg) {
231
- return `${arg.specifier.accept(this)}${arg.value.accept(this)}`;
232
- }
233
- visitWithClause(arg) {
234
- const part = arg.tables.map((e) => e.accept(this)).join(", ");
235
- if (arg.recursive) {
236
- return `with recursive ${part}`;
237
- }
238
- return `with ${part}`;
239
- }
240
- visitCommonTable(arg) {
241
- const alias = arg.aliasExpression.accept(this);
242
- const materil = arg.materialized === null
243
- ? ''
244
- : arg.materialized ? 'materialized' : 'not materialized';
245
- if (alias && materil) {
246
- return `${alias} ${materil} as (${arg.query.accept(this)})`;
247
- }
248
- return `${alias} as (${arg.query.accept(this)})`;
249
- }
250
- visitDistinctOn(arg) {
251
- return `distinct on(${arg.value.accept(this)})`;
252
- }
253
- visitDistinct(arg) {
254
- return `distinct`;
255
- }
256
- visitHavingClause(arg) {
257
- return `having ${arg.condition.accept(this)}`;
258
- }
259
- visitGroupByClause(arg) {
260
- const part = arg.grouping.map((e) => e.accept(this)).join(", ");
261
- return `group by ${part}`;
262
- }
263
- visitFromClause(arg) {
264
- if (arg.joins !== null && arg.joins.length > 0) {
265
- const part = arg.joins.map((e) => e.accept(this)).join(" ");
266
- return `from ${arg.source.accept(this)} ${part}`;
267
- }
268
- return `from ${arg.source.accept(this)}`;
269
- }
270
- visitJoinClause(arg) {
271
- const joinType = `${arg.joinType.accept(this)}`;
272
- const lateral = arg.lateral === true ? ` lateral` : "";
273
- const joinSource = arg.source.accept(this);
274
- const condition = arg.condition !== null ? ` ${arg.condition.accept(this)}` : "";
275
- return `${joinType}${lateral} ${joinSource}${condition}`;
276
- }
277
- visitSourceAliasExpression(arg) {
278
- const columnAlias = arg.columns !== null ? `(${arg.columns.map((e) => e.accept(this)).join(", ")})` : null;
279
- const tableAlias = arg.table !== null ? `${arg.table.accept(this)}` : "";
280
- if (columnAlias && tableAlias) {
281
- return `${tableAlias}${columnAlias}`;
282
- }
283
- if (tableAlias) {
284
- return tableAlias;
285
- }
286
- throw new Error("Invalid SourceAliasExpression: tableAlias is null");
287
- }
288
- visitSourceExpression(arg) {
289
- let alias = arg.aliasExpression !== null ? `${arg.aliasExpression.accept(this)}` : "";
290
- // Avoid duplicate alias if the name is the same as the alias
291
- if (arg.datasource instanceof Clause_1.TableSource) {
292
- if (arg.aliasExpression !== null && arg.datasource.identifier !== null && arg.datasource.identifier.accept(this) === arg.aliasExpression.accept(this)) {
293
- alias = "";
294
- }
295
- }
296
- if (alias) {
297
- return `${arg.datasource.accept(this)} as ${alias}`;
298
- }
299
- return `${arg.datasource.accept(this)}`;
300
- }
301
- visitSubQuerySource(arg) {
302
- return `(${arg.query.accept(this)})`;
303
- }
304
- visitFunctionSource(arg) {
305
- if (arg.argument !== null) {
306
- return `${arg.name.accept(this)}(${arg.argument.accept(this)})`;
307
- }
308
- return `${arg.name.accept(this)}()`;
309
- }
310
- visitTableSource(arg) {
311
- if (arg.namespaces !== null) {
312
- return `${arg.namespaces.map((ns) => `${ns.accept(this)}`).join(".")}.${arg.table.accept(this)}`;
313
- }
314
- return `${arg.table.accept(this)}`;
315
- }
316
- visitValueList(arg) {
317
- return `${arg.values.map((v) => v.accept(this)).join(", ")}`;
318
- }
319
- visitSwitchCaseArgument(arg) {
320
- const casePart = arg.cases.map((kv) => `when ${kv.key.accept(this)} then ${kv.value.accept(this)}`).join(" ");
321
- const elsePart = arg.elseValue ? ` else ${arg.elseValue.accept(this)}` : "";
322
- return `${casePart}${elsePart}`;
323
- }
324
- visitColumnReference(arg) {
325
- if (arg.namespaces != null) {
326
- return `${arg.namespaces.map((ns) => `${ns.accept(this)}`).join(".")}.${arg.column.accept(this)}`;
327
- }
328
- return `${arg.column.accept(this)}`;
329
- }
330
- visitFunctionCall(arg) {
331
- const partArg = arg.argument !== null ? arg.argument.accept(this) : "";
332
- if (arg.over === null) {
333
- return `${arg.name.accept(this)}(${partArg})`;
334
- }
335
- else {
336
- let partOver = arg.over !== null ? `${arg.over.accept(this)}` : "";
337
- if (partOver) {
338
- if (partOver.startsWith("(")) {
339
- partOver = ` over${partOver}`;
340
- }
341
- else {
342
- partOver = ` over ${partOver}`;
343
- }
344
- }
345
- return `${arg.name.accept(this)}(${partArg})${partOver}`;
346
- }
347
- }
348
- visitUnaryExpression(arg) {
349
- return `${arg.operator.accept(this)} ${arg.expression.accept(this)}`;
350
- }
351
- visitBinaryExpression(arg) {
352
- return `${arg.left.accept(this)} ${arg.operator.accept(this)} ${arg.right.accept(this)}`;
353
- }
354
- visitLiteralExpression(arg) {
355
- if (typeof arg.value === "string") {
356
- return `'${arg.value.replace(/'/g, "''")}'`;
357
- }
358
- else if (arg.value === null) {
359
- return "null";
360
- }
361
- return arg.value.toString();
362
- }
363
- visitParameterExpression(arg) {
364
- var _a, _b;
365
- // update index
366
- arg.index = this.parameterIndex;
367
- this.parameterIndex++;
368
- // Decide output style based on config
369
- const style = (_a = this.config.parameterStyle) !== null && _a !== void 0 ? _a : ParameterStyle.Named;
370
- if (style === ParameterStyle.Anonymous) {
371
- return '?';
372
- }
373
- if (style === ParameterStyle.Indexed) {
374
- return `$${arg.index + 1}`; // 0-based to 1-based
375
- }
376
- // Named (default)
377
- if (typeof this.config.parameterSymbol === 'object' && this.config.parameterSymbol !== null) {
378
- return `${this.config.parameterSymbol.start}${arg.name.accept(this)}${this.config.parameterSymbol.end}`;
379
- }
380
- return `${(_b = this.config.parameterSymbol) !== null && _b !== void 0 ? _b : ':'}${arg.name.accept(this)}`;
381
- }
382
- visitSelectItemExpression(arg) {
383
- if (arg.identifier) {
384
- if (arg.value instanceof ValueComponent_1.ColumnReference) {
385
- const c = arg.value;
386
- if (c.column.name === arg.identifier.name) {
387
- return `${arg.value.accept(this)}`;
388
- }
389
- else {
390
- return `${arg.value.accept(this)} as ${arg.identifier.accept(this)}`;
391
- }
392
- }
393
- return `${arg.value.accept(this)} as ${arg.identifier.accept(this)}`;
394
- }
395
- return arg.value.accept(this);
396
- }
397
- visitSelectClause(arg) {
398
- const distinct = arg.distinct !== null ? " " + arg.distinct.accept(this) : "";
399
- const colum = arg.items.map((e) => e.accept(this)).join(", ");
400
- return `select${distinct} ${colum}`;
401
- }
402
- visitSelectQuery(arg) {
403
- const parts = [];
404
- // WITH
405
- if (arg.WithClause !== null) {
406
- parts.push(arg.WithClause.accept(this));
407
- }
408
- parts.push(arg.selectClause.accept(this));
409
- if (arg.fromClause !== null) {
410
- parts.push(arg.fromClause.accept(this));
411
- }
412
- if (arg.whereClause !== null) {
413
- parts.push(arg.whereClause.accept(this));
414
- }
415
- if (arg.groupByClause !== null) {
416
- parts.push(arg.groupByClause.accept(this));
417
- }
418
- if (arg.havingClause !== null) {
419
- parts.push(arg.havingClause.accept(this));
420
- }
421
- if (arg.windowFrameClause !== null) {
422
- parts.push(arg.windowFrameClause.accept(this));
423
- }
424
- if (arg.orderByClause !== null) {
425
- parts.push(arg.orderByClause.accept(this));
426
- }
427
- if (arg.rowLimitClause !== null) {
428
- parts.push(arg.rowLimitClause.accept(this));
429
- }
430
- if (arg.forClause !== null) {
431
- parts.push(arg.forClause.accept(this));
432
- }
433
- return parts.join(" ");
434
- }
435
- visitArrayExpression(arg) {
436
- return `array[${arg.expression.accept(this)}]`;
437
- }
438
- visitCaseExpression(arg) {
439
- if (arg.condition !== null) {
440
- return `case ${arg.condition.accept(this)} ${arg.switchCase.accept(this)} end`;
441
- }
442
- return `case ${arg.switchCase.accept(this)} end`;
443
- }
444
- visitCastExpression(arg) {
445
- return `${arg.input.accept(this)}::${arg.castType.accept(this)}`;
446
- }
447
- visitBracketExpression(arg) {
448
- return `(${arg.expression.accept(this)})`;
449
- }
450
- visitBetweenExpression(arg) {
451
- if (arg.negated) {
452
- return `${arg.expression.accept(this)} not between ${arg.lower.accept(this)} and ${arg.upper.accept(this)}`;
453
- }
454
- return `${arg.expression.accept(this)} between ${arg.lower.accept(this)} and ${arg.upper.accept(this)}`;
455
- }
456
- visitPartitionByClause(arg) {
457
- return `partition by ${arg.value.accept(this)}`;
458
- }
459
- visitOrderByClause(arg) {
460
- const part = arg.order.map((e) => e.accept(this)).join(", ");
461
- return `order by ${part}`;
462
- }
463
- visitOrderByItem(arg) {
464
- const direction = arg.sortDirection === Clause_1.SortDirection.Ascending ? null : "desc";
465
- const nullsOption = arg.nullsPosition !== null ? (arg.nullsPosition === Clause_1.NullsSortDirection.First ? "nulls first" : "nulls last") : null;
466
- if (direction !== null && nullsOption !== null) {
467
- return `${arg.value.accept(this)} ${direction} ${nullsOption}`;
468
- }
469
- else if (direction !== null) {
470
- return `${arg.value.accept(this)} ${direction}`;
471
- }
472
- else if (nullsOption !== null) {
473
- return `${arg.value.accept(this)} ${nullsOption}`;
474
- }
475
- return arg.value.accept(this);
476
- }
477
- visitWindowFrameClause(arg) {
478
- const partExpr = arg.expression.accept(this);
479
- return `window ${arg.name.accept(this)} as ${partExpr}`;
480
- }
481
- visitLimitClause(arg) {
482
- if (arg.offset !== null) {
483
- return `limit ${arg.limit.accept(this)} offset ${arg.offset.accept(this)}`;
484
- }
485
- return `limit ${arg.limit.accept(this)}`;
486
- }
487
- visitFetchSpecification(arg) {
488
- const type = arg.type === Clause_1.FetchType.First ? 'first' : 'next';
489
- const count = arg.count.accept(this);
490
- if (arg.unit !== null) {
491
- return `fetch ${type} ${count} ${arg.unit}`;
492
- }
493
- return `fetch ${type} ${count}`;
494
- }
495
- visitForClause(arg) {
496
- return `for ${arg.lockMode}`;
497
- }
498
- visitWhereClause(arg) {
499
- return `where ${arg.condition.accept(this)}`;
500
- }
501
- visitInlineQuery(arg) {
502
- return `(${arg.selectQuery.accept(this)})`;
503
- }
504
- visitRawString(arg) {
505
- const invalidChars = new Set(["'", '"', ",", ";", ":", ".", "--", "/*"]);
506
- if (invalidChars.has(arg.value)) {
507
- throw new Error(`invalid keyword: ${arg.value} `);
508
- }
509
- else if (arg.value.trim() === "") {
510
- throw new Error("invalid keyword: empty string");
511
- }
512
- return arg.value.trim();
513
- }
514
- visitIdentifierString(arg) {
515
- var _a;
516
- // No need to escape wildcards
517
- if (arg.name === '*') {
518
- return arg.name;
519
- }
520
- const escape = (_a = this.config.identifierEscape) !== null && _a !== void 0 ? _a : { start: '"', end: '"' };
521
- return `${escape.start}${arg.name}${escape.end}`;
522
- }
523
- visitValuesQuery(arg) {
524
- const tuples = arg.tuples.map((tuple) => tuple.accept(this)).join(", ");
525
- return `values ${tuples}`;
526
- }
527
- visitTupleExpression(arg) {
528
- const values = arg.values.map((value) => value.accept(this)).join(", ");
529
- return `(${values})`;
530
- }
531
- /**
532
- * Formats a CreateTableQuery into SQL string.
533
- */
534
- visitCreateTableQuery(arg) {
535
- const temp = arg.isTemporary ? "temporary " : "";
536
- let sql = `create ${temp}table ${arg.tableName.accept(this)}`;
537
- if (arg.asSelectQuery) {
538
- sql += ` as ${this.visit(arg.asSelectQuery)}`;
539
- }
540
- return sql;
541
- }
542
- visitInsertQuery(arg) {
543
- // Format: INSERT INTO table (col1, col2, ...) SELECT .../VALUES ...
544
- let table = arg.table.accept(this);
545
- if (arg.namespaces && arg.namespaces.length > 0) {
546
- table = `${arg.namespaces.map(ns => ns.accept(this)).join('.')}.${table}`;
547
- }
548
- const columns = arg.columns.map(col => col.accept(this)).join(", ");
549
- let sql = `insert into ${table}`;
550
- if (arg.columns.length > 0) {
551
- sql += ` (${columns})`;
552
- }
553
- if (arg.selectQuery) {
554
- sql += ` ${this.visit(arg.selectQuery)}`;
555
- }
556
- else {
557
- throw new Error("InsertQuery must have selectQuery (SELECT or VALUES)");
558
- }
559
- return sql;
34
+ return this.format(arg);
560
35
  }
561
36
  }
562
37
  exports.Formatter = Formatter;
563
- /**
564
- * Preset configs for common DB dialects.
565
- */
566
- Formatter.PRESETS = {
567
- mysql: {
568
- identifierEscape: { start: '`', end: '`' },
569
- parameterSymbol: '?',
570
- parameterStyle: ParameterStyle.Anonymous,
571
- },
572
- postgres: {
573
- identifierEscape: { start: '"', end: '"' },
574
- parameterSymbol: ':',
575
- parameterStyle: ParameterStyle.Indexed,
576
- },
577
- sqlserver: {
578
- identifierEscape: { start: '[', end: ']' },
579
- parameterSymbol: '@',
580
- parameterStyle: ParameterStyle.Named,
581
- },
582
- sqlite: {
583
- identifierEscape: { start: '"', end: '"' },
584
- parameterSymbol: ':',
585
- parameterStyle: ParameterStyle.Named,
586
- },
587
- };
588
38
  //# sourceMappingURL=Formatter.js.map