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,45 +0,0 @@
1
- import { Log } from 'ng2-logger/websql';
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24tdHlwZS1zcWwvcHJvamVjdHMvdGFvbi10eXBlLXNxbC9zcmMvbGliL2NsaWVudC9xdWVyeS1wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEdBQUcsRUFBUyxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBTS9ELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBRXZDLENBQUE7QUFVRCxNQUFNLGVBQWUsR0FBMEI7SUFDN0MsVUFBVSxFQUFFLEtBQUs7SUFDakIsYUFBYSxFQUFFLElBQUk7SUFDbkIsT0FBTyxFQUFFLElBQUk7SUFDYixlQUFlLEVBQUUsR0FBRztDQUNyQixDQUFDO0FBRUYsU0FBUyxhQUFhLENBQUMsS0FBVSxFQUFFLElBQVM7SUFDMUMsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVTtRQUN6RCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsSUFBSSxLQUFLLElBQUksR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzlCLElBQUksS0FBSyxJQUFJLEdBQUc7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7UUFDaEMsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNCLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxPQUFPLElBQUksRUFBRSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsTUFBVyxFQUFFLFdBQWtDLEVBQUUsRUFBRSxTQUFzQixJQUFJO0lBRWhILElBQUksT0FBTyxHQUEwQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFbEYsSUFBSSxZQUFZLEdBQXFCO1FBQ25DLFNBQVMsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUc7UUFDMUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxlQUFlLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztLQUN6RSxDQUFDO0lBMEJGLE9BQU8sQ0FBQyxLQUFVLEVBQUUsRUFBRTtRQUNwQixJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQixJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLDhCQUE4QixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFbEYsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUduQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksR0FBRyxHQUFHLGlCQUFpQixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFekQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUd0QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUdBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0VBQXdFIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL3dlYnNxbCc7XG5pbXBvcnQgeyBjb252ZXJ0UXVlcnlUb1BhcmFtZXRlcml6ZWRTUUwgfSBmcm9tICcuLi9jb252ZXJ0ZXIvcGFyYW1ldGVyaXplZC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgY29udmVydFF1ZXJ5VG9TUUwgfSBmcm9tICcuLi9jb252ZXJ0ZXIvc3FsLWNvbnZlcnRlcic7XG5pbXBvcnQgeyBjb252ZXJ0UmVzdWx0IH0gZnJvbSBcIi4uL2NvbnZlcnRlci9yZXN1bHQtY29udmVydGVyXCI7XG5pbXBvcnQgeyBRdWVyeUVuZ2luZSwgQ29udmVydGVyT3B0aW9ucyB9IGZyb20gJy4uL2NvbnZlcnRlci90eXBlcyc7XG5pbXBvcnQgeyBRdWVyeVByb2Nlc3NvciB9IGZyb20gJy4uL2J1aWxkZXIvaGVscGVycy9pbnRlcm5hbC10eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcblxuY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgncXVlcnkgcHJvY2Vzc29yJyxcblxuKVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5UHJvY2Vzc29yT3B0aW9ucyB7XG4gIGxpbmVCcmVha3M/OiBib29sZWFuLFxuICBwYXJhbWV0ZXJpemVkPzogYm9vbGVhbixcbiAgbG9nZ2luZz86IGJvb2xlYW4sXG4gIGxvZ2dlcj86IChzcWw6IHN0cmluZywgcGFyYW1zPzogYW55W10pID0+IHZvaWQsXG4gIGlkZW50aWZpZXJRdW90ZT86IHN0cmluZ1xufVxuXG5jb25zdCBERUZBVUxUX09QVElPTlM6IFF1ZXJ5UHJvY2Vzc29yT3B0aW9ucyA9IHtcbiAgbGluZUJyZWFrczogZmFsc2UsXG4gIHBhcmFtZXRlcml6ZWQ6IHRydWUsXG4gIGxvZ2dpbmc6IHRydWUsXG4gIGlkZW50aWZpZXJRdW90ZTogJ1wiJ1xufTtcblxuZnVuY3Rpb24gbXlTcWxUeXBlQ2FzdChmaWVsZDogYW55LCBuZXh0OiBhbnkpIHtcbiAgaWYgKGZpZWxkLnR5cGUgPT0gJ1RJTlknICYmIGZpZWxkLmxlbmd0aCA9PSAxKSB7IC8vIEJvb2xlYW5cbiAgICBsZXQgdmFsdWUgPSBmaWVsZC5zdHJpbmcoKTtcbiAgICBpZiAodmFsdWUgPT0gJzEnKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAodmFsdWUgPT0gJzAnKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PSAnSlNPTicpIHtcbiAgICBsZXQgdmFsdWUgPSBmaWVsZC5zdHJpbmcoKTtcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/IG51bGwgOiBKU09OLnBhcnNlKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gbmV4dCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUXVlcnlQcm9jZXNzb3IoY2xpZW50OiBhbnksIF9vcHRpb25zOiBRdWVyeVByb2Nlc3Nvck9wdGlvbnMgPSB7fSwgZW5naW5lOiBRdWVyeUVuZ2luZSA9ICdwZycpOiBRdWVyeVByb2Nlc3NvciB7XG5cbiAgbGV0IG9wdGlvbnM6IFF1ZXJ5UHJvY2Vzc29yT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgX29wdGlvbnMpO1xuXG4gIGxldCBxdWVyeU9wdGlvbnM6IENvbnZlcnRlck9wdGlvbnMgPSB7XG4gICAgbGluZUJyZWFrOiBvcHRpb25zLmxpbmVCcmVha3MgPyAnXFxuJyA6ICcgJyxcbiAgICBuYW1lRXNjYXBlOiBfb3B0aW9ucy5pZGVudGlmaWVyUXVvdGUgfHwgKGVuZ2luZSA9PT0gJ215c3FsJyA/ICdgJyA6ICdcIicpXG4gIH07XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAgcmV0dXJuIChxdWVyeTogYW55KSA9PiB7XG4gICAgaWYgKG9wdGlvbnMucGFyYW1ldGVyaXplZCkge1xuICAgICAgbGV0IHsgc3FsLCBwYXJhbXMgfSA9IGNvbnZlcnRRdWVyeVRvUGFyYW1ldGVyaXplZFNRTChxdWVyeSwgcXVlcnlPcHRpb25zLCBlbmdpbmUpO1xuXG4gICAgICByZXR1cm4gY2xpZW50LnF1ZXJ5KHNxbCwgcGFyYW1zKTtcblxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBzcWwgPSBjb252ZXJ0UXVlcnlUb1NRTChxdWVyeSwgcXVlcnlPcHRpb25zLCBlbmdpbmUpO1xuXG4gICAgICByZXR1cm4gY2xpZW50LnF1ZXJ5KHNxbCwgdW5kZWZpbmVkKTtcblxuXG4gICAgfVxuICB9O1xufVxuXG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uLXR5cGUtc3FsIGxpYi9jbGllbnQvcXVlcnktcHJvY2Vzc29yLnRzIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24tdHlwZS1zcWwvcHJvamVjdHMvdGFvbi10eXBlLXNxbC9zcmMvbGliL2NvbnZlcnRlci9wYXJhbS1jb252ZXJ0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQVU7SUFDL0MsSUFBSSxLQUFLLElBQUksSUFBSTtRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQ2pDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUUsQ0FBQztRQUN2RCxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDaEMsQ0FBQztTQUFNLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssWUFBWSxPQUFPLEVBQUUsQ0FBQztRQUNoRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QyxDQUFDO1NBQU0sSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDL0IsT0FBTyxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDO0lBQ3RDLENBQUM7U0FBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLFlBQVksTUFBTSxFQUFFLENBQUM7UUFDOUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7QUFDeEMsQ0FBQztBQUlELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFVO0lBQzFDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssWUFBWSxNQUFNLElBQUksS0FBSyxZQUFZLE1BQU07UUFDbEcsS0FBSyxZQUFZLE9BQU8sSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDJFQUEyRSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0U3Vic3RpdHV0aW9uUGFyYW0ocGFyYW06IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHBhcmFtID09IG51bGwpIHJldHVybiAnTlVMTCc7XG4gICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ3N0cmluZycgfHwgcGFyYW0gaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGAnJHtTdHJpbmcocGFyYW0pfSdgO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtID09PSAnYm9vbGVhbicgfHwgcGFyYW0gaW5zdGFuY2VvZiBCb29sZWFuKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcocGFyYW0pLnRvVXBwZXJDYXNlKCk7XG4gICAgfSBlbHNlIGlmIChwYXJhbSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuIGAnJHtwYXJhbS50b0lTT1N0cmluZygpfSdgO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtID09PSAnbnVtYmVyJyB8fCBwYXJhbSBpbnN0YW5jZW9mIE51bWJlcikge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHBhcmFtKTtcbiAgICB9XG4gICAgcmV0dXJuIGAnJHtKU09OLnN0cmluZ2lmeShwYXJhbSl9J2A7XG59XG5cblxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydEVzY2FwZWRQYXJhbShwYXJhbTogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ29iamVjdCcgJiYgIShwYXJhbSA9PSBudWxsIHx8IHBhcmFtIGluc3RhbmNlb2YgU3RyaW5nIHx8IHBhcmFtIGluc3RhbmNlb2YgTnVtYmVyIHx8XG4gICAgICAgIHBhcmFtIGluc3RhbmNlb2YgQm9vbGVhbiB8fCBwYXJhbSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShwYXJhbSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJhbTtcbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tdHlwZS1zcWwgbGliL2NvbnZlcnRlci9wYXJhbS1jb252ZXJ0ZXIudHMiXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyaXplZC1jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdGFvbi10eXBlLXNxbC9wcm9qZWN0cy90YW9uLXR5cGUtc3FsL3NyYy9saWIvY29udmVydGVyL3BhcmFtZXRlcml6ZWQtY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBR3RELElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDdEQsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDO0FBRWpELFNBQVMsa0JBQWtCLENBQUMsS0FBVSxFQUFFLE1BQWEsRUFBRSxjQUFzQztJQUN6RixNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEMsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUsOEJBQThCLENBQUMsS0FBVSxFQUFFLE9BQXlCLEVBQUUsTUFBbUI7SUFDckcsSUFBSSxNQUFNLEdBQVUsRUFBRSxDQUFDO0lBRXZCLElBQUksY0FBYyxHQUFHLE1BQU0sS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqRixJQUFJLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFMUgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUMzQixDQUFDO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxtRkFBbUYiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHtjcmVhdGVRdWVyeUNvbnZlcnRlcn0gZnJvbSBcIi4vcXVlcnktY29udmVydGVyXCI7XG5pbXBvcnQge2NvbnZlcnRFc2NhcGVkUGFyYW19IGZyb20gJy4vcGFyYW0tY29udmVydGVyJztcbmltcG9ydCB7UXVlcnlFbmdpbmUsIENvbnZlcnRlck9wdGlvbnN9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmxldCBwZ1BhcmFtQ29udmVydGVyID0gKGluZGV4OiBudW1iZXIpID0+ICckJyArIGluZGV4O1xubGV0IG15U3FsUGFyYW1Db252ZXJ0ZXIgPSAoaW5kZXg6IG51bWJlcikgPT4gJz8nO1xuXG5mdW5jdGlvbiBjb252ZXJ0U2luZ2xlUGFyYW0ocGFyYW06IGFueSwgcGFyYW1zOiBhbnlbXSwgcGFyYW1Db252ZXJ0ZXI6IChwYXJhbTogYW55KSA9PiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHBhcmFtcy5wdXNoKGNvbnZlcnRFc2NhcGVkUGFyYW0ocGFyYW0pKTtcbiAgICByZXR1cm4gcGFyYW1Db252ZXJ0ZXIocGFyYW1zLmxlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0UXVlcnlUb1BhcmFtZXRlcml6ZWRTUUwocXVlcnk6IGFueSwgb3B0aW9uczogQ29udmVydGVyT3B0aW9ucywgZW5naW5lOiBRdWVyeUVuZ2luZSkge1xuICAgIGxldCBwYXJhbXM6IGFueVtdID0gW107XG5cbiAgICBsZXQgcGFyYW1Db252ZXJ0ZXIgPSBlbmdpbmUgPT09ICdteXNxbCcgPyBteVNxbFBhcmFtQ29udmVydGVyIDogcGdQYXJhbUNvbnZlcnRlcjtcbiAgICBsZXQgc3FsID0gY3JlYXRlUXVlcnlDb252ZXJ0ZXIoKHBhcmFtOiBhbnkpID0+IGNvbnZlcnRTaW5nbGVQYXJhbShwYXJhbSwgcGFyYW1zLCBwYXJhbUNvbnZlcnRlciksIG9wdGlvbnMsIGVuZ2luZSkocXVlcnkpO1xuXG4gICAgcmV0dXJuIHsgc3FsLCBwYXJhbXMgfTtcbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tdHlwZS1zcWwgbGliL2NvbnZlcnRlci9wYXJhbWV0ZXJpemVkLWNvbnZlcnRlci50cyJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24tdHlwZS1zcWwvcHJvamVjdHMvdGFvbi10eXBlLXNxbC9zcmMvbGliL2NvbnZlcnRlci9xdWVyeS1jb252ZXJ0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSWpFLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxjQUFzQyxFQUFFLE9BQXlCLEVBQUUsTUFBbUI7SUFFdkgsT0FBTyxZQUFZLENBQUM7SUFFcEIsU0FBUyxZQUFZLENBQUMsS0FBVTtRQUM1QixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUTtZQUFFLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVE7WUFBRSxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxRQUFRO1lBQUUsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUTtZQUFFLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFNBQVMsa0JBQWtCLENBQUMsS0FBVTtRQUNsQyxJQUFJLENBQUMsR0FBRyxjQUFjLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxDQUFDLElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFD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QUM7SUFDOUQsQ0FBQztJQUVELFNBQVMsYUFBYSxDQUFDLElBQVksRUFBRSxLQUFVO1FBQzNDLElBQUksSUFBSSxLQUFLLFFBQVE7WUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN2QyxJQUFJLElBQUksS0FBSyxTQUFTO1lBQUUsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDOUMsSUFBSSxJQUFJLEtBQUssTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3hDLElBQUksSUFBSSxLQUFLLFFBQVE7WUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0FBQ0wsQ0FBQztBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsMkVBQTJFIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IHN0cmluZywgbnVtYmVyLCBkYXRlLCBib29sZWFuIH0gZnJvbSAnLi90eXBlLWNvbnZlcnRlcic7XG5pbXBvcnQgeyBRdWVyeUVuZ2luZSwgQ29udmVydGVyT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVF1ZXJ5Q29udmVydGVyKHBhcmFtQ29udmVydGVyOiAocGFyYW06IGFueSkgPT4gc3RyaW5nLCBvcHRpb25zOiBDb252ZXJ0ZXJPcHRpb25zLCBlbmdpbmU6IFF1ZXJ5RW5naW5lKSB7XG5cbiAgICByZXR1cm4gY29udmVydFF1ZXJ5O1xuXG4gICAgZnVuY3Rpb24gY29udmVydFF1ZXJ5KHF1ZXJ5OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAocXVlcnkuX2FjdGlvbiA9PT0gJ3NlbGVjdCcpIHJldHVybiBjb252ZXJ0U2VsZWN0UXVlcnkocXVlcnkpO1xuICAgICAgICBpZiAocXVlcnkuX2FjdGlvbiA9PT0gJ2RlbGV0ZScpIHJldHVybiBjb252ZXJ0RGVsZXRlUXVlcnkocXVlcnkpO1xuICAgICAgICBpZiAocXVlcnkuX2FjdGlvbiA9PT0gJ3VwZGF0ZScpIHJldHVybiBjb252ZXJ0VXBkYXRlUXVlcnkocXVlcnkpO1xuICAgICAgICBpZiAocXVlcnkuX2FjdGlvbiA9PT0gJ2luc2VydCcpIHJldHVybiBjb252ZXJ0SW5zZXJ0UXVlcnkocXVlcnkpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcXVlcnkgdHlwZTonICsgcXVlcnkuX2FjdGlvbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29udmVydERlbGV0ZVF1ZXJ5KHF1ZXJ5OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcyA9ICdERUxFVEUgRlJPTSAnICsgY29udmVydFRhYmxlKHF1ZXJ5Ll90YWJsZSk7XG4gICAgICAgIHMgKz0gY29udmVydENvbmRpdGlvbnMocXVlcnkuX2NvbmRpdGlvbnMpO1xuICAgICAgICByZXR1cm4gcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0VXBkYXRlUXVlcnkocXVlcnk6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGxldCBzID0gJ1VQREFURSAnICsgY29udmVydFRhYmxlKHF1ZXJ5Ll90YWJsZSkgKyAnIFNFVCAnO1xuICAgICAgICBzICs9IGNvbnZlcnRVcGRhdGVTZXR0ZXJzKHF1ZXJ5Ll90YWJsZSwgcXVlcnkuX2VudGl0eSk7XG4gICAgICAgIHMgKz0gY29udmVydENvbmRpdGlvbnMocXVlcnkuX2NvbmRpdGlvbnMpO1xuICAgICAgICByZXR1cm4gcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0VXBkYXRlU2V0dGVycyh0YWJsZTogYW55LCBlbnRpdHk6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnRpdHkpLnNvcnQoKS5tYXAoa2V5ID0+IHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGVudGl0eVtrZXldO1xuICAgICAgICAgICAgbGV0IGNvbHVtbiA9IHRhYmxlW2tleV07XG4gICAgICAgICAgICByZXR1cm4gY29udmVydENvbHVtbk5hbWUoY29sdW1uKSArICcgPSAnICsgY29udmVydFBhcmFtKGNvbHVtbiwgdmFsdWUpO1xuICAgICAgICB9KS5qb2luKCcsICcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbnZlcnRJbnNlcnRRdWVyeShxdWVyeTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGl0ZW1zOiBhbnlbXSA9IEFycmF5LmlzQXJyYXkocXVlcnkuX2VudGl0eSkgPyBxdWVyeS5fZW50aXR5IDogW3F1ZXJ5Ll9lbnRpdHldO1xuICAgICAgICBsZXQga2V5U2V0OiBTZXQ8c3RyaW5nPiA9IGl0ZW1zLnJlZHVjZSgoc2V0OiBTZXQ8c3RyaW5nPiwgaXRlbSkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoaXRlbSkuZm9yRWFjaChrZXkgPT4gc2V0LmFkZChrZXkpKTsgcmV0dXJuIHNldDtcbiAgICAgICAgfSwgbmV3IFNldDxzdHJpbmc+KCkpO1xuICAgICAgICBsZXQga2V5cyA9IEFycmF5LmZyb20oa2V5U2V0KS5zb3J0KCk7XG5cbiAgICAgICAgbGV0IHMgPSAnSU5TRVJUIElOVE8gJyArIGNvbnZlcnRUYWJsZShxdWVyeS5fdGFibGUpICsgJyAnO1xuICAgICAgICBzICs9ICcoJyArIGtleXMubWFwKGtleSA9PiBjb252ZXJ0Q29sdW1uTmFtZShxdWVyeS5fdGFibGVba2V5XSkpLmpvaW4oJywgJykgKyAnKSc7XG4gICAgICAgIHMgKz0gb3B0aW9ucy5saW5lQnJlYWsgKyAnVkFMVUVTICc7XG4gICAgICAgIHMgKz0gaXRlbXMubWFwKGl0ZW0gPT4gY29udmVydEluc2VydEl0ZW0ocXVlcnkuX3RhYmxlLCBpdGVtLCBrZXlzKSlcbiAgICAgICAgICAgIC5tYXAoKHJvdzogc3RyaW5nKSA9PiAnKCcgKyByb3cgKyAnKScpLmpvaW4oJywgJyk7XG5cbiAgICAgICAgcyArPSBnZXRQZ0luc2VydFJldHVybmluZ0lmTmVlZGVkKHF1ZXJ5KTtcbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBnZXRQZ0luc2VydFJldHVybmluZ0lmTmVlZGVkKHF1ZXJ5OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoZW5naW5lID09PSAncGcnICYmIHF1ZXJ5Ll9hY3Rpb24gPT09ICdpbnNlcnQnICYmICFBcnJheS5pc0FycmF5KHF1ZXJ5Ll9lbnRpdHkpICYmXG4gICAgICAgICAgICBxdWVyeS5fdGFibGUuJGlkICYmIHF1ZXJ5Ll90YWJsZS4kaWQuX3RhYmxlICYmIHF1ZXJ5Ll90YWJsZS4kaWQuX25hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiAnIFJFVFVSTklORyAnICsgY29udmVydENvbHVtbk5hbWUocXVlcnkuX3RhYmxlLiRpZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbnZlcnRJbnNlcnRJdGVtKHRhYmxlOiBhbnksIGVudGl0eTogYW55LCBrZXlzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBrZXlzLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gZW50aXR5W2tleV07XG4gICAgICAgICAgICBsZXQgY29sdW1uID0gdGFibGVba2V5XTtcbiAgICAgICAgICAgIHJldHVybiBjb252ZXJ0UGFyYW0oY29sdW1uLCB2YWx1ZSk7XG4gICAgICAgIH0pLmpvaW4oJywgJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29udmVydFNlbGVjdFF1ZXJ5KHF1ZXJ5OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcyA9ICdTRUxFQ1QgJztcbiAgICAgICAgaWYgKHF1ZXJ5Ll9kaXN0aW5jdCkge1xuICAgICAgICAgICAgcyArPSAnRElTVElOQ1QgJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChxdWVyeS5fY29sdW1ucyA9PSBudWxsIHx8IHF1ZXJ5Ll9jb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcyArPSAnKidcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMgKz0gcXVlcnkuX2NvbHVtbnMubWFwKChjb2x1bW46IGFueSkgPT4gY29udmVydENvbHVtbihjb2x1bW4pKS5qb2luKCcsICcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcyArPSBvcHRpb25zLmxpbmVCcmVhayArICdGUk9NICc7XG4gICAgICAgIGlmIChxdWVyeS5fdGFibGVzKSB7XG4gICAgICAgICAgICBzKz0gcXVlcnkuX3RhYmxlcy5tYXAoKHRhYmxlOiBhbnkpID0+IHRhYmxlLl9wYXJlbnQgPyBjb252ZXJ0Sm9pbih0YWJsZSkgOiBjb252ZXJ0VGFibGUodGFibGUpKS5qb2luKCcsICcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcys9IGNvbnZlcnRUYWJsZShxdWVyeS5fdGFibGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcyArPSBjb252ZXJ0Q29uZGl0aW9ucyhxdWVyeS5fY29uZGl0aW9ucyk7XG5cbiAgICAgICAgaWYgKHF1ZXJ5Ll9ncm91cEJ5ICYmIHF1ZXJ5Ll9ncm91cEJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHMgKz0gb3B0aW9ucy5saW5lQnJlYWsgKyAnR1JPVVAgQlkgJztcbiAgICAgICAgICAgIHMgKz0gcXVlcnkuX2dyb3VwQnkubWFwKChjb2x1bW46IGFueSkgPT4gY29udmVydENvbHVtbihjb2x1bW4pKS5qb2luKCcsICcpO1xuICAgICAgICB9XG4gICAgICAgIHMgKz0gY29udmVydENvbmRpdGlvbnMocXVlcnkuX2hhdmluZywgJ0hBVklORycpO1xuXG4gICAgICAgIGlmIChxdWVyeS5fb3JkZXJpbmdzICYmIHF1ZXJ5Ll9vcmRlcmluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcyArPSBvcHRpb25zLmxpbmVCcmVhayArICdPUkRFUiBCWSAnO1xuICAgICAgICAgICAgcyArPSBxdWVyeS5fb3JkZXJpbmdzLm1hcCgob3JkZXJpbmc6IGFueSkgPT4gY29udmVydE9yZGVyaW5nKG9yZGVyaW5nKSkuam9pbignLCAnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocXVlcnkuX2xpbWl0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHMgKz0gb3B0aW9ucy5saW5lQnJlYWsgKyAnTElNSVQgJyArIG51bWJlcihxdWVyeS5fbGltaXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChxdWVyeS5fb2Zmc2V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHMgKz0gb3B0aW9ucy5saW5lQnJlYWsgKyAnT0ZGU0VUICcgKyBudW1iZXIocXVlcnkuX29mZnNldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29udmVydENvbmRpdGlvbnMoY29uZGl0aW9uczogYW55W10sIGtleXdvcmQgPSAnV0hFUkUnKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHMgPSAnJztcbiAgICAgICAgaWYgKGNvbmRpdGlvbnMgJiYgY29uZGl0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzICs9IG9wdGlvbnMubGluZUJyZWFrICsga2V5d29yZCArICcgJztcbiAgICAgICAgICAgIHByZXByb2Nlc3NDb25kaXRpb25zKGNvbmRpdGlvbnMpO1xuICAgICAgICAgICAgcyArPSBjb25kaXRpb25zLm1hcChjb25kaXRpb24gPT4gY29udmVydENvbmRpdGlvbihjb25kaXRpb24sIHRydWUpKS5qb2luKCcgQU5EICcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbnZlcnRKb2luKGpvaW5DaGFpbjogYW55KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGl0ZW1zOiBhbnlbXSA9IFtdO1xuICAgICAgICB3aGlsZSAoam9pbkNoYWluKSB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKGpvaW5DaGFpbik7XG4gICAgICAgICAgICBqb2luQ2hhaW4gPSBqb2luQ2hhaW4uX3BhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByb290ID0gaXRlbXNbaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgIGxldCBzID0gY29udmVydFRhYmxlKHJvb3QpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBpdGVtcy5sZW5ndGggLSAyOyBpID49IDA7IGktPSAyKSB7XG4gICAgICAgICAgICBsZXQgdGFibGUgPSBpdGVtc1tpXS5fdGFibGU7XG4gICAgICAgICAgICBsZXQgbW9kaWZpZXIgPSBpdGVtc1tpXS5fbW9kaWZpZXI7XG4gICAgICAgICAgICBsZXQgY29uZGl0aW9uID0gaXRlbXNbaSAtIDFdLl9jb25kaXRpb247XG4gICAgICAgICAgICBsZXQgcGFyYW0gPSBjb252ZXJ0Q29sdW1uKGNvbmRpdGlvbi5fb3RoZXJDb2x1bW4pO1xuICAgICAgICAgICAgcyArPSAnICcgKyBtb2RpZmllci50b1VwcGVyQ2FzZSgpICsgJyBKT0lOICcgKyBjb252ZXJ0VGFibGUodGFibGUpICsgJyBPTiAnICtcbiAgICAgICAgICAgICAgICBjb252ZXJ0Q29sdW1uQ29uZGl0aW9uKGNvbmRpdGlvbiwgcGFyYW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29udmVydE9yZGVyaW5nKG9yZGVyaW5nOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAob3JkZXJpbmcuX2NvbHVtbikge1xuICAgICAgICAgICAgbGV0IHMgPSBjb252ZXJ0Q29sdW1uKG9yZGVyaW5nLl9jb2x1bW4pO1xuXG4gICAgICAgICAgICBpZiAob3JkZXJpbmcuX251bGxzUG9zaXRpb24gIT0gbnVsbCkgeyAvLyBcIk5VTExTIEZJUlNUXCIgb25seSBleGlzdHMgaW4gUEcsIHRoaXMgaXMgdGhlIGdlbmVyYWwgc29sdXRpb25cbiAgICAgICAgICAgICAgICBzICs9ICcgSVMgTlVMTCAnICsgKG9yZGVyaW5nLl9udWxsc1Bvc2l0aW9uID09PSAnRklSU1QnID8gJ0RFU0MnIDogJ0FTQycpICsgJywgJyArIHM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcmRlcmluZy5fZGlyZWN0aW9uID09PSAnQVNDJykgcyArPSAnIEFTQyc7XG4gICAgICAgICAgICBpZiAob3JkZXJpbmcuX2RpcmVjdGlvbiA9PT0gJ0RFU0MnKSBzICs9ICcgREVTQyc7XG5cbiAgICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRDb2x1bW4ob3JkZXJpbmcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29udmVydFRhYmxlKHRhYmxlOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5uYW1lRXNjYXBlICsgdGFibGUuXyRuYW1lICsgb3B0aW9ucy5uYW1lRXNjYXBlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbnZlcnRDb2x1bW4oY29sdW1uOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcyA9ICcnO1xuICAgICAgICBpZiAoIShjb2x1bW4uX25hbWUgPT09ICcqJyAmJiBjb2x1bW4uX21vZGlmaWVycy5sZW5ndGggPiAwICYmIGNvbHVtbi5fbW9kaWZpZXJzWzBdLm5hbWUgPT09ICdjb3VudCcpKSB7XG4gICAgICAgICAgICBzICs9IGNvbnZlcnRUYWJsZShjb2x1bW4uX3RhYmxlKSArICcuJztcbiAgICAgICAgfVxuICAgICAgICBzICs9IGNvbnZlcnRDb2x1bW5OYW1lKGNvbHVtbik7XG4gICAgICAgIHJldHVybiBjb252ZXJ0Q29sdW1uTW9kaWZpZXJzKHMsIGNvbHVtbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29udmVydENvbHVtbk1vZGlmaWVycyhzOiBzdHJpbmcsIGNvbHVtbjogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGNvbHVtbi5fbW9kaWZpZXJzKSB7XG4gICAgICAgICAgICBjb2x1bW4uX21vZGlmaWVycy5mb3JFYWNoKChtb2RpZmllcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBtb2RpZmllci5uYW1lO1xuICAgICAgICAgICAgICAgIGlmIChuYW1lID09PSAnbG93ZXInKSBzID0gJ0xPV0VSKCcgKyBzICsgJyknO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT09ICd1cHBlcicpIHMgPSAnVVBQRVIoJyArIHMgKyAnKSc7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PT0gJ2NvdW50JykgcyA9ICdDT1VOVCgnICsgcyArICcpJztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09PSAnc3VtJykgcyA9ICdTVU0oJyArIHMgKyAnKSc7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PT0gJ2F2ZycpIHMgPSAnQVZHKCcgKyBzICsgJyknO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT09ICdtaW4nKSBzID0gJ01JTignICsgcyArICcpJztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09PSAnbWF4JykgcyA9ICdNQVgoJyArIHMgKyAnKSc7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PT0gJ2FzJykgcyA9IHMgKyAnIEFTICcgKyBvcHRpb25zLm5hbWVFc2NhcGUgKyBtb2RpZmllci5wYXJhbXMgKyBvcHRpb25zLm5hbWVFc2NhcGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcyArICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbnZlcnRDb2x1bW5OYW1lKGNvbHVtbjogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGNvbHVtbi5fbmFtZSA9PT0gJyonKSByZXR1cm4gY29sdW1uLl9uYW1lO1xuICAgICAgICBsZXQgbmFtZSA9IHR5cGVvZiBjb2x1bW4uX25hbWUgPT09ICdzdHJpbmcnID8gY29sdW1uLl9uYW1lIDogY29sdW1uLl9uYW1lLm5hbWU7XG4gICAgICAgIHJldHVybiBvcHRpb25zLm5hbWVFc2NhcGUgKyBuYW1lICsgb3B0aW9ucy5uYW1lRXNjYXBlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZXByb2Nlc3NDb25kaXRpb25zKGNvbmRpdGlvbnM6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGNvbmRpdGlvbnMuZm9yRWFjaChjb25kaXRpb24gPT4ge1xuICAgICAgICAgICAgaWYgKGNvbmRpdGlvbnMubGVuZ3RoID4gMSAmJiBjb25kaXRpb24uX3NpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb24uX3BhcmVudGhlc2lzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByZXByb2Nlc3NQYXJhbXMoY29uZGl0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBwcmVwcm9jZXNzUGFyYW1zKGNvbmRpdGlvbjogYW55KTogdm9pZCB7XG4gICAgICAgIGlmIChjb25kaXRpb24uX3NpYmxpbmcpIHtcbiAgICAgICAgICAgIHByZXByb2Nlc3NQYXJhbXMoY29uZGl0aW9uLl9zaWJsaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNvbmRpdGlvbi5fc2libGluZyAmJiAhY29uZGl0aW9uLl9jaGlsZCkge1xuICAgICAgICAgICAgY29uZGl0aW9uLl9fcGFyYW0gPSBnZXRDb25kaXRpb25QYXJhbShjb25kaXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25kaXRpb24uX2NoaWxkKSB7XG4gICAgICAgICAgICBwcmVwcm9jZXNzUGFyYW1zKGNvbmRpdGlvbi5fY2hpbGQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29udmVydENvbmRpdGlvbihjb25kaXRpb246IGFueSwgcm9vdCA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFjb25kaXRpb24uX3NpYmxpbmcgJiYgIWNvbmRpdGlvbi5fY2hpbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBjb252ZXJ0Q29sdW1uQ29uZGl0aW9uKGNvbmRpdGlvbiwgY29uZGl0aW9uLl9fcGFyYW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHMgPSAnJztcbiAgICAgICAgaWYgKGNvbmRpdGlvbi5fY2hpbGQpIHtcbiAgICAgICAgICAgIHMgKz0gY29udmVydENvbmRpdGlvbihjb25kaXRpb24uX2NoaWxkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZGl0aW9uLl9zaWJsaW5nKSB7XG4gICAgICAgICAgICBzID0gY29udmVydENvbmRpdGlvbihjb25kaXRpb24uX3NpYmxpbmcsIHJvb3QpICsgJyAnICsgY29uZGl0aW9uLl9jaGFpblR5cGUudG9VcHBlckNhc2UoKSArICcgJyArIHM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmRpdGlvbi5fcGFyZW50aGVzaXMgfHwgKCghcm9vdCB8fCBjb25kaXRpb24uX25lZ2F0aW9uKSAmJiBjb25kaXRpb24uX2NoaWxkKSkge1xuICAgICAgICAgICAgcyA9ICcoICcgKyBzICsgJyApJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZGl0aW9uLl9uZWdhdGlvbikge1xuICAgICAgICAgICAgcyA9ICdOT1QgJyArIHM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29udmVydENvbHVtbkNvbmRpdGlvbihjb25kaXRpb246IGFueSwgcGFyYW06IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBzID0gY29udmVydENvbHVtbihjb25kaXRpb24uX2NvbHVtbik7XG4gICAgICAgIHMgKz0gZ2V0Q29uZGl0aW9uU3RyaW5nKGNvbmRpdGlvbiwgcGFyYW0pO1xuICAgICAgICByZXR1cm4gcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDb25kaXRpb25TdHJpbmcoY29uZGl0aW9uOiBhbnksIHBhcmFtOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbi5fdHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZXEnOiByZXR1cm4gJyA9ICcgKyBwYXJhbTtcbiAgICAgICAgICAgIGNhc2UgJ25lJzogcmV0dXJuICcgPD4gJyArIHBhcmFtO1xuICAgICAgICAgICAgY2FzZSAnbHQnOiByZXR1cm4gJyA8ICcgKyBwYXJhbTtcbiAgICAgICAgICAgIGNhc2UgJ2d0JzogcmV0dXJuICcgPiAnICsgcGFyYW07XG4gICAgICAgICAgICBjYXNlICdsdGUnOiByZXR1cm4gJyA8PSAnICsgcGFyYW07XG4gICAgICAgICAgICBjYXNlICdndGUnOiByZXR1cm4gJyA+PSAnICsgcGFyYW07XG4gICAgICAgICAgICBjYXNlICdpcy1udWxsJzogcmV0dXJuICcgSVMgTlVMTCc7XG4gICAgICAgICAgICBjYXNlICdpcy1ub3QtbnVsbCc6IHJldHVybiAnIElTIE5PVCBOVUxMJztcbiAgICAgICAgICAgIGNhc2UgJ2xpa2UnOiByZXR1cm4gJyBMSUtFICcgKyBwYXJhbTtcbiAgICAgICAgICAgIGNhc2UgJ25vdC1saWtlJzogcmV0dXJuICcgTk9UIExJS0UgJyArIHBhcmFtO1xuICAgICAgICAgICAgY2FzZSAnaW4nOiByZXR1cm4gJyBJTiAoJyArIHBhcmFtICsgJyknO1xuICAgICAgICAgICAgY2FzZSAnbm90LWluJzogcmV0dXJuICcgTk9UIElOICgnICsgcGFyYW0gKyAnKSc7XG4gICAgICAgICAgICBjYXNlICdiZXR3ZWVuJzogcmV0dXJuICcgQkVUV0VFTiAnICsgcGFyYW07XG4gICAgICAgICAgICBjYXNlICdub3QtYmV0d2Vlbic6IHJldHVybiAnIE5PVCBCRVRXRUVOICcgKyBwYXJhbTtcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENvbmRpdGlvblBhcmFtKGNvbmRpdGlvbjogYW55KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHBhcmFtID0gJyc7XG4gICAgICAgIGlmIChjb25kaXRpb24uX290aGVyQ29sdW1uKSB7XG4gICAgICAgICAgICBwYXJhbSA9IGNvbnZlcnRDb2x1bW4oY29uZGl0aW9uLl9vdGhlckNvbHVtbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgX2NvbnZlcnRQYXJhbSA9IChwYXJhbTogYW55KSA9PiBjb252ZXJ0UGFyYW0oY29uZGl0aW9uLl9jb2x1bW4sIHBhcmFtKTtcblxuICAgICAgICAgICAgaWYgKGNvbmRpdGlvbi5fdHlwZSA9PT0gJ2luJyB8fCBjb25kaXRpb24uX3R5cGUgPT09ICdub3QtaW4nKSB7XG4gICAgICAgICAgICAgICAgcGFyYW0gPSBjb25kaXRpb24uX3ZhbHVlcy5tYXAoKHZhbHVlOiBhbnkpID0+IF9jb252ZXJ0UGFyYW0odmFsdWUpKS5qb2luKCcsICcpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb25kaXRpb24uX3R5cGUgPT09ICdiZXR3ZWVuJyB8fCBjb25kaXRpb24uX3R5cGUgPT09ICdub3QtYmV0d2VlbicpIHtcbiAgICAgICAgICAgICAgICBwYXJhbSA9IF9jb252ZXJ0UGFyYW0oY29uZGl0aW9uLl92YWx1ZXNbMF0pICsgJyBBTkQgJyArIF9jb252ZXJ0UGFyYW0oY29uZGl0aW9uLl92YWx1ZXNbMV0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb25kaXRpb24uX3R5cGUgIT09ICdpcy1udWxsJyAmJiBjb25kaXRpb24uX3R5cGUgIT09ICdpcy1ub3QtbnVsbCcpIHtcbiAgICAgICAgICAgICAgICBwYXJhbSA9IF9jb252ZXJ0UGFyYW0oY29uZGl0aW9uLl92YWx1ZXNbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJhbTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0UGFyYW0oY29sdW1uOiBhbnksIHBhcmFtOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAocGFyYW0gPT0gbnVsbCkgcmV0dXJuICdOVUxMJztcbiAgICAgICAgcmV0dXJuIHBhcmFtQ29udmVydGVyKGdldFR5cGVkUGFyYW0oY29sdW1uLl90eXBlLCBwYXJhbSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFR5cGVkUGFyYW0odHlwZTogc3RyaW5nLCBwYXJhbTogYW55KTogYW55IHtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInKSByZXR1cm4gbnVtYmVyKHBhcmFtKTtcbiAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gYm9vbGVhbihwYXJhbSk7XG4gICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlJykgcmV0dXJuIGRhdGUocGFyYW0pO1xuICAgICAgICBlbHNlIGlmICh0eXBlID09PSAnc3RyaW5nJykgcmV0dXJuIHN0cmluZyhwYXJhbSk7XG4gICAgICAgIHJldHVybiBwYXJhbTtcbiAgICB9XG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uLXR5cGUtc3FsIGxpYi9jb252ZXJ0ZXIvcXVlcnktY29udmVydGVyLnRzIl19
@@ -1,88 +0,0 @@
1
- export function convertResult(query, result, engine) {
2
- let rows = engine === 'pg' ? result.rows : result;
3
- let rowCount = engine === 'pg' ? result.rowCount : result.affectedRows || result.changedRows;
4
- if (query._action === 'select')
5
- return convertSelectResult(query, rows);
6
- if (query._action === 'delete')
7
- return rowCount;
8
- if (query._action === 'update')
9
- return rowCount;
10
- if (query._action === 'insert')
11
- return convertInsertResult(result, engine);
12
- throw new Error('Unknown query type:' + query._action);
13
- }
14
- function convertInsertResult(result, engine) {
15
- if (engine === 'mysql')
16
- return result.insertId > 0 ? result.insertId : undefined; // mysql returns 0 for tables that have a non-autoincrement ID
17
- if (engine === 'pg' && result.rows && result.rows.length === 1) {
18
- let columnName = Object.keys(result.rows[0])[0];
19
- return result.rows[0][columnName];
20
- }
21
- }
22
- function convertSelectResult(query, rows) {
23
- if (query._columns && query._columns.length === 1 &&
24
- !(query._columns[0]._name === '*' && query._columns[0]._modifiers.length === 0)) {
25
- if (rows.length == 0)
26
- return [];
27
- let columnName = Object.keys(rows[0])[0]; // easier than reverse engineering from the column modifiers
28
- let values = rows.map((row) => row[columnName]);
29
- if (query._columns[0]._name === '*' && query._columns[0]._modifiers.some((m) => m.name === 'count')) {
30
- return values.map((value) => Number(value)); // string to number conversion for PG count values
31
- }
32
- return values;
33
- }
34
- else {
35
- convertAliasFields(query, rows);
36
- return rows;
37
- }
38
- }
39
- function convertAliasFields(query, rows) {
40
- let aliasByName = getColumnAliasesByName(query);
41
- if (Object.keys(aliasByName).length === 0)
42
- return;
43
- rows.forEach((row) => {
44
- Object.keys(row).forEach((name) => {
45
- if (aliasByName[name]) {
46
- row[aliasByName[name]] = row[name];
47
- delete row[name];
48
- }
49
- });
50
- });
51
- }
52
- function getColumnAliasesByName(query) {
53
- let aliasByName = {};
54
- if (query._columns && query._columns.length > 0) {
55
- query._columns.forEach((column) => {
56
- if (column._name && column._name.alias && column._modifiers.length === 0) {
57
- aliasByName[column._name.name] = column._name.alias;
58
- }
59
- else if (column._name === '*' && column._modifiers.length === 0) {
60
- getAliasColumnsOfTable(column._table).forEach((column) => {
61
- aliasByName[column._name.name] = column._name.alias;
62
- });
63
- }
64
- });
65
- }
66
- else {
67
- let tables = query._table ? [query._table] : query._tables;
68
- tables.forEach((table) => {
69
- getAliasColumnsOfTable(table).forEach((column) => {
70
- aliasByName[column._name.name] = column._name.alias;
71
- });
72
- let joinTable = table._parent;
73
- while (joinTable) {
74
- getAliasColumnsOfTable(joinTable).forEach((column) => {
75
- aliasByName[column._name.name] = column._name.alias;
76
- });
77
- joinTable = joinTable._parent;
78
- }
79
- });
80
- }
81
- return aliasByName;
82
- }
83
- function getAliasColumnsOfTable(table) {
84
- return Object.keys(table).map(key => table[key]).filter((column) => column && column._name && column._name.alias);
85
- }
86
- ;
87
- ({}); // @--end-of-file-for-module=taon-type-sql lib/converter/result-converter.ts
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90YW9uLXR5cGUtc3FsL3Byb2plY3RzL3Rhb24tdHlwZS1zcWwvc3JjL2xpYi9jb252ZXJ0ZXIvcmVzdWx0LWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQVUsRUFBRSxNQUFXLEVBQUUsTUFBbUI7SUFDeEUsSUFBSSxJQUFJLEdBQUcsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2xELElBQUksUUFBUSxHQUFHLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQztJQUU3RixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUTtRQUFFLE9BQU8sbUJBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hFLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxRQUFRO1FBQUUsT0FBTyxRQUFRLENBQUM7SUFDaEQsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVE7UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUNoRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUTtRQUFFLE9BQU8sbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLE1BQVcsRUFBRSxNQUFtQjtJQUMzRCxJQUFJLE1BQU0sS0FBSyxPQUFPO1FBQUUsT0FBTyxN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LENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUN0RCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDOUIsT0FBTyxTQUFTLEVBQUUsQ0FBQztnQkFDakIsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7b0JBQ3hELFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUN0RCxDQUFDLENBQUMsQ0FBQztnQkFDSCxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsS0FBVTtJQUN4QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pILENBQUM7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDRFQUE0RSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBRdWVyeUVuZ2luZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0UmVzdWx0KHF1ZXJ5OiBhbnksIHJlc3VsdDogYW55LCBlbmdpbmU6IFF1ZXJ5RW5naW5lKTogYW55IHtcbiAgbGV0IHJvd3MgPSBlbmdpbmUgPT09ICdwZycgPyByZXN1bHQucm93cyA6IHJlc3VsdDtcbiAgbGV0IHJvd0NvdW50ID0gZW5naW5lID09PSAncGcnID8gcmVzdWx0LnJvd0NvdW50IDogcmVzdWx0LmFmZmVjdGVkUm93cyB8fCByZXN1bHQuY2hhbmdlZFJvd3M7XG5cbiAgaWYgKHF1ZXJ5Ll9hY3Rpb24gPT09ICdzZWxlY3QnKSByZXR1cm4gY29udmVydFNlbGVjdFJlc3VsdChxdWVyeSwgcm93cyk7XG4gIGlmIChxdWVyeS5fYWN0aW9uID09PSAnZGVsZXRlJykgcmV0dXJuIHJvd0NvdW50O1xuICBpZiAocXVlcnkuX2FjdGlvbiA9PT0gJ3VwZGF0ZScpIHJldHVybiByb3dDb3VudDtcbiAgaWYgKHF1ZXJ5Ll9hY3Rpb24gPT09ICdpbnNlcnQnKSByZXR1cm4gY29udmVydEluc2VydFJlc3VsdChyZXN1bHQsIGVuZ2luZSk7XG4gIHRocm93IG5ldyBFcnJvcignVW5rbm93biBxdWVyeSB0eXBlOicgKyBxdWVyeS5fYWN0aW9uKTtcbn1cblxuZnVuY3Rpb24gY29udmVydEluc2VydFJlc3VsdChyZXN1bHQ6IGFueSwgZW5naW5lOiBRdWVyeUVuZ2luZSk6IGFueSB7XG4gIGlmIChlbmdpbmUgPT09ICdteXNxbCcpIHJldHVybiByZXN1bHQuaW5zZXJ0SWQgPiAwID8gcmVzdWx0Lmluc2VydElkIDogdW5kZWZpbmVkOyAvLyBteXNxbCByZXR1cm5zIDAgZm9yIHRhYmxlcyB0aGF0IGhhdmUgYSBub24tYXV0b2luY3JlbWVudCBJRFxuICBpZiAoZW5naW5lID09PSAncGcnICYmIHJlc3VsdC5yb3dzICYmIHJlc3VsdC5yb3dzLmxlbmd0aCA9PT0gMSkge1xuICAgIGxldCBjb2x1bW5OYW1lID0gT2JqZWN0LmtleXMocmVzdWx0LnJvd3NbMF0pWzBdO1xuICAgIHJldHVybiByZXN1bHQucm93c1swXVtjb2x1bW5OYW1lXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb252ZXJ0U2VsZWN0UmVzdWx0KHF1ZXJ5OiBhbnksIHJvd3M6IGFueVtdKTogYW55IHtcbiAgaWYgKHF1ZXJ5Ll9jb2x1bW5zICYmIHF1ZXJ5Ll9jb2x1bW5zLmxlbmd0aCA9PT0gMSAmJlxuICAgICEocXVlcnkuX2NvbHVtbnNbMF0uX25hbWUgPT09ICcqJyAmJiBxdWVyeS5fY29sdW1uc1swXS5fbW9kaWZpZXJzLmxlbmd0aCA9PT0gMCkpIHtcbiAgICBpZiAocm93cy5sZW5ndGggPT0gMCkgcmV0dXJuIFtdO1xuICAgIGxldCBjb2x1bW5OYW1lID0gT2JqZWN0LmtleXMocm93c1swXSlbMF07IC8vIGVhc2llciB0aGFuIHJldmVyc2UgZW5naW5lZXJpbmcgZnJvbSB0aGUgY29sdW1uIG1vZGlmaWVyc1xuICAgIGxldCB2YWx1ZXMgPSByb3dzLm1hcCgocm93OiBhbnkpID0+IHJvd1tjb2x1bW5OYW1lXSk7XG5cbiAgICBpZiAocXVlcnkuX2NvbHVtbnNbMF0uX25hbWUgPT09ICcqJyAmJiBxdWVyeS5fY29sdW1uc1swXS5fbW9kaWZpZXJzLnNvbWUoKG06IGFueSkgPT4gbS5uYW1lID09PSAnY291bnQnKSkge1xuICAgICAgcmV0dXJuIHZhbHVlcy5tYXAoKHZhbHVlOiBhbnkpID0+IE51bWJlcih2YWx1ZSkpOyAvLyBzdHJpbmcgdG8gbnVtYmVyIGNvbnZlcnNpb24gZm9yIFBHIGNvdW50IHZhbHVlc1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVzO1xuICB9IGVsc2Uge1xuICAgIGNvbnZlcnRBbGlhc0ZpZWxkcyhxdWVyeSwgcm93cyk7XG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29udmVydEFsaWFzRmllbGRzKHF1ZXJ5OiBhbnksIHJvd3M6IGFueVtdKTogdm9pZCB7XG4gIGxldCBhbGlhc0J5TmFtZSA9IGdldENvbHVtbkFsaWFzZXNCeU5hbWUocXVlcnkpO1xuICBpZiAoT2JqZWN0LmtleXMoYWxpYXNCeU5hbWUpLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gIHJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICBPYmplY3Qua2V5cyhyb3cpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGFsaWFzQnlOYW1lW25hbWVdKSB7XG4gICAgICAgIHJvd1thbGlhc0J5TmFtZVtuYW1lXV0gPSByb3dbbmFtZV07XG4gICAgICAgIGRlbGV0ZSByb3dbbmFtZV07XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRDb2x1bW5BbGlhc2VzQnlOYW1lKHF1ZXJ5OiBhbnkpOiBhbnkge1xuICBsZXQgYWxpYXNCeU5hbWUgPSB7fSBhcyBhbnk7XG5cbiAgaWYgKHF1ZXJ5Ll9jb2x1bW5zICYmIHF1ZXJ5Ll9jb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICBxdWVyeS5fY29sdW1ucy5mb3JFYWNoKChjb2x1bW46IGFueSkgPT4ge1xuICAgICAgaWYgKGNvbHVtbi5fbmFtZSAmJiBjb2x1bW4uX25hbWUuYWxpYXMgJiYgY29sdW1uLl9tb2RpZmllcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGFsaWFzQnlOYW1lW2NvbHVtbi5fbmFtZS5uYW1lXSA9IGNvbHVtbi5fbmFtZS5hbGlhcztcbiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLl9uYW1lID09PSAnKicgJiYgY29sdW1uLl9tb2RpZmllcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGdldEFsaWFzQ29sdW1uc09mVGFibGUoY29sdW1uLl90YWJsZSkuZm9yRWFjaCgoY29sdW1uOiBhbnkpID0+IHtcbiAgICAgICAgICBhbGlhc0J5TmFtZVtjb2x1bW4uX25hbWUubmFtZV0gPSBjb2x1bW4uX25hbWUuYWxpYXM7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGxldCB0YWJsZXMgPSBxdWVyeS5fdGFibGUgPyBbcXVlcnkuX3RhYmxlXSA6IHF1ZXJ5Ll90YWJsZXM7XG4gICAgdGFibGVzLmZvckVhY2goKHRhYmxlOiBhbnkpID0+IHtcbiAgICAgIGdldEFsaWFzQ29sdW1uc09mVGFibGUodGFibGUpLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XG4gICAgICAgIGFsaWFzQnlOYW1lW2NvbHVtbi5fbmFtZS5uYW1lXSA9IGNvbHVtbi5fbmFtZS5hbGlhcztcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgam9pblRhYmxlID0gdGFibGUuX3BhcmVudDtcbiAgICAgIHdoaWxlIChqb2luVGFibGUpIHtcbiAgICAgICAgZ2V0QWxpYXNDb2x1bW5zT2ZUYWJsZShqb2luVGFibGUpLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XG4gICAgICAgICAgYWxpYXNCeU5hbWVbY29sdW1uLl9uYW1lLm5hbWVdID0gY29sdW1uLl9uYW1lLmFsaWFzO1xuICAgICAgICB9KTtcbiAgICAgICAgam9pblRhYmxlID0gam9pblRhYmxlLl9wYXJlbnQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gYWxpYXNCeU5hbWU7XG59XG5cbmZ1bmN0aW9uIGdldEFsaWFzQ29sdW1uc09mVGFibGUodGFibGU6IGFueSk6IGFueVtdIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHRhYmxlKS5tYXAoa2V5ID0+IHRhYmxlW2tleV0pLmZpbHRlcigoY29sdW1uOiBhbnkpID0+IGNvbHVtbiAmJiBjb2x1bW4uX25hbWUgJiYgY29sdW1uLl9uYW1lLmFsaWFzKTtcbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tdHlwZS1zcWwgbGliL2NvbnZlcnRlci9yZXN1bHQtY29udmVydGVyLnRzIl19
@@ -1,8 +0,0 @@
1
- import { createQueryConverter } from "./query-converter";
2
- import { convertSubstitutionParam } from './param-converter';
3
- export function convertQueryToSQL(query, options, engine) {
4
- return createQueryConverter((param) => convertSubstitutionParam(param), options, engine)(query);
5
- }
6
- ;
7
- ({}); // @--end-of-file-for-module=taon-type-sql lib/converter/sql-converter.ts
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLWNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90YW9uLXR5cGUtc3FsL3Byb2plY3RzL3Rhb24tdHlwZS1zcWwvc3JjL2xpYi9jb252ZXJ0ZXIvc3FsLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUczRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBVSxFQUFFLE9BQXlCLEVBQUUsTUFBbUI7SUFDeEYsT0FBTyxvQkFBb0IsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pHLENBQUM7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlFQUF5RSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQge2NyZWF0ZVF1ZXJ5Q29udmVydGVyfSBmcm9tIFwiLi9xdWVyeS1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7Y29udmVydFN1YnN0aXR1dGlvblBhcmFtfSBmcm9tICcuL3BhcmFtLWNvbnZlcnRlcic7XG5pbXBvcnQge1F1ZXJ5RW5naW5lLCBDb252ZXJ0ZXJPcHRpb25zfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFF1ZXJ5VG9TUUwocXVlcnk6IGFueSwgb3B0aW9uczogQ29udmVydGVyT3B0aW9ucywgZW5naW5lOiBRdWVyeUVuZ2luZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNyZWF0ZVF1ZXJ5Q29udmVydGVyKChwYXJhbTogYW55KSA9PiBjb252ZXJ0U3Vic3RpdHV0aW9uUGFyYW0ocGFyYW0pLCBvcHRpb25zLCBlbmdpbmUpKHF1ZXJ5KTtcbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tdHlwZS1zcWwgbGliL2NvbnZlcnRlci9zcWwtY29udmVydGVyLnRzIl19
@@ -1,39 +0,0 @@
1
- export function number(param) {
2
- let result = Number(param);
3
- if (Number.isNaN(result))
4
- throw new Error('Invalid number parameter in SQL query: ' + param);
5
- return result;
6
- }
7
- export function boolean(param) {
8
- if (typeof param === 'boolean')
9
- return param;
10
- if (param instanceof Boolean)
11
- return param.valueOf();
12
- if (param === 'true')
13
- return true;
14
- if (param === 'false')
15
- return false;
16
- throw new Error('Invalid boolean parameter in SQL query: ' + param);
17
- }
18
- export function date(param) {
19
- if (param instanceof Date)
20
- return param; // @ts-ignore
21
- if (typeof param === 'number' || param instanceof Number)
22
- return new Date(param);
23
- if (typeof param === 'string' || param instanceof String) {
24
- if (Number.isNaN(Date.parse(String(param))))
25
- throw new Error('Invalid date parameter in SQL query: ' + param); // @ts-ignore
26
- return new Date(param);
27
- }
28
- throw new Error('Invalid date parameter in SQL query: ' + param);
29
- }
30
- export function string(param) {
31
- if (typeof param === 'string')
32
- return param;
33
- if (param instanceof String)
34
- return param.valueOf();
35
- throw new Error('Invalid string parameter in SQL query: ' + param);
36
- }
37
- ;
38
- ({}); // @--end-of-file-for-module=taon-type-sql lib/converter/type-converter.ts
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdGFvbi10eXBlLXNxbC9wcm9qZWN0cy90YW9uLXR5cGUtc3FsL3NyYy9saWIvY29udmVydGVyL3R5cGUtY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sVUFBVSxNQUFNLENBQUMsS0FBVTtJQUMvQixJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDN0YsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBVTtJQUNoQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM3QyxJQUFJLEtBQUssWUFBWSxPQUFPO1FBQUUsT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDckQsSUFBSSxLQUFLLEtBQUssTUFBTTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ2xDLElBQUksS0FBSyxLQUFLLE9BQU87UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFRCxNQUFNLFVBQVUsSUFBSSxDQUFDLEtBQVU7SUFDN0IsSUFBSSxLQUFLLFlBQVksSUFBSTtRQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsYUFBYTtJQUN0RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLFlBQVksTUFBTTtRQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakYsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRSxDQUFDO1FBQ3pELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWE7UUFDNUgsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUFVO0lBQy9CLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzVDLElBQUksS0FBSyxZQUFZLE1BQU07UUFBRSxPQUFPLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwRCxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDBFQUEwRSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXIocGFyYW06IGFueSk6IG51bWJlciB7XG4gIGxldCByZXN1bHQgPSBOdW1iZXIocGFyYW0pO1xuICBpZiAoTnVtYmVyLmlzTmFOKHJlc3VsdCkpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBudW1iZXIgcGFyYW1ldGVyIGluIFNRTCBxdWVyeTogJyArIHBhcmFtKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvb2xlYW4ocGFyYW06IGFueSk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHBhcmFtID09PSAnYm9vbGVhbicpIHJldHVybiBwYXJhbTtcbiAgaWYgKHBhcmFtIGluc3RhbmNlb2YgQm9vbGVhbikgcmV0dXJuIHBhcmFtLnZhbHVlT2YoKTtcbiAgaWYgKHBhcmFtID09PSAndHJ1ZScpIHJldHVybiB0cnVlO1xuICBpZiAocGFyYW0gPT09ICdmYWxzZScpIHJldHVybiBmYWxzZTtcbiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGJvb2xlYW4gcGFyYW1ldGVyIGluIFNRTCBxdWVyeTogJyArIHBhcmFtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGUocGFyYW06IGFueSk6IERhdGUge1xuICBpZiAocGFyYW0gaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gcGFyYW07IC8vIEB0cy1pZ25vcmVcbiAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ251bWJlcicgfHwgcGFyYW0gaW5zdGFuY2VvZiBOdW1iZXIpIHJldHVybiBuZXcgRGF0ZShwYXJhbSk7XG4gIGlmICh0eXBlb2YgcGFyYW0gPT09ICdzdHJpbmcnIHx8IHBhcmFtIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgaWYgKE51bWJlci5pc05hTihEYXRlLnBhcnNlKFN0cmluZyhwYXJhbSkpKSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRhdGUgcGFyYW1ldGVyIGluIFNRTCBxdWVyeTogJyArIHBhcmFtKTsgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBuZXcgRGF0ZShwYXJhbSk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRhdGUgcGFyYW1ldGVyIGluIFNRTCBxdWVyeTogJyArIHBhcmFtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZyhwYXJhbTogYW55KTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ3N0cmluZycpIHJldHVybiBwYXJhbTtcbiAgaWYgKHBhcmFtIGluc3RhbmNlb2YgU3RyaW5nKSByZXR1cm4gcGFyYW0udmFsdWVPZigpO1xuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nIHBhcmFtZXRlciBpbiBTUUwgcXVlcnk6ICcgKyBwYXJhbSk7XG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uLXR5cGUtc3FsIGxpYi9jb252ZXJ0ZXIvdHlwZS1jb252ZXJ0ZXIudHMiXX0=
@@ -1,4 +0,0 @@
1
- ;
2
- ({}); // @--end-of-file-for-module=taon-type-sql lib/converter/types.ts
3
- export {};
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdGFvbi10eXBlLXNxbC9wcm9qZWN0cy90YW9uLXR5cGUtc3FsL3NyYy9saWIvY29udmVydGVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVDLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUVBQWlFIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuZXhwb3J0IHR5cGUgUXVlcnlFbmdpbmUgPSAncGcnIHwgJ215c3FsJztcblxuZXhwb3J0IGludGVyZmFjZSBDb252ZXJ0ZXJPcHRpb25zIHtcbiAgICBsaW5lQnJlYWs6IHN0cmluZyxcbiAgICBuYW1lRXNjYXBlOiBzdHJpbmdcbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24tdHlwZS1zcWwgbGliL2NvbnZlcnRlci90eXBlcy50cyJdfQ==