rawsql-ts 0.23.1 → 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 (116) hide show
  1. package/dist/esm/index.min.js +9 -9
  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/SelectableColumnCollector.d.ts +1 -0
  48. package/dist/esm/transformers/SelectableColumnCollector.js +5 -1
  49. package/dist/esm/transformers/SelectableColumnCollector.js.map +1 -1
  50. package/dist/esm/transformers/TableSourceCollector.d.ts +1 -0
  51. package/dist/esm/transformers/TableSourceCollector.js +5 -1
  52. package/dist/esm/transformers/TableSourceCollector.js.map +1 -1
  53. package/dist/esm/utils/ParameterRemover.d.ts +1 -0
  54. package/dist/esm/utils/ParameterRemover.js +14 -2
  55. package/dist/esm/utils/ParameterRemover.js.map +1 -1
  56. package/dist/esm/utils/ValueComponentRewriter.js +5 -1
  57. package/dist/esm/utils/ValueComponentRewriter.js.map +1 -1
  58. package/dist/index.min.js +9 -9
  59. package/dist/index.min.js.map +4 -4
  60. package/dist/models/Clause.js +28 -3
  61. package/dist/models/Clause.js.map +1 -1
  62. package/dist/models/InsertQuery.js +3 -2
  63. package/dist/models/InsertQuery.js.map +1 -1
  64. package/dist/models/SqlPrintToken.js +1 -0
  65. package/dist/models/SqlPrintToken.js.map +1 -1
  66. package/dist/models/ValueComponent.js +14 -2
  67. package/dist/models/ValueComponent.js.map +1 -1
  68. package/dist/parsers/FunctionExpressionParser.js +66 -5
  69. package/dist/parsers/FunctionExpressionParser.js.map +1 -1
  70. package/dist/parsers/GroupByParser.js +30 -7
  71. package/dist/parsers/GroupByParser.js.map +1 -1
  72. package/dist/parsers/InsertQueryParser.js +119 -2
  73. package/dist/parsers/InsertQueryParser.js.map +1 -1
  74. package/dist/parsers/ReturningClauseParser.js +45 -1
  75. package/dist/parsers/ReturningClauseParser.js.map +1 -1
  76. package/dist/parsers/SqlPrintTokenParser.js +87 -0
  77. package/dist/parsers/SqlPrintTokenParser.js.map +1 -1
  78. package/dist/parsers/ValueParser.js +38 -0
  79. package/dist/parsers/ValueParser.js.map +1 -1
  80. package/dist/src/models/Clause.d.ts +30 -2
  81. package/dist/src/models/InsertQuery.d.ts +3 -1
  82. package/dist/src/models/SqlPrintToken.d.ts +1 -0
  83. package/dist/src/models/ValueComponent.d.ts +13 -2
  84. package/dist/src/parsers/FunctionExpressionParser.d.ts +8 -0
  85. package/dist/src/parsers/GroupByParser.d.ts +1 -0
  86. package/dist/src/parsers/InsertQueryParser.d.ts +2 -0
  87. package/dist/src/parsers/ReturningClauseParser.d.ts +1 -0
  88. package/dist/src/parsers/SqlPrintTokenParser.d.ts +3 -0
  89. package/dist/src/parsers/ValueParser.d.ts +1 -0
  90. package/dist/src/transformers/CTECollector.d.ts +1 -0
  91. package/dist/src/transformers/CTEDisabler.d.ts +2 -1
  92. package/dist/src/transformers/CTETableReferenceCollector.d.ts +1 -0
  93. package/dist/src/transformers/ColumnReferenceCollector.d.ts +1 -0
  94. package/dist/src/transformers/SelectableColumnCollector.d.ts +1 -0
  95. package/dist/src/transformers/TableSourceCollector.d.ts +1 -0
  96. package/dist/src/utils/ParameterRemover.d.ts +1 -0
  97. package/dist/tokenReaders/CommandTokenReader.js +5 -0
  98. package/dist/tokenReaders/CommandTokenReader.js.map +1 -1
  99. package/dist/transformers/CTECollector.js +4 -0
  100. package/dist/transformers/CTECollector.js.map +1 -1
  101. package/dist/transformers/CTEDisabler.js +6 -1
  102. package/dist/transformers/CTEDisabler.js.map +1 -1
  103. package/dist/transformers/CTETableReferenceCollector.js +4 -0
  104. package/dist/transformers/CTETableReferenceCollector.js.map +1 -1
  105. package/dist/transformers/ColumnReferenceCollector.js +7 -0
  106. package/dist/transformers/ColumnReferenceCollector.js.map +1 -1
  107. package/dist/transformers/SelectableColumnCollector.js +4 -0
  108. package/dist/transformers/SelectableColumnCollector.js.map +1 -1
  109. package/dist/transformers/TableSourceCollector.js +4 -0
  110. package/dist/transformers/TableSourceCollector.js.map +1 -1
  111. package/dist/tsconfig.browser.tsbuildinfo +1 -1
  112. package/dist/utils/ParameterRemover.js +13 -1
  113. package/dist/utils/ParameterRemover.js.map +1 -1
  114. package/dist/utils/ValueComponentRewriter.js +4 -0
  115. package/dist/utils/ValueComponentRewriter.js.map +1 -1
  116. package/package.json +1 -1
@@ -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());