rawsql-ts 0.23.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/dist/esm/index.min.js +10 -10
  2. package/dist/esm/index.min.js.map +4 -4
  3. package/dist/esm/models/Clause.d.ts +30 -2
  4. package/dist/esm/models/Clause.js +25 -2
  5. package/dist/esm/models/Clause.js.map +1 -1
  6. package/dist/esm/models/InsertQuery.d.ts +3 -1
  7. package/dist/esm/models/InsertQuery.js +3 -2
  8. package/dist/esm/models/InsertQuery.js.map +1 -1
  9. package/dist/esm/models/SqlPrintToken.d.ts +1 -0
  10. package/dist/esm/models/SqlPrintToken.js +1 -0
  11. package/dist/esm/models/SqlPrintToken.js.map +1 -1
  12. package/dist/esm/models/ValueComponent.d.ts +13 -2
  13. package/dist/esm/models/ValueComponent.js +12 -1
  14. package/dist/esm/models/ValueComponent.js.map +1 -1
  15. package/dist/esm/parsers/FunctionExpressionParser.d.ts +8 -0
  16. package/dist/esm/parsers/FunctionExpressionParser.js +66 -5
  17. package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -1
  18. package/dist/esm/parsers/GroupByParser.d.ts +1 -0
  19. package/dist/esm/parsers/GroupByParser.js +30 -7
  20. package/dist/esm/parsers/GroupByParser.js.map +1 -1
  21. package/dist/esm/parsers/InsertQueryParser.d.ts +2 -0
  22. package/dist/esm/parsers/InsertQueryParser.js +120 -3
  23. package/dist/esm/parsers/InsertQueryParser.js.map +1 -1
  24. package/dist/esm/parsers/ReturningClauseParser.d.ts +1 -0
  25. package/dist/esm/parsers/ReturningClauseParser.js +46 -2
  26. package/dist/esm/parsers/ReturningClauseParser.js.map +1 -1
  27. package/dist/esm/parsers/SqlPrintTokenParser.d.ts +3 -0
  28. package/dist/esm/parsers/SqlPrintTokenParser.js +89 -2
  29. package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -1
  30. package/dist/esm/parsers/ValueParser.d.ts +1 -0
  31. package/dist/esm/parsers/ValueParser.js +39 -1
  32. package/dist/esm/parsers/ValueParser.js.map +1 -1
  33. package/dist/esm/tokenReaders/CommandTokenReader.js +5 -0
  34. package/dist/esm/tokenReaders/CommandTokenReader.js.map +1 -1
  35. package/dist/esm/transformers/CTECollector.d.ts +1 -0
  36. package/dist/esm/transformers/CTECollector.js +5 -1
  37. package/dist/esm/transformers/CTECollector.js.map +1 -1
  38. package/dist/esm/transformers/CTEDisabler.d.ts +2 -1
  39. package/dist/esm/transformers/CTEDisabler.js +7 -2
  40. package/dist/esm/transformers/CTEDisabler.js.map +1 -1
  41. package/dist/esm/transformers/CTETableReferenceCollector.d.ts +1 -0
  42. package/dist/esm/transformers/CTETableReferenceCollector.js +5 -1
  43. package/dist/esm/transformers/CTETableReferenceCollector.js.map +1 -1
  44. package/dist/esm/transformers/ColumnReferenceCollector.d.ts +1 -0
  45. package/dist/esm/transformers/ColumnReferenceCollector.js +8 -1
  46. package/dist/esm/transformers/ColumnReferenceCollector.js.map +1 -1
  47. package/dist/esm/transformers/DynamicQueryBuilder.js +1 -1
  48. package/dist/esm/transformers/DynamicQueryBuilder.js.map +1 -1
  49. package/dist/esm/transformers/PruneOptionalConditionBranches.js +40 -8
  50. package/dist/esm/transformers/PruneOptionalConditionBranches.js.map +1 -1
  51. package/dist/esm/transformers/SSSQLFilterBuilder.d.ts +2 -0
  52. package/dist/esm/transformers/SSSQLFilterBuilder.js +85 -10
  53. package/dist/esm/transformers/SSSQLFilterBuilder.js.map +1 -1
  54. package/dist/esm/transformers/SelectableColumnCollector.d.ts +1 -0
  55. package/dist/esm/transformers/SelectableColumnCollector.js +5 -1
  56. package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -1
  57. package/dist/esm/transformers/TableSourceCollector.d.ts +1 -0
  58. package/dist/esm/transformers/TableSourceCollector.js +5 -1
  59. package/dist/esm/transformers/TableSourceCollector.js.map +1 -1
  60. package/dist/esm/utils/OperatorPrecedence.js +1 -0
  61. package/dist/esm/utils/OperatorPrecedence.js.map +1 -1
  62. package/dist/esm/utils/ParameterRemover.d.ts +1 -0
  63. package/dist/esm/utils/ParameterRemover.js +14 -2
  64. package/dist/esm/utils/ParameterRemover.js.map +1 -1
  65. package/dist/esm/utils/ValueComponentRewriter.js +5 -1
  66. package/dist/esm/utils/ValueComponentRewriter.js.map +1 -1
  67. package/dist/index.min.js +10 -10
  68. package/dist/index.min.js.map +4 -4
  69. package/dist/models/Clause.js +28 -3
  70. package/dist/models/Clause.js.map +1 -1
  71. package/dist/models/InsertQuery.js +3 -2
  72. package/dist/models/InsertQuery.js.map +1 -1
  73. package/dist/models/SqlPrintToken.js +1 -0
  74. package/dist/models/SqlPrintToken.js.map +1 -1
  75. package/dist/models/ValueComponent.js +14 -2
  76. package/dist/models/ValueComponent.js.map +1 -1
  77. package/dist/parsers/FunctionExpressionParser.js +66 -5
  78. package/dist/parsers/FunctionExpressionParser.js.map +1 -1
  79. package/dist/parsers/GroupByParser.js +30 -7
  80. package/dist/parsers/GroupByParser.js.map +1 -1
  81. package/dist/parsers/InsertQueryParser.js +119 -2
  82. package/dist/parsers/InsertQueryParser.js.map +1 -1
  83. package/dist/parsers/ReturningClauseParser.js +45 -1
  84. package/dist/parsers/ReturningClauseParser.js.map +1 -1
  85. package/dist/parsers/SqlPrintTokenParser.js +87 -0
  86. package/dist/parsers/SqlPrintTokenParser.js.map +1 -1
  87. package/dist/parsers/ValueParser.js +38 -0
  88. package/dist/parsers/ValueParser.js.map +1 -1
  89. package/dist/src/models/Clause.d.ts +30 -2
  90. package/dist/src/models/InsertQuery.d.ts +3 -1
  91. package/dist/src/models/SqlPrintToken.d.ts +1 -0
  92. package/dist/src/models/ValueComponent.d.ts +13 -2
  93. package/dist/src/parsers/FunctionExpressionParser.d.ts +8 -0
  94. package/dist/src/parsers/GroupByParser.d.ts +1 -0
  95. package/dist/src/parsers/InsertQueryParser.d.ts +2 -0
  96. package/dist/src/parsers/ReturningClauseParser.d.ts +1 -0
  97. package/dist/src/parsers/SqlPrintTokenParser.d.ts +3 -0
  98. package/dist/src/parsers/ValueParser.d.ts +1 -0
  99. package/dist/src/transformers/CTECollector.d.ts +1 -0
  100. package/dist/src/transformers/CTEDisabler.d.ts +2 -1
  101. package/dist/src/transformers/CTETableReferenceCollector.d.ts +1 -0
  102. package/dist/src/transformers/ColumnReferenceCollector.d.ts +1 -0
  103. package/dist/src/transformers/SSSQLFilterBuilder.d.ts +2 -0
  104. package/dist/src/transformers/SelectableColumnCollector.d.ts +1 -0
  105. package/dist/src/transformers/TableSourceCollector.d.ts +1 -0
  106. package/dist/src/utils/ParameterRemover.d.ts +1 -0
  107. package/dist/tokenReaders/CommandTokenReader.js +5 -0
  108. package/dist/tokenReaders/CommandTokenReader.js.map +1 -1
  109. package/dist/transformers/CTECollector.js +4 -0
  110. package/dist/transformers/CTECollector.js.map +1 -1
  111. package/dist/transformers/CTEDisabler.js +6 -1
  112. package/dist/transformers/CTEDisabler.js.map +1 -1
  113. package/dist/transformers/CTETableReferenceCollector.js +4 -0
  114. package/dist/transformers/CTETableReferenceCollector.js.map +1 -1
  115. package/dist/transformers/ColumnReferenceCollector.js +7 -0
  116. package/dist/transformers/ColumnReferenceCollector.js.map +1 -1
  117. package/dist/transformers/DynamicQueryBuilder.js +1 -1
  118. package/dist/transformers/DynamicQueryBuilder.js.map +1 -1
  119. package/dist/transformers/PruneOptionalConditionBranches.js +39 -7
  120. package/dist/transformers/PruneOptionalConditionBranches.js.map +1 -1
  121. package/dist/transformers/SSSQLFilterBuilder.js +84 -9
  122. package/dist/transformers/SSSQLFilterBuilder.js.map +1 -1
  123. package/dist/transformers/SelectableColumnCollector.js +4 -0
  124. package/dist/transformers/SelectableColumnCollector.js.map +1 -1
  125. package/dist/transformers/TableSourceCollector.js +4 -0
  126. package/dist/transformers/TableSourceCollector.js.map +1 -1
  127. package/dist/tsconfig.browser.tsbuildinfo +1 -1
  128. package/dist/utils/OperatorPrecedence.js +1 -0
  129. package/dist/utils/OperatorPrecedence.js.map +1 -1
  130. package/dist/utils/ParameterRemover.js +13 -1
  131. package/dist/utils/ParameterRemover.js.map +1 -1
  132. package/dist/utils/ValueComponentRewriter.js +4 -0
  133. package/dist/utils/ValueComponentRewriter.js.map +1 -1
  134. package/package.json +4 -4
