taon-type-sql 18.0.26 → 19.0.1

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 (151) hide show
  1. package/assets/shared/shared_folder_info.txt +3 -3
  2. package/browser/README.md +24 -24
  3. package/client/README.md +24 -24
  4. package/index.js.map +1 -1
  5. package/lib/build-info._auto-generated_.d.ts +1 -0
  6. package/lib/build-info._auto-generated_.js +4 -1
  7. package/lib/build-info._auto-generated_.js.map +1 -1
  8. package/lib/builder/column/basic-column.js.map +1 -1
  9. package/lib/builder/column/boolean-column.js.map +1 -1
  10. package/lib/builder/column/comparable-column.js.map +1 -1
  11. package/lib/builder/column/date-column.js.map +1 -1
  12. package/lib/builder/column/number-column.js.map +1 -1
  13. package/lib/builder/column/query-column.js.map +1 -1
  14. package/lib/builder/column/string-column.js.map +1 -1
  15. package/lib/builder/column/value-column.js.map +1 -1
  16. package/lib/builder/condition/query-column-condition.js.map +1 -1
  17. package/lib/builder/condition/query-condition-chain.js.map +1 -1
  18. package/lib/builder/condition/query-condition.js.map +1 -1
  19. package/lib/builder/condition/query-join-condition.js.map +1 -1
  20. package/lib/builder/helpers/generics-helper.js.map +1 -1
  21. package/lib/builder/helpers/internal-types.js.map +1 -1
  22. package/lib/builder/join/joined-tables-chain.js.map +1 -1
  23. package/lib/builder/join/joined-tables.js.map +1 -1
  24. package/lib/builder/other/query-ordering.js.map +1 -1
  25. package/lib/builder/query/select-query.js.map +1 -1
  26. package/lib/builder/query/table-condition-query.js.map +1 -1
  27. package/lib/builder/query/table-query.js.map +1 -1
  28. package/lib/builder/query-source.js.map +1 -1
  29. package/lib/builder/query-table.js.map +1 -1
  30. package/lib/client/mysql.js.map +1 -1
  31. package/lib/client/pg.js.map +1 -1
  32. package/lib/client/query-processor.js.map +1 -1
  33. package/lib/converter/param-converter.js.map +1 -1
  34. package/lib/converter/parameterized-converter.js.map +1 -1
  35. package/lib/converter/query-converter.js.map +1 -1
  36. package/lib/converter/result-converter.js.map +1 -1
  37. package/lib/converter/sql-converter.js.map +1 -1
  38. package/lib/converter/type-converter.js.map +1 -1
  39. package/lib/converter/types.js.map +1 -1
  40. package/lib/index._auto-generated_.js +2 -2
  41. package/lib/index._auto-generated_.js.map +1 -1
  42. package/lib/index.js.map +1 -1
  43. package/migrations/index.js.map +1 -1
  44. package/migrations/migrations_index._auto-generated_.js.map +1 -1
  45. package/package.json +2 -2
  46. package/src.d.ts +3 -3
  47. package/taon.jsonc +12 -12
  48. package/tmp-environment.json +4 -3
  49. package/websql/README.md +24 -24
  50. package/browser/esm2022/lib/builder/column/basic-column.mjs +0 -13
  51. package/browser/esm2022/lib/builder/column/boolean-column.mjs +0 -14
  52. package/browser/esm2022/lib/builder/column/comparable-column.mjs +0 -41
  53. package/browser/esm2022/lib/builder/column/date-column.mjs +0 -14
  54. package/browser/esm2022/lib/builder/column/number-column.mjs +0 -19
  55. package/browser/esm2022/lib/builder/column/query-column.mjs +0 -21
  56. package/browser/esm2022/lib/builder/column/string-column.mjs +0 -36
  57. package/browser/esm2022/lib/builder/column/value-column.mjs +0 -30
  58. package/browser/esm2022/lib/builder/condition/query-column-condition.mjs +0 -19
  59. package/browser/esm2022/lib/builder/condition/query-condition-chain.mjs +0 -28
  60. package/browser/esm2022/lib/builder/condition/query-condition.mjs +0 -6
  61. package/browser/esm2022/lib/builder/condition/query-join-condition.mjs +0 -19
  62. package/browser/esm2022/lib/builder/helpers/generics-helper.mjs +0 -5
  63. package/browser/esm2022/lib/builder/helpers/internal-types.mjs +0 -4
  64. package/browser/esm2022/lib/builder/join/joined-tables-chain.mjs +0 -14
  65. package/browser/esm2022/lib/builder/join/joined-tables.mjs +0 -22
  66. package/browser/esm2022/lib/builder/other/query-ordering.mjs +0 -17
  67. package/browser/esm2022/lib/builder/query/select-query.mjs +0 -48
  68. package/browser/esm2022/lib/builder/query/table-condition-query.mjs +0 -25
  69. package/browser/esm2022/lib/builder/query/table-query.mjs +0 -54
  70. package/browser/esm2022/lib/builder/query-source.mjs +0 -20
  71. package/browser/esm2022/lib/builder/query-table.mjs +0 -24
  72. package/browser/esm2022/lib/client/mysql.mjs +0 -10
  73. package/browser/esm2022/lib/client/query-processor.mjs +0 -45
  74. package/browser/esm2022/lib/converter/param-converter.mjs +0 -27
  75. package/browser/esm2022/lib/converter/parameterized-converter.mjs +0 -17
  76. package/browser/esm2022/lib/converter/query-converter.mjs +0 -282
  77. package/browser/esm2022/lib/converter/result-converter.mjs +0 -88
  78. package/browser/esm2022/lib/converter/sql-converter.mjs +0 -8
  79. package/browser/esm2022/lib/converter/type-converter.mjs +0 -39
  80. package/browser/esm2022/lib/converter/types.mjs +0 -4
  81. package/browser/esm2022/lib/index.mjs +0 -23
  82. package/browser/esm2022/public-api.mjs +0 -2
  83. package/browser/esm2022/taon-type-sql.mjs +0 -5
  84. package/client/esm2022/lib/builder/column/basic-column.mjs +0 -13
  85. package/client/esm2022/lib/builder/column/boolean-column.mjs +0 -14
  86. package/client/esm2022/lib/builder/column/comparable-column.mjs +0 -41
  87. package/client/esm2022/lib/builder/column/date-column.mjs +0 -14
  88. package/client/esm2022/lib/builder/column/number-column.mjs +0 -19
  89. package/client/esm2022/lib/builder/column/query-column.mjs +0 -21
  90. package/client/esm2022/lib/builder/column/string-column.mjs +0 -36
  91. package/client/esm2022/lib/builder/column/value-column.mjs +0 -30
  92. package/client/esm2022/lib/builder/condition/query-column-condition.mjs +0 -19
  93. package/client/esm2022/lib/builder/condition/query-condition-chain.mjs +0 -28
  94. package/client/esm2022/lib/builder/condition/query-condition.mjs +0 -6
  95. package/client/esm2022/lib/builder/condition/query-join-condition.mjs +0 -19
  96. package/client/esm2022/lib/builder/helpers/generics-helper.mjs +0 -5
  97. package/client/esm2022/lib/builder/helpers/internal-types.mjs +0 -4
  98. package/client/esm2022/lib/builder/join/joined-tables-chain.mjs +0 -14
  99. package/client/esm2022/lib/builder/join/joined-tables.mjs +0 -22
  100. package/client/esm2022/lib/builder/other/query-ordering.mjs +0 -17
  101. package/client/esm2022/lib/builder/query/select-query.mjs +0 -48
  102. package/client/esm2022/lib/builder/query/table-condition-query.mjs +0 -25
  103. package/client/esm2022/lib/builder/query/table-query.mjs +0 -54
  104. package/client/esm2022/lib/builder/query-source.mjs +0 -20
  105. package/client/esm2022/lib/builder/query-table.mjs +0 -24
  106. package/client/esm2022/lib/client/mysql.mjs +0 -10
  107. package/client/esm2022/lib/client/query-processor.mjs +0 -45
  108. package/client/esm2022/lib/converter/param-converter.mjs +0 -27
  109. package/client/esm2022/lib/converter/parameterized-converter.mjs +0 -17
  110. package/client/esm2022/lib/converter/query-converter.mjs +0 -282
  111. package/client/esm2022/lib/converter/result-converter.mjs +0 -88
  112. package/client/esm2022/lib/converter/sql-converter.mjs +0 -8
  113. package/client/esm2022/lib/converter/type-converter.mjs +0 -39
  114. package/client/esm2022/lib/converter/types.mjs +0 -4
  115. package/client/esm2022/lib/index.mjs +0 -23
  116. package/client/esm2022/public-api.mjs +0 -2
  117. package/client/esm2022/taon-type-sql.mjs +0 -5
  118. package/websql/esm2022/lib/builder/column/basic-column.mjs +0 -13
  119. package/websql/esm2022/lib/builder/column/boolean-column.mjs +0 -14
  120. package/websql/esm2022/lib/builder/column/comparable-column.mjs +0 -41
  121. package/websql/esm2022/lib/builder/column/date-column.mjs +0 -14
  122. package/websql/esm2022/lib/builder/column/number-column.mjs +0 -19
  123. package/websql/esm2022/lib/builder/column/query-column.mjs +0 -21
  124. package/websql/esm2022/lib/builder/column/string-column.mjs +0 -36
  125. package/websql/esm2022/lib/builder/column/value-column.mjs +0 -30
  126. package/websql/esm2022/lib/builder/condition/query-column-condition.mjs +0 -19
  127. package/websql/esm2022/lib/builder/condition/query-condition-chain.mjs +0 -28
  128. package/websql/esm2022/lib/builder/condition/query-condition.mjs +0 -6
  129. package/websql/esm2022/lib/builder/condition/query-join-condition.mjs +0 -19
  130. package/websql/esm2022/lib/builder/helpers/generics-helper.mjs +0 -5
  131. package/websql/esm2022/lib/builder/helpers/internal-types.mjs +0 -4
  132. package/websql/esm2022/lib/builder/join/joined-tables-chain.mjs +0 -14
  133. package/websql/esm2022/lib/builder/join/joined-tables.mjs +0 -22
  134. package/websql/esm2022/lib/builder/other/query-ordering.mjs +0 -17
  135. package/websql/esm2022/lib/builder/query/select-query.mjs +0 -48
  136. package/websql/esm2022/lib/builder/query/table-condition-query.mjs +0 -25
  137. package/websql/esm2022/lib/builder/query/table-query.mjs +0 -54
  138. package/websql/esm2022/lib/builder/query-source.mjs +0 -20
  139. package/websql/esm2022/lib/builder/query-table.mjs +0 -24
  140. package/websql/esm2022/lib/client/mysql.mjs +0 -10
  141. package/websql/esm2022/lib/client/query-processor.mjs +0 -45
  142. package/websql/esm2022/lib/converter/param-converter.mjs +0 -27
  143. package/websql/esm2022/lib/converter/parameterized-converter.mjs +0 -17
  144. package/websql/esm2022/lib/converter/query-converter.mjs +0 -282
  145. package/websql/esm2022/lib/converter/result-converter.mjs +0 -88
  146. package/websql/esm2022/lib/converter/sql-converter.mjs +0 -8
  147. package/websql/esm2022/lib/converter/type-converter.mjs +0 -39
  148. package/websql/esm2022/lib/converter/types.mjs +0 -4
  149. package/websql/esm2022/lib/index.mjs +0 -23
  150. package/websql/esm2022/public-api.mjs +0 -2
  151. package/websql/esm2022/taon-type-sql.mjs +0 -5
@@ -1,54 +0,0 @@
1
- import TableConditionQuery from "./table-condition-query";
2
- import ValueColumn from "../column/value-column";
3
- export default class TableQuery {
4
- constructor(_queryProcessor, _table) {
5
- this._queryProcessor = _queryProcessor;
6
- this._table = _table;
7
- this._columns = [];
8
- }
9
- where(...conditions) {
10
- return new TableConditionQuery(this._queryProcessor, this._table, conditions);
11
- }
12
- insert(param) {
13
- this._entity = param;
14
- this._action = 'insert';
15
- return this._queryProcessor(this);
16
- }
17
- deleteAll() {
18
- this._action = 'delete';
19
- return this._queryProcessor(this);
20
- }
21
- updateAll(entity) {
22
- this._entity = entity;
23
- this._action = 'update';
24
- return this._queryProcessor(this);
25
- }
26
- countAll() {
27
- this._columns = [this._table.$all.count()];
28
- this._action = 'select';
29
- return this._queryProcessor(this).then((rows) => rows[0]);
30
- }
31
- delete(id) {
32
- return this._whereId(id).delete().then(count => count > 0);
33
- }
34
- update(id, entity) {
35
- return this._whereId(id).update(entity).then(count => count > 0);
36
- }
37
- get(id) {
38
- let query = this._whereId(id);
39
- return this._queryProcessor({ _action: 'select', ...query })
40
- .then((rows) => rows[0]);
41
- }
42
- _whereId(id) {
43
- let $id = this._table.$id;
44
- if ($id instanceof ValueColumn) {
45
- return this.where($id.eq(id));
46
- }
47
- else {
48
- return this.where(...Object.keys($id).map(key => this._table[key].eq(id[key])));
49
- }
50
- }
51
- }
52
- ;
53
- ({}); // @--end-of-file-for-module=taon-type-sql lib/builder/query/table-query.ts
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90YW9uLXR5cGUtc3FsL3Byb2plY3RzL3Rhb24tdHlwZS1zcWwvc3JjL2xpYi9idWlsZGVyL3F1ZXJ5L3RhYmxlLXF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sbUJBQW1CLE1BQU0seUJBQXlCLENBQUM7QUFFMUQsT0FBTyxXQUFXLE1BQU0sd0JBQXdCLENBQUM7QUFLakQsTUFBTSxDQUFDLE9BQU8sT0FBTyxVQUFVO0lBRTNCLFlBQ2MsZUFBK0IsRUFDL0IsTUFBYTtRQURiLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixXQUFNLEdBQU4sTUFBTSxDQUFPO1FBS2pCLGFBQVEsR0FBOEIsRUFBRSxDQUFDO0lBSmhELENBQUM7SUFNSixLQUFLLENBQUMsR0FBRyxVQUFtQztRQUN4QyxPQUFPLElBQUksbUJBQW1CLENBQWdCLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBSUQsTUFBTSxDQUFDLEtBQVU7UUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUF1QjtRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQU07UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLENBQUMsRUFBTSxFQUFFLE1BQXVCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxHQUFHLENBQUMsRUFBTTtRQUNOLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO2FBQ3ZELElBQUksQ0FBQyxDQUFDLElBQWMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUFNO1FBRVgsSUFBSSxHQUFHLEdBQUksSUFBSSxDQUFDLE1BQWMsQ0FBQyxHQUFHLENBQUM7UUFDbkMsSUFBSSxHQUFHLFlBQVksV0FBVyxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUcsSUFBSSxDQUFDLE1BQWMsQ0FBQyxHQUFHLENBQTZCLENBQUMsRUFBRSxDQUFFLEVBQVUsQ0FBQyxHQUFHLENBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxSSxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywyRUFBMkUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IFF1ZXJ5VGFibGUgZnJvbSBcIi4uL3F1ZXJ5LXRhYmxlXCI7XG5pbXBvcnQgVGFibGVDb25kaXRpb25RdWVyeSBmcm9tIFwiLi90YWJsZS1jb25kaXRpb24tcXVlcnlcIjtcbmltcG9ydCBRdWVyeUNvbmRpdGlvbiBmcm9tIFwiLi4vY29uZGl0aW9uL3F1ZXJ5LWNvbmRpdGlvblwiO1xuaW1wb3J0IFZhbHVlQ29sdW1uIGZyb20gXCIuLi9jb2x1bW4vdmFsdWUtY29sdW1uXCI7XG5pbXBvcnQgUXVlcnlDb2x1bW4gZnJvbSBcIi4uL2NvbHVtbi9xdWVyeS1jb2x1bW5cIjtcbmltcG9ydCB7IFF1ZXJ5UHJvY2Vzc29yLCBRdWVyeUFjdGlvbiB9IGZyb20gXCIuLi9oZWxwZXJzL2ludGVybmFsLXR5cGVzXCI7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGFibGVRdWVyeTxFbnRpdHksIElkLCBUYWJsZSBleHRlbmRzIFF1ZXJ5VGFibGU8RW50aXR5LCBJZD4+IHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgX3F1ZXJ5UHJvY2Vzc29yOiBRdWVyeVByb2Nlc3NvcixcbiAgICAgICAgcHJvdGVjdGVkIF90YWJsZTogVGFibGVcbiAgICApIHt9XG5cbiAgICBwcm90ZWN0ZWQgX2VudGl0eTogRW50aXR5IHwgRW50aXR5W10gfCBQYXJ0aWFsPEVudGl0eT47XG4gICAgcHJvdGVjdGVkIF9hY3Rpb246IFF1ZXJ5QWN0aW9uO1xuICAgIHByb3RlY3RlZCBfY29sdW1uczogUXVlcnlDb2x1bW48VGFibGUsIGFueT5bXSA9IFtdO1xuXG4gICAgd2hlcmUoLi4uY29uZGl0aW9uczogUXVlcnlDb25kaXRpb248VGFibGU+W10pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZUNvbmRpdGlvblF1ZXJ5PEVudGl0eSwgVGFibGU+KHRoaXMuX3F1ZXJ5UHJvY2Vzc29yLCB0aGlzLl90YWJsZSwgY29uZGl0aW9ucyk7XG4gICAgfVxuXG4gICAgaW5zZXJ0KGVudGl0eTogRW50aXR5KTogUHJvbWlzZTxhbnk+IC8vIHJldHVybnMgdGhlIGdlbmVyYXRlZCBJRCwgYnV0IG5vdCBvdGhlciBraW5kcyBvZiBJRHMsIHNvIHRoZSB0eXBlIGlzIHVua25vd24gKG15c3FsIGxpbWl0YXRpb25zKVxuICAgIGluc2VydChlbnRpdGllczogRW50aXR5W10pOiBQcm9taXNlPHZvaWQ+XG4gICAgaW5zZXJ0KHBhcmFtOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICB0aGlzLl9lbnRpdHkgPSBwYXJhbTtcbiAgICAgICAgdGhpcy5fYWN0aW9uID0gJ2luc2VydCc7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVByb2Nlc3Nvcih0aGlzKTtcbiAgICB9XG5cbiAgICBkZWxldGVBbGwoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgdGhpcy5fYWN0aW9uID0gJ2RlbGV0ZSc7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVByb2Nlc3Nvcih0aGlzKTtcbiAgICB9XG5cbiAgICB1cGRhdGVBbGwoZW50aXR5OiBQYXJ0aWFsPEVudGl0eT4pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICB0aGlzLl9lbnRpdHkgPSBlbnRpdHk7XG4gICAgICAgIHRoaXMuX2FjdGlvbiA9ICd1cGRhdGUnO1xuICAgICAgICByZXR1cm4gdGhpcy5fcXVlcnlQcm9jZXNzb3IodGhpcyk7XG4gICAgfVxuXG4gICAgY291bnRBbGwoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgdGhpcy5fY29sdW1ucyA9IFt0aGlzLl90YWJsZS4kYWxsLmNvdW50KCldO1xuICAgICAgICB0aGlzLl9hY3Rpb24gPSAnc2VsZWN0JztcbiAgICAgICAgcmV0dXJuIHRoaXMuX3F1ZXJ5UHJvY2Vzc29yKHRoaXMpLnRoZW4oKHJvd3M6IGFueVtdKSA9PiByb3dzWzBdKTtcbiAgICB9XG5cbiAgICBkZWxldGUoaWQ6IElkKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl93aGVyZUlkKGlkKS5kZWxldGUoKS50aGVuKGNvdW50ID0+IGNvdW50ID4gMCk7XG4gICAgfVxuXG4gICAgdXBkYXRlKGlkOiBJZCwgZW50aXR5OiBQYXJ0aWFsPEVudGl0eT4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3doZXJlSWQoaWQpLnVwZGF0ZShlbnRpdHkpLnRoZW4oY291bnQgPT4gY291bnQgPiAwKTtcbiAgICB9XG5cbiAgICBnZXQoaWQ6IElkKTogUHJvbWlzZTxFbnRpdHkgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgbGV0IHF1ZXJ5ID0gdGhpcy5fd2hlcmVJZChpZCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVByb2Nlc3Nvcih7IF9hY3Rpb246ICdzZWxlY3QnLCAuLi5xdWVyeSB9KVxuICAgICAgICAgICAgLnRoZW4oKHJvd3M6IEVudGl0eVtdKSA9PiByb3dzWzBdKTtcbiAgICB9XG5cbiAgICBfd2hlcmVJZChpZDogSWQpOiBUYWJsZUNvbmRpdGlvblF1ZXJ5PEVudGl0eSwgVGFibGU+IHtcblxuICAgICAgICBsZXQgJGlkID0gKHRoaXMuX3RhYmxlIGFzIGFueSkuJGlkO1xuICAgICAgICBpZiAoJGlkIGluc3RhbmNlb2YgVmFsdWVDb2x1bW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndoZXJlKCRpZC5lcShpZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2hlcmUoLi4uT2JqZWN0LmtleXMoJGlkKS5tYXAoa2V5ID0+ICgodGhpcy5fdGFibGUgYXMgYW55KVtrZXldIGFzIFZhbHVlQ29sdW1uPFRhYmxlLCBhbnk+KS5lcSgoaWQgYXMgYW55KVtrZXldIGFzIGFueSkpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tdHlwZS1zcWwgbGliL2J1aWxkZXIvcXVlcnkvdGFibGUtcXVlcnkudHMiXX0=
@@ -1,20 +0,0 @@
1
- import SelectQuery from './query/select-query';
2
- import TableQuery from "./query/table-query";
3
- export default class QuerySource {
4
- constructor(_queryProcessor) {
5
- this._queryProcessor = _queryProcessor;
6
- }
7
- from(table1, table2, table3) {
8
- if (table3 != null)
9
- return new SelectQuery(this._queryProcessor, [table1, table2, table3]);
10
- else if (table2 != null)
11
- return new SelectQuery(this._queryProcessor, [table1, table2]);
12
- return new SelectQuery(this._queryProcessor, [table1]);
13
- }
14
- table(table) {
15
- return new TableQuery(this._queryProcessor, table);
16
- }
17
- }
18
- ;
19
- ({}); // @--end-of-file-for-module=taon-type-sql lib/builder/query-source.ts
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi10eXBlLXNxbC9wcm9qZWN0cy90YW9uLXR5cGUtc3FsL3NyYy9saWIvYnVpbGRlci9xdWVyeS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxXQUFXLE1BQU0sc0JBQXNCLENBQUM7QUFHL0MsT0FBTyxVQUFVLE1BQU0scUJBQXFCLENBQUM7QUFHN0MsTUFBTSxDQUFDLE9BQU8sT0FBTyxXQUFXO0lBRTVCLFlBQXNCLGVBQStCO1FBQS9CLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtJQUFHLENBQUM7SUFNekQsSUFBSSxDQUF3SCxNQUFXLEVBQUUsTUFBWSxFQUFFLE1BQVk7UUFDL0osSUFBSSxNQUFNLElBQUksSUFBSTtZQUFFLE9BQU8sSUFBSSxXQUFXLENBQWdDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDckgsSUFBSSxNQUFNLElBQUksSUFBSTtZQUFFLE9BQU8sSUFBSSxXQUFXLENBQXVCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM5RyxPQUFPLElBQUksV0FBVyxDQUFpQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsS0FBSyxDQUFtRCxLQUFxQztRQUN6RixPQUFPLElBQUksVUFBVSxDQUFvQixJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFFLENBQUM7Q0FDSjtBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsc0VBQXNFIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCBRdWVyeVRhYmxlIGZyb20gJy4vcXVlcnktdGFibGUnO1xuaW1wb3J0IFNlbGVjdFF1ZXJ5IGZyb20gJy4vcXVlcnkvc2VsZWN0LXF1ZXJ5JztcbmltcG9ydCB7IFF1ZXJ5UHJvY2Vzc29yIH0gZnJvbSBcIi4vaGVscGVycy9pbnRlcm5hbC10eXBlc1wiO1xuaW1wb3J0IEpvaW5lZFRhYmxlcyBmcm9tIFwiLi9qb2luL2pvaW5lZC10YWJsZXNcIjtcbmltcG9ydCBUYWJsZVF1ZXJ5IGZyb20gXCIuL3F1ZXJ5L3RhYmxlLXF1ZXJ5XCI7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUXVlcnlTb3VyY2Uge1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9xdWVyeVByb2Nlc3NvcjogUXVlcnlQcm9jZXNzb3IpIHt9XG5cbiAgICBmcm9tPEVudGl0eSwgVGFibGUxIGV4dGVuZHMgUXVlcnlUYWJsZTxFbnRpdHksIGFueT4+KHRhYmxlMTogVGFibGUxICYgUXVlcnlUYWJsZTxFbnRpdHksIGFueT4pOiBTZWxlY3RRdWVyeTxFbnRpdHksIFRhYmxlMT5cbiAgICBmcm9tPFRhYmxlcyBleHRlbmRzIFF1ZXJ5VGFibGU8YW55LCBhbnk+Pih0YWJsZXM6IEpvaW5lZFRhYmxlczxUYWJsZXM+KTogU2VsZWN0UXVlcnk8YW55LCBUYWJsZXM+XG4gICAgZnJvbTxUYWJsZTEgZXh0ZW5kcyBRdWVyeVRhYmxlPGFueSwgYW55PiwgVGFibGUyIGV4dGVuZHMgUXVlcnlUYWJsZTxhbnksIGFueT4+KHRhYmxlMTogVGFibGUxLCB0YWJsZTI6IFRhYmxlMik6IFNlbGVjdFF1ZXJ5PGFueSwgVGFibGUxIHwgVGFibGUyPlxuICAgIGZyb208VGFibGUxIGV4dGVuZHMgUXVlcnlUYWJsZTxhbnksIGFueT4sIFRhYmxlMiBleHRlbmRzIFF1ZXJ5VGFibGU8YW55LCBhbnk+LCBUYWJsZTMgZXh0ZW5kcyBRdWVyeVRhYmxlPGFueSwgYW55Pj4odGFibGUxOiBUYWJsZTEsIHRhYmxlMjogVGFibGUyLCB0YWJsZTM6IFRhYmxlMyk6IFNlbGVjdFF1ZXJ5PGFueSwgVGFibGUxIHwgVGFibGUyIHwgVGFibGUzPlxuICAgIGZyb208RW50aXR5LCBUYWJsZTEgZXh0ZW5kcyBRdWVyeVRhYmxlPGFueSwgYW55PiwgVGFibGUyIGV4dGVuZHMgUXVlcnlUYWJsZTxhbnksIGFueT4sIFRhYmxlMyBleHRlbmRzIFF1ZXJ5VGFibGU8YW55LCBhbnk+Pih0YWJsZTE6IGFueSwgdGFibGUyPzogYW55LCB0YWJsZTM/OiBhbnkpIHtcbiAgICAgICAgaWYgKHRhYmxlMyAhPSBudWxsKSByZXR1cm4gbmV3IFNlbGVjdFF1ZXJ5PGFueSwgVGFibGUxIHwgVGFibGUyIHwgVGFibGUzPih0aGlzLl9xdWVyeVByb2Nlc3NvciwgW3RhYmxlMSwgdGFibGUyLCB0YWJsZTNdKTtcbiAgICAgICAgZWxzZSBpZiAodGFibGUyICE9IG51bGwpIHJldHVybiBuZXcgU2VsZWN0UXVlcnk8YW55LCBUYWJsZTEgfCBUYWJsZTI+KHRoaXMuX3F1ZXJ5UHJvY2Vzc29yLCBbdGFibGUxLCB0YWJsZTJdKTtcbiAgICAgICAgcmV0dXJuIG5ldyBTZWxlY3RRdWVyeTxFbnRpdHksIFRhYmxlMT4odGhpcy5fcXVlcnlQcm9jZXNzb3IsIFt0YWJsZTFdKTtcbiAgICB9XG5cbiAgICB0YWJsZTxFbnRpdHksIElkLCBUYWJsZSBleHRlbmRzIFF1ZXJ5VGFibGU8RW50aXR5LCBJZD4+KHRhYmxlOiBUYWJsZSAmIFF1ZXJ5VGFibGU8RW50aXR5LCBJZD4pOiBUYWJsZVF1ZXJ5PEVudGl0eSwgSWQsIFRhYmxlPiB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGVRdWVyeTxFbnRpdHksIElkLCBUYWJsZT4odGhpcy5fcXVlcnlQcm9jZXNzb3IsIHRhYmxlKTtcbiAgICB9XG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uLXR5cGUtc3FsIGxpYi9idWlsZGVyL3F1ZXJ5LXNvdXJjZS50cyJdfQ==
@@ -1,24 +0,0 @@
1
- import BasicColumn from "./column/basic-column";
2
- import JoinedTablesChain from "./join/joined-tables-chain";
3
- class QueryTable {
4
- constructor(_$name) {
5
- this._$name = _$name;
6
- this.$all = new BasicColumn(this, '*');
7
- }
8
- innerJoin(table) {
9
- return new JoinedTablesChain(table, 'inner', this);
10
- }
11
- leftJoin(table) {
12
- return new JoinedTablesChain(table, 'left', this);
13
- }
14
- rightJoin(table) {
15
- return new JoinedTablesChain(table, 'right', this);
16
- }
17
- fullJoin(table) {
18
- return new JoinedTablesChain(table, 'full', this);
19
- }
20
- }
21
- export default QueryTable;
22
- ;
23
- ({}); // @--end-of-file-for-module=taon-type-sql lib/builder/query-table.ts
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90YW9uLXR5cGUtc3FsL3Byb2plY3RzL3Rhb24tdHlwZS1zcWwvc3JjL2xpYi9idWlsZGVyL3F1ZXJ5LXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sV0FBVyxNQUFNLHVCQUF1QixDQUFDO0FBRWhELE9BQU8saUJBQWlCLE1BQU0sNEJBQTRCLENBQUM7QUFHM0QsTUFBZSxVQUFVO0lBRXJCLFlBQXNCLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBT3BDLFNBQUksR0FBRyxJQUFJLFdBQVcsQ0FBZSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFQVCxDQUFDO0lBU3hDLFNBQVMsQ0FBeUMsS0FBZ0I7UUFDOUQsT0FBTyxJQUFJLGlCQUFpQixDQUFtQixLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxRQUFRLENBQXlDLEtBQWdCO1FBQzdELE9BQU8sSUFBSSxpQkFBaUIsQ0FBbUIsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsU0FBUyxDQUF5QyxLQUFnQjtRQUM5RCxPQUFPLElBQUksaUJBQWlCLENBQW1CLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFFBQVEsQ0FBeUMsS0FBZ0I7UUFDN0QsT0FBTyxJQUFJLGlCQUFpQixDQUFtQixLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FDSjtBQUVELGVBQWUsVUFBVSxDQUFDO0FBRXpCLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMscUVBQXFFIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCBCYXNpY0NvbHVtbiBmcm9tIFwiLi9jb2x1bW4vYmFzaWMtY29sdW1uXCI7XG5pbXBvcnQgR2VuZXJpY3NIZWxwZXIgZnJvbSBcIi4vaGVscGVycy9nZW5lcmljcy1oZWxwZXJcIjtcbmltcG9ydCBKb2luZWRUYWJsZXNDaGFpbiBmcm9tIFwiLi9qb2luL2pvaW5lZC10YWJsZXMtY2hhaW5cIjtcblxuXG5hYnN0cmFjdCBjbGFzcyBRdWVyeVRhYmxlPEVudGl0eSwgSWQ+IHtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfJG5hbWU6IHN0cmluZykge31cblxuICAgIHByb3RlY3RlZCBfJHR5cGU6IEdlbmVyaWNzSGVscGVyPEVudGl0eT47XG4gICAgcHJvdGVjdGVkIF8kaWRUeXBlOiBHZW5lcmljc0hlbHBlcjxJZD47XG5cblxuXG4gICAgJGFsbCA9IG5ldyBCYXNpY0NvbHVtbjx0aGlzLCBFbnRpdHk+KHRoaXMsICcqJyk7XG5cbiAgICBpbm5lckpvaW48Sm9pblRhYmxlIGV4dGVuZHMgUXVlcnlUYWJsZTxhbnksIGFueT4+KHRhYmxlOiBKb2luVGFibGUpOiBKb2luZWRUYWJsZXNDaGFpbjx0aGlzIHwgSm9pblRhYmxlPiB7XG4gICAgICAgIHJldHVybiBuZXcgSm9pbmVkVGFibGVzQ2hhaW48dGhpcyB8IEpvaW5UYWJsZT4odGFibGUsICdpbm5lcicsIHRoaXMpO1xuICAgIH1cblxuICAgIGxlZnRKb2luPEpvaW5UYWJsZSBleHRlbmRzIFF1ZXJ5VGFibGU8YW55LCBhbnk+Pih0YWJsZTogSm9pblRhYmxlKTogSm9pbmVkVGFibGVzQ2hhaW48dGhpcyB8IEpvaW5UYWJsZT4ge1xuICAgICAgICByZXR1cm4gbmV3IEpvaW5lZFRhYmxlc0NoYWluPHRoaXMgfCBKb2luVGFibGU+KHRhYmxlLCAnbGVmdCcsIHRoaXMpO1xuICAgIH1cblxuICAgIHJpZ2h0Sm9pbjxKb2luVGFibGUgZXh0ZW5kcyBRdWVyeVRhYmxlPGFueSwgYW55Pj4odGFibGU6IEpvaW5UYWJsZSk6IEpvaW5lZFRhYmxlc0NoYWluPHRoaXMgfCBKb2luVGFibGU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBKb2luZWRUYWJsZXNDaGFpbjx0aGlzIHwgSm9pblRhYmxlPih0YWJsZSwgJ3JpZ2h0JywgdGhpcyk7XG4gICAgfVxuXG4gICAgZnVsbEpvaW48Sm9pblRhYmxlIGV4dGVuZHMgUXVlcnlUYWJsZTxhbnksIGFueT4+KHRhYmxlOiBKb2luVGFibGUpOiBKb2luZWRUYWJsZXNDaGFpbjx0aGlzIHwgSm9pblRhYmxlPiB7XG4gICAgICAgIHJldHVybiBuZXcgSm9pbmVkVGFibGVzQ2hhaW48dGhpcyB8IEpvaW5UYWJsZT4odGFibGUsICdmdWxsJywgdGhpcyk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBRdWVyeVRhYmxlO1xuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbi10eXBlLXNxbCBsaWIvYnVpbGRlci9xdWVyeS10YWJsZS50cyJdfQ==
@@ -1,10 +0,0 @@
1
- import QuerySource from "../builder/query-source";
2
- import { createQueryProcessor } from "./query-processor";
3
- export default class MySqlQuerySource extends QuerySource {
4
- constructor(client, options = {}) {
5
- super(createQueryProcessor(client, options, 'mysql'));
6
- }
7
- }
8
- ;
9
- ({}); // @--end-of-file-for-module=taon-type-sql lib/client/mysql.ts
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlzcWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90YW9uLXR5cGUtc3FsL3Byb2plY3RzL3Rhb24tdHlwZS1zcWwvc3JjL2xpYi9jbGllbnQvbXlzcWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUF3QixvQkFBb0IsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRTlFLE1BQU0sQ0FBQyxPQUFPLE9BQU8sZ0JBQWlCLFNBQVEsV0FBVztJQUVyRCxZQUFZLE1BQVcsRUFBRSxVQUFpQyxFQUFFO1FBQ3hELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNKO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw4REFBOEQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IFF1ZXJ5U291cmNlIGZyb20gXCIuLi9idWlsZGVyL3F1ZXJ5LXNvdXJjZVwiO1xuaW1wb3J0IHtRdWVyeVByb2Nlc3Nvck9wdGlvbnMsIGNyZWF0ZVF1ZXJ5UHJvY2Vzc29yfSBmcm9tIFwiLi9xdWVyeS1wcm9jZXNzb3JcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTXlTcWxRdWVyeVNvdXJjZSBleHRlbmRzIFF1ZXJ5U291cmNlIHtcblxuICAgIGNvbnN0cnVjdG9yKGNsaWVudDogYW55LCBvcHRpb25zOiBRdWVyeVByb2Nlc3Nvck9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihjcmVhdGVRdWVyeVByb2Nlc3NvcihjbGllbnQsIG9wdGlvbnMsICdteXNxbCcpKTtcbiAgICB9XG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uLXR5cGUtc3FsIGxpYi9jbGllbnQvbXlzcWwudHMiXX0=
@@ -1,45 +0,0 @@
1
- import { Log } from 'ng2-logger/browser';
2
- import { convertQueryToParameterizedSQL } from '../converter/parameterized-converter';
3
- import { convertQueryToSQL } from '../converter/sql-converter';
4
- const log = Log.create('query processor');
5
- const DEFAULT_OPTIONS = {
6
- lineBreaks: false,
7
- parameterized: true,
8
- logging: true,
9
- identifierQuote: '"'
10
- };
11
- function mySqlTypeCast(field, next) {
12
- if (field.type == 'TINY' && field.length == 1) { // Boolean
13
- let value = field.string();
14
- if (value == '1')
15
- return true;
16
- if (value == '0')
17
- return false;
18
- return null;
19
- }
20
- else if (field.type == 'JSON') {
21
- let value = field.string();
22
- return value == null ? null : JSON.parse(value);
23
- }
24
- return next();
25
- }
26
- export function createQueryProcessor(client, _options = {}, engine = 'pg') {
27
- let options = Object.assign({}, DEFAULT_OPTIONS, _options);
28
- let queryOptions = {
29
- lineBreak: options.lineBreaks ? '\n' : ' ',
30
- nameEscape: _options.identifierQuote || (engine === 'mysql' ? '`' : '"')
31
- };
32
- return (query) => {
33
- if (options.parameterized) {
34
- let { sql, params } = convertQueryToParameterizedSQL(query, queryOptions, engine);
35
- return client.query(sql, params);
36
- }
37
- else {
38
- let sql = convertQueryToSQL(query, queryOptions, engine);
39
- return client.query(sql, undefined);
40
- }
41
- };
42
- }
43
- ;
44
- ({}); // @--end-of-file-for-module=taon-type-sql lib/client/query-processor.ts
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi10eXBlLXNxbC9wcm9qZWN0cy90YW9uLXR5cGUtc3FsL3NyYy9saWIvY2xpZW50L3F1ZXJ5LXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsR0FBRyxFQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFNL0QsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FFdkMsQ0FBQTtBQVVELE1BQU0sZUFBZSxHQUEwQjtJQUM3QyxVQUFVLEVBQUUsS0FBSztJQUNqQixhQUFhLEVBQUUsSUFBSTtJQUNuQixPQUFPLEVBQUUsSUFBSTtJQUNiLGVBQWUsRUFBRSxHQUFHO0NBQ3JCLENBQUM7QUFFRixTQUFTLGFBQWEsQ0FBQyxLQUFVLEVBQUUsSUFBUztJQUMxQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVO1FBQ3pELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLEtBQUssSUFBSSxHQUFHO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDOUIsSUFBSSxLQUFLLElBQUksR0FBRztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztTQUFNLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNoQyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxNQUFXLEVBQUUsV0FBa0MsRUFBRSxFQUFFLFNBQXNCLElBQUk7SUFFaEgsSUFBSSxPQUFPLEdBQTBCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVsRixJQUFJLFlBQVksR0FBcUI7UUFDbkMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRztRQUMxQyxVQUFVLEVBQUUsUUFBUSxDQUFDLGVBQWUsSUFBSSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0tBQ3pFLENBQUM7SUEwQkYsT0FBTyxDQUFDLEtBQVUsRUFBRSxFQUFFO1FBQ3BCLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzFCLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsOEJBQThCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUVsRixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBR25DLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUV6RCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBR3RDLENBQUM7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDO0FBR0EsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx3RUFBd0UiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgTG9nLCBMZXZlbCB9IGZyb20gJ25nMi1sb2dnZXIvYnJvd3Nlcic7XG5pbXBvcnQgeyBjb252ZXJ0UXVlcnlUb1BhcmFtZXRlcml6ZWRTUUwgfSBmcm9tICcuLi9jb252ZXJ0ZXIvcGFyYW1ldGVyaXplZC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgY29udmVydFF1ZXJ5VG9TUUwgfSBmcm9tICcuLi9jb252ZXJ0ZXIvc3FsLWNvbnZlcnRlcic7XG5pbXBvcnQgeyBjb252ZXJ0UmVzdWx0IH0gZnJvbSBcIi4uL2NvbnZlcnRlci9yZXN1bHQtY29udmVydGVyXCI7XG5pbXBvcnQgeyBRdWVyeUVuZ2luZSwgQ29udmVydGVyT3B0aW9ucyB9IGZyb20gJy4uL2NvbnZlcnRlci90eXBlcyc7XG5pbXBvcnQgeyBRdWVyeVByb2Nlc3NvciB9IGZyb20gJy4uL2J1aWxkZXIvaGVscGVycy9pbnRlcm5hbC10eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5cbmNvbnN0IGxvZyA9IExvZy5jcmVhdGUoJ3F1ZXJ5IHByb2Nlc3NvcicsXG5cbilcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVByb2Nlc3Nvck9wdGlvbnMge1xuICBsaW5lQnJlYWtzPzogYm9vbGVhbixcbiAgcGFyYW1ldGVyaXplZD86IGJvb2xlYW4sXG4gIGxvZ2dpbmc/OiBib29sZWFuLFxuICBsb2dnZXI/OiAoc3FsOiBzdHJpbmcsIHBhcmFtcz86IGFueVtdKSA9PiB2b2lkLFxuICBpZGVudGlmaWVyUXVvdGU/OiBzdHJpbmdcbn1cblxuY29uc3QgREVGQVVMVF9PUFRJT05TOiBRdWVyeVByb2Nlc3Nvck9wdGlvbnMgPSB7XG4gIGxpbmVCcmVha3M6IGZhbHNlLFxuICBwYXJhbWV0ZXJpemVkOiB0cnVlLFxuICBsb2dnaW5nOiB0cnVlLFxuICBpZGVudGlmaWVyUXVvdGU6ICdcIidcbn07XG5cbmZ1bmN0aW9uIG15U3FsVHlwZUNhc3QoZmllbGQ6IGFueSwgbmV4dDogYW55KSB7XG4gIGlmIChmaWVsZC50eXBlID09ICdUSU5ZJyAmJiBmaWVsZC5sZW5ndGggPT0gMSkgeyAvLyBCb29sZWFuXG4gICAgbGV0IHZhbHVlID0gZmllbGQuc3RyaW5nKCk7XG4gICAgaWYgKHZhbHVlID09ICcxJykgcmV0dXJuIHRydWU7XG4gICAgaWYgKHZhbHVlID09ICcwJykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2UgaWYgKGZpZWxkLnR5cGUgPT0gJ0pTT04nKSB7XG4gICAgbGV0IHZhbHVlID0gZmllbGQuc3RyaW5nKCk7XG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyBudWxsIDogSlNPTi5wYXJzZSh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIG5leHQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVF1ZXJ5UHJvY2Vzc29yKGNsaWVudDogYW55LCBfb3B0aW9uczogUXVlcnlQcm9jZXNzb3JPcHRpb25zID0ge30sIGVuZ2luZTogUXVlcnlFbmdpbmUgPSAncGcnKTogUXVlcnlQcm9jZXNzb3Ige1xuXG4gIGxldCBvcHRpb25zOiBRdWVyeVByb2Nlc3Nvck9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIF9vcHRpb25zKTtcblxuICBsZXQgcXVlcnlPcHRpb25zOiBDb252ZXJ0ZXJPcHRpb25zID0ge1xuICAgIGxpbmVCcmVhazogb3B0aW9ucy5saW5lQnJlYWtzID8gJ1xcbicgOiAnICcsXG4gICAgbmFtZUVzY2FwZTogX29wdGlvbnMuaWRlbnRpZmllclF1b3RlIHx8IChlbmdpbmUgPT09ICdteXNxbCcgPyAnYCcgOiAnXCInKVxuICB9O1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIHJldHVybiAocXVlcnk6IGFueSkgPT4ge1xuICAgIGlmIChvcHRpb25zLnBhcmFtZXRlcml6ZWQpIHtcbiAgICAgIGxldCB7IHNxbCwgcGFyYW1zIH0gPSBjb252ZXJ0UXVlcnlUb1BhcmFtZXRlcml6ZWRTUUwocXVlcnksIHF1ZXJ5T3B0aW9ucywgZW5naW5lKTtcblxuICAgICAgcmV0dXJuIGNsaWVudC5xdWVyeShzcWwsIHBhcmFtcyk7XG5cblxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgc3FsID0gY29udmVydFF1ZXJ5VG9TUUwocXVlcnksIHF1ZXJ5T3B0aW9ucywgZW5naW5lKTtcblxuICAgICAgcmV0dXJuIGNsaWVudC5xdWVyeShzcWwsIHVuZGVmaW5lZCk7XG5cblxuICAgIH1cbiAgfTtcbn1cblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbi10eXBlLXNxbCBsaWIvY2xpZW50L3F1ZXJ5LXByb2Nlc3Nvci50cyJdfQ==
@@ -1,27 +0,0 @@
1
- export function convertSubstitutionParam(param) {
2
- if (param == null)
3
- return 'NULL';
4
- if (typeof param === 'string' || param instanceof String) {
5
- return `'${String(param)}'`;
6
- }
7
- else if (typeof param === 'boolean' || param instanceof Boolean) {
8
- return String(param).toUpperCase();
9
- }
10
- else if (param instanceof Date) {
11
- return `'${param.toISOString()}'`;
12
- }
13
- else if (typeof param === 'number' || param instanceof Number) {
14
- return String(param);
15
- }
16
- return `'${JSON.stringify(param)}'`;
17
- }
18
- export function convertEscapedParam(param) {
19
- if (typeof param === 'object' && !(param == null || param instanceof String || param instanceof Number ||
20
- param instanceof Boolean || param instanceof Date)) {
21
- return JSON.stringify(param);
22
- }
23
- return param;
24
- }
25
- ;
26
- ({}); // @--end-of-file-for-module=taon-type-sql lib/converter/param-converter.ts
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi10eXBlLXNxbC9wcm9qZWN0cy90YW9uLXR5cGUtc3FsL3NyYy9saWIvY29udmVydGVyL3BhcmFtLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBVTtJQUMvQyxJQUFJLEtBQUssSUFBSSxJQUFJO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDakMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRSxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUNoQyxDQUFDO1NBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxZQUFZLE9BQU8sRUFBRSxDQUFDO1FBQ2hFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7U0FBTSxJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUMvQixPQUFPLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUM7SUFDdEMsQ0FBQztTQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUUsQ0FBQztRQUM5RCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUN4QyxDQUFDO0FBSUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQVU7SUFDMUMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxZQUFZLE1BQU0sSUFBSSxLQUFLLFlBQVksTUFBTTtRQUNsRyxLQUFLLFlBQVksT0FBTyxJQUFJLEtBQUssWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3JELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsMkVBQTJFIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTdWJzdGl0dXRpb25QYXJhbShwYXJhbTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAocGFyYW0gPT0gbnVsbCkgcmV0dXJuICdOVUxMJztcbiAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJyB8fCBwYXJhbSBpbnN0YW5jZW9mIFN0cmluZykge1xuICAgICAgICByZXR1cm4gYCcke1N0cmluZyhwYXJhbSl9J2A7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcGFyYW0gPT09ICdib29sZWFuJyB8fCBwYXJhbSBpbnN0YW5jZW9mIEJvb2xlYW4pIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhwYXJhbSkudG9VcHBlckNhc2UoKTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gYCcke3BhcmFtLnRvSVNPU3RyaW5nKCl9J2A7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcGFyYW0gPT09ICdudW1iZXInIHx8IHBhcmFtIGluc3RhbmNlb2YgTnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcocGFyYW0pO1xuICAgIH1cbiAgICByZXR1cm4gYCcke0pTT04uc3RyaW5naWZ5KHBhcmFtKX0nYDtcbn1cblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RXNjYXBlZFBhcmFtKHBhcmFtOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnb2JqZWN0JyAmJiAhKHBhcmFtID09IG51bGwgfHwgcGFyYW0gaW5zdGFuY2VvZiBTdHJpbmcgfHwgcGFyYW0gaW5zdGFuY2VvZiBOdW1iZXIgfHxcbiAgICAgICAgcGFyYW0gaW5zdGFuY2VvZiBCb29sZWFuIHx8IHBhcmFtIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHBhcmFtKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtO1xufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbi10eXBlLXNxbCBsaWIvY29udmVydGVyL3BhcmFtLWNvbnZlcnRlci50cyJdfQ==
@@ -1,17 +0,0 @@
1
- import { createQueryConverter } from "./query-converter";
2
- import { convertEscapedParam } from './param-converter';
3
- let pgParamConverter = (index) => '$' + index;
4
- let mySqlParamConverter = (index) => '?';
5
- function convertSingleParam(param, params, paramConverter) {
6
- params.push(convertEscapedParam(param));
7
- return paramConverter(params.length);
8
- }
9
- export function convertQueryToParameterizedSQL(query, options, engine) {
10
- let params = [];
11
- let paramConverter = engine === 'mysql' ? mySqlParamConverter : pgParamConverter;
12
- let sql = createQueryConverter((param) => convertSingleParam(param, params, paramConverter), options, engine)(query);
13
- return { sql, params };
14
- }
15
- ;
16
- ({}); // @--end-of-file-for-module=taon-type-sql lib/converter/parameterized-converter.ts
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyaXplZC1jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90YW9uLXR5cGUtc3FsL3Byb2plY3RzL3Rhb24tdHlwZS1zcWwvc3JjL2xpYi9jb252ZXJ0ZXIvcGFyYW1ldGVyaXplZC1jb252ZXJ0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFHdEQsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztBQUN0RCxJQUFJLG1CQUFtQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUM7QUFFakQsU0FBUyxrQkFBa0IsQ0FBQyxLQUFVLEVBQUUsTUFBYSxFQUFFLGNBQXNDO0lBQ3pGLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4QyxPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxLQUFVLEVBQUUsT0FBeUIsRUFBRSxNQUFtQjtJQUNyRyxJQUFJLE1BQU0sR0FBVSxFQUFFLENBQUM7SUFFdkIsSUFBSSxjQUFjLEdBQUcsTUFBTSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO0lBQ2pGLElBQUksR0FBRyxHQUFHLG9CQUFvQixDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUxSCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQzNCLENBQUM7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG1GQUFtRiIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQge2NyZWF0ZVF1ZXJ5Q29udmVydGVyfSBmcm9tIFwiLi9xdWVyeS1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7Y29udmVydEVzY2FwZWRQYXJhbX0gZnJvbSAnLi9wYXJhbS1jb252ZXJ0ZXInO1xuaW1wb3J0IHtRdWVyeUVuZ2luZSwgQ29udmVydGVyT3B0aW9uc30gZnJvbSBcIi4vdHlwZXNcIjtcblxubGV0IHBnUGFyYW1Db252ZXJ0ZXIgPSAoaW5kZXg6IG51bWJlcikgPT4gJyQnICsgaW5kZXg7XG5sZXQgbXlTcWxQYXJhbUNvbnZlcnRlciA9IChpbmRleDogbnVtYmVyKSA9PiAnPyc7XG5cbmZ1bmN0aW9uIGNvbnZlcnRTaW5nbGVQYXJhbShwYXJhbTogYW55LCBwYXJhbXM6IGFueVtdLCBwYXJhbUNvbnZlcnRlcjogKHBhcmFtOiBhbnkpID0+IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcGFyYW1zLnB1c2goY29udmVydEVzY2FwZWRQYXJhbShwYXJhbSkpO1xuICAgIHJldHVybiBwYXJhbUNvbnZlcnRlcihwYXJhbXMubGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRRdWVyeVRvUGFyYW1ldGVyaXplZFNRTChxdWVyeTogYW55LCBvcHRpb25zOiBDb252ZXJ0ZXJPcHRpb25zLCBlbmdpbmU6IFF1ZXJ5RW5naW5lKSB7XG4gICAgbGV0IHBhcmFtczogYW55W10gPSBbXTtcblxuICAgIGxldCBwYXJhbUNvbnZlcnRlciA9IGVuZ2luZSA9PT0gJ215c3FsJyA/IG15U3FsUGFyYW1Db252ZXJ0ZXIgOiBwZ1BhcmFtQ29udmVydGVyO1xuICAgIGxldCBzcWwgPSBjcmVhdGVRdWVyeUNvbnZlcnRlcigocGFyYW06IGFueSkgPT4gY29udmVydFNpbmdsZVBhcmFtKHBhcmFtLCBwYXJhbXMsIHBhcmFtQ29udmVydGVyKSwgb3B0aW9ucywgZW5naW5lKShxdWVyeSk7XG5cbiAgICByZXR1cm4geyBzcWwsIHBhcmFtcyB9O1xufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbi10eXBlLXNxbCBsaWIvY29udmVydGVyL3BhcmFtZXRlcml6ZWQtY29udmVydGVyLnRzIl19
@@ -1,282 +0,0 @@
1
- import { string, number, date, boolean } from './type-converter';
2
- export function createQueryConverter(paramConverter, options, engine) {
3
- return convertQuery;
4
- function convertQuery(query) {
5
- if (query._action === 'select')
6
- return convertSelectQuery(query);
7
- if (query._action === 'delete')
8
- return convertDeleteQuery(query);
9
- if (query._action === 'update')
10
- return convertUpdateQuery(query);
11
- if (query._action === 'insert')
12
- return convertInsertQuery(query);
13
- throw new Error('Unknown query type:' + query._action);
14
- }
15
- function convertDeleteQuery(query) {
16
- let s = 'DELETE FROM ' + convertTable(query._table);
17
- s += convertConditions(query._conditions);
18
- return s;
19
- }
20
- function convertUpdateQuery(query) {
21
- let s = 'UPDATE ' + convertTable(query._table) + ' SET ';
22
- s += convertUpdateSetters(query._table, query._entity);
23
- s += convertConditions(query._conditions);
24
- return s;
25
- }
26
- function convertUpdateSetters(table, entity) {
27
- return Object.keys(entity).sort().map(key => {
28
- let value = entity[key];
29
- let column = table[key];
30
- return convertColumnName(column) + ' = ' + convertParam(column, value);
31
- }).join(', ');
32
- }
33
- function convertInsertQuery(query) {
34
- let items = Array.isArray(query._entity) ? query._entity : [query._entity];
35
- let keySet = items.reduce((set, item) => {
36
- Object.keys(item).forEach(key => set.add(key));
37
- return set;
38
- }, new Set());
39
- let keys = Array.from(keySet).sort();
40
- let s = 'INSERT INTO ' + convertTable(query._table) + ' ';
41
- s += '(' + keys.map(key => convertColumnName(query._table[key])).join(', ') + ')';
42
- s += options.lineBreak + 'VALUES ';
43
- s += items.map(item => convertInsertItem(query._table, item, keys))
44
- .map((row) => '(' + row + ')').join(', ');
45
- s += getPgInsertReturningIfNeeded(query);
46
- return s;
47
- }
48
- function getPgInsertReturningIfNeeded(query) {
49
- if (engine === 'pg' && query._action === 'insert' && !Array.isArray(query._entity) &&
50
- query._table.$id && query._table.$id._table && query._table.$id._name) {
51
- return ' RETURNING ' + convertColumnName(query._table.$id);
52
- }
53
- return '';
54
- }
55
- function convertInsertItem(table, entity, keys) {
56
- return keys.map(key => {
57
- let value = entity[key];
58
- let column = table[key];
59
- return convertParam(column, value);
60
- }).join(', ');
61
- }
62
- function convertSelectQuery(query) {
63
- let s = 'SELECT ';
64
- if (query._distinct) {
65
- s += 'DISTINCT ';
66
- }
67
- if (query._columns == null || query._columns.length === 0) {
68
- s += '*';
69
- }
70
- else {
71
- s += query._columns.map((column) => convertColumn(column)).join(', ');
72
- }
73
- s += options.lineBreak + 'FROM ';
74
- if (query._tables) {
75
- s += query._tables.map((table) => table._parent ? convertJoin(table) : convertTable(table)).join(', ');
76
- }
77
- else {
78
- s += convertTable(query._table);
79
- }
80
- s += convertConditions(query._conditions);
81
- if (query._groupBy && query._groupBy.length > 0) {
82
- s += options.lineBreak + 'GROUP BY ';
83
- s += query._groupBy.map((column) => convertColumn(column)).join(', ');
84
- }
85
- s += convertConditions(query._having, 'HAVING');
86
- if (query._orderings && query._orderings.length > 0) {
87
- s += options.lineBreak + 'ORDER BY ';
88
- s += query._orderings.map((ordering) => convertOrdering(ordering)).join(', ');
89
- }
90
- if (query._limit != null) {
91
- s += options.lineBreak + 'LIMIT ' + number(query._limit);
92
- }
93
- if (query._offset != null) {
94
- s += options.lineBreak + 'OFFSET ' + number(query._offset);
95
- }
96
- return s;
97
- }
98
- function convertConditions(conditions, keyword = 'WHERE') {
99
- let s = '';
100
- if (conditions && conditions.length > 0) {
101
- s += options.lineBreak + keyword + ' ';
102
- preprocessConditions(conditions);
103
- s += conditions.map(condition => convertCondition(condition, true)).join(' AND ');
104
- }
105
- return s;
106
- }
107
- function convertJoin(joinChain) {
108
- let items = [];
109
- while (joinChain) {
110
- items.push(joinChain);
111
- joinChain = joinChain._parent;
112
- }
113
- let root = items[items.length - 1];
114
- let s = convertTable(root);
115
- for (let i = items.length - 2; i >= 0; i -= 2) {
116
- let table = items[i]._table;
117
- let modifier = items[i]._modifier;
118
- let condition = items[i - 1]._condition;
119
- let param = convertColumn(condition._otherColumn);
120
- s += ' ' + modifier.toUpperCase() + ' JOIN ' + convertTable(table) + ' ON ' +
121
- convertColumnCondition(condition, param);
122
- }
123
- return s;
124
- }
125
- function convertOrdering(ordering) {
126
- if (ordering._column) {
127
- let s = convertColumn(ordering._column);
128
- if (ordering._nullsPosition != null) { // "NULLS FIRST" only exists in PG, this is the general solution
129
- s += ' IS NULL ' + (ordering._nullsPosition === 'FIRST' ? 'DESC' : 'ASC') + ', ' + s;
130
- }
131
- if (ordering._direction === 'ASC')
132
- s += ' ASC';
133
- if (ordering._direction === 'DESC')
134
- s += ' DESC';
135
- return s;
136
- }
137
- else {
138
- return convertColumn(ordering);
139
- }
140
- }
141
- function convertTable(table) {
142
- return options.nameEscape + table._$name + options.nameEscape;
143
- }
144
- function convertColumn(column) {
145
- let s = '';
146
- if (!(column._name === '*' && column._modifiers.length > 0 && column._modifiers[0].name === 'count')) {
147
- s += convertTable(column._table) + '.';
148
- }
149
- s += convertColumnName(column);
150
- return convertColumnModifiers(s, column);
151
- }
152
- function convertColumnModifiers(s, column) {
153
- if (column._modifiers) {
154
- column._modifiers.forEach((modifier) => {
155
- let name = modifier.name;
156
- if (name === 'lower')
157
- s = 'LOWER(' + s + ')';
158
- else if (name === 'upper')
159
- s = 'UPPER(' + s + ')';
160
- else if (name === 'count')
161
- s = 'COUNT(' + s + ')';
162
- else if (name === 'sum')
163
- s = 'SUM(' + s + ')';
164
- else if (name === 'avg')
165
- s = 'AVG(' + s + ')';
166
- else if (name === 'min')
167
- s = 'MIN(' + s + ')';
168
- else if (name === 'max')
169
- s = 'MAX(' + s + ')';
170
- else if (name === 'as')
171
- s = s + ' AS ' + options.nameEscape + modifier.params + options.nameEscape;
172
- });
173
- }
174
- return s + '';
175
- }
176
- function convertColumnName(column) {
177
- if (column._name === '*')
178
- return column._name;
179
- let name = typeof column._name === 'string' ? column._name : column._name.name;
180
- return options.nameEscape + name + options.nameEscape;
181
- }
182
- function preprocessConditions(conditions) {
183
- conditions.forEach(condition => {
184
- if (conditions.length > 1 && condition._sibling) {
185
- condition._parenthesis = true;
186
- }
187
- preprocessParams(condition);
188
- });
189
- }
190
- function preprocessParams(condition) {
191
- if (condition._sibling) {
192
- preprocessParams(condition._sibling);
193
- }
194
- if (!condition._sibling && !condition._child) {
195
- condition.__param = getConditionParam(condition);
196
- }
197
- if (condition._child) {
198
- preprocessParams(condition._child);
199
- }
200
- }
201
- function convertCondition(condition, root = false) {
202
- if (!condition._sibling && !condition._child) {
203
- return convertColumnCondition(condition, condition.__param);
204
- }
205
- let s = '';
206
- if (condition._child) {
207
- s += convertCondition(condition._child);
208
- }
209
- if (condition._sibling) {
210
- s = convertCondition(condition._sibling, root) + ' ' + condition._chainType.toUpperCase() + ' ' + s;
211
- }
212
- if (condition._parenthesis || ((!root || condition._negation) && condition._child)) {
213
- s = '( ' + s + ' )';
214
- }
215
- if (condition._negation) {
216
- s = 'NOT ' + s;
217
- }
218
- return s;
219
- }
220
- function convertColumnCondition(condition, param) {
221
- let s = convertColumn(condition._column);
222
- s += getConditionString(condition, param);
223
- return s;
224
- }
225
- function getConditionString(condition, param) {
226
- switch (condition._type) {
227
- case 'eq': return ' = ' + param;
228
- case 'ne': return ' <> ' + param;
229
- case 'lt': return ' < ' + param;
230
- case 'gt': return ' > ' + param;
231
- case 'lte': return ' <= ' + param;
232
- case 'gte': return ' >= ' + param;
233
- case 'is-null': return ' IS NULL';
234
- case 'is-not-null': return ' IS NOT NULL';
235
- case 'like': return ' LIKE ' + param;
236
- case 'not-like': return ' NOT LIKE ' + param;
237
- case 'in': return ' IN (' + param + ')';
238
- case 'not-in': return ' NOT IN (' + param + ')';
239
- case 'between': return ' BETWEEN ' + param;
240
- case 'not-between': return ' NOT BETWEEN ' + param;
241
- default: return '';
242
- }
243
- }
244
- function getConditionParam(condition) {
245
- let param = '';
246
- if (condition._otherColumn) {
247
- param = convertColumn(condition._otherColumn);
248
- }
249
- else {
250
- let _convertParam = (param) => convertParam(condition._column, param);
251
- if (condition._type === 'in' || condition._type === 'not-in') {
252
- param = condition._values.map((value) => _convertParam(value)).join(', ');
253
- }
254
- else if (condition._type === 'between' || condition._type === 'not-between') {
255
- param = _convertParam(condition._values[0]) + ' AND ' + _convertParam(condition._values[1]);
256
- }
257
- else if (condition._type !== 'is-null' && condition._type !== 'is-not-null') {
258
- param = _convertParam(condition._values[0]);
259
- }
260
- }
261
- return param;
262
- }
263
- function convertParam(column, param) {
264
- if (param == null)
265
- return 'NULL';
266
- return paramConverter(getTypedParam(column._type, param));
267
- }
268
- function getTypedParam(type, param) {
269
- if (type === 'number')
270
- return number(param);
271
- else if (type === 'boolean')
272
- return boolean(param);
273
- else if (type === 'date')
274
- return date(param);
275
- else if (type === 'string')
276
- return string(param);
277
- return param;
278
- }
279
- }
280
- ;
281
- ({}); // @--end-of-file-for-module=taon-type-sql lib/converter/query-converter.ts
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdGFvbi10eXBlLXNxbC9wcm9qZWN0cy90YW9uLXR5cGUtc3FsL3NyYy9saWIvY29udmVydGVyL3F1ZXJ5LWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJakUsTUFBTSxVQUFVLG9CQUFvQixDQUFDLGNBQXNDLEVBQUUsT0FBeUIsRUFBRSxNQUFtQjtJQUV2SCxPQUFPLFlBQVksQ0FBQztJQUVwQixTQUFTLFlBQVksQ0FBQyxLQUFVO1FBQzVCLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxRQUFRO1lBQUUsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUTtZQUFFLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVE7WUFBRSxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxRQUFRO1lBQUUsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsU0FBUyxrQkFBa0IsQ0FBQyxLQUFVO1FBQ2xDLElBQUksQ0FBQyxHQUFHLGNBQWMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsT0FBTyxD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RCxDQUFDO0lBRUQsU0FBUyxhQUFhLENBQUMsSUFBWSxFQUFFLEtBQVU7UUFDM0MsSUFBSSxJQUFJLEtBQUssUUFBUTtZQUFFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3ZDLElBQUksSUFBSSxLQUFLLFNBQVM7WUFBRSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM5QyxJQUFJLElBQUksS0FBSyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDeEMsSUFBSSxJQUFJLEtBQUssUUFBUTtZQUFFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDTCxDQUFDO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywyRUFBMkUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgc3RyaW5nLCBudW1iZXIsIGRhdGUsIGJvb2xlYW4gfSBmcm9tICcuL3R5cGUtY29udmVydGVyJztcbmltcG9ydCB7IFF1ZXJ5RW5naW5lLCBDb252ZXJ0ZXJPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUXVlcnlDb252ZXJ0ZXIocGFyYW1Db252ZXJ0ZXI6IChwYXJhbTogYW55KSA9PiBzdHJpbmcsIG9wdGlvbnM6IENvbnZlcnRlck9wdGlvbnMsIGVuZ2luZTogUXVlcnlFbmdpbmUpIHtcblxuICAgIHJldHVybiBjb252ZXJ0UXVlcnk7XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0UXVlcnkocXVlcnk6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmIChxdWVyeS5fYWN0aW9uID09PSAnc2VsZWN0JykgcmV0dXJuIGNvbnZlcnRTZWxlY3RRdWVyeShxdWVyeSk7XG4gICAgICAgIGlmIChxdWVyeS5fYWN0aW9uID09PSAnZGVsZXRlJykgcmV0dXJuIGNvbnZlcnREZWxldGVRdWVyeShxdWVyeSk7XG4gICAgICAgIGlmIChxdWVyeS5fYWN0aW9uID09PSAndXBkYXRlJykgcmV0dXJuIGNvbnZlcnRVcGRhdGVRdWVyeShxdWVyeSk7XG4gICAgICAgIGlmIChxdWVyeS5fYWN0aW9uID09PSAnaW5zZXJ0JykgcmV0dXJuIGNvbnZlcnRJbnNlcnRRdWVyeShxdWVyeSk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBxdWVyeSB0eXBlOicgKyBxdWVyeS5fYWN0aW9uKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0RGVsZXRlUXVlcnkocXVlcnk6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGxldCBzID0gJ0RFTEVURSBGUk9NICcgKyBjb252ZXJ0VGFibGUocXVlcnkuX3RhYmxlKTtcbiAgICAgICAgcyArPSBjb252ZXJ0Q29uZGl0aW9ucyhxdWVyeS5fY29uZGl0aW9ucyk7XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbnZlcnRVcGRhdGVRdWVyeShxdWVyeTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHMgPSAnVVBEQVRFICcgKyBjb252ZXJ0VGFibGUocXVlcnkuX3RhYmxlKSArICcgU0VUICc7XG4gICAgICAgIHMgKz0gY29udmVydFVwZGF0ZVNldHRlcnMocXVlcnkuX3RhYmxlLCBxdWVyeS5fZW50aXR5KTtcbiAgICAgICAgcyArPSBjb252ZXJ0Q29uZGl0aW9ucyhxdWVyeS5fY29uZGl0aW9ucyk7XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbnZlcnRVcGRhdGVTZXR0ZXJzKHRhYmxlOiBhbnksIGVudGl0eTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGVudGl0eSkuc29ydCgpLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gZW50aXR5W2tleV07XG4gICAgICAgICAgICBsZXQgY29sdW1uID0gdGFibGVba2V5XTtcbiAgICAgICAgICAgIHJldHVybiBjb252ZXJ0Q29sdW1uTmFtZShjb2x1bW4pICsgJyA9ICcgKyBjb252ZXJ0UGFyYW0oY29sdW1uLCB2YWx1ZSk7XG4gICAgICAgIH0pLmpvaW4oJywgJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29udmVydEluc2VydFF1ZXJ5KHF1ZXJ5OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBsZXQgaXRlbXM6IGFueVtdID0gQXJyYXkuaXNBcnJheShxdWVyeS5fZW50aXR5KSA/IHF1ZXJ5Ll9lbnRpdHkgOiBbcXVlcnkuX2VudGl0eV07XG4gICAgICAgIGxldCBrZXlTZXQ6IFNldDxzdHJpbmc+ID0gaXRlbXMucmVkdWNlKChzZXQ6IFNldDxzdHJpbmc+LCBpdGVtKSA9PiB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhpdGVtKS5mb3JFYWNoKGtleSA9PiBzZXQuYWRkKGtleSkpOyByZXR1cm4gc2V0O1xuICAgICAgICB9LCBuZXcgU2V0PHN0cmluZz4oKSk7XG4gICAgICAgIGxldCBrZXlzID0gQXJyYXkuZnJvbShrZXlTZXQpLnNvcnQoKTtcblxuICAgICAgICBsZXQgcyA9ICdJTlNFUlQgSU5UTyAnICsgY29udmVydFRhYmxlKHF1ZXJ5Ll90YWJsZSkgKyAnICc7XG4gICAgICAgIHMgKz0gJygnICsga2V5cy5tYXAoa2V5ID0+IGNvbnZlcnRDb2x1bW5OYW1lKHF1ZXJ5Ll90YWJsZVtrZXldKSkuam9pbignLCAnKSArICcpJztcbiAgICAgICAgcyArPSBvcHRpb25zLmxpbmVCcmVhayArICdWQUxVRVMgJztcbiAgICAgICAgcyArPSBpdGVtcy5tYXAoaXRlbSA9PiBjb252ZXJ0SW5zZXJ0SXRlbShxdWVyeS5fdGFibGUsIGl0ZW0sIGtleXMpKVxuICAgICAgICAgICAgLm1hcCgocm93OiBzdHJpbmcpID0+ICcoJyArIHJvdyArICcpJykuam9pbignLCAnKTtcblxuICAgICAgICBzICs9IGdldFBnSW5zZXJ0UmV0dXJuaW5nSWZOZWVkZWQocXVlcnkpO1xuICAgICAgICByZXR1cm4gcztcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGdldFBnSW5zZXJ0UmV0dXJuaW5nSWZOZWVkZWQocXVlcnk6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmIChlbmdpbmUgPT09ICdwZycgJiYgcXVlcnkuX2FjdGlvbiA9PT0gJ2luc2VydCcgJiYgIUFycmF5LmlzQXJyYXkocXVlcnkuX2VudGl0eSkgJiZcbiAgICAgICAgICAgIHF1ZXJ5Ll90YWJsZS4kaWQgJiYgcXVlcnkuX3RhYmxlLiRpZC5fdGFibGUgJiYgcXVlcnkuX3RhYmxlLiRpZC5fbmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgUkVUVVJOSU5HICcgKyBjb252ZXJ0Q29sdW1uTmFtZShxdWVyeS5fdGFibGUuJGlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29udmVydEluc2VydEl0ZW0odGFibGU6IGFueSwgZW50aXR5OiBhbnksIGtleXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGtleXMubWFwKGtleSA9PiB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBlbnRpdHlba2V5XTtcbiAgICAgICAgICAgIGxldCBjb2x1bW4gPSB0YWJsZVtrZXldO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRQYXJhbShjb2x1bW4sIHZhbHVlKTtcbiAgICAgICAgfSkuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0U2VsZWN0UXVlcnkocXVlcnk6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGxldCBzID0gJ1NFTEVDVCAnO1xuICAgICAgICBpZiAocXVlcnkuX2Rpc3RpbmN0KSB7XG4gICAgICAgICAgICBzICs9ICdESVNUSU5DVCAnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHF1ZXJ5Ll9jb2x1bW5zID09IG51bGwgfHwgcXVlcnkuX2NvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzICs9ICcqJ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcyArPSBxdWVyeS5fY29sdW1ucy5tYXAoKGNvbHVtbjogYW55KSA9PiBjb252ZXJ0Q29sdW1uKGNvbHVtbikpLmpvaW4oJywgJyk7XG4gICAgICAgIH1cblxuICAgICAgICBzICs9IG9wdGlvbnMubGluZUJyZWFrICsgJ0ZST00gJztcbiAgICAgICAgaWYgKHF1ZXJ5Ll90YWJsZXMpIHtcbiAgICAgICAgICAgIHMrPSBxdWVyeS5fdGFibGVzLm1hcCgodGFibGU6IGFueSkgPT4gdGFibGUuX3BhcmVudCA/IGNvbnZlcnRKb2luKHRhYmxlKSA6IGNvbnZlcnRUYWJsZSh0YWJsZSkpLmpvaW4oJywgJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzKz0gY29udmVydFRhYmxlKHF1ZXJ5Ll90YWJsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBzICs9IGNvbnZlcnRDb25kaXRpb25zKHF1ZXJ5Ll9jb25kaXRpb25zKTtcblxuICAgICAgICBpZiAocXVlcnkuX2dyb3VwQnkgJiYgcXVlcnkuX2dyb3VwQnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcyArPSBvcHRpb25zLmxpbmVCcmVhayArICdHUk9VUCBCWSAnO1xuICAgICAgICAgICAgcyArPSBxdWVyeS5fZ3JvdXBCeS5tYXAoKGNvbHVtbjogYW55KSA9PiBjb252ZXJ0Q29sdW1uKGNvbHVtbikpLmpvaW4oJywgJyk7XG4gICAgICAgIH1cbiAgICAgICAgcyArPSBjb252ZXJ0Q29uZGl0aW9ucyhxdWVyeS5faGF2aW5nLCAnSEFWSU5HJyk7XG5cbiAgICAgICAgaWYgKHF1ZXJ5Ll9vcmRlcmluZ3MgJiYgcXVlcnkuX29yZGVyaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzICs9IG9wdGlvbnMubGluZUJyZWFrICsgJ09SREVSIEJZICc7XG4gICAgICAgICAgICBzICs9IHF1ZXJ5Ll9vcmRlcmluZ3MubWFwKChvcmRlcmluZzogYW55KSA9PiBjb252ZXJ0T3JkZXJpbmcob3JkZXJpbmcpKS5qb2luKCcsICcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChxdWVyeS5fbGltaXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgcyArPSBvcHRpb25zLmxpbmVCcmVhayArICdMSU1JVCAnICsgbnVtYmVyKHF1ZXJ5Ll9saW1pdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHF1ZXJ5Ll9vZmZzZXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgcyArPSBvcHRpb25zLmxpbmVCcmVhayArICdPRkZTRVQgJyArIG51bWJlcihxdWVyeS5fb2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0Q29uZGl0aW9ucyhjb25kaXRpb25zOiBhbnlbXSwga2V5d29yZCA9ICdXSEVSRScpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcyA9ICcnO1xuICAgICAgICBpZiAoY29uZGl0aW9ucyAmJiBjb25kaXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHMgKz0gb3B0aW9ucy5saW5lQnJlYWsgKyBrZXl3b3JkICsgJyAnO1xuICAgICAgICAgICAgcHJlcHJvY2Vzc0NvbmRpdGlvbnMoY29uZGl0aW9ucyk7XG4gICAgICAgICAgICBzICs9IGNvbmRpdGlvbnMubWFwKGNvbmRpdGlvbiA9PiBjb252ZXJ0Q29uZGl0aW9uKGNvbmRpdGlvbiwgdHJ1ZSkpLmpvaW4oJyBBTkQgJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29udmVydEpvaW4oam9pbkNoYWluOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBsZXQgaXRlbXM6IGFueVtdID0gW107XG4gICAgICAgIHdoaWxlIChqb2luQ2hhaW4pIHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goam9pbkNoYWluKTtcbiAgICAgICAgICAgIGpvaW5DaGFpbiA9IGpvaW5DaGFpbi5fcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJvb3QgPSBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgbGV0IHMgPSBjb252ZXJ0VGFibGUocm9vdCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGl0ZW1zLmxlbmd0aCAtIDI7IGkgPj0gMDsgaS09IDIpIHtcbiAgICAgICAgICAgIGxldCB0YWJsZSA9IGl0ZW1zW2ldLl90YWJsZTtcbiAgICAgICAgICAgIGxldCBtb2RpZmllciA9IGl0ZW1zW2ldLl9tb2RpZmllcjtcbiAgICAgICAgICAgIGxldCBjb25kaXRpb24gPSBpdGVtc1tpIC0gMV0uX2NvbmRpdGlvbjtcbiAgICAgICAgICAgIGxldCBwYXJhbSA9IGNvbnZlcnRDb2x1bW4oY29uZGl0aW9uLl9vdGhlckNvbHVtbik7XG4gICAgICAgICAgICBzICs9ICcgJyArIG1vZGlmaWVyLnRvVXBwZXJDYXNlKCkgKyAnIEpPSU4gJyArIGNvbnZlcnRUYWJsZSh0YWJsZSkgKyAnIE9OICcgK1xuICAgICAgICAgICAgICAgIGNvbnZlcnRDb2x1bW5Db25kaXRpb24oY29uZGl0aW9uLCBwYXJhbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0T3JkZXJpbmcob3JkZXJpbmc6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmIChvcmRlcmluZy5fY29sdW1uKSB7XG4gICAgICAgICAgICBsZXQgcyA9IGNvbnZlcnRDb2x1bW4ob3JkZXJpbmcuX2NvbHVtbik7XG5cbiAgICAgICAgICAgIGlmIChvcmRlcmluZy5fbnVsbHNQb3NpdGlvbiAhPSBudWxsKSB7IC8vIFwiTlVMTFMgRklSU1RcIiBvbmx5IGV4aXN0cyBpbiBQRywgdGhpcyBpcyB0aGUgZ2VuZXJhbCBzb2x1dGlvblxuICAgICAgICAgICAgICAgIHMgKz0gJyBJUyBOVUxMICcgKyAob3JkZXJpbmcuX251bGxzUG9zaXRpb24gPT09ICdGSVJTVCcgPyAnREVTQycgOiAnQVNDJykgKyAnLCAnICsgcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9yZGVyaW5nLl9kaXJlY3Rpb24gPT09ICdBU0MnKSBzICs9ICcgQVNDJztcbiAgICAgICAgICAgIGlmIChvcmRlcmluZy5fZGlyZWN0aW9uID09PSAnREVTQycpIHMgKz0gJyBERVNDJztcblxuICAgICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY29udmVydENvbHVtbihvcmRlcmluZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0VGFibGUodGFibGU6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLm5hbWVFc2NhcGUgKyB0YWJsZS5fJG5hbWUgKyBvcHRpb25zLm5hbWVFc2NhcGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29udmVydENvbHVtbihjb2x1bW46IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGxldCBzID0gJyc7XG4gICAgICAgIGlmICghKGNvbHVtbi5fbmFtZSA9PT0gJyonICYmIGNvbHVtbi5fbW9kaWZpZXJzLmxlbmd0aCA+IDAgJiYgY29sdW1uLl9tb2RpZmllcnNbMF0ubmFtZSA9PT0gJ2NvdW50JykpIHtcbiAgICAgICAgICAgIHMgKz0gY29udmVydFRhYmxlKGNvbHVtbi5fdGFibGUpICsgJy4nO1xuICAgICAgICB9XG4gICAgICAgIHMgKz0gY29udmVydENvbHVtbk5hbWUoY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRDb2x1bW5Nb2RpZmllcnMocywgY29sdW1uKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0Q29sdW1uTW9kaWZpZXJzKHM6IHN0cmluZywgY29sdW1uOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoY29sdW1uLl9tb2RpZmllcnMpIHtcbiAgICAgICAgICAgIGNvbHVtbi5fbW9kaWZpZXJzLmZvckVhY2goKG1vZGlmaWVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IG1vZGlmaWVyLm5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdsb3dlcicpIHMgPSAnTE9XRVIoJyArIHMgKyAnKSc7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PT0gJ3VwcGVyJykgcyA9ICdVUFBFUignICsgcyArICcpJztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09PSAnY291bnQnKSBzID0gJ0NPVU5UKCcgKyBzICsgJyknO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT09ICdzdW0nKSBzID0gJ1NVTSgnICsgcyArICcpJztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09PSAnYXZnJykgcyA9ICdBVkcoJyArIHMgKyAnKSc7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PT0gJ21pbicpIHMgPSAnTUlOKCcgKyBzICsgJyknO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT09ICdtYXgnKSBzID0gJ01BWCgnICsgcyArICcpJztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09PSAnYXMnKSBzID0gcyArICcgQVMgJyArIG9wdGlvbnMubmFtZUVzY2FwZSArIG1vZGlmaWVyLnBhcmFtcyArIG9wdGlvbnMubmFtZUVzY2FwZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzICsgJyc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29udmVydENvbHVtbk5hbWUoY29sdW1uOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoY29sdW1uLl9uYW1lID09PSAnKicpIHJldHVybiBjb2x1bW4uX25hbWU7XG4gICAgICAgIGxldCBuYW1lID0gdHlwZW9mIGNvbHVtbi5fbmFtZSA9PT0gJ3N0cmluZycgPyBjb2x1bW4uX25hbWUgOiBjb2x1bW4uX25hbWUubmFtZTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMubmFtZUVzY2FwZSArIG5hbWUgKyBvcHRpb25zLm5hbWVFc2NhcGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJlcHJvY2Vzc0NvbmRpdGlvbnMoY29uZGl0aW9uczogYW55W10pOiB2b2lkIHtcbiAgICAgICAgY29uZGl0aW9ucy5mb3JFYWNoKGNvbmRpdGlvbiA9PiB7XG4gICAgICAgICAgICBpZiAoY29uZGl0aW9ucy5sZW5ndGggPiAxICYmIGNvbmRpdGlvbi5fc2libGluZykge1xuICAgICAgICAgICAgICAgIGNvbmRpdGlvbi5fcGFyZW50aGVzaXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJlcHJvY2Vzc1BhcmFtcyhjb25kaXRpb24pO1xuICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIHByZXByb2Nlc3NQYXJhbXMoY29uZGl0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNvbmRpdGlvbi5fc2libGluZykge1xuICAgICAgICAgICAgcHJlcHJvY2Vzc1BhcmFtcyhjb25kaXRpb24uX3NpYmxpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY29uZGl0aW9uLl9zaWJsaW5nICYmICFjb25kaXRpb24uX2NoaWxkKSB7XG4gICAgICAgICAgICBjb25kaXRpb24uX19wYXJhbSA9IGdldENvbmRpdGlvblBhcmFtKGNvbmRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmRpdGlvbi5fY2hpbGQpIHtcbiAgICAgICAgICAgIHByZXByb2Nlc3NQYXJhbXMoY29uZGl0aW9uLl9jaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0Q29uZGl0aW9uKGNvbmRpdGlvbjogYW55LCByb290ID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWNvbmRpdGlvbi5fc2libGluZyAmJiAhY29uZGl0aW9uLl9jaGlsZCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRDb2x1bW5Db25kaXRpb24oY29uZGl0aW9uLCBjb25kaXRpb24uX19wYXJhbSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcyA9ICcnO1xuICAgICAgICBpZiAoY29uZGl0aW9uLl9jaGlsZCkge1xuICAgICAgICAgICAgcyArPSBjb252ZXJ0Q29uZGl0aW9uKGNvbmRpdGlvbi5fY2hpbGQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25kaXRpb24uX3NpYmxpbmcpIHtcbiAgICAgICAgICAgIHMgPSBjb252ZXJ0Q29uZGl0aW9uKGNvbmRpdGlvbi5fc2libGluZywgcm9vdCkgKyAnICcgKyBjb25kaXRpb24uX2NoYWluVHlwZS50b1VwcGVyQ2FzZSgpICsgJyAnICsgcztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZGl0aW9uLl9wYXJlbnRoZXNpcyB8fCAoKCFyb290IHx8IGNvbmRpdGlvbi5fbmVnYXRpb24pICYmIGNvbmRpdGlvbi5fY2hpbGQpKSB7XG4gICAgICAgICAgICBzID0gJyggJyArIHMgKyAnICknO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25kaXRpb24uX25lZ2F0aW9uKSB7XG4gICAgICAgICAgICBzID0gJ05PVCAnICsgcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0Q29sdW1uQ29uZGl0aW9uKGNvbmRpdGlvbjogYW55LCBwYXJhbTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHMgPSBjb252ZXJ0Q29sdW1uKGNvbmRpdGlvbi5fY29sdW1uKTtcbiAgICAgICAgcyArPSBnZXRDb25kaXRpb25TdHJpbmcoY29uZGl0aW9uLCBwYXJhbSk7XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENvbmRpdGlvblN0cmluZyhjb25kaXRpb246IGFueSwgcGFyYW06IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAoY29uZGl0aW9uLl90eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdlcSc6IHJldHVybiAnID0gJyArIHBhcmFtO1xuICAgICAgICAgICAgY2FzZSAnbmUnOiByZXR1cm4gJyA8PiAnICsgcGFyYW07XG4gICAgICAgICAgICBjYXNlICdsdCc6IHJldHVybiAnIDwgJyArIHBhcmFtO1xuICAgICAgICAgICAgY2FzZSAnZ3QnOiByZXR1cm4gJyA+ICcgKyBwYXJhbTtcbiAgICAgICAgICAgIGNhc2UgJ2x0ZSc6IHJldHVybiAnIDw9ICcgKyBwYXJhbTtcbiAgICAgICAgICAgIGNhc2UgJ2d0ZSc6IHJldHVybiAnID49ICcgKyBwYXJhbTtcbiAgICAgICAgICAgIGNhc2UgJ2lzLW51bGwnOiByZXR1cm4gJyBJUyBOVUxMJztcbiAgICAgICAgICAgIGNhc2UgJ2lzLW5vdC1udWxsJzogcmV0dXJuICcgSVMgTk9UIE5VTEwnO1xuICAgICAgICAgICAgY2FzZSAnbGlrZSc6IHJldHVybiAnIExJS0UgJyArIHBhcmFtO1xuICAgICAgICAgICAgY2FzZSAnbm90LWxpa2UnOiByZXR1cm4gJyBOT1QgTElLRSAnICsgcGFyYW07XG4gICAgICAgICAgICBjYXNlICdpbic6IHJldHVybiAnIElOICgnICsgcGFyYW0gKyAnKSc7XG4gICAgICAgICAgICBjYXNlICdub3QtaW4nOiByZXR1cm4gJyBOT1QgSU4gKCcgKyBwYXJhbSArICcpJztcbiAgICAgICAgICAgIGNhc2UgJ2JldHdlZW4nOiByZXR1cm4gJyBCRVRXRUVOICcgKyBwYXJhbTtcbiAgICAgICAgICAgIGNhc2UgJ25vdC1iZXR3ZWVuJzogcmV0dXJuICcgTk9UIEJFVFdFRU4gJyArIHBhcmFtO1xuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q29uZGl0aW9uUGFyYW0oY29uZGl0aW9uOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcGFyYW0gPSAnJztcbiAgICAgICAgaWYgKGNvbmRpdGlvbi5fb3RoZXJDb2x1bW4pIHtcbiAgICAgICAgICAgIHBhcmFtID0gY29udmVydENvbHVtbihjb25kaXRpb24uX290aGVyQ29sdW1uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBfY29udmVydFBhcmFtID0gKHBhcmFtOiBhbnkpID0+IGNvbnZlcnRQYXJhbShjb25kaXRpb24uX2NvbHVtbiwgcGFyYW0pO1xuXG4gICAgICAgICAgICBpZiAoY29uZGl0aW9uLl90eXBlID09PSAnaW4nIHx8IGNvbmRpdGlvbi5fdHlwZSA9PT0gJ25vdC1pbicpIHtcbiAgICAgICAgICAgICAgICBwYXJhbSA9IGNvbmRpdGlvbi5fdmFsdWVzLm1hcCgodmFsdWU6IGFueSkgPT4gX2NvbnZlcnRQYXJhbSh2YWx1ZSkpLmpvaW4oJywgJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmRpdGlvbi5fdHlwZSA9PT0gJ2JldHdlZW4nIHx8IGNvbmRpdGlvbi5fdHlwZSA9PT0gJ25vdC1iZXR3ZWVuJykge1xuICAgICAgICAgICAgICAgIHBhcmFtID0gX2NvbnZlcnRQYXJhbShjb25kaXRpb24uX3ZhbHVlc1swXSkgKyAnIEFORCAnICsgX2NvbnZlcnRQYXJhbShjb25kaXRpb24uX3ZhbHVlc1sxXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmRpdGlvbi5fdHlwZSAhPT0gJ2lzLW51bGwnICYmIGNvbmRpdGlvbi5fdHlwZSAhPT0gJ2lzLW5vdC1udWxsJykge1xuICAgICAgICAgICAgICAgIHBhcmFtID0gX2NvbnZlcnRQYXJhbShjb25kaXRpb24uX3ZhbHVlc1swXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcmFtO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbnZlcnRQYXJhbShjb2x1bW46IGFueSwgcGFyYW06IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmIChwYXJhbSA9PSBudWxsKSByZXR1cm4gJ05VTEwnO1xuICAgICAgICByZXR1cm4gcGFyYW1Db252ZXJ0ZXIoZ2V0VHlwZWRQYXJhbShjb2x1bW4uX3R5cGUsIHBhcmFtKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0VHlwZWRQYXJhbSh0eXBlOiBzdHJpbmcsIHBhcmFtOiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAodHlwZSA9PT0gJ251bWJlcicpIHJldHVybiBudW1iZXIocGFyYW0pO1xuICAgICAgICBlbHNlIGlmICh0eXBlID09PSAnYm9vbGVhbicpIHJldHVybiBib29sZWFuKHBhcmFtKTtcbiAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGUnKSByZXR1cm4gZGF0ZShwYXJhbSk7XG4gICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSByZXR1cm4gc3RyaW5nKHBhcmFtKTtcbiAgICAgICAgcmV0dXJuIHBhcmFtO1xuICAgIH1cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tdHlwZS1zcWwgbGliL2NvbnZlcnRlci9xdWVyeS1jb252ZXJ0ZXIudHMiXX0=