@shaxpir/squilt 1.0.0 → 1.1.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 (68) hide show
  1. package/README.md +289 -1
  2. package/dist/ast/AlterTableQuery.d.ts +32 -0
  3. package/dist/ast/AlterTableQuery.js +60 -0
  4. package/dist/ast/BetweenExpression.d.ts +10 -0
  5. package/dist/ast/BetweenExpression.js +18 -0
  6. package/dist/ast/CastExpression.d.ts +13 -0
  7. package/dist/ast/CastExpression.js +25 -0
  8. package/dist/ast/CollateExpression.d.ts +18 -0
  9. package/dist/ast/CollateExpression.js +30 -0
  10. package/dist/ast/CreateIndexQuery.d.ts +25 -0
  11. package/dist/ast/CreateIndexQuery.js +64 -0
  12. package/dist/ast/CreateTableQuery.d.ts +57 -0
  13. package/dist/ast/CreateTableQuery.js +79 -0
  14. package/dist/ast/CreateViewQuery.d.ts +34 -0
  15. package/dist/ast/CreateViewQuery.js +61 -0
  16. package/dist/ast/CreateVirtualTableQuery.d.ts +32 -0
  17. package/dist/ast/CreateVirtualTableQuery.js +74 -0
  18. package/dist/ast/DeleteQuery.d.ts +17 -0
  19. package/dist/ast/DeleteQuery.js +43 -0
  20. package/dist/ast/DropIndexQuery.d.ts +14 -0
  21. package/dist/ast/DropIndexQuery.js +35 -0
  22. package/dist/ast/DropTableQuery.d.ts +14 -0
  23. package/dist/ast/DropTableQuery.js +35 -0
  24. package/dist/ast/DropViewQuery.d.ts +11 -0
  25. package/dist/ast/DropViewQuery.js +24 -0
  26. package/dist/ast/FunctionExpression.d.ts +21 -0
  27. package/dist/ast/FunctionExpression.js +40 -1
  28. package/dist/ast/FunctionName.d.ts +1 -1
  29. package/dist/ast/FunctionName.js +1 -1
  30. package/dist/ast/InsertQuery.d.ts +24 -1
  31. package/dist/ast/InsertQuery.js +49 -1
  32. package/dist/ast/Operator.d.ts +2 -0
  33. package/dist/ast/Operator.js +3 -1
  34. package/dist/ast/SelectQuery.d.ts +4 -0
  35. package/dist/ast/SelectQuery.js +11 -1
  36. package/dist/ast/SubqueryExpression.d.ts +18 -0
  37. package/dist/ast/SubqueryExpression.js +27 -0
  38. package/dist/ast/UpdateQuery.d.ts +24 -0
  39. package/dist/ast/UpdateQuery.js +51 -0
  40. package/dist/ast/WindowExpression.d.ts +51 -0
  41. package/dist/ast/WindowExpression.js +61 -0
  42. package/dist/ast/WindowSpecification.d.ts +46 -0
  43. package/dist/ast/WindowSpecification.js +60 -0
  44. package/dist/builder/QueryBuilder.d.ts +20 -0
  45. package/dist/builder/QueryBuilder.js +41 -1
  46. package/dist/builder/Shorthand.d.ts +51 -0
  47. package/dist/builder/Shorthand.js +125 -1
  48. package/dist/index.d.ts +17 -1
  49. package/dist/index.js +59 -3
  50. package/dist/renderer/CompactQueryRenderer.d.ts +34 -2
  51. package/dist/renderer/CompactQueryRenderer.js +272 -2
  52. package/dist/renderer/IndentedQueryRenderer.d.ts +34 -2
  53. package/dist/renderer/IndentedQueryRenderer.js +289 -3
  54. package/dist/renderer/QueryRenderer.d.ts +11 -1
  55. package/dist/renderer/QueryRenderer.js +1 -1
  56. package/dist/validate/CommonQueryValidator.d.ts +31 -1
  57. package/dist/validate/CommonQueryValidator.js +253 -4
  58. package/dist/validate/QueryValidator.d.ts +10 -1
  59. package/dist/validate/QueryValidator.js +1 -1
  60. package/dist/validate/SQLiteQueryValidator.d.ts +16 -1
  61. package/dist/validate/SQLiteQueryValidator.js +32 -3
  62. package/dist/visitor/ParamCollector.d.ts +30 -0
  63. package/dist/visitor/ParamCollector.js +109 -2
  64. package/dist/visitor/QueryIdentityTransformer.d.ts +30 -0
  65. package/dist/visitor/QueryIdentityTransformer.js +217 -2
  66. package/dist/visitor/SqlTreeNodeVisitor.d.ts +30 -0
  67. package/dist/visitor/SqlTreeNodeVisitor.js +1 -1
  68. package/package.json +4 -1
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FunctionExpression = void 0;
4
4
  const Abstractions_1 = require("./Abstractions");
5
+ const OrderBy_1 = require("./OrderBy");
6
+ const WindowExpression_1 = require("./WindowExpression");
7
+ const WindowSpecification_1 = require("./WindowSpecification");
5
8
  // Represents a function call (e.g., COUNT(id)) with SQLite-supported functions
6
9
  class FunctionExpression extends Abstractions_1.AliasableExpression {
7
10
  constructor(name, args, distinct = false) {
@@ -22,6 +25,42 @@ class FunctionExpression extends Abstractions_1.AliasableExpression {
22
25
  accept(visitor) {
23
26
  return visitor.visitFunctionExpression(this);
24
27
  }
28
+ /**
29
+ * Create a window function expression with an OVER clause.
30
+ *
31
+ * Accepts PARTITION_BY (Expression[]) and ORDER_BY (OrderBy) arguments
32
+ * in any order. Multiple ORDER_BY clauses are combined.
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * // With ORDER BY only
37
+ * FN('ROW_NUMBER').over(ORDER_BY('created_at'))
38
+ *
39
+ * // With PARTITION BY and ORDER BY
40
+ * FN('RANK').over(PARTITION_BY('category'), ORDER_BY('price', DESC))
41
+ *
42
+ * // Empty OVER clause (window over entire result set)
43
+ * FN('AVG', COLUMN('salary')).over()
44
+ * ```
45
+ */
46
+ over(...specs) {
47
+ const windowSpec = new WindowSpecification_1.WindowSpecification();
48
+ const orderByClauses = [];
49
+ for (const spec of specs) {
50
+ if (Array.isArray(spec)) {
51
+ // This is PARTITION BY columns (Expression[])
52
+ windowSpec.setPartitionBy(spec);
53
+ }
54
+ else if (spec instanceof OrderBy_1.OrderBy) {
55
+ // This is an ORDER BY clause
56
+ orderByClauses.push(spec);
57
+ }
58
+ }
59
+ if (orderByClauses.length > 0) {
60
+ windowSpec.setOrderBy(orderByClauses);
61
+ }
62
+ return new WindowExpression_1.WindowExpression(this, windowSpec);
63
+ }
25
64
  }
26
65
  exports.FunctionExpression = FunctionExpression;
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25FeHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FzdC9GdW5jdGlvbkV4cHJlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQWlFO0FBR2pFLCtFQUErRTtBQUMvRSxNQUFhLGtCQUFtQixTQUFRLGtDQUFtQjtJQU16RCxZQUFZLElBQWtCLEVBQUUsSUFBa0IsRUFBRSxXQUFvQixLQUFLO1FBQzNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUksT0FBOEI7UUFDN0MsT0FBTyxPQUFPLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBNUJELGdEQTRCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNxbFRyZWVOb2RlVmlzaXRvciB9IGZyb20gXCIuLi92aXNpdG9yL1NxbFRyZWVOb2RlVmlzaXRvclwiO1xuaW1wb3J0IHsgQWxpYXNhYmxlRXhwcmVzc2lvbiwgRXhwcmVzc2lvbiB9IGZyb20gXCIuL0Fic3RyYWN0aW9uc1wiO1xuaW1wb3J0IHsgRnVuY3Rpb25OYW1lIH0gZnJvbSBcIi4vRnVuY3Rpb25OYW1lXCI7XG5cbi8vIFJlcHJlc2VudHMgYSBmdW5jdGlvbiBjYWxsIChlLmcuLCBDT1VOVChpZCkpIHdpdGggU1FMaXRlLXN1cHBvcnRlZCBmdW5jdGlvbnNcbmV4cG9ydCBjbGFzcyBGdW5jdGlvbkV4cHJlc3Npb24gZXh0ZW5kcyBBbGlhc2FibGVFeHByZXNzaW9uIHtcblxuICBwcml2YXRlIF9uYW1lOiBGdW5jdGlvbk5hbWU7XG4gIHByaXZhdGUgX2FyZ3M6IEV4cHJlc3Npb25bXTtcbiAgcHJpdmF0ZSBfZGlzdGluY3Q6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IobmFtZTogRnVuY3Rpb25OYW1lLCBhcmdzOiBFeHByZXNzaW9uW10sIGRpc3RpbmN0OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xuICAgIHRoaXMuX2FyZ3MgPSBhcmdzO1xuICAgIHRoaXMuX2Rpc3RpbmN0ID0gZGlzdGluY3Q7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5hbWUoKTogRnVuY3Rpb25OYW1lIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJncygpOiBFeHByZXNzaW9uW10ge1xuICAgIHJldHVybiB0aGlzLl9hcmdzO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXN0aW5jdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzdGluY3Q7XG4gIH1cblxuICBwdWJsaWMgYWNjZXB0PFQ+KHZpc2l0b3I6IFNxbFRyZWVOb2RlVmlzaXRvcjxUPik6IFQge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RnVuY3Rpb25FeHByZXNzaW9uKHRoaXMpO1xuICB9XG59XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25FeHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FzdC9GdW5jdGlvbkV4cHJlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQWlFO0FBRWpFLHVDQUFvQztBQUNwQyx5REFBc0Q7QUFDdEQsK0RBQTREO0FBRTVELCtFQUErRTtBQUMvRSxNQUFhLGtCQUFtQixTQUFRLGtDQUFtQjtJQU16RCxZQUFZLElBQWtCLEVBQUUsSUFBa0IsRUFBRSxXQUFvQixLQUFLO1FBQzNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUksT0FBOEI7UUFDN0MsT0FBTyxPQUFPLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNJLElBQUksQ0FBQyxHQUFHLEtBQWlDO1FBQzlDLE1BQU0sVUFBVSxHQUFHLElBQUkseUNBQW1CLEVBQUUsQ0FBQztRQUM3QyxNQUFNLGNBQWMsR0FBYyxFQUFFLENBQUM7UUFFckMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsOENBQThDO2dCQUM5QyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUM7aUJBQU0sSUFBSSxJQUFJLFlBQVksaUJBQU8sRUFBRSxDQUFDO2dCQUNuQyw2QkFBNkI7Z0JBQzdCLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsT0FBTyxJQUFJLG1DQUFnQixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUFuRUQsZ0RBbUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3FsVHJlZU5vZGVWaXNpdG9yIH0gZnJvbSBcIi4uL3Zpc2l0b3IvU3FsVHJlZU5vZGVWaXNpdG9yXCI7XG5pbXBvcnQgeyBBbGlhc2FibGVFeHByZXNzaW9uLCBFeHByZXNzaW9uIH0gZnJvbSBcIi4vQWJzdHJhY3Rpb25zXCI7XG5pbXBvcnQgeyBGdW5jdGlvbk5hbWUgfSBmcm9tIFwiLi9GdW5jdGlvbk5hbWVcIjtcbmltcG9ydCB7IE9yZGVyQnkgfSBmcm9tIFwiLi9PcmRlckJ5XCI7XG5pbXBvcnQgeyBXaW5kb3dFeHByZXNzaW9uIH0gZnJvbSBcIi4vV2luZG93RXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgV2luZG93U3BlY2lmaWNhdGlvbiB9IGZyb20gXCIuL1dpbmRvd1NwZWNpZmljYXRpb25cIjtcblxuLy8gUmVwcmVzZW50cyBhIGZ1bmN0aW9uIGNhbGwgKGUuZy4sIENPVU5UKGlkKSkgd2l0aCBTUUxpdGUtc3VwcG9ydGVkIGZ1bmN0aW9uc1xuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uRXhwcmVzc2lvbiBleHRlbmRzIEFsaWFzYWJsZUV4cHJlc3Npb24ge1xuXG4gIHByaXZhdGUgX25hbWU6IEZ1bmN0aW9uTmFtZTtcbiAgcHJpdmF0ZSBfYXJnczogRXhwcmVzc2lvbltdO1xuICBwcml2YXRlIF9kaXN0aW5jdDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBGdW5jdGlvbk5hbWUsIGFyZ3M6IEV4cHJlc3Npb25bXSwgZGlzdGluY3Q6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XG4gICAgdGhpcy5fYXJncyA9IGFyZ3M7XG4gICAgdGhpcy5fZGlzdGluY3QgPSBkaXN0aW5jdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBGdW5jdGlvbk5hbWUge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBhcmdzKCk6IEV4cHJlc3Npb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2FyZ3M7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3RpbmN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXN0aW5jdDtcbiAgfVxuXG4gIHB1YmxpYyBhY2NlcHQ8VD4odmlzaXRvcjogU3FsVHJlZU5vZGVWaXNpdG9yPFQ+KTogVCB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRGdW5jdGlvbkV4cHJlc3Npb24odGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgd2luZG93IGZ1bmN0aW9uIGV4cHJlc3Npb24gd2l0aCBhbiBPVkVSIGNsYXVzZS5cbiAgICpcbiAgICogQWNjZXB0cyBQQVJUSVRJT05fQlkgKEV4cHJlc3Npb25bXSkgYW5kIE9SREVSX0JZIChPcmRlckJ5KSBhcmd1bWVudHNcbiAgICogaW4gYW55IG9yZGVyLiBNdWx0aXBsZSBPUkRFUl9CWSBjbGF1c2VzIGFyZSBjb21iaW5lZC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBXaXRoIE9SREVSIEJZIG9ubHlcbiAgICogRk4oJ1JPV19OVU1CRVInKS5vdmVyKE9SREVSX0JZKCdjcmVhdGVkX2F0JykpXG4gICAqXG4gICAqIC8vIFdpdGggUEFSVElUSU9OIEJZIGFuZCBPUkRFUiBCWVxuICAgKiBGTignUkFOSycpLm92ZXIoUEFSVElUSU9OX0JZKCdjYXRlZ29yeScpLCBPUkRFUl9CWSgncHJpY2UnLCBERVNDKSlcbiAgICpcbiAgICogLy8gRW1wdHkgT1ZFUiBjbGF1c2UgKHdpbmRvdyBvdmVyIGVudGlyZSByZXN1bHQgc2V0KVxuICAgKiBGTignQVZHJywgQ09MVU1OKCdzYWxhcnknKSkub3ZlcigpXG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIG92ZXIoLi4uc3BlY3M6IChFeHByZXNzaW9uW10gfCBPcmRlckJ5KVtdKTogV2luZG93RXhwcmVzc2lvbiB7XG4gICAgY29uc3Qgd2luZG93U3BlYyA9IG5ldyBXaW5kb3dTcGVjaWZpY2F0aW9uKCk7XG4gICAgY29uc3Qgb3JkZXJCeUNsYXVzZXM6IE9yZGVyQnlbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBzcGVjIG9mIHNwZWNzKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShzcGVjKSkge1xuICAgICAgICAvLyBUaGlzIGlzIFBBUlRJVElPTiBCWSBjb2x1bW5zIChFeHByZXNzaW9uW10pXG4gICAgICAgIHdpbmRvd1NwZWMuc2V0UGFydGl0aW9uQnkoc3BlYyk7XG4gICAgICB9IGVsc2UgaWYgKHNwZWMgaW5zdGFuY2VvZiBPcmRlckJ5KSB7XG4gICAgICAgIC8vIFRoaXMgaXMgYW4gT1JERVIgQlkgY2xhdXNlXG4gICAgICAgIG9yZGVyQnlDbGF1c2VzLnB1c2goc3BlYyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9yZGVyQnlDbGF1c2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHdpbmRvd1NwZWMuc2V0T3JkZXJCeShvcmRlckJ5Q2xhdXNlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBXaW5kb3dFeHByZXNzaW9uKHRoaXMsIHdpbmRvd1NwZWMpO1xuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- export type FunctionName = 'ABS' | 'AVG' | 'CEIL' | 'CHANGES' | 'CHAR' | 'COALESCE' | 'CONCAT' | 'COUNT' | 'DATE' | 'DATETIME' | 'FLOOR' | 'GROUP_CONCAT' | 'HEX' | 'IFNULL' | 'INSTR' | 'JULIANDAY' | 'LAST_INSERT_ROWID' | 'LENGTH' | 'LOWER' | 'LTRIM' | 'MAX' | 'MIN' | 'NULLIF' | 'QUOTE' | 'RANDOM' | 'RANDOMBLOB' | 'REPLACE' | 'ROUND' | 'RTRIM' | 'STRFTIME' | 'SUBSTR' | 'SUM' | 'TIME' | 'TOTAL' | 'TOTAL_CHANGES' | 'TRIM' | 'TRUNC' | 'TYPEOF' | 'UNICODE' | 'UPPER' | 'ZEROBLOB' | 'json' | 'json_array' | 'json_array_length' | 'json_each' | 'json_extract' | 'json_group_array' | 'json_group_object' | 'json_insert' | 'json_object' | 'json_patch' | 'json_quote' | 'json_remove' | 'json_replace' | 'json_set' | 'json_tree' | 'json_type' | 'json_valid';
1
+ export type FunctionName = 'ABS' | 'AVG' | 'CEIL' | 'CHANGES' | 'CHAR' | 'COALESCE' | 'CONCAT' | 'COUNT' | 'DATE' | 'DATETIME' | 'FLOOR' | 'GROUP_CONCAT' | 'HEX' | 'IFNULL' | 'INSTR' | 'JULIANDAY' | 'LAST_INSERT_ROWID' | 'LENGTH' | 'LOWER' | 'LTRIM' | 'MAX' | 'MIN' | 'NULLIF' | 'QUOTE' | 'RANDOM' | 'RANDOMBLOB' | 'REPLACE' | 'ROUND' | 'RTRIM' | 'STRFTIME' | 'SUBSTR' | 'SUM' | 'TIME' | 'TOTAL' | 'TOTAL_CHANGES' | 'TRIM' | 'TRUNC' | 'TYPEOF' | 'UNICODE' | 'UPPER' | 'ZEROBLOB' | 'ROW_NUMBER' | 'RANK' | 'DENSE_RANK' | 'NTILE' | 'LAG' | 'LEAD' | 'FIRST_VALUE' | 'LAST_VALUE' | 'NTH_VALUE' | 'CUME_DIST' | 'PERCENT_RANK' | 'json' | 'json_array' | 'json_array_length' | 'json_each' | 'json_extract' | 'json_group_array' | 'json_group_object' | 'json_insert' | 'json_object' | 'json_patch' | 'json_quote' | 'json_remove' | 'json_replace' | 'json_set' | 'json_tree' | 'json_type' | 'json_valid' | 'bm25' | 'highlight' | 'snippet' | 'offsets' | 'matchinfo';
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25OYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FzdC9GdW5jdGlvbk5hbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZ1bmN0aW9uTmFtZSA9XG4gICAgJ0FCUydcbiAgfCAnQVZHJ1xuICB8ICdDRUlMJ1xuICB8ICdDSEFOR0VTJ1xuICB8ICdDSEFSJ1xuICB8ICdDT0FMRVNDRSdcbiAgfCAnQ09OQ0FUJ1xuICB8ICdDT1VOVCdcbiAgfCAnREFURSdcbiAgfCAnREFURVRJTUUnXG4gIHwgJ0ZMT09SJ1xuICB8ICdHUk9VUF9DT05DQVQnXG4gIHwgJ0hFWCdcbiAgfCAnSUZOVUxMJ1xuICB8ICdJTlNUUidcbiAgfCAnSlVMSUFOREFZJ1xuICB8ICdMQVNUX0lOU0VSVF9ST1dJRCdcbiAgfCAnTEVOR1RIJ1xuICB8ICdMT1dFUidcbiAgfCAnTFRSSU0nXG4gIHwgJ01BWCdcbiAgfCAnTUlOJ1xuICB8ICdOVUxMSUYnXG4gIHwgJ1FVT1RFJ1xuICB8ICdSQU5ET00nXG4gIHwgJ1JBTkRPTUJMT0InXG4gIHwgJ1JFUExBQ0UnXG4gIHwgJ1JPVU5EJ1xuICB8ICdSVFJJTSdcbiAgfCAnU1RSRlRJTUUnXG4gIHwgJ1NVQlNUUidcbiAgfCAnU1VNJ1xuICB8ICdUSU1FJ1xuICB8ICdUT1RBTCdcbiAgfCAnVE9UQUxfQ0hBTkdFUydcbiAgfCAnVFJJTSdcbiAgfCAnVFJVTkMnXG4gIHwgJ1RZUEVPRidcbiAgfCAnVU5JQ09ERSdcbiAgfCAnVVBQRVInXG4gIHwgJ1pFUk9CTE9CJ1xuICB8ICdqc29uJ1xuICB8ICdqc29uX2FycmF5J1xuICB8ICdqc29uX2FycmF5X2xlbmd0aCdcbiAgfCAnanNvbl9lYWNoJ1xuICB8ICdqc29uX2V4dHJhY3QnXG4gIHwgJ2pzb25fZ3JvdXBfYXJyYXknXG4gIHwgJ2pzb25fZ3JvdXBfb2JqZWN0J1xuICB8ICdqc29uX2luc2VydCdcbiAgfCAnanNvbl9vYmplY3QnXG4gIHwgJ2pzb25fcGF0Y2gnXG4gIHwgJ2pzb25fcXVvdGUnXG4gIHwgJ2pzb25fcmVtb3ZlJ1xuICB8ICdqc29uX3JlcGxhY2UnXG4gIHwgJ2pzb25fc2V0J1xuICB8ICdqc29uX3RyZWUnXG4gIHwgJ2pzb25fdHlwZSdcbiAgfCAnanNvbl92YWxpZCc7XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY3Rpb25OYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FzdC9GdW5jdGlvbk5hbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZ1bmN0aW9uTmFtZSA9XG4gICAgLy8gU3RhbmRhcmQgU1FMIGZ1bmN0aW9uc1xuICAgICdBQlMnXG4gIHwgJ0FWRydcbiAgfCAnQ0VJTCdcbiAgfCAnQ0hBTkdFUydcbiAgfCAnQ0hBUidcbiAgfCAnQ09BTEVTQ0UnXG4gIHwgJ0NPTkNBVCdcbiAgfCAnQ09VTlQnXG4gIHwgJ0RBVEUnXG4gIHwgJ0RBVEVUSU1FJ1xuICB8ICdGTE9PUidcbiAgfCAnR1JPVVBfQ09OQ0FUJ1xuICB8ICdIRVgnXG4gIHwgJ0lGTlVMTCdcbiAgfCAnSU5TVFInXG4gIHwgJ0pVTElBTkRBWSdcbiAgfCAnTEFTVF9JTlNFUlRfUk9XSUQnXG4gIHwgJ0xFTkdUSCdcbiAgfCAnTE9XRVInXG4gIHwgJ0xUUklNJ1xuICB8ICdNQVgnXG4gIHwgJ01JTidcbiAgfCAnTlVMTElGJ1xuICB8ICdRVU9URSdcbiAgfCAnUkFORE9NJ1xuICB8ICdSQU5ET01CTE9CJ1xuICB8ICdSRVBMQUNFJ1xuICB8ICdST1VORCdcbiAgfCAnUlRSSU0nXG4gIHwgJ1NUUkZUSU1FJ1xuICB8ICdTVUJTVFInXG4gIHwgJ1NVTSdcbiAgfCAnVElNRSdcbiAgfCAnVE9UQUwnXG4gIHwgJ1RPVEFMX0NIQU5HRVMnXG4gIHwgJ1RSSU0nXG4gIHwgJ1RSVU5DJ1xuICB8ICdUWVBFT0YnXG4gIHwgJ1VOSUNPREUnXG4gIHwgJ1VQUEVSJ1xuICB8ICdaRVJPQkxPQidcbiAgLy8gV2luZG93IGZ1bmN0aW9uc1xuICB8ICdST1dfTlVNQkVSJ1xuICB8ICdSQU5LJ1xuICB8ICdERU5TRV9SQU5LJ1xuICB8ICdOVElMRSdcbiAgfCAnTEFHJ1xuICB8ICdMRUFEJ1xuICB8ICdGSVJTVF9WQUxVRSdcbiAgfCAnTEFTVF9WQUxVRSdcbiAgfCAnTlRIX1ZBTFVFJ1xuICB8ICdDVU1FX0RJU1QnXG4gIHwgJ1BFUkNFTlRfUkFOSydcbiAgfCAnanNvbidcbiAgfCAnanNvbl9hcnJheSdcbiAgfCAnanNvbl9hcnJheV9sZW5ndGgnXG4gIHwgJ2pzb25fZWFjaCdcbiAgfCAnanNvbl9leHRyYWN0J1xuICB8ICdqc29uX2dyb3VwX2FycmF5J1xuICB8ICdqc29uX2dyb3VwX29iamVjdCdcbiAgfCAnanNvbl9pbnNlcnQnXG4gIHwgJ2pzb25fb2JqZWN0J1xuICB8ICdqc29uX3BhdGNoJ1xuICB8ICdqc29uX3F1b3RlJ1xuICB8ICdqc29uX3JlbW92ZSdcbiAgfCAnanNvbl9yZXBsYWNlJ1xuICB8ICdqc29uX3NldCdcbiAgfCAnanNvbl90cmVlJ1xuICB8ICdqc29uX3R5cGUnXG4gIHwgJ2pzb25fdmFsaWQnXG4gIC8vIEZUUzUgZnVuY3Rpb25zXG4gIHwgJ2JtMjUnXG4gIHwgJ2hpZ2hsaWdodCdcbiAgfCAnc25pcHBldCdcbiAgfCAnb2Zmc2V0cydcbiAgfCAnbWF0Y2hpbmZvJztcbiJdfQ==
@@ -1,17 +1,40 @@
1
1
  import { QueryRenderer } from "../renderer/QueryRenderer";
2
2
  import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
3
- import { Expression, SqlTreeNode } from "./Abstractions";
3
+ import { AliasableExpression, Expression, SqlTreeNode } from "./Abstractions";
4
+ import { SelectQuery } from "./SelectQuery";
5
+ export interface UpsertSetClause {
6
+ column: string;
7
+ value: Expression;
8
+ }
4
9
  export declare class InsertQuery implements SqlTreeNode {
5
10
  private _tableName;
6
11
  private _columns;
7
12
  private _values;
13
+ private _fromSelect;
8
14
  private _orReplace;
15
+ private _returning;
16
+ private _onConflictColumns;
17
+ private _doUpdateSets;
18
+ private _doNothing;
19
+ private _onConflictWhere;
9
20
  constructor(tableName: string);
10
21
  static create(tableName: string): InsertQuery;
11
22
  orReplace(): InsertQuery;
12
23
  columns(...columns: string[]): InsertQuery;
13
24
  values(...values: Expression[]): InsertQuery;
25
+ fromSelect(query: SelectQuery): InsertQuery;
26
+ get selectQuery(): SelectQuery | null;
27
+ returning(...expressions: AliasableExpression[]): InsertQuery;
28
+ onConflict(...columns: string[]): InsertQuery;
29
+ doUpdate(sets: Record<string, Expression>): InsertQuery;
30
+ doNothing(): InsertQuery;
31
+ onConflictWhere(condition: Expression): InsertQuery;
14
32
  isOrReplace(): boolean;
33
+ get returningClause(): AliasableExpression[];
34
+ get onConflictColumns(): string[];
35
+ get doUpdateClauses(): UpsertSetClause[];
36
+ get isDoNothing(): boolean;
37
+ get conflictWhere(): Expression | null;
15
38
  toSQL(renderer?: QueryRenderer): string;
16
39
  accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
17
40
  }
@@ -7,7 +7,13 @@ class InsertQuery {
7
7
  constructor(tableName) {
8
8
  this._columns = [];
9
9
  this._values = [];
10
+ this._fromSelect = null;
10
11
  this._orReplace = false;
12
+ this._returning = [];
13
+ this._onConflictColumns = [];
14
+ this._doUpdateSets = [];
15
+ this._doNothing = false;
16
+ this._onConflictWhere = null;
11
17
  this._tableName = tableName;
12
18
  }
13
19
  static create(tableName) {
@@ -25,9 +31,51 @@ class InsertQuery {
25
31
  this._values = values;
26
32
  return this;
27
33
  }
34
+ fromSelect(query) {
35
+ this._fromSelect = query;
36
+ return this;
37
+ }
38
+ get selectQuery() {
39
+ return this._fromSelect;
40
+ }
41
+ returning(...expressions) {
42
+ this._returning = expressions;
43
+ return this;
44
+ }
45
+ onConflict(...columns) {
46
+ this._onConflictColumns = columns;
47
+ return this;
48
+ }
49
+ doUpdate(sets) {
50
+ this._doUpdateSets = Object.entries(sets).map(([column, value]) => ({ column, value }));
51
+ return this;
52
+ }
53
+ doNothing() {
54
+ this._doNothing = true;
55
+ return this;
56
+ }
57
+ onConflictWhere(condition) {
58
+ this._onConflictWhere = condition;
59
+ return this;
60
+ }
28
61
  isOrReplace() {
29
62
  return this._orReplace;
30
63
  }
64
+ get returningClause() {
65
+ return this._returning;
66
+ }
67
+ get onConflictColumns() {
68
+ return this._onConflictColumns;
69
+ }
70
+ get doUpdateClauses() {
71
+ return this._doUpdateSets;
72
+ }
73
+ get isDoNothing() {
74
+ return this._doNothing;
75
+ }
76
+ get conflictWhere() {
77
+ return this._onConflictWhere;
78
+ }
31
79
  toSQL(renderer) {
32
80
  if (!renderer) {
33
81
  renderer = new IndentedQueryRenderer_1.IndentedQueryRenderer(2);
@@ -39,4 +87,4 @@ class InsertQuery {
39
87
  }
40
88
  }
41
89
  exports.InsertQuery = InsertQuery;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zZXJ0UXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L0luc2VydFF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUEwRTtBQUsxRSw4RUFBOEU7QUFDOUUsTUFBYSxXQUFXO0lBT3RCLFlBQVksU0FBaUI7UUFKckIsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUN4QixZQUFPLEdBQWlCLEVBQUUsQ0FBQztRQUMzQixlQUFVLEdBQVksS0FBSyxDQUFDO1FBR2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQWlCO1FBQ3BDLE9BQU8sSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBRyxPQUFpQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBRyxNQUFvQjtRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQXdCO1FBQ25DLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLFFBQVEsR0FBRyxJQUFJLDZDQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBSSxPQUE4QjtRQUM3QyxPQUFPLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0NBQ0Y7QUE1Q0Qsa0NBNENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5kZW50ZWRRdWVyeVJlbmRlcmVyIH0gZnJvbSBcIi4uL3JlbmRlcmVyL0luZGVudGVkUXVlcnlSZW5kZXJlclwiO1xuaW1wb3J0IHsgUXVlcnlSZW5kZXJlciB9IGZyb20gXCIuLi9yZW5kZXJlci9RdWVyeVJlbmRlcmVyXCI7XG5pbXBvcnQgeyBTcWxUcmVlTm9kZVZpc2l0b3IgfSBmcm9tIFwiLi4vdmlzaXRvci9TcWxUcmVlTm9kZVZpc2l0b3JcIjtcbmltcG9ydCB7IEV4cHJlc3Npb24sIFNxbFRyZWVOb2RlIH0gZnJvbSBcIi4vQWJzdHJhY3Rpb25zXCI7XG5cbi8vIFJlcHJlc2VudHMgYW4gSU5TRVJUIE9SIFJFUExBQ0Ugc3RhdGVtZW50IHdpdGggYSB0YWJsZSwgY29sdW1ucywgYW5kIHZhbHVlc1xuZXhwb3J0IGNsYXNzIEluc2VydFF1ZXJ5IGltcGxlbWVudHMgU3FsVHJlZU5vZGUge1xuXG4gIHByaXZhdGUgX3RhYmxlTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9jb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF92YWx1ZXM6IEV4cHJlc3Npb25bXSA9IFtdO1xuICBwcml2YXRlIF9vclJlcGxhY2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcih0YWJsZU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX3RhYmxlTmFtZSA9IHRhYmxlTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlKHRhYmxlTmFtZTogc3RyaW5nKTogSW5zZXJ0UXVlcnkge1xuICAgIHJldHVybiBuZXcgSW5zZXJ0UXVlcnkodGFibGVOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBvclJlcGxhY2UoKTogSW5zZXJ0UXVlcnkge1xuICAgIHRoaXMuX29yUmVwbGFjZSA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY29sdW1ucyguLi5jb2x1bW5zOiBzdHJpbmdbXSk6IEluc2VydFF1ZXJ5IHtcbiAgICB0aGlzLl9jb2x1bW5zID0gY29sdW1ucztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB2YWx1ZXMoLi4udmFsdWVzOiBFeHByZXNzaW9uW10pOiBJbnNlcnRRdWVyeSB7XG4gICAgdGhpcy5fdmFsdWVzID0gdmFsdWVzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGlzT3JSZXBsYWNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vclJlcGxhY2U7XG4gIH1cblxuICBwdWJsaWMgdG9TUUwocmVuZGVyZXI/OiBRdWVyeVJlbmRlcmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIXJlbmRlcmVyKSB7XG4gICAgICByZW5kZXJlciA9IG5ldyBJbmRlbnRlZFF1ZXJ5UmVuZGVyZXIoMik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFjY2VwdChyZW5kZXJlcik7XG4gIH1cblxuICBwdWJsaWMgYWNjZXB0PFQ+KHZpc2l0b3I6IFNxbFRyZWVOb2RlVmlzaXRvcjxUPik6IFQge1xuICAgIHJldHVybiB2aXNpdG9yLnZpc2l0SW5zZXJ0UXVlcnkodGhpcyk7XG4gIH1cbn1cbiJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zZXJ0UXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L0luc2VydFF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUEwRTtBQVkxRSw4RUFBOEU7QUFDOUUsTUFBYSxXQUFXO0lBYXRCLFlBQVksU0FBaUI7UUFWckIsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUN4QixZQUFPLEdBQWlCLEVBQUUsQ0FBQztRQUMzQixnQkFBVyxHQUF1QixJQUFJLENBQUM7UUFDdkMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixlQUFVLEdBQTBCLEVBQUUsQ0FBQztRQUN2Qyx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFDbEMsa0JBQWEsR0FBc0IsRUFBRSxDQUFDO1FBQ3RDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIscUJBQWdCLEdBQXNCLElBQUksQ0FBQztRQUdqRCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFpQjtRQUNwQyxPQUFPLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sT0FBTyxDQUFDLEdBQUcsT0FBaUI7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsTUFBb0I7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQWtCO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxHQUFHLFdBQWtDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFVBQVUsQ0FBQyxHQUFHLE9BQWlCO1FBQ3BDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sUUFBUSxDQUFDLElBQWdDO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGVBQWUsQ0FBQyxTQUFxQjtRQUMxQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBd0I7UUFDbkMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsUUFBUSxHQUFHLElBQUksNkNBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTSxDQUFJLE9BQThCO1FBQzdDLE9BQU8sT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQXhHRCxrQ0F3R0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmRlbnRlZFF1ZXJ5UmVuZGVyZXIgfSBmcm9tIFwiLi4vcmVuZGVyZXIvSW5kZW50ZWRRdWVyeVJlbmRlcmVyXCI7XG5pbXBvcnQgeyBRdWVyeVJlbmRlcmVyIH0gZnJvbSBcIi4uL3JlbmRlcmVyL1F1ZXJ5UmVuZGVyZXJcIjtcbmltcG9ydCB7IFNxbFRyZWVOb2RlVmlzaXRvciB9IGZyb20gXCIuLi92aXNpdG9yL1NxbFRyZWVOb2RlVmlzaXRvclwiO1xuaW1wb3J0IHsgQWxpYXNhYmxlRXhwcmVzc2lvbiwgRXhwcmVzc2lvbiwgU3FsVHJlZU5vZGUgfSBmcm9tIFwiLi9BYnN0cmFjdGlvbnNcIjtcbmltcG9ydCB7IFNlbGVjdFF1ZXJ5IH0gZnJvbSBcIi4vU2VsZWN0UXVlcnlcIjtcblxuLy8gUmVwcmVzZW50cyBhbiBhc3NpZ25tZW50IGluIHRoZSBETyBVUERBVEUgU0VUIGNsYXVzZVxuZXhwb3J0IGludGVyZmFjZSBVcHNlcnRTZXRDbGF1c2Uge1xuICBjb2x1bW46IHN0cmluZztcbiAgdmFsdWU6IEV4cHJlc3Npb247XG59XG5cbi8vIFJlcHJlc2VudHMgYW4gSU5TRVJUIE9SIFJFUExBQ0Ugc3RhdGVtZW50IHdpdGggYSB0YWJsZSwgY29sdW1ucywgYW5kIHZhbHVlc1xuZXhwb3J0IGNsYXNzIEluc2VydFF1ZXJ5IGltcGxlbWVudHMgU3FsVHJlZU5vZGUge1xuXG4gIHByaXZhdGUgX3RhYmxlTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9jb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF92YWx1ZXM6IEV4cHJlc3Npb25bXSA9IFtdO1xuICBwcml2YXRlIF9mcm9tU2VsZWN0OiBTZWxlY3RRdWVyeSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9vclJlcGxhY2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmV0dXJuaW5nOiBBbGlhc2FibGVFeHByZXNzaW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfb25Db25mbGljdENvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgX2RvVXBkYXRlU2V0czogVXBzZXJ0U2V0Q2xhdXNlW10gPSBbXTtcbiAgcHJpdmF0ZSBfZG9Ob3RoaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX29uQ29uZmxpY3RXaGVyZTogRXhwcmVzc2lvbiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHRhYmxlTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGFibGVOYW1lID0gdGFibGVOYW1lO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGUodGFibGVOYW1lOiBzdHJpbmcpOiBJbnNlcnRRdWVyeSB7XG4gICAgcmV0dXJuIG5ldyBJbnNlcnRRdWVyeSh0YWJsZU5hbWUpO1xuICB9XG5cbiAgcHVibGljIG9yUmVwbGFjZSgpOiBJbnNlcnRRdWVyeSB7XG4gICAgdGhpcy5fb3JSZXBsYWNlID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBjb2x1bW5zKC4uLmNvbHVtbnM6IHN0cmluZ1tdKTogSW5zZXJ0UXVlcnkge1xuICAgIHRoaXMuX2NvbHVtbnMgPSBjb2x1bW5zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHZhbHVlcyguLi52YWx1ZXM6IEV4cHJlc3Npb25bXSk6IEluc2VydFF1ZXJ5IHtcbiAgICB0aGlzLl92YWx1ZXMgPSB2YWx1ZXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZnJvbVNlbGVjdChxdWVyeTogU2VsZWN0UXVlcnkpOiBJbnNlcnRRdWVyeSB7XG4gICAgdGhpcy5fZnJvbVNlbGVjdCA9IHF1ZXJ5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RRdWVyeSgpOiBTZWxlY3RRdWVyeSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9mcm9tU2VsZWN0O1xuICB9XG5cbiAgcHVibGljIHJldHVybmluZyguLi5leHByZXNzaW9uczogQWxpYXNhYmxlRXhwcmVzc2lvbltdKTogSW5zZXJ0UXVlcnkge1xuICAgIHRoaXMuX3JldHVybmluZyA9IGV4cHJlc3Npb25zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG9uQ29uZmxpY3QoLi4uY29sdW1uczogc3RyaW5nW10pOiBJbnNlcnRRdWVyeSB7XG4gICAgdGhpcy5fb25Db25mbGljdENvbHVtbnMgPSBjb2x1bW5zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRvVXBkYXRlKHNldHM6IFJlY29yZDxzdHJpbmcsIEV4cHJlc3Npb24+KTogSW5zZXJ0UXVlcnkge1xuICAgIHRoaXMuX2RvVXBkYXRlU2V0cyA9IE9iamVjdC5lbnRyaWVzKHNldHMpLm1hcCgoW2NvbHVtbiwgdmFsdWVdKSA9PiAoeyBjb2x1bW4sIHZhbHVlIH0pKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBkb05vdGhpbmcoKTogSW5zZXJ0UXVlcnkge1xuICAgIHRoaXMuX2RvTm90aGluZyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgb25Db25mbGljdFdoZXJlKGNvbmRpdGlvbjogRXhwcmVzc2lvbik6IEluc2VydFF1ZXJ5IHtcbiAgICB0aGlzLl9vbkNvbmZsaWN0V2hlcmUgPSBjb25kaXRpb247XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgaXNPclJlcGxhY2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX29yUmVwbGFjZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmV0dXJuaW5nQ2xhdXNlKCk6IEFsaWFzYWJsZUV4cHJlc3Npb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX3JldHVybmluZztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb25Db25mbGljdENvbHVtbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9vbkNvbmZsaWN0Q29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZG9VcGRhdGVDbGF1c2VzKCk6IFVwc2VydFNldENsYXVzZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZG9VcGRhdGVTZXRzO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0RvTm90aGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZG9Ob3RoaW5nO1xuICB9XG5cbiAgcHVibGljIGdldCBjb25mbGljdFdoZXJlKCk6IEV4cHJlc3Npb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fb25Db25mbGljdFdoZXJlO1xuICB9XG5cbiAgcHVibGljIHRvU1FMKHJlbmRlcmVyPzogUXVlcnlSZW5kZXJlcik6IHN0cmluZyB7XG4gICAgaWYgKCFyZW5kZXJlcikge1xuICAgICAgcmVuZGVyZXIgPSBuZXcgSW5kZW50ZWRRdWVyeVJlbmRlcmVyKDIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hY2NlcHQocmVuZGVyZXIpO1xuICB9XG5cbiAgcHVibGljIGFjY2VwdDxUPih2aXNpdG9yOiBTcWxUcmVlTm9kZVZpc2l0b3I8VD4pOiBUIHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdEluc2VydFF1ZXJ5KHRoaXMpO1xuICB9XG59XG4iXX0=
@@ -9,6 +9,8 @@ export declare enum Operator {
9
9
  GREATER_THAN_OR_EQUAL = ">=",
10
10
  LESS_THAN_OR_EQUAL = "<=",
11
11
  LIKE = "LIKE",
12
+ GLOB = "GLOB",
13
+ MATCH = "MATCH",
12
14
  MINUS = "-",
13
15
  PLUS = "+",
14
16
  MULTIPLY = "*",
@@ -13,6 +13,8 @@ var Operator;
13
13
  Operator["GREATER_THAN_OR_EQUAL"] = ">=";
14
14
  Operator["LESS_THAN_OR_EQUAL"] = "<=";
15
15
  Operator["LIKE"] = "LIKE";
16
+ Operator["GLOB"] = "GLOB";
17
+ Operator["MATCH"] = "MATCH";
16
18
  Operator["MINUS"] = "-";
17
19
  Operator["PLUS"] = "+";
18
20
  Operator["MULTIPLY"] = "*";
@@ -20,4 +22,4 @@ var Operator;
20
22
  Operator["IS_NULL"] = "IS NULL";
21
23
  Operator["IS_NOT_NULL"] = "IS NOT NULL";
22
24
  })(Operator || (exports.Operator = Operator = {}));
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L09wZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQVksUUFpQlg7QUFqQkQsV0FBWSxRQUFRO0lBQ2xCLHVCQUFXLENBQUE7SUFDWCxxQkFBUyxDQUFBO0lBQ1QsdUJBQVcsQ0FBQTtJQUNYLHdCQUFZLENBQUE7SUFDWiw2QkFBaUIsQ0FBQTtJQUNqQiw4QkFBa0IsQ0FBQTtJQUNsQiwyQkFBZSxDQUFBO0lBQ2Ysd0NBQTRCLENBQUE7SUFDNUIscUNBQXlCLENBQUE7SUFDekIseUJBQWEsQ0FBQTtJQUNiLHVCQUFXLENBQUE7SUFDWCxzQkFBVSxDQUFBO0lBQ1YsMEJBQWMsQ0FBQTtJQUNkLHdCQUFZLENBQUE7SUFDWiwrQkFBbUIsQ0FBQTtJQUNuQix1Q0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBakJXLFFBQVEsd0JBQVIsUUFBUSxRQWlCbkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBPcGVyYXRvciB7XG4gIEFORCA9ICdBTkQnLFxuICBPUiA9ICdPUicsXG4gIE5PVCA9ICdOT1QnLFxuICBFUVVBTFMgPSAnPScsXG4gIE5PVF9FUVVBTFMgPSAnIT0nLFxuICBHUkVBVEVSX1RIQU4gPSAnPicsXG4gIExFU1NfVEhBTiA9ICc8JyxcbiAgR1JFQVRFUl9USEFOX09SX0VRVUFMID0gJz49JyxcbiAgTEVTU19USEFOX09SX0VRVUFMID0gJzw9JyxcbiAgTElLRSA9ICdMSUtFJyxcbiAgTUlOVVMgPSAnLScsXG4gIFBMVVMgPSAnKycsXG4gIE1VTFRJUExZID0gJyonLFxuICBESVZJREUgPSAnLycsXG4gIElTX05VTEwgPSAnSVMgTlVMTCcsXG4gIElTX05PVF9OVUxMID0gJ0lTIE5PVCBOVUxMJyxcbn1cbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L09wZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQVksUUFtQlg7QUFuQkQsV0FBWSxRQUFRO0lBQ2xCLHVCQUFXLENBQUE7SUFDWCxxQkFBUyxDQUFBO0lBQ1QsdUJBQVcsQ0FBQTtJQUNYLHdCQUFZLENBQUE7SUFDWiw2QkFBaUIsQ0FBQTtJQUNqQiw4QkFBa0IsQ0FBQTtJQUNsQiwyQkFBZSxDQUFBO0lBQ2Ysd0NBQTRCLENBQUE7SUFDNUIscUNBQXlCLENBQUE7SUFDekIseUJBQWEsQ0FBQTtJQUNiLHlCQUFhLENBQUE7SUFDYiwyQkFBZSxDQUFBO0lBQ2YsdUJBQVcsQ0FBQTtJQUNYLHNCQUFVLENBQUE7SUFDViwwQkFBYyxDQUFBO0lBQ2Qsd0JBQVksQ0FBQTtJQUNaLCtCQUFtQixDQUFBO0lBQ25CLHVDQUEyQixDQUFBO0FBQzdCLENBQUMsRUFuQlcsUUFBUSx3QkFBUixRQUFRLFFBbUJuQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE9wZXJhdG9yIHtcbiAgQU5EID0gJ0FORCcsXG4gIE9SID0gJ09SJyxcbiAgTk9UID0gJ05PVCcsXG4gIEVRVUFMUyA9ICc9JyxcbiAgTk9UX0VRVUFMUyA9ICchPScsXG4gIEdSRUFURVJfVEhBTiA9ICc+JyxcbiAgTEVTU19USEFOID0gJzwnLFxuICBHUkVBVEVSX1RIQU5fT1JfRVFVQUwgPSAnPj0nLFxuICBMRVNTX1RIQU5fT1JfRVFVQUwgPSAnPD0nLFxuICBMSUtFID0gJ0xJS0UnLFxuICBHTE9CID0gJ0dMT0InLFxuICBNQVRDSCA9ICdNQVRDSCcsXG4gIE1JTlVTID0gJy0nLFxuICBQTFVTID0gJysnLFxuICBNVUxUSVBMWSA9ICcqJyxcbiAgRElWSURFID0gJy8nLFxuICBJU19OVUxMID0gJ0lTIE5VTEwnLFxuICBJU19OT1RfTlVMTCA9ICdJUyBOT1QgTlVMTCcsXG59XG4iXX0=
@@ -14,6 +14,8 @@ export declare class SelectQuery implements SqlTreeNode {
14
14
  private _having;
15
15
  private _with;
16
16
  private _union;
17
+ private _intersect;
18
+ private _except;
17
19
  private _orderBy;
18
20
  private _offset?;
19
21
  private _limit?;
@@ -30,6 +32,8 @@ export declare class SelectQuery implements SqlTreeNode {
30
32
  groupBy(...columns: (string | Column)[]): SelectQuery;
31
33
  having(havingClause: Expression): SelectQuery;
32
34
  union(query: SelectQuery): SelectQuery;
35
+ intersect(query: SelectQuery): SelectQuery;
36
+ except(query: SelectQuery): SelectQuery;
33
37
  orderBy(column: string | Expression, direction: OrderByDirection): SelectQuery;
34
38
  offset(offset: number): SelectQuery;
35
39
  limit(limit: number): SelectQuery;
@@ -18,6 +18,8 @@ class SelectQuery {
18
18
  this._having = null;
19
19
  this._with = [];
20
20
  this._union = [];
21
+ this._intersect = [];
22
+ this._except = [];
21
23
  this._orderBy = [];
22
24
  this._offset = null;
23
25
  this._limit = null;
@@ -77,6 +79,14 @@ class SelectQuery {
77
79
  this._union.push(query);
78
80
  return this;
79
81
  }
82
+ intersect(query) {
83
+ this._intersect.push(query);
84
+ return this;
85
+ }
86
+ except(query) {
87
+ this._except.push(query);
88
+ return this;
89
+ }
80
90
  orderBy(column, direction) {
81
91
  if (typeof column === 'string') {
82
92
  column = new Column_1.Column(column);
@@ -106,4 +116,4 @@ class SelectQuery {
106
116
  }
107
117
  }
108
118
  exports.SelectQuery = SelectQuery;
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VsZWN0UXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L1NlbGVjdFF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUEwRTtBQUkxRSxtQ0FBZ0M7QUFDaEMscUNBQThDO0FBQzlDLGlDQUF3QztBQUN4QyxpQ0FBd0M7QUFDeEMsdUNBQXNEO0FBQ3RELGlDQUE4QjtBQUU5QixrRUFBa0U7QUFDbEUsTUFBYSxXQUFXO0lBQXhCO1FBQ1UsbUJBQWMsR0FBd0IsRUFBRSxDQUFDO1FBQ3pDLGFBQVEsR0FBaUIsRUFBRSxDQUFDO1FBQzVCLFdBQU0sR0FBc0IsSUFBSSxDQUFDO1FBQ2pDLGFBQVEsR0FBYSxFQUFFLENBQUM7UUFDeEIsWUFBTyxHQUFzQixJQUFJLENBQUM7UUFDbEMsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixXQUFNLEdBQWtCLEVBQUUsQ0FBQztRQUMzQixhQUFRLEdBQWMsRUFBRSxDQUFDO1FBQ3pCLFlBQU8sR0FBbUIsSUFBSSxDQUFDO1FBQy9CLFdBQU0sR0FBbUIsSUFBSSxDQUFDO1FBQzlCLGNBQVMsR0FBWSxLQUFLLENBQUM7SUFxR3JDLENBQUM7SUFuR1EsTUFBTSxDQUFDLE1BQU07UUFDbEIsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBSU0sSUFBSSxDQUFDLFlBQTJCLEVBQUUsS0FBbUI7UUFDMUQsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLElBQUksS0FBSyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQzthQUFNLElBQUksWUFBWSxZQUFZLFdBQUksRUFBRSxDQUFD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QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBd0I7UUFDbkMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsUUFBUSxHQUFHLElBQUksNkNBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTSxDQUFJLE9BQThCO1FBQzdDLE9BQU8sT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQWhIRCxrQ0FnSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmRlbnRlZFF1ZXJ5UmVuZGVyZXIgfSBmcm9tIFwiLi4vcmVuZGVyZXIvSW5kZW50ZWRRdWVyeVJlbmRlcmVyXCI7XG5pbXBvcnQgeyBRdWVyeVJlbmRlcmVyIH0gZnJvbSBcIi4uL3JlbmRlcmVyL1F1ZXJ5UmVuZGVyZXJcIjtcbmltcG9ydCB7IFNxbFRyZWVOb2RlVmlzaXRvciB9IGZyb20gXCIuLi92aXNpdG9yL1NxbFRyZWVOb2RlVmlzaXRvclwiO1xuaW1wb3J0IHsgRXhwcmVzc2lvbiwgU3FsVHJlZU5vZGUgfSBmcm9tIFwiLi9BYnN0cmFjdGlvbnNcIjtcbmltcG9ydCB7IEFsaWFzIH0gZnJvbSBcIi4vQWxpYXNcIjtcbmltcG9ydCB7IENvbHVtbiwgQ29sdW1uTGlrZSB9IGZyb20gXCIuL0NvbHVtblwiO1xuaW1wb3J0IHsgRnJvbSwgRnJvbUxpa2UgfSBmcm9tIFwiLi9Gcm9tXCI7XG5pbXBvcnQgeyBKb2luLCBKb2luVHlwZSB9IGZyb20gXCIuL0pvaW5cIjtcbmltcG9ydCB7IE9yZGVyQnksIE9yZGVyQnlEaXJlY3Rpb24gfSBmcm9tIFwiLi9PcmRlckJ5XCI7XG5pbXBvcnQgeyBXaXRoIH0gZnJvbSBcIi4vV2l0aFwiO1xuXG4vLyBNYWluIGVudHJ5IHBvaW50IGZvciBidWlsZGluZyBTRUxFQ1QgcXVlcmllcyB3aXRoIGEgZmx1ZW50IEFQSS5cbmV4cG9ydCBjbGFzcyBTZWxlY3RRdWVyeSBpbXBsZW1lbnRzIFNxbFRyZWVOb2RlIHtcbiAgcHJpdmF0ZSBfZnJvbXNBbmRKb2luczogKEZyb21MaWtlIHwgSm9pbilbXSA9IFtdO1xuICBwcml2YXRlIF9jb2x1bW5zOiBDb2x1bW5MaWtlW10gPSBbXTtcbiAgcHJpdmF0ZSBfd2hlcmU6IEV4cHJlc3Npb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZ3JvdXBCeTogQ29sdW1uW10gPSBbXTtcbiAgcHJpdmF0ZSBfaGF2aW5nOiBFeHByZXNzaW9uIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3dpdGg6IFdpdGhbXSA9IFtdO1xuICBwcml2YXRlIF91bmlvbjogU2VsZWN0UXVlcnlbXSA9IFtdO1xuICBwcml2YXRlIF9vcmRlckJ5OiBPcmRlckJ5W10gPSBbXTtcbiAgcHJpdmF0ZSBfb2Zmc2V0PzogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2xpbWl0PzogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2Rpc3RpbmN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGUoKTogU2VsZWN0UXVlcnkge1xuICAgIHJldHVybiBuZXcgU2VsZWN0UXVlcnkoKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXN0aW5jdCgpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fZGlzdGluY3QgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHdpdGgoY2xhdXNlOiBXaXRoKTogU2VsZWN0UXVlcnk7XG4gIHB1YmxpYyB3aXRoKG5hbWU6IHN0cmluZywgcXVlcnk6IFNlbGVjdFF1ZXJ5KTogU2VsZWN0UXVlcnk7XG4gIHB1YmxpYyB3aXRoKG5hbWVPckNsYXVzZTogc3RyaW5nIHwgV2l0aCwgcXVlcnk/OiBTZWxlY3RRdWVyeSk6IFNlbGVjdFF1ZXJ5IHtcbiAgICBpZiAodHlwZW9mIG5hbWVPckNsYXVzZSA9PT0gJ3N0cmluZycgJiYgcXVlcnkpIHtcbiAgICAgIHRoaXMuX3dpdGgucHVzaChuZXcgV2l0aChuYW1lT3JDbGF1c2UsIHF1ZXJ5KSk7XG4gICAgfSBlbHNlIGlmIChuYW1lT3JDbGF1c2UgaW5zdGFuY2VvZiBXaXRoKSB7XG4gICAgICB0aGlzLl93aXRoLnB1c2gobmFtZU9yQ2xhdXNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZnJvbShmcm9tQ2xhdXNlOiBGcm9tTGlrZSk6IFNlbGVjdFF1ZXJ5IHtcbiAgICB0aGlzLl9mcm9tc0FuZEpvaW5zLnB1c2goZnJvbUNsYXVzZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY29sdW1uKGNvbHVtbjogQ29sdW1uTGlrZSk6IFNlbGVjdFF1ZXJ5IHtcbiAgICB0aGlzLl9jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBqb2luKGpvaW46IEpvaW4pOiBTZWxlY3RRdWVyeTtcbiAgcHVibGljIGpvaW4odHlwZTogSm9pblR5cGUsIHRhYmxlTmFtZTogc3RyaW5nLCBhbGlhczogc3RyaW5nLCBvbjogRXhwcmVzc2lvbik6IFNlbGVjdFF1ZXJ5O1xuICBwdWJsaWMgam9pbih0eXBlT3JKb2luOiBKb2luIHwgSm9pblR5cGUsIHRhYmxlTmFtZT86IHN0cmluZywgYWxpYXM/OiBzdHJpbmcsIG9uPzogRXhwcmVzc2lvbik6IFNlbGVjdFF1ZXJ5IHtcbiAgICBpZiAodGhpcy5fZnJvbXNBbmRKb2lucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGFkZCBKT0lOIHdpdGhvdXQgYSBwcmVjZWRpbmcgRlJPTSBjbGF1c2UnKTtcbiAgICB9XG4gICAgY29uc3QgbGFzdENsYXVzZSA9IHRoaXMuX2Zyb21zQW5kSm9pbnNbdGhpcy5fZnJvbXNBbmRKb2lucy5sZW5ndGggLSAxXTtcbiAgICBpZiAoIShsYXN0Q2xhdXNlIGluc3RhbmNlb2YgRnJvbSB8fCBsYXN0Q2xhdXNlIGluc3RhbmNlb2YgQWxpYXMgfHwgbGFzdENsYXVzZSBpbnN0YW5jZW9mIEpvaW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0pPSU4gbXVzdCBmb2xsb3cgYSBGUk9NLCBhbiBBTElBUywgb3IgYW5vdGhlciBKT0lOIGNsYXVzZScpO1xuICAgIH1cbiAgICBpZiAoISh0eXBlT3JKb2luIGluc3RhbmNlb2YgSm9pbikpIHtcbiAgICAgIHR5cGVPckpvaW4gPSBuZXcgSm9pbih0eXBlT3JKb2luLCB0YWJsZU5hbWUhLCBhbGlhcyEsIG9uISk7XG4gICAgfVxuICAgIHRoaXMuX2Zyb21zQW5kSm9pbnMucHVzaCh0eXBlT3JKb2luKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB3aGVyZSh3aGVyZUNsYXVzZTogRXhwcmVzc2lvbik6IFNlbGVjdFF1ZXJ5IHtcbiAgICB0aGlzLl93aGVyZSA9IHdoZXJlQ2xhdXNlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGdyb3VwQnkoLi4uY29sdW1uczogKHN0cmluZ3xDb2x1bW4pW10pOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fZ3JvdXBCeSA9IGNvbHVtbnMubWFwKGNvbCA9PiAodHlwZW9mIGNvbCA9PT0gJ3N0cmluZycgPyBuZXcgQ29sdW1uKGNvbCkgOiBjb2wpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBoYXZpbmcoaGF2aW5nQ2xhdXNlOiBFeHByZXNzaW9uKTogU2VsZWN0UXVlcnkge1xuICAgIHRoaXMuX2hhdmluZyA9IGhhdmluZ0NsYXVzZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB1bmlvbihxdWVyeTogU2VsZWN0UXVlcnkpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fdW5pb24ucHVzaChxdWVyeSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgb3JkZXJCeShjb2x1bW46IHN0cmluZ3xFeHByZXNzaW9uLCBkaXJlY3Rpb246IE9yZGVyQnlEaXJlY3Rpb24pOiBTZWxlY3RRdWVyeSB7XG4gICAgaWYgKHR5cGVvZiBjb2x1bW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb2x1bW4gPSBuZXcgQ29sdW1uKGNvbHVtbik7XG4gICAgfVxuICAgIHRoaXMuX29yZGVyQnkucHVzaChuZXcgT3JkZXJCeShjb2x1bW4sIGRpcmVjdGlvbikpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG9mZnNldChvZmZzZXQ6IG51bWJlcik6IFNlbGVjdFF1ZXJ5IHtcbiAgICB0aGlzLl9vZmZzZXQgPSBvZmZzZXQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgbGltaXQobGltaXQ6IG51bWJlcik6IFNlbGVjdFF1ZXJ5IHtcbiAgICB0aGlzLl9saW1pdCA9IGxpbWl0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHRvU1FMKHJlbmRlcmVyPzogUXVlcnlSZW5kZXJlcik6IHN0cmluZyB7XG4gICAgaWYgKCFyZW5kZXJlcikge1xuICAgICAgcmVuZGVyZXIgPSBuZXcgSW5kZW50ZWRRdWVyeVJlbmRlcmVyKDIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hY2NlcHQocmVuZGVyZXIpO1xuICB9XG5cbiAgcHVibGljIGFjY2VwdDxUPih2aXNpdG9yOiBTcWxUcmVlTm9kZVZpc2l0b3I8VD4pOiBUIHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdFNlbGVjdFF1ZXJ5KHRoaXMpO1xuICB9XG5cbiAgcHVibGljIGlzRGlzdGluY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3RpbmN0O1xuICB9XG59XG4iXX0=
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VsZWN0UXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L1NlbGVjdFF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUEwRTtBQUkxRSxtQ0FBZ0M7QUFDaEMscUNBQThDO0FBQzlDLGlDQUF3QztBQUN4QyxpQ0FBd0M7QUFDeEMsdUNBQXNEO0FBQ3RELGlDQUE4QjtBQUU5QixrRUFBa0U7QUFDbEUsTUFBYSxXQUFXO0lBQXhCO1FBQ1UsbUJBQWMsR0FBd0IsRUFBRSxDQUFDO1FBQ3pDLGFBQVEsR0FBaUIsRUFBRSxDQUFDO1FBQzVCLFdBQU0sR0FBc0IsSUFBSSxDQUFDO1FBQ2pDLGFBQVEsR0FBYSxFQUFFLENBQUM7UUFDeEIsWUFBTyxHQUFzQixJQUFJLENBQUM7UUFDbEMsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixXQUFNLEdBQWtCLEVBQUUsQ0FBQztRQUMzQixlQUFVLEdBQWtCLEVBQUUsQ0FBQztRQUMvQixZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUM1QixhQUFRLEdBQWMsRUFBRSxDQUFDO1FBQ3pCLFlBQU8sR0FBbUIsSUFBSSxDQUFDO1FBQy9CLFdBQU0sR0FBbUIsSUFBSSxDQUFDO1FBQzlCLGNBQVMsR0FBWSxLQUFLLENBQUM7SUErR3JDLENBQUM7SUE3R1EsTUFBTSxDQUFDLE1BQU07UUFDbEIsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBSU0sSUFBSSxDQUFDLFlBQTJCLEVBQUUsS0FBbUI7UUFDMUQsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLElBQUksS0FBSyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxD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O1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxpQkFBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFjO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUF3QjtRQUNuQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxRQUFRLEdBQUcsSUFBSSw2Q0FBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxNQUFNLENBQUksT0FBOEI7UUFDN0MsT0FBTyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztDQUNGO0FBNUhELGtDQTRIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluZGVudGVkUXVlcnlSZW5kZXJlciB9IGZyb20gXCIuLi9yZW5kZXJlci9JbmRlbnRlZFF1ZXJ5UmVuZGVyZXJcIjtcbmltcG9ydCB7IFF1ZXJ5UmVuZGVyZXIgfSBmcm9tIFwiLi4vcmVuZGVyZXIvUXVlcnlSZW5kZXJlclwiO1xuaW1wb3J0IHsgU3FsVHJlZU5vZGVWaXNpdG9yIH0gZnJvbSBcIi4uL3Zpc2l0b3IvU3FsVHJlZU5vZGVWaXNpdG9yXCI7XG5pbXBvcnQgeyBFeHByZXNzaW9uLCBTcWxUcmVlTm9kZSB9IGZyb20gXCIuL0Fic3RyYWN0aW9uc1wiO1xuaW1wb3J0IHsgQWxpYXMgfSBmcm9tIFwiLi9BbGlhc1wiO1xuaW1wb3J0IHsgQ29sdW1uLCBDb2x1bW5MaWtlIH0gZnJvbSBcIi4vQ29sdW1uXCI7XG5pbXBvcnQgeyBGcm9tLCBGcm9tTGlrZSB9IGZyb20gXCIuL0Zyb21cIjtcbmltcG9ydCB7IEpvaW4sIEpvaW5UeXBlIH0gZnJvbSBcIi4vSm9pblwiO1xuaW1wb3J0IHsgT3JkZXJCeSwgT3JkZXJCeURpcmVjdGlvbiB9IGZyb20gXCIuL09yZGVyQnlcIjtcbmltcG9ydCB7IFdpdGggfSBmcm9tIFwiLi9XaXRoXCI7XG5cbi8vIE1haW4gZW50cnkgcG9pbnQgZm9yIGJ1aWxkaW5nIFNFTEVDVCBxdWVyaWVzIHdpdGggYSBmbHVlbnQgQVBJLlxuZXhwb3J0IGNsYXNzIFNlbGVjdFF1ZXJ5IGltcGxlbWVudHMgU3FsVHJlZU5vZGUge1xuICBwcml2YXRlIF9mcm9tc0FuZEpvaW5zOiAoRnJvbUxpa2UgfCBKb2luKVtdID0gW107XG4gIHByaXZhdGUgX2NvbHVtbnM6IENvbHVtbkxpa2VbXSA9IFtdO1xuICBwcml2YXRlIF93aGVyZTogRXhwcmVzc2lvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9ncm91cEJ5OiBDb2x1bW5bXSA9IFtdO1xuICBwcml2YXRlIF9oYXZpbmc6IEV4cHJlc3Npb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfd2l0aDogV2l0aFtdID0gW107XG4gIHByaXZhdGUgX3VuaW9uOiBTZWxlY3RRdWVyeVtdID0gW107XG4gIHByaXZhdGUgX2ludGVyc2VjdDogU2VsZWN0UXVlcnlbXSA9IFtdO1xuICBwcml2YXRlIF9leGNlcHQ6IFNlbGVjdFF1ZXJ5W10gPSBbXTtcbiAgcHJpdmF0ZSBfb3JkZXJCeTogT3JkZXJCeVtdID0gW107XG4gIHByaXZhdGUgX29mZnNldD86IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9saW1pdD86IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9kaXN0aW5jdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlKCk6IFNlbGVjdFF1ZXJ5IHtcbiAgICByZXR1cm4gbmV3IFNlbGVjdFF1ZXJ5KCk7XG4gIH1cblxuICBwdWJsaWMgZGlzdGluY3QoKTogU2VsZWN0UXVlcnkge1xuICAgIHRoaXMuX2Rpc3RpbmN0ID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB3aXRoKGNsYXVzZTogV2l0aCk6IFNlbGVjdFF1ZXJ5O1xuICBwdWJsaWMgd2l0aChuYW1lOiBzdHJpbmcsIHF1ZXJ5OiBTZWxlY3RRdWVyeSk6IFNlbGVjdFF1ZXJ5O1xuICBwdWJsaWMgd2l0aChuYW1lT3JDbGF1c2U6IHN0cmluZyB8IFdpdGgsIHF1ZXJ5PzogU2VsZWN0UXVlcnkpOiBTZWxlY3RRdWVyeSB7XG4gICAgaWYgKHR5cGVvZiBuYW1lT3JDbGF1c2UgPT09ICdzdHJpbmcnICYmIHF1ZXJ5KSB7XG4gICAgICB0aGlzLl93aXRoLnB1c2gobmV3IFdpdGgobmFtZU9yQ2xhdXNlLCBxdWVyeSkpO1xuICAgIH0gZWxzZSBpZiAobmFtZU9yQ2xhdXNlIGluc3RhbmNlb2YgV2l0aCkge1xuICAgICAgdGhpcy5fd2l0aC5wdXNoKG5hbWVPckNsYXVzZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGZyb20oZnJvbUNsYXVzZTogRnJvbUxpa2UpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fZnJvbXNBbmRKb2lucy5wdXNoKGZyb21DbGF1c2UpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNvbHVtbihjb2x1bW46IENvbHVtbkxpa2UpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fY29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgam9pbihqb2luOiBKb2luKTogU2VsZWN0UXVlcnk7XG4gIHB1YmxpYyBqb2luKHR5cGU6IEpvaW5UeXBlLCB0YWJsZU5hbWU6IHN0cmluZywgYWxpYXM6IHN0cmluZywgb246IEV4cHJlc3Npb24pOiBTZWxlY3RRdWVyeTtcbiAgcHVibGljIGpvaW4odHlwZU9ySm9pbjogSm9pbiB8IEpvaW5UeXBlLCB0YWJsZU5hbWU/OiBzdHJpbmcsIGFsaWFzPzogc3RyaW5nLCBvbj86IEV4cHJlc3Npb24pOiBTZWxlY3RRdWVyeSB7XG4gICAgaWYgKHRoaXMuX2Zyb21zQW5kSm9pbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBhZGQgSk9JTiB3aXRob3V0IGEgcHJlY2VkaW5nIEZST00gY2xhdXNlJyk7XG4gICAgfVxuICAgIGNvbnN0IGxhc3RDbGF1c2UgPSB0aGlzLl9mcm9tc0FuZEpvaW5zW3RoaXMuX2Zyb21zQW5kSm9pbnMubGVuZ3RoIC0gMV07XG4gICAgaWYgKCEobGFzdENsYXVzZSBpbnN0YW5jZW9mIEZyb20gfHwgbGFzdENsYXVzZSBpbnN0YW5jZW9mIEFsaWFzIHx8IGxhc3RDbGF1c2UgaW5zdGFuY2VvZiBKb2luKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdKT0lOIG11c3QgZm9sbG93IGEgRlJPTSwgYW4gQUxJQVMsIG9yIGFub3RoZXIgSk9JTiBjbGF1c2UnKTtcbiAgICB9XG4gICAgaWYgKCEodHlwZU9ySm9pbiBpbnN0YW5jZW9mIEpvaW4pKSB7XG4gICAgICB0eXBlT3JKb2luID0gbmV3IEpvaW4odHlwZU9ySm9pbiwgdGFibGVOYW1lISwgYWxpYXMhLCBvbiEpO1xuICAgIH1cbiAgICB0aGlzLl9mcm9tc0FuZEpvaW5zLnB1c2godHlwZU9ySm9pbik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgd2hlcmUod2hlcmVDbGF1c2U6IEV4cHJlc3Npb24pOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fd2hlcmUgPSB3aGVyZUNsYXVzZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBncm91cEJ5KC4uLmNvbHVtbnM6IChzdHJpbmd8Q29sdW1uKVtdKTogU2VsZWN0UXVlcnkge1xuICAgIHRoaXMuX2dyb3VwQnkgPSBjb2x1bW5zLm1hcChjb2wgPT4gKHR5cGVvZiBjb2wgPT09ICdzdHJpbmcnID8gbmV3IENvbHVtbihjb2wpIDogY29sKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgaGF2aW5nKGhhdmluZ0NsYXVzZTogRXhwcmVzc2lvbik6IFNlbGVjdFF1ZXJ5IHtcbiAgICB0aGlzLl9oYXZpbmcgPSBoYXZpbmdDbGF1c2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgdW5pb24ocXVlcnk6IFNlbGVjdFF1ZXJ5KTogU2VsZWN0UXVlcnkge1xuICAgIHRoaXMuX3VuaW9uLnB1c2gocXVlcnkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGludGVyc2VjdChxdWVyeTogU2VsZWN0UXVlcnkpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5faW50ZXJzZWN0LnB1c2gocXVlcnkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGV4Y2VwdChxdWVyeTogU2VsZWN0UXVlcnkpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fZXhjZXB0LnB1c2gocXVlcnkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG9yZGVyQnkoY29sdW1uOiBzdHJpbmd8RXhwcmVzc2lvbiwgZGlyZWN0aW9uOiBPcmRlckJ5RGlyZWN0aW9uKTogU2VsZWN0UXVlcnkge1xuICAgIGlmICh0eXBlb2YgY29sdW1uID09PSAnc3RyaW5nJykge1xuICAgICAgY29sdW1uID0gbmV3IENvbHVtbihjb2x1bW4pO1xuICAgIH1cbiAgICB0aGlzLl9vcmRlckJ5LnB1c2gobmV3IE9yZGVyQnkoY29sdW1uLCBkaXJlY3Rpb24pKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBvZmZzZXQob2Zmc2V0OiBudW1iZXIpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fb2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGxpbWl0KGxpbWl0OiBudW1iZXIpOiBTZWxlY3RRdWVyeSB7XG4gICAgdGhpcy5fbGltaXQgPSBsaW1pdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB0b1NRTChyZW5kZXJlcj86IFF1ZXJ5UmVuZGVyZXIpOiBzdHJpbmcge1xuICAgIGlmICghcmVuZGVyZXIpIHtcbiAgICAgIHJlbmRlcmVyID0gbmV3IEluZGVudGVkUXVlcnlSZW5kZXJlcigyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWNjZXB0KHJlbmRlcmVyKTtcbiAgfVxuXG4gIHB1YmxpYyBhY2NlcHQ8VD4odmlzaXRvcjogU3FsVHJlZU5vZGVWaXNpdG9yPFQ+KTogVCB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTZWxlY3RRdWVyeSh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0Rpc3RpbmN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXN0aW5jdDtcbiAgfVxufVxuIl19
@@ -0,0 +1,18 @@
1
+ import { AliasableExpression } from "./Abstractions";
2
+ import { SelectQuery } from "./SelectQuery";
3
+ import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
4
+ /**
5
+ * Represents a scalar subquery expression: (SELECT ...)
6
+ *
7
+ * Can be used anywhere an expression is allowed:
8
+ * - In SELECT columns: SELECT id, (SELECT name FROM users WHERE ...) AS user_name
9
+ * - In WHERE clauses: WHERE price > (SELECT AVG(price) FROM products)
10
+ * - In CASE expressions: CASE WHEN (SELECT COUNT(*) FROM ...) > 0 THEN ...
11
+ * - In function arguments: COALESCE((SELECT ...), default_value)
12
+ */
13
+ export declare class SubqueryExpression extends AliasableExpression {
14
+ private _subquery;
15
+ constructor(subquery: SelectQuery);
16
+ get subquery(): SelectQuery;
17
+ accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
18
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SubqueryExpression = void 0;
4
+ const Abstractions_1 = require("./Abstractions");
5
+ /**
6
+ * Represents a scalar subquery expression: (SELECT ...)
7
+ *
8
+ * Can be used anywhere an expression is allowed:
9
+ * - In SELECT columns: SELECT id, (SELECT name FROM users WHERE ...) AS user_name
10
+ * - In WHERE clauses: WHERE price > (SELECT AVG(price) FROM products)
11
+ * - In CASE expressions: CASE WHEN (SELECT COUNT(*) FROM ...) > 0 THEN ...
12
+ * - In function arguments: COALESCE((SELECT ...), default_value)
13
+ */
14
+ class SubqueryExpression extends Abstractions_1.AliasableExpression {
15
+ constructor(subquery) {
16
+ super();
17
+ this._subquery = subquery;
18
+ }
19
+ get subquery() {
20
+ return this._subquery;
21
+ }
22
+ accept(visitor) {
23
+ return visitor.visitSubqueryExpression(this);
24
+ }
25
+ }
26
+ exports.SubqueryExpression = SubqueryExpression;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3VicXVlcnlFeHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FzdC9TdWJxdWVyeUV4cHJlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXFEO0FBSXJEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSxrQ0FBbUI7SUFHekQsWUFBWSxRQUFxQjtRQUMvQixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUksT0FBOEI7UUFDN0MsT0FBTyxPQUFPLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBZkQsZ0RBZUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbGlhc2FibGVFeHByZXNzaW9uIH0gZnJvbSBcIi4vQWJzdHJhY3Rpb25zXCI7XG5pbXBvcnQgeyBTZWxlY3RRdWVyeSB9IGZyb20gXCIuL1NlbGVjdFF1ZXJ5XCI7XG5pbXBvcnQgeyBTcWxUcmVlTm9kZVZpc2l0b3IgfSBmcm9tIFwiLi4vdmlzaXRvci9TcWxUcmVlTm9kZVZpc2l0b3JcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2NhbGFyIHN1YnF1ZXJ5IGV4cHJlc3Npb246IChTRUxFQ1QgLi4uKVxuICpcbiAqIENhbiBiZSB1c2VkIGFueXdoZXJlIGFuIGV4cHJlc3Npb24gaXMgYWxsb3dlZDpcbiAqIC0gSW4gU0VMRUNUIGNvbHVtbnM6IFNFTEVDVCBpZCwgKFNFTEVDVCBuYW1lIEZST00gdXNlcnMgV0hFUkUgLi4uKSBBUyB1c2VyX25hbWVcbiAqIC0gSW4gV0hFUkUgY2xhdXNlczogV0hFUkUgcHJpY2UgPiAoU0VMRUNUIEFWRyhwcmljZSkgRlJPTSBwcm9kdWN0cylcbiAqIC0gSW4gQ0FTRSBleHByZXNzaW9uczogQ0FTRSBXSEVOIChTRUxFQ1QgQ09VTlQoKikgRlJPTSAuLi4pID4gMCBUSEVOIC4uLlxuICogLSBJbiBmdW5jdGlvbiBhcmd1bWVudHM6IENPQUxFU0NFKChTRUxFQ1QgLi4uKSwgZGVmYXVsdF92YWx1ZSlcbiAqL1xuZXhwb3J0IGNsYXNzIFN1YnF1ZXJ5RXhwcmVzc2lvbiBleHRlbmRzIEFsaWFzYWJsZUV4cHJlc3Npb24ge1xuICBwcml2YXRlIF9zdWJxdWVyeTogU2VsZWN0UXVlcnk7XG5cbiAgY29uc3RydWN0b3Ioc3VicXVlcnk6IFNlbGVjdFF1ZXJ5KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9zdWJxdWVyeSA9IHN1YnF1ZXJ5O1xuICB9XG5cbiAgcHVibGljIGdldCBzdWJxdWVyeSgpOiBTZWxlY3RRdWVyeSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YnF1ZXJ5O1xuICB9XG5cbiAgcHVibGljIGFjY2VwdDxUPih2aXNpdG9yOiBTcWxUcmVlTm9kZVZpc2l0b3I8VD4pOiBUIHtcbiAgICByZXR1cm4gdmlzaXRvci52aXNpdFN1YnF1ZXJ5RXhwcmVzc2lvbih0aGlzKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,24 @@
1
+ import { QueryRenderer } from "../renderer/QueryRenderer";
2
+ import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
3
+ import { AliasableExpression, Expression, SqlTreeNode } from "./Abstractions";
4
+ export interface SetClause {
5
+ column: string;
6
+ value: Expression;
7
+ }
8
+ export declare class UpdateQuery implements SqlTreeNode {
9
+ private _tableName;
10
+ private _set;
11
+ private _where;
12
+ private _returning;
13
+ constructor(tableName: string);
14
+ static create(tableName: string): UpdateQuery;
15
+ set(column: string, value: Expression): UpdateQuery;
16
+ where(condition: Expression): UpdateQuery;
17
+ returning(...expressions: AliasableExpression[]): UpdateQuery;
18
+ get tableName(): string;
19
+ get setClause(): SetClause[];
20
+ get whereClause(): Expression | null;
21
+ get returningClause(): AliasableExpression[];
22
+ toSQL(renderer?: QueryRenderer): string;
23
+ accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
24
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateQuery = void 0;
4
+ const IndentedQueryRenderer_1 = require("../renderer/IndentedQueryRenderer");
5
+ // Represents an UPDATE statement with a table, SET clause, and optional WHERE clause
6
+ class UpdateQuery {
7
+ constructor(tableName) {
8
+ this._set = [];
9
+ this._where = null;
10
+ this._returning = [];
11
+ this._tableName = tableName;
12
+ }
13
+ static create(tableName) {
14
+ return new UpdateQuery(tableName);
15
+ }
16
+ set(column, value) {
17
+ this._set.push({ column, value });
18
+ return this;
19
+ }
20
+ where(condition) {
21
+ this._where = condition;
22
+ return this;
23
+ }
24
+ returning(...expressions) {
25
+ this._returning = expressions;
26
+ return this;
27
+ }
28
+ get tableName() {
29
+ return this._tableName;
30
+ }
31
+ get setClause() {
32
+ return this._set;
33
+ }
34
+ get whereClause() {
35
+ return this._where;
36
+ }
37
+ get returningClause() {
38
+ return this._returning;
39
+ }
40
+ toSQL(renderer) {
41
+ if (!renderer) {
42
+ renderer = new IndentedQueryRenderer_1.IndentedQueryRenderer(2);
43
+ }
44
+ return this.accept(renderer);
45
+ }
46
+ accept(visitor) {
47
+ return visitor.visitUpdateQuery(this);
48
+ }
49
+ }
50
+ exports.UpdateQuery = UpdateQuery;
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXBkYXRlUXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN0L1VwZGF0ZVF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUEwRTtBQVcxRSxxRkFBcUY7QUFDckYsTUFBYSxXQUFXO0lBT3RCLFlBQVksU0FBaUI7UUFKckIsU0FBSSxHQUFnQixFQUFFLENBQUM7UUFDdkIsV0FBTSxHQUFzQixJQUFJLENBQUM7UUFDakMsZUFBVSxHQUEwQixFQUFFLENBQUM7UUFHN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBaUI7UUFDcEMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sR0FBRyxDQUFDLE1BQWMsRUFBRSxLQUFpQjtRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFxQjtRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxTQUFTLENBQUMsR0FBRyxXQUFrQztRQUNwRCxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBd0I7UUFDbkMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsUUFBUSxHQUFHLElBQUksNkNBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTSxDQUFJLE9BQThCO1FBQzdDLE9BQU8sT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQXhERCxrQ0F3REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmRlbnRlZFF1ZXJ5UmVuZGVyZXIgfSBmcm9tIFwiLi4vcmVuZGVyZXIvSW5kZW50ZWRRdWVyeVJlbmRlcmVyXCI7XG5pbXBvcnQgeyBRdWVyeVJlbmRlcmVyIH0gZnJvbSBcIi4uL3JlbmRlcmVyL1F1ZXJ5UmVuZGVyZXJcIjtcbmltcG9ydCB7IFNxbFRyZWVOb2RlVmlzaXRvciB9IGZyb20gXCIuLi92aXNpdG9yL1NxbFRyZWVOb2RlVmlzaXRvclwiO1xuaW1wb3J0IHsgQWxpYXNhYmxlRXhwcmVzc2lvbiwgRXhwcmVzc2lvbiwgU3FsVHJlZU5vZGUgfSBmcm9tIFwiLi9BYnN0cmFjdGlvbnNcIjtcblxuLy8gUmVwcmVzZW50cyBhbiBhc3NpZ25tZW50IGluIHRoZSBTRVQgY2xhdXNlIG9mIGFuIFVQREFURSBzdGF0ZW1lbnRcbmV4cG9ydCBpbnRlcmZhY2UgU2V0Q2xhdXNlIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHZhbHVlOiBFeHByZXNzaW9uO1xufVxuXG4vLyBSZXByZXNlbnRzIGFuIFVQREFURSBzdGF0ZW1lbnQgd2l0aCBhIHRhYmxlLCBTRVQgY2xhdXNlLCBhbmQgb3B0aW9uYWwgV0hFUkUgY2xhdXNlXG5leHBvcnQgY2xhc3MgVXBkYXRlUXVlcnkgaW1wbGVtZW50cyBTcWxUcmVlTm9kZSB7XG5cbiAgcHJpdmF0ZSBfdGFibGVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NldDogU2V0Q2xhdXNlW10gPSBbXTtcbiAgcHJpdmF0ZSBfd2hlcmU6IEV4cHJlc3Npb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmV0dXJuaW5nOiBBbGlhc2FibGVFeHByZXNzaW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcih0YWJsZU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuX3RhYmxlTmFtZSA9IHRhYmxlTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlKHRhYmxlTmFtZTogc3RyaW5nKTogVXBkYXRlUXVlcnkge1xuICAgIHJldHVybiBuZXcgVXBkYXRlUXVlcnkodGFibGVOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQoY29sdW1uOiBzdHJpbmcsIHZhbHVlOiBFeHByZXNzaW9uKTogVXBkYXRlUXVlcnkge1xuICAgIHRoaXMuX3NldC5wdXNoKHsgY29sdW1uLCB2YWx1ZSB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB3aGVyZShjb25kaXRpb246IEV4cHJlc3Npb24pOiBVcGRhdGVRdWVyeSB7XG4gICAgdGhpcy5fd2hlcmUgPSBjb25kaXRpb247XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcmV0dXJuaW5nKC4uLmV4cHJlc3Npb25zOiBBbGlhc2FibGVFeHByZXNzaW9uW10pOiBVcGRhdGVRdWVyeSB7XG4gICAgdGhpcy5fcmV0dXJuaW5nID0gZXhwcmVzc2lvbnM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRhYmxlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90YWJsZU5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNldENsYXVzZSgpOiBTZXRDbGF1c2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgd2hlcmVDbGF1c2UoKTogRXhwcmVzc2lvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl93aGVyZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmV0dXJuaW5nQ2xhdXNlKCk6IEFsaWFzYWJsZUV4cHJlc3Npb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX3JldHVybmluZztcbiAgfVxuXG4gIHB1YmxpYyB0b1NRTChyZW5kZXJlcj86IFF1ZXJ5UmVuZGVyZXIpOiBzdHJpbmcge1xuICAgIGlmICghcmVuZGVyZXIpIHtcbiAgICAgIHJlbmRlcmVyID0gbmV3IEluZGVudGVkUXVlcnlSZW5kZXJlcigyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWNjZXB0KHJlbmRlcmVyKTtcbiAgfVxuXG4gIHB1YmxpYyBhY2NlcHQ8VD4odmlzaXRvcjogU3FsVHJlZU5vZGVWaXNpdG9yPFQ+KTogVCB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRVcGRhdGVRdWVyeSh0aGlzKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,51 @@
1
+ import { AliasableExpression } from "./Abstractions";
2
+ import { FunctionExpression } from "./FunctionExpression";
3
+ import { WindowSpecification } from "./WindowSpecification";
4
+ import { SqlTreeNodeVisitor } from "../visitor/SqlTreeNodeVisitor";
5
+ /**
6
+ * Represents a window function expression: function OVER (window_spec)
7
+ *
8
+ * Window functions perform calculations across a set of rows related to
9
+ * the current row, defined by the window specification.
10
+ *
11
+ * Currently supports:
12
+ * - PARTITION BY clause: divides rows into groups
13
+ * - ORDER BY clause: determines row ordering within each partition
14
+ *
15
+ * Not yet implemented:
16
+ * - Frame specifications (ROWS/RANGE/GROUPS BETWEEN ... AND ...)
17
+ * - Named windows (WINDOW clause at query level)
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * // ROW_NUMBER with ORDER BY
22
+ * FN('ROW_NUMBER').over(ORDER_BY('created_at'))
23
+ * // ROW_NUMBER() OVER (ORDER BY created_at)
24
+ *
25
+ * // RANK with PARTITION BY and ORDER BY
26
+ * FN('RANK').over(PARTITION_BY('category'), ORDER_BY('price', DESC))
27
+ * // RANK() OVER (PARTITION BY category ORDER BY price DESC)
28
+ *
29
+ * // Running total with aggregate function
30
+ * SUM(COLUMN('amount')).over(PARTITION_BY('user_id'), ORDER_BY('date'))
31
+ * // SUM(amount) OVER (PARTITION BY user_id ORDER BY date)
32
+ *
33
+ * // Empty OVER clause (window over entire result set)
34
+ * FN('AVG', COLUMN('salary')).over()
35
+ * // AVG(salary) OVER ()
36
+ * ```
37
+ */
38
+ export declare class WindowExpression extends AliasableExpression {
39
+ private _function;
40
+ private _windowSpec;
41
+ constructor(fn: FunctionExpression, windowSpec: WindowSpecification);
42
+ /**
43
+ * Get the underlying function expression
44
+ */
45
+ get function(): FunctionExpression;
46
+ /**
47
+ * Get the window specification (PARTITION BY, ORDER BY)
48
+ */
49
+ get windowSpec(): WindowSpecification;
50
+ accept<T>(visitor: SqlTreeNodeVisitor<T>): T;
51
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WindowExpression = void 0;
4
+ const Abstractions_1 = require("./Abstractions");
5
+ /**
6
+ * Represents a window function expression: function OVER (window_spec)
7
+ *
8
+ * Window functions perform calculations across a set of rows related to
9
+ * the current row, defined by the window specification.
10
+ *
11
+ * Currently supports:
12
+ * - PARTITION BY clause: divides rows into groups
13
+ * - ORDER BY clause: determines row ordering within each partition
14
+ *
15
+ * Not yet implemented:
16
+ * - Frame specifications (ROWS/RANGE/GROUPS BETWEEN ... AND ...)
17
+ * - Named windows (WINDOW clause at query level)
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * // ROW_NUMBER with ORDER BY
22
+ * FN('ROW_NUMBER').over(ORDER_BY('created_at'))
23
+ * // ROW_NUMBER() OVER (ORDER BY created_at)
24
+ *
25
+ * // RANK with PARTITION BY and ORDER BY
26
+ * FN('RANK').over(PARTITION_BY('category'), ORDER_BY('price', DESC))
27
+ * // RANK() OVER (PARTITION BY category ORDER BY price DESC)
28
+ *
29
+ * // Running total with aggregate function
30
+ * SUM(COLUMN('amount')).over(PARTITION_BY('user_id'), ORDER_BY('date'))
31
+ * // SUM(amount) OVER (PARTITION BY user_id ORDER BY date)
32
+ *
33
+ * // Empty OVER clause (window over entire result set)
34
+ * FN('AVG', COLUMN('salary')).over()
35
+ * // AVG(salary) OVER ()
36
+ * ```
37
+ */
38
+ class WindowExpression extends Abstractions_1.AliasableExpression {
39
+ constructor(fn, windowSpec) {
40
+ super();
41
+ this._function = fn;
42
+ this._windowSpec = windowSpec;
43
+ }
44
+ /**
45
+ * Get the underlying function expression
46
+ */
47
+ get function() {
48
+ return this._function;
49
+ }
50
+ /**
51
+ * Get the window specification (PARTITION BY, ORDER BY)
52
+ */
53
+ get windowSpec() {
54
+ return this._windowSpec;
55
+ }
56
+ accept(visitor) {
57
+ return visitor.visitWindowExpression(this);
58
+ }
59
+ }
60
+ exports.WindowExpression = WindowExpression;
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2luZG93RXhwcmVzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hc3QvV2luZG93RXhwcmVzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBcUQ7QUFLckQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBQ0gsTUFBYSxnQkFBaUIsU0FBUSxrQ0FBbUI7SUFJdkQsWUFBWSxFQUFzQixFQUFFLFVBQStCO1FBQ2pFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFTSxNQUFNLENBQUksT0FBOEI7UUFDN0MsT0FBTyxPQUFPLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBM0JELDRDQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFsaWFzYWJsZUV4cHJlc3Npb24gfSBmcm9tIFwiLi9BYnN0cmFjdGlvbnNcIjtcbmltcG9ydCB7IEZ1bmN0aW9uRXhwcmVzc2lvbiB9IGZyb20gXCIuL0Z1bmN0aW9uRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgV2luZG93U3BlY2lmaWNhdGlvbiB9IGZyb20gXCIuL1dpbmRvd1NwZWNpZmljYXRpb25cIjtcbmltcG9ydCB7IFNxbFRyZWVOb2RlVmlzaXRvciB9IGZyb20gXCIuLi92aXNpdG9yL1NxbFRyZWVOb2RlVmlzaXRvclwiO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB3aW5kb3cgZnVuY3Rpb24gZXhwcmVzc2lvbjogZnVuY3Rpb24gT1ZFUiAod2luZG93X3NwZWMpXG4gKlxuICogV2luZG93IGZ1bmN0aW9ucyBwZXJmb3JtIGNhbGN1bGF0aW9ucyBhY3Jvc3MgYSBzZXQgb2Ygcm93cyByZWxhdGVkIHRvXG4gKiB0aGUgY3VycmVudCByb3csIGRlZmluZWQgYnkgdGhlIHdpbmRvdyBzcGVjaWZpY2F0aW9uLlxuICpcbiAqIEN1cnJlbnRseSBzdXBwb3J0czpcbiAqIC0gUEFSVElUSU9OIEJZIGNsYXVzZTogZGl2aWRlcyByb3dzIGludG8gZ3JvdXBzXG4gKiAtIE9SREVSIEJZIGNsYXVzZTogZGV0ZXJtaW5lcyByb3cgb3JkZXJpbmcgd2l0aGluIGVhY2ggcGFydGl0aW9uXG4gKlxuICogTm90IHlldCBpbXBsZW1lbnRlZDpcbiAqIC0gRnJhbWUgc3BlY2lmaWNhdGlvbnMgKFJPV1MvUkFOR0UvR1JPVVBTIEJFVFdFRU4gLi4uIEFORCAuLi4pXG4gKiAtIE5hbWVkIHdpbmRvd3MgKFdJTkRPVyBjbGF1c2UgYXQgcXVlcnkgbGV2ZWwpXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFJPV19OVU1CRVIgd2l0aCBPUkRFUiBCWVxuICogRk4oJ1JPV19OVU1CRVInKS5vdmVyKE9SREVSX0JZKCdjcmVhdGVkX2F0JykpXG4gKiAvLyBST1dfTlVNQkVSKCkgT1ZFUiAoT1JERVIgQlkgY3JlYXRlZF9hdClcbiAqXG4gKiAvLyBSQU5LIHdpdGggUEFSVElUSU9OIEJZIGFuZCBPUkRFUiBCWVxuICogRk4oJ1JBTksnKS5vdmVyKFBBUlRJVElPTl9CWSgnY2F0ZWdvcnknKSwgT1JERVJfQlkoJ3ByaWNlJywgREVTQykpXG4gKiAvLyBSQU5LKCkgT1ZFUiAoUEFSVElUSU9OIEJZIGNhdGVnb3J5IE9SREVSIEJZIHByaWNlIERFU0MpXG4gKlxuICogLy8gUnVubmluZyB0b3RhbCB3aXRoIGFnZ3JlZ2F0ZSBmdW5jdGlvblxuICogU1VNKENPTFVNTignYW1vdW50JykpLm92ZXIoUEFSVElUSU9OX0JZKCd1c2VyX2lkJyksIE9SREVSX0JZKCdkYXRlJykpXG4gKiAvLyBTVU0oYW1vdW50KSBPVkVSIChQQVJUSVRJT04gQlkgdXNlcl9pZCBPUkRFUiBCWSBkYXRlKVxuICpcbiAqIC8vIEVtcHR5IE9WRVIgY2xhdXNlICh3aW5kb3cgb3ZlciBlbnRpcmUgcmVzdWx0IHNldClcbiAqIEZOKCdBVkcnLCBDT0xVTU4oJ3NhbGFyeScpKS5vdmVyKClcbiAqIC8vIEFWRyhzYWxhcnkpIE9WRVIgKClcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgV2luZG93RXhwcmVzc2lvbiBleHRlbmRzIEFsaWFzYWJsZUV4cHJlc3Npb24ge1xuICBwcml2YXRlIF9mdW5jdGlvbjogRnVuY3Rpb25FeHByZXNzaW9uO1xuICBwcml2YXRlIF93aW5kb3dTcGVjOiBXaW5kb3dTcGVjaWZpY2F0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKGZuOiBGdW5jdGlvbkV4cHJlc3Npb24sIHdpbmRvd1NwZWM6IFdpbmRvd1NwZWNpZmljYXRpb24pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2Z1bmN0aW9uID0gZm47XG4gICAgdGhpcy5fd2luZG93U3BlYyA9IHdpbmRvd1NwZWM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIGV4cHJlc3Npb25cbiAgICovXG4gIHB1YmxpYyBnZXQgZnVuY3Rpb24oKTogRnVuY3Rpb25FeHByZXNzaW9uIHtcbiAgICByZXR1cm4gdGhpcy5fZnVuY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB3aW5kb3cgc3BlY2lmaWNhdGlvbiAoUEFSVElUSU9OIEJZLCBPUkRFUiBCWSlcbiAgICovXG4gIHB1YmxpYyBnZXQgd2luZG93U3BlYygpOiBXaW5kb3dTcGVjaWZpY2F0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93U3BlYztcbiAgfVxuXG4gIHB1YmxpYyBhY2NlcHQ8VD4odmlzaXRvcjogU3FsVHJlZU5vZGVWaXNpdG9yPFQ+KTogVCB7XG4gICAgcmV0dXJuIHZpc2l0b3IudmlzaXRXaW5kb3dFeHByZXNzaW9uKHRoaXMpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,46 @@
1
+ import { Expression } from "./Abstractions";
2
+ import { OrderBy } from "./OrderBy";
3
+ /**
4
+ * Represents a window specification for window functions.
5
+ *
6
+ * Currently supports:
7
+ * - PARTITION BY clause
8
+ * - ORDER BY clause
9
+ *
10
+ * Not yet implemented:
11
+ * - Frame specifications (ROWS/RANGE/GROUPS BETWEEN ... AND ...)
12
+ * - Named windows (WINDOW clause at query level)
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * // Used via FunctionExpression.over()
17
+ * FN('ROW_NUMBER').over(ORDER_BY('created_at'))
18
+ * FN('RANK').over(PARTITION_BY('category'), ORDER_BY('price', DESC))
19
+ * SUM(COLUMN('amount')).over(PARTITION_BY('user_id'))
20
+ * ```
21
+ */
22
+ export declare class WindowSpecification {
23
+ private _partitionBy;
24
+ private _orderBy;
25
+ constructor();
26
+ /**
27
+ * Set the PARTITION BY columns
28
+ */
29
+ setPartitionBy(columns: Expression[]): void;
30
+ /**
31
+ * Add ORDER BY clauses
32
+ */
33
+ setOrderBy(orderBy: OrderBy[]): void;
34
+ /**
35
+ * Get the PARTITION BY columns
36
+ */
37
+ get partitionByColumns(): Expression[];
38
+ /**
39
+ * Get the ORDER BY clauses
40
+ */
41
+ get orderByColumns(): OrderBy[];
42
+ /**
43
+ * Check if this window specification is empty (no PARTITION BY or ORDER BY)
44
+ */
45
+ get isEmpty(): boolean;
46
+ }