@@ -1,9 +1,9 @@
1
- import { PartitionByClause, OrderByClause, OrderByItem, SelectClause, SelectItem, Distinct, DistinctOn, SortDirection, NullsSortDirection, TableSource, SourceExpression, FromClause, JoinClause, JoinOnClause, JoinUsingClause, FunctionSource, SourceAliasExpression, WhereClause, GroupByClause, HavingClause, SubQuerySource, WindowFrameClause, LimitClause, ForClause, OffsetClause, WindowsClause as WindowClause, CommonTable, WithClause, FetchClause, FetchExpression, InsertClause, UpdateClause, DeleteClause, UsingClause, SetClause, ReturningClause, SetClauseItem } from "../models/Clause";
1
+ import { PartitionByClause, OrderByClause, OrderByItem, SelectClause, SelectItem, Distinct, DistinctOn, SortDirection, NullsSortDirection, TableSource, SourceExpression, FromClause, JoinClause, JoinOnClause, JoinUsingClause, FunctionSource, SourceAliasExpression, WhereClause, GroupByClause, HavingClause, SubQuerySource, WindowFrameClause, LimitClause, ForClause, OffsetClause, WindowsClause as WindowClause, CommonTable, WithClause, FetchClause, FetchExpression, InsertClause, OnConflictClause, UpdateClause, DeleteClause, UsingClause, SetClause, ReturningClause, SetClauseItem } from "../models/Clause";
2
2
  import { HintClause } from "../models/HintClause";
3
3
  import { BinarySelectQuery, SimpleSelectQuery, ValuesQuery } from "../models/SelectQuery";
4
4
  import { SqlPrintToken, SqlPrintTokenType, SqlPrintTokenContainerType } from "../models/SqlPrintToken";
5
5
  import { SelectQueryWithClauseHelper } from "../utils/SelectQueryWithClauseHelper";
6
- import { ValueList, ColumnReference, FunctionCall, UnaryExpression, BinaryExpression, LiteralValue, ParameterExpression, SwitchCaseArgument, CaseKeyValuePair, RawString, IdentifierString, ParenExpression, CastExpression, CaseExpression, ArrayExpression, ArrayQueryExpression, ArraySliceExpression, ArrayIndexExpression, BetweenExpression, StringSpecifierExpression, TypeValue, TupleExpression, WindowFrameExpression, QualifiedName, InlineQuery, WindowFrameSpec, WindowFrameBoundStatic, WindowFrameBoundaryValue } from "../models/ValueComponent";
6
+ import { ValueList, ColumnReference, FunctionCall, UnaryExpression, BinaryExpression, LiteralValue, ParameterExpression, SwitchCaseArgument, CaseKeyValuePair, RawString, IdentifierString, ParenExpression, CastExpression, CaseExpression, ArrayExpression, ArrayQueryExpression, ArraySliceExpression, ArrayIndexExpression, BetweenExpression, JsonPredicateExpression, StringSpecifierExpression, TypeValue, TupleExpression, WindowFrameExpression, QualifiedName, InlineQuery, WindowFrameSpec, WindowFrameBoundStatic, WindowFrameBoundaryValue } from "../models/ValueComponent";
7
7
  import { ParameterCollector } from "../transformers/ParameterCollector";
8
8
  import { IdentifierDecorator } from "./IdentifierDecorator";
9
9
  import { ParameterDecorator } from "./ParameterDecorator";
@@ -195,6 +195,7 @@ export class SqlPrintTokenParser {
195
195
  this.handlers.set(ArraySliceExpression.kind, (expr) => this.visitArraySliceExpression(expr));
196
196
  this.handlers.set(ArrayIndexExpression.kind, (expr) => this.visitArrayIndexExpression(expr));
197
197
  this.handlers.set(BetweenExpression.kind, (expr) => this.visitBetweenExpression(expr));
198
+ this.handlers.set(JsonPredicateExpression.kind, (expr) => this.visitJsonPredicateExpression(expr));
198
199
  this.handlers.set(StringSpecifierExpression.kind, (expr) => this.visitStringSpecifierExpression(expr));
199
200
  this.handlers.set(TypeValue.kind, (expr) => this.visitTypeValue(expr));
200
201
  this.handlers.set(TupleExpression.kind, (expr) => this.visitTupleExpression(expr));
@@ -244,6 +245,7 @@ export class SqlPrintTokenParser {
244
245
  this.handlers.set(TupleExpression.kind, (expr) => this.visitTupleExpression(expr));
245
246
  this.handlers.set(InsertQuery.kind, (expr) => this.visitInsertQuery(expr));
246
247
  this.handlers.set(InsertClause.kind, (expr) => this.visitInsertClause(expr));
248
+ this.handlers.set(OnConflictClause.kind, (expr) => this.visitOnConflictClause(expr));
247
249
  this.handlers.set(UpdateQuery.kind, (expr) => this.visitUpdateQuery(expr));
248
250
  this.handlers.set(UpdateClause.kind, (expr) => this.visitUpdateClause(expr));
249
251
  this.handlers.set(DeleteQuery.kind, (expr) => this.visitDeleteQuery(expr));
@@ -928,6 +930,10 @@ export class SqlPrintTokenParser {
928
930
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
929
931
  token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'with ordinality'));
930
932
  }
933
+ if (arg.nullsTreatment) {
934
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
935
+ token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, arg.nullsTreatment));
936
+ }
931
937
  if (arg.over) {
932
938
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
933
939
  token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'over'));
@@ -2029,6 +2035,13 @@ export class SqlPrintTokenParser {
2029
2035
  }
2030
2036
  visitGroupByClause(arg) {
2031
2037
  const token = new SqlPrintToken(SqlPrintTokenType.keyword, 'group by', SqlPrintTokenContainerType.GroupByClause);
2038
+ if (arg.mode) {
2039
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2040
+ token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, arg.mode));
2041
+ }
2042
+ if (arg.grouping.length === 0) {
2043
+ return token;
2044
+ }
2032
2045
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2033
2046
  for (let i = 0; i < arg.grouping.length; i++) {
2034
2047
  if (i > 0) {
@@ -2298,6 +2311,10 @@ export class SqlPrintTokenParser {
2298
2311
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2299
2312
  token.innerTokens.push(this.visit(arg.selectQuery));
2300
2313
  }
2314
+ if (arg.onConflictClause) {
2315
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2316
+ token.innerTokens.push(arg.onConflictClause.accept(this));
2317
+ }
2301
2318
  if (arg.returningClause) {
2302
2319
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2303
2320
  token.innerTokens.push(arg.returningClause.accept(this));
@@ -2307,6 +2324,59 @@ export class SqlPrintTokenParser {
2307
2324
  }
2308
2325
  return token;
2309
2326
  }
2327
+ visitJsonPredicateExpression(arg) {
2328
+ const token = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.BinaryExpression);
2329
+ token.innerTokens.push(this.visit(arg.expression));
2330
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2331
+ token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.operator, arg.negated ? 'is not' : 'is'));
2332
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2333
+ token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'json'));
2334
+ if (arg.jsonType) {
2335
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2336
+ token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, arg.jsonType));
2337
+ }
2338
+ if (arg.uniqueKeys) {
2339
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2340
+ token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, `${arg.uniqueKeys} unique keys`));
2341
+ }
2342
+ return token;
2343
+ }
2344
+ visitOnConflictClause(arg) {
2345
+ const token = new SqlPrintToken(SqlPrintTokenType.keyword, 'on conflict', SqlPrintTokenContainerType.OnConflictClause);
2346
+ if (arg.target) {
2347
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2348
+ if (arg.targetKind === "constraint") {
2349
+ token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'on constraint'));
2350
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2351
+ }
2352
+ token.innerTokens.push(arg.target.accept(this));
2353
+ }
2354
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2355
+ token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, this.formatOnConflictAction(arg)));
2356
+ if (arg.setClause) {
2357
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2358
+ token.innerTokens.push(arg.setClause.accept(this));
2359
+ }
2360
+ if (arg.forClause) {
2361
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2362
+ token.innerTokens.push(arg.forClause.accept(this));
2363
+ }
2364
+ if (arg.whereClause) {
2365
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2366
+ token.innerTokens.push(arg.whereClause.accept(this));
2367
+ }
2368
+ return token;
2369
+ }
2370
+ formatOnConflictAction(arg) {
2371
+ switch (arg.action) {
2372
+ case "nothing":
2373
+ return "do nothing";
2374
+ case "select":
2375
+ return "do select";
2376
+ case "update":
2377
+ return "do update";
2378
+ }
2379
+ }
2310
2380
  visitInsertClause(arg) {
2311
2381
  const token = new SqlPrintToken(SqlPrintTokenType.container, '', SqlPrintTokenContainerType.InsertClause);
2312
2382
  token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'insert into'));
@@ -2549,6 +2619,23 @@ export class SqlPrintTokenParser {
2549
2619
  visitReturningClause(arg) {
2550
2620
  const token = new SqlPrintToken(SqlPrintTokenType.keyword, 'returning', SqlPrintTokenContainerType.ReturningClause);
2551
2621
  token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2622
+ if (arg.aliases.length > 0) {
2623
+ token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'with'));
2624
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2625
+ token.innerTokens.push(SqlPrintTokenParser.PAREN_OPEN_TOKEN);
2626
+ for (let i = 0; i < arg.aliases.length; i++) {
2627
+ if (i > 0) {
2628
+ token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());
2629
+ }
2630
+ token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, arg.aliases[i].kind));
2631
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2632
+ token.innerTokens.push(new SqlPrintToken(SqlPrintTokenType.keyword, 'as'));
2633
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2634
+ token.innerTokens.push(this.visit(arg.aliases[i].alias));
2635
+ }
2636
+ token.innerTokens.push(SqlPrintTokenParser.PAREN_CLOSE_TOKEN);
2637
+ token.innerTokens.push(SqlPrintTokenParser.SPACE_TOKEN);
2638
+ }
2552
2639
  for (let i = 0; i < arg.items.length; i++) {
2553
2640
  if (i > 0) {
2554
2641
  token.innerTokens.push(...SqlPrintTokenParser.commaSpaceTokens());