@quillsql/react 2.13.26 → 2.13.28

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 (243) hide show
  1. package/dist/cjs/Chart.d.ts.map +1 -1
  2. package/dist/cjs/Chart.js +2 -2
  3. package/dist/cjs/ChartBuilder.d.ts +20 -2
  4. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  5. package/dist/cjs/ChartBuilder.js +130 -36
  6. package/dist/cjs/ChartEditor.d.ts +5 -3
  7. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  8. package/dist/cjs/ChartEditor.js +4 -5
  9. package/dist/cjs/Context.d.ts +15 -4
  10. package/dist/cjs/Context.d.ts.map +1 -1
  11. package/dist/cjs/Context.js +37 -60
  12. package/dist/cjs/Dashboard.d.ts +4 -0
  13. package/dist/cjs/Dashboard.d.ts.map +1 -1
  14. package/dist/cjs/Dashboard.js +78 -23
  15. package/dist/cjs/QuillProvider.d.ts +12 -9
  16. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  17. package/dist/cjs/QuillProvider.js +2 -2
  18. package/dist/cjs/ReportBuilder.d.ts +9 -1
  19. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  20. package/dist/cjs/ReportBuilder.js +198 -80
  21. package/dist/cjs/SQLEditor.d.ts +5 -1
  22. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  23. package/dist/cjs/SQLEditor.js +81 -18
  24. package/dist/cjs/Table.d.ts.map +1 -1
  25. package/dist/cjs/Table.js +5 -4
  26. package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
  27. package/dist/cjs/components/Chart/InternalChart.js +106 -27
  28. package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -1
  29. package/dist/cjs/components/Chart/PieChart.js +10 -7
  30. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +3 -2
  31. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  32. package/dist/cjs/components/Dashboard/DashboardFilter.js +65 -65
  33. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  34. package/dist/cjs/components/Dashboard/DataLoader.js +81 -34
  35. package/dist/cjs/components/Dashboard/MetricComponent.js +3 -3
  36. package/dist/cjs/components/Dashboard/util.d.ts.map +1 -1
  37. package/dist/cjs/components/Dashboard/util.js +6 -2
  38. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts +1 -1
  39. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  40. package/dist/cjs/components/QuillMultiSelectWithCombo.js +17 -18
  41. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  42. package/dist/cjs/components/QuillTable.js +9 -1
  43. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
  44. package/dist/cjs/components/ReportBuilder/FilterModal.js +25 -3
  45. package/dist/cjs/components/ReportBuilder/FilterStack.d.ts +2 -1
  46. package/dist/cjs/components/ReportBuilder/FilterStack.d.ts.map +1 -1
  47. package/dist/cjs/components/ReportBuilder/FilterStack.js +2 -2
  48. package/dist/cjs/components/ReportBuilder/convert.d.ts +1 -0
  49. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
  50. package/dist/cjs/components/ReportBuilder/convert.js +54 -4
  51. package/dist/cjs/components/ReportBuilder/ui.d.ts +2 -1
  52. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  53. package/dist/cjs/components/ReportBuilder/ui.js +3 -2
  54. package/dist/cjs/components/UiComponents.d.ts +1 -0
  55. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  56. package/dist/cjs/hooks/useAskQuill.d.ts +1 -1
  57. package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
  58. package/dist/cjs/hooks/useAskQuill.js +6 -5
  59. package/dist/cjs/hooks/useAstToFilterTree.d.ts +2 -1
  60. package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -1
  61. package/dist/cjs/hooks/useAstToFilterTree.js +3 -3
  62. package/dist/cjs/hooks/useDashboard.d.ts +5 -2
  63. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  64. package/dist/cjs/hooks/useDashboard.js +21 -7
  65. package/dist/cjs/hooks/useExport.d.ts.map +1 -1
  66. package/dist/cjs/hooks/useExport.js +6 -4
  67. package/dist/cjs/index.d.ts +1 -1
  68. package/dist/cjs/index.d.ts.map +1 -1
  69. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +8 -2
  70. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  71. package/dist/cjs/internals/ReportBuilder/PivotModal.js +59 -30
  72. package/dist/cjs/models/Client.d.ts +22 -3
  73. package/dist/cjs/models/Client.d.ts.map +1 -1
  74. package/dist/cjs/models/Dashboard.d.ts +1 -0
  75. package/dist/cjs/models/Dashboard.d.ts.map +1 -1
  76. package/dist/cjs/models/Report.d.ts +4 -0
  77. package/dist/cjs/models/Report.d.ts.map +1 -1
  78. package/dist/cjs/utils/astFilterProcessing.d.ts +3 -2
  79. package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
  80. package/dist/cjs/utils/astFilterProcessing.js +3323 -977
  81. package/dist/cjs/utils/astProcessing.d.ts +1 -1
  82. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  83. package/dist/cjs/utils/astProcessing.js +3 -2
  84. package/dist/cjs/utils/client.d.ts +4 -2
  85. package/dist/cjs/utils/client.d.ts.map +1 -1
  86. package/dist/cjs/utils/client.js +47 -1
  87. package/dist/cjs/utils/columnProcessing.d.ts +3 -0
  88. package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
  89. package/dist/cjs/utils/columnProcessing.js +34 -1
  90. package/dist/cjs/utils/dashboard.d.ts +4 -3
  91. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  92. package/dist/cjs/utils/dashboard.js +10 -91
  93. package/dist/cjs/utils/dataFetcher.d.ts +3 -1
  94. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  95. package/dist/cjs/utils/dataFetcher.js +66 -30
  96. package/dist/cjs/utils/filterProcessing.d.ts +1 -1
  97. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  98. package/dist/cjs/utils/filterProcessing.js +2 -0
  99. package/dist/cjs/utils/pivotConstructor.d.ts +4 -1
  100. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  101. package/dist/cjs/utils/pivotConstructor.js +7 -7
  102. package/dist/cjs/utils/pivotProcessing.d.ts +4 -1
  103. package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
  104. package/dist/cjs/utils/pivotProcessing.js +27 -20
  105. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  106. package/dist/cjs/utils/queryConstructor.js +101 -85
  107. package/dist/cjs/utils/report.d.ts +17 -5
  108. package/dist/cjs/utils/report.d.ts.map +1 -1
  109. package/dist/cjs/utils/report.js +23 -23
  110. package/dist/cjs/utils/schema.d.ts.map +1 -1
  111. package/dist/cjs/utils/schema.js +21 -21
  112. package/dist/cjs/utils/tableProcessing.d.ts +37 -10
  113. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  114. package/dist/cjs/utils/tableProcessing.js +45 -38
  115. package/dist/cjs/utils/tenants.d.ts +11 -0
  116. package/dist/cjs/utils/tenants.d.ts.map +1 -0
  117. package/dist/cjs/utils/tenants.js +13 -0
  118. package/dist/cjs/utils/textProcessing.d.ts +1 -0
  119. package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
  120. package/dist/cjs/utils/textProcessing.js +49 -0
  121. package/dist/cjs/utils/validation.js +1 -1
  122. package/dist/esm/Chart.d.ts.map +1 -1
  123. package/dist/esm/Chart.js +2 -2
  124. package/dist/esm/ChartBuilder.d.ts +20 -2
  125. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  126. package/dist/esm/ChartBuilder.js +131 -40
  127. package/dist/esm/ChartEditor.d.ts +5 -3
  128. package/dist/esm/ChartEditor.d.ts.map +1 -1
  129. package/dist/esm/ChartEditor.js +5 -6
  130. package/dist/esm/Context.d.ts +15 -4
  131. package/dist/esm/Context.d.ts.map +1 -1
  132. package/dist/esm/Context.js +36 -59
  133. package/dist/esm/Dashboard.d.ts +4 -0
  134. package/dist/esm/Dashboard.d.ts.map +1 -1
  135. package/dist/esm/Dashboard.js +79 -24
  136. package/dist/esm/QuillProvider.d.ts +12 -9
  137. package/dist/esm/QuillProvider.d.ts.map +1 -1
  138. package/dist/esm/QuillProvider.js +2 -2
  139. package/dist/esm/ReportBuilder.d.ts +9 -1
  140. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  141. package/dist/esm/ReportBuilder.js +200 -84
  142. package/dist/esm/SQLEditor.d.ts +5 -1
  143. package/dist/esm/SQLEditor.d.ts.map +1 -1
  144. package/dist/esm/SQLEditor.js +80 -17
  145. package/dist/esm/Table.d.ts.map +1 -1
  146. package/dist/esm/Table.js +6 -5
  147. package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
  148. package/dist/esm/components/Chart/InternalChart.js +107 -28
  149. package/dist/esm/components/Chart/PieChart.d.ts.map +1 -1
  150. package/dist/esm/components/Chart/PieChart.js +10 -7
  151. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +3 -2
  152. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  153. package/dist/esm/components/Dashboard/DashboardFilter.js +65 -65
  154. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  155. package/dist/esm/components/Dashboard/DataLoader.js +82 -35
  156. package/dist/esm/components/Dashboard/MetricComponent.js +3 -3
  157. package/dist/esm/components/Dashboard/util.d.ts.map +1 -1
  158. package/dist/esm/components/Dashboard/util.js +6 -2
  159. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +1 -1
  160. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  161. package/dist/esm/components/QuillMultiSelectWithCombo.js +17 -18
  162. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  163. package/dist/esm/components/QuillTable.js +9 -1
  164. package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
  165. package/dist/esm/components/ReportBuilder/FilterModal.js +26 -4
  166. package/dist/esm/components/ReportBuilder/FilterStack.d.ts +2 -1
  167. package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +1 -1
  168. package/dist/esm/components/ReportBuilder/FilterStack.js +2 -2
  169. package/dist/esm/components/ReportBuilder/convert.d.ts +1 -0
  170. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  171. package/dist/esm/components/ReportBuilder/convert.js +54 -5
  172. package/dist/esm/components/ReportBuilder/ui.d.ts +2 -1
  173. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  174. package/dist/esm/components/ReportBuilder/ui.js +4 -3
  175. package/dist/esm/components/UiComponents.d.ts +1 -0
  176. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  177. package/dist/esm/hooks/useAskQuill.d.ts +1 -1
  178. package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
  179. package/dist/esm/hooks/useAskQuill.js +7 -6
  180. package/dist/esm/hooks/useAstToFilterTree.d.ts +2 -1
  181. package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -1
  182. package/dist/esm/hooks/useAstToFilterTree.js +3 -3
  183. package/dist/esm/hooks/useDashboard.d.ts +5 -2
  184. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  185. package/dist/esm/hooks/useDashboard.js +21 -7
  186. package/dist/esm/hooks/useExport.d.ts.map +1 -1
  187. package/dist/esm/hooks/useExport.js +7 -5
  188. package/dist/esm/index.d.ts +1 -1
  189. package/dist/esm/index.d.ts.map +1 -1
  190. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +8 -2
  191. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  192. package/dist/esm/internals/ReportBuilder/PivotModal.js +59 -30
  193. package/dist/esm/models/Client.d.ts +22 -3
  194. package/dist/esm/models/Client.d.ts.map +1 -1
  195. package/dist/esm/models/Dashboard.d.ts +1 -0
  196. package/dist/esm/models/Dashboard.d.ts.map +1 -1
  197. package/dist/esm/models/Report.d.ts +4 -0
  198. package/dist/esm/models/Report.d.ts.map +1 -1
  199. package/dist/esm/utils/astFilterProcessing.d.ts +3 -2
  200. package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
  201. package/dist/esm/utils/astFilterProcessing.js +3323 -977
  202. package/dist/esm/utils/astProcessing.d.ts +1 -1
  203. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  204. package/dist/esm/utils/astProcessing.js +4 -3
  205. package/dist/esm/utils/client.d.ts +4 -2
  206. package/dist/esm/utils/client.d.ts.map +1 -1
  207. package/dist/esm/utils/client.js +47 -1
  208. package/dist/esm/utils/columnProcessing.d.ts +3 -0
  209. package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
  210. package/dist/esm/utils/columnProcessing.js +31 -1
  211. package/dist/esm/utils/dashboard.d.ts +4 -3
  212. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  213. package/dist/esm/utils/dashboard.js +10 -90
  214. package/dist/esm/utils/dataFetcher.d.ts +3 -1
  215. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  216. package/dist/esm/utils/dataFetcher.js +65 -29
  217. package/dist/esm/utils/filterProcessing.d.ts +1 -1
  218. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  219. package/dist/esm/utils/filterProcessing.js +2 -0
  220. package/dist/esm/utils/pivotConstructor.d.ts +4 -1
  221. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  222. package/dist/esm/utils/pivotConstructor.js +8 -8
  223. package/dist/esm/utils/pivotProcessing.d.ts +4 -1
  224. package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
  225. package/dist/esm/utils/pivotProcessing.js +27 -20
  226. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  227. package/dist/esm/utils/queryConstructor.js +101 -85
  228. package/dist/esm/utils/report.d.ts +17 -5
  229. package/dist/esm/utils/report.d.ts.map +1 -1
  230. package/dist/esm/utils/report.js +20 -23
  231. package/dist/esm/utils/schema.d.ts.map +1 -1
  232. package/dist/esm/utils/schema.js +21 -21
  233. package/dist/esm/utils/tableProcessing.d.ts +37 -10
  234. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  235. package/dist/esm/utils/tableProcessing.js +46 -39
  236. package/dist/esm/utils/tenants.d.ts +11 -0
  237. package/dist/esm/utils/tenants.d.ts.map +1 -0
  238. package/dist/esm/utils/tenants.js +9 -0
  239. package/dist/esm/utils/textProcessing.d.ts +1 -0
  240. package/dist/esm/utils/textProcessing.d.ts.map +1 -1
  241. package/dist/esm/utils/textProcessing.js +48 -0
  242. package/dist/esm/utils/validation.js +1 -1
  243. package/package.json +1 -1
@@ -1,7 +1,10 @@
1
1
  import { ColumnInternal } from '../models/Columns';
2
2
  import { Pivot } from '../models/Pivot';
3
3
  export declare function pivotToSql(pivot: Pivot, query: string, columns: ColumnInternal[]): string;
4
- export declare function isValidPivot(pivot: Pivot): boolean;
4
+ export declare function isValidPivot(pivot: Pivot): {
5
+ valid: boolean;
6
+ reason: string;
7
+ };
5
8
  export declare function getPossiblePivotFieldOptions(columns: ColumnInternal[], uniqueValues: {
6
9
  [column: string]: {
7
10
  [value: string]: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,EAAE,GACxB,MAAM,CAuCR;AAkBD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,WA0BxC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,cAAc,EAAE,EACzB,YAAY,EAAE;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;CAAE;;;;EAsDjE;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE;IACf,SAAS,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,GAAG,CAAC;IAClB,WAAW,EAAE,GAAG,CAAC;CAClB,GACA,KAAK,CA8BP;AAED,eAAO,MAAM,eAAe,WAAY,GAAG,SAAS,KAAK,YA8BxD,CAAC"}
1
+ {"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,EAAE,GACxB,MAAM,CAuCR;AAkBD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA6B7E;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,cAAc,EAAE,EACzB,YAAY,EAAE;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;CAAE;;;;EAsDjE;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE;IACf,SAAS,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,GAAG,CAAC;IAClB,WAAW,EAAE,GAAG,CAAC;CAClB,GACA,KAAK,CA8BP;AAED,eAAO,MAAM,eAAe,WAAY,GAAG,SAAS,KAAK,YA8BxD,CAAC"}
@@ -45,28 +45,35 @@ function generateTwoDPivotQuery(pivot, query, columns) {
45
45
  FROM original_query GROUP BY ${pivot.rowField}`;
46
46
  }
47
47
  export function isValidPivot(pivot) {
48
- if (pivot.rowField && pivot.aggregationType === 'count') {
49
- return true;
48
+ if (!pivot.rowField && !pivot.valueField) {
49
+ return {
50
+ valid: false,
51
+ reason: 'Row field cannot be empty without a value field',
52
+ };
50
53
  }
51
- else if (pivot.rowField &&
52
- pivot.valueField &&
53
- pivot.aggregationType &&
54
- !pivot.columnField) {
55
- return true;
56
- }
57
- else if (pivot.valueField &&
58
- pivot.aggregationType &&
59
- !pivot.columnField &&
60
- !pivot.rowField) {
61
- return true;
62
- }
63
- else if (pivot.rowField &&
64
- pivot.columnField &&
65
- pivot.valueField &&
66
- pivot.aggregationType) {
67
- return true;
54
+ else if (!pivot.rowField && pivot.columnField) {
55
+ return {
56
+ valid: false,
57
+ reason: 'Row field cannot be empty when column field is present',
58
+ };
59
+ }
60
+ else if (!pivot.aggregationType) {
61
+ return { valid: false, reason: 'Aggregation type cannot be empty' };
62
+ }
63
+ else if (pivot.aggregationType === 'percentage' &&
64
+ (!pivot.valueField2 || !pivot.valueField)) {
65
+ return {
66
+ valid: false,
67
+ reason: 'Percentage aggregation requires two value fields',
68
+ };
69
+ }
70
+ else if (!pivot.valueField && pivot.aggregationType !== 'count') {
71
+ return {
72
+ valid: false,
73
+ reason: 'Value field cannot be empty when aggregation is not "count"',
74
+ };
68
75
  }
69
- return false;
76
+ return { valid: true, reason: '' };
70
77
  }
71
78
  export function getPossiblePivotFieldOptions(columns, uniqueValues) {
72
79
  const rowFields = [];
@@ -1 +1 @@
1
- {"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAoBxC,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAEvB,uBAAuB,CAAC,EAAE,OAAO,EACjC,sBAAsB,CAAC,EAAE,OAAO,UAqEjC;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAE1D;AAwDD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAsBrB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAYrB;AAiDD,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAcrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAgCpB"}
1
+ {"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AA0BxC,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAEvB,uBAAuB,CAAC,EAAE,OAAO,EACjC,sBAAsB,CAAC,EAAE,OAAO,UA+EjC;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAE1D;AAkED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAsBrB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAYrB;AAiDD,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAgBrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAgCpB"}
@@ -1,7 +1,9 @@
1
+ import { isStringType } from './columnProcessing';
1
2
  import { MAX_PIVOT_UNIQUE_VALUES } from './constants';
2
3
  import { isValidPivot } from './pivotProcessing';
4
+ import { matchCasing } from './textProcessing';
3
5
  function processSingleQuotes(value, databaseType) {
4
- if (['postgresql', 'snowflake'].includes(databaseType.toLowerCase())) {
6
+ if (['postgresql', 'snowflake', 'clickhouse'].includes(databaseType.toLowerCase())) {
5
7
  return value.replaceAll("'", "''");
6
8
  }
7
9
  return value.replaceAll("'", "\\'");
@@ -17,70 +19,80 @@ function replaceBigQuerySpecialCharacters(column) {
17
19
  export function processColumnReference(column, databaseType, fallbackOnNull,
18
20
  // for mysql, we only want to use double quotes for pivot column field aliases
19
21
  isPivotColumnFieldAlias, isPivotValueFieldAlias) {
20
- if (['postgresql'].includes(databaseType.toLowerCase())) {
21
- if (isPivotColumnFieldAlias) {
22
+ switch (databaseType.toLowerCase()) {
23
+ case 'postgresql':
24
+ case 'clickhouse': {
25
+ if (column === '') {
26
+ return fallbackOnNull ? `"${fallbackOnNull}"` : `"_"`;
27
+ }
28
+ if (isPivotColumnFieldAlias) {
29
+ return `"${column.replaceAll('"', '')}"`;
30
+ }
31
+ const columnParts = column.split('.');
32
+ if (columnParts.length > 1) {
33
+ return (`"` +
34
+ columnParts.map((part) => part.replaceAll('"', '')).join('"."') +
35
+ `"`);
36
+ }
22
37
  return `"${column.replaceAll('"', '')}"`;
23
38
  }
24
- const columnParts = column.split('.');
25
- if (columnParts.length > 1) {
26
- return (`"` +
27
- columnParts.map((part) => part.replaceAll('"', '')).join('"."') +
28
- `"`);
39
+ case 'mysql': {
40
+ if (column === '') {
41
+ return fallbackOnNull ? `${fallbackOnNull}` : '_';
42
+ }
43
+ if (isPivotColumnFieldAlias) {
44
+ return `\`${column.replaceAll(`\``, '').replaceAll(`"`, '')}\``;
45
+ }
46
+ const columnParts = column.split('.');
47
+ if (columnParts.length > 1) {
48
+ return (`\`` +
49
+ columnParts.map((part) => part.replaceAll(`\``, '')).join('`.`') +
50
+ `\``);
51
+ }
52
+ // Wrap MySQL columns in backticks to handle whitespace
53
+ return `\`${column.replaceAll(`\``, '')}\``;
29
54
  }
30
- if (column === '' && fallbackOnNull) {
31
- return `"${fallbackOnNull}"`;
32
- }
33
- return `"${column.replaceAll('"', '')}"`;
34
- }
35
- if (['mysql'].includes(databaseType.toLowerCase())) {
36
- if (isPivotColumnFieldAlias) {
37
- return `\`${column.replaceAll(`\``, '').replaceAll(`"`, '')}\``;
38
- }
39
- const columnParts = column.split('.');
40
- if (columnParts.length > 1) {
41
- return (`\`` +
42
- columnParts.map((part) => part.replaceAll(`\``, '')).join('`.`') +
43
- `\``);
44
- }
45
- if (column === '' && fallbackOnNull) {
46
- return `${fallbackOnNull}`;
47
- }
48
- // Wrap MySQL columns in backticks to handle whitespace
49
- return `\`${column.replaceAll(`\``, '')}\``;
50
- }
51
- if (['snowflake'].includes(databaseType.toLowerCase())) {
52
- if (isPivotColumnFieldAlias) {
53
- return `"${column.replaceAll('"', '')}"`;
55
+ case 'snowflake': {
56
+ if (column === '') {
57
+ return fallbackOnNull ? `${fallbackOnNull}` : '_';
58
+ }
59
+ if (isPivotColumnFieldAlias) {
60
+ return `"${column.replaceAll('"', '')}"`;
61
+ }
62
+ if (isPivotValueFieldAlias) {
63
+ const cleanedColumn = column.replaceAll(')', '').replaceAll('(', '_');
64
+ return `${cleanedColumn}`;
65
+ }
66
+ // const columnParts = column.split('.');
67
+ // if (columnParts.length > 1) {
68
+ // return '"' + columnParts.join('"."') + '"';
69
+ // }
70
+ return column;
54
71
  }
55
- if (isPivotValueFieldAlias) {
56
- const cleanedColumn = column.replaceAll(')', '').replaceAll('(', '_');
57
- return `${cleanedColumn}`;
72
+ case 'bigquery': {
73
+ if (column === '') {
74
+ return fallbackOnNull ? `\`${fallbackOnNull}\`` : '`_`';
75
+ }
76
+ if (isPivotColumnFieldAlias) {
77
+ return `\`${replaceBigQuerySpecialCharacters(column.replaceAll('`', ''))}\``;
78
+ }
79
+ const columnParts = column.split('.');
80
+ if (columnParts.length > 1) {
81
+ return (`\`` +
82
+ columnParts.map((part) => part.replaceAll(`\``, '')).join('`.`') +
83
+ `\``);
84
+ }
85
+ return `\`${replaceBigQuerySpecialCharacters(column.replaceAll('`', ''))}\``;
58
86
  }
59
- // const columnParts = column.split('.');
60
- // if (columnParts.length > 1) {
61
- // return '"' + columnParts.join('"."') + '"';
62
- // }
63
- if (column === '' && fallbackOnNull) {
64
- return `${fallbackOnNull}`;
65
- }
66
- return column;
67
- }
68
- if (isPivotColumnFieldAlias) {
69
- return `\`${column.replaceAll('`', '')}\``;
70
- }
71
- const columnParts = column.split('.');
72
- if (columnParts.length > 1) {
73
- return (`\`` +
74
- columnParts.map((part) => part.replaceAll(`\``, '')).join('`.`') +
75
- `\``);
87
+ default:
88
+ return column;
76
89
  }
77
- return `\`${replaceBigQuerySpecialCharacters(column.replaceAll('`', ''))}\``;
78
90
  }
79
91
  export function replaceSpacesWithUnderscores(column) {
80
92
  return column.replaceAll(' ', '_');
81
93
  }
82
94
  function processInterval(interval, rowField, databaseType) {
83
- if (['postgresql', 'snowflake'].includes(databaseType.toLowerCase())) {
95
+ if (['postgresql', 'snowflake', 'clickhouse'].includes(databaseType.toLowerCase())) {
84
96
  return `(${processColumnReference(rowField, databaseType)} + INTERVAL '${interval}')`;
85
97
  }
86
98
  else if (databaseType.toLowerCase() === 'mysql') {
@@ -95,6 +107,12 @@ function processDateTrunc(dateBucket, rowField, databaseType, comparisonInterval
95
107
  : processColumnReference(rowField, databaseType);
96
108
  return `date_trunc('${dateBucket}', ${dateField})`;
97
109
  }
110
+ if (['clickhouse'].includes(databaseType.toLowerCase())) {
111
+ const dateField = comparisonInterval
112
+ ? processInterval(comparisonInterval, rowField, databaseType)
113
+ : processColumnReference(rowField, databaseType);
114
+ return `dateTrunc('${dateBucket}', ${dateField})`;
115
+ }
98
116
  if (['mysql'].includes(databaseType.toLowerCase())) {
99
117
  const dateField = comparisonInterval
100
118
  ? processInterval(comparisonInterval, rowField, databaseType)
@@ -185,7 +203,7 @@ export function generateMinMaxDateRangeQueries(columnFields, query, databaseType
185
203
  const max = 'MAX';
186
204
  const min = 'MIN';
187
205
  const distinctQueries = columnFields.map((field) => {
188
- const wrappedField = ['postgresql'].includes(databaseType.toLowerCase())
206
+ const wrappedField = ['postgresql', 'clickhouse'].includes(databaseType.toLowerCase())
189
207
  ? `"${field}"`
190
208
  : field;
191
209
  return `SELECT '${field}' AS field, ${min}(${wrappedField}) AS min_range, ${max}(${wrappedField}) AS max_range FROM querytable`;
@@ -194,7 +212,7 @@ export function generateMinMaxDateRangeQueries(columnFields, query, databaseType
194
212
  return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
195
213
  }
196
214
  export function generatePivotQuery(pivot, itemQueries, databaseType, comparisonInterval, distinctStrings, dateBucket, rowLimit) {
197
- if (!isValidPivot(pivot)) {
215
+ if (!isValidPivot(pivot).valid) {
198
216
  return undefined;
199
217
  }
200
218
  if (pivot.columnField) {
@@ -212,8 +230,7 @@ function create2DPivotQuery(pivot, itemQueries, databaseType, dateBucket, compar
212
230
  if (!columnFieldValues) {
213
231
  return undefined;
214
232
  }
215
- if (['string', 'varchar', 'text', 'char'].includes(pivot.rowFieldType || '') ||
216
- !pivot.rowFieldType) {
233
+ if (isStringType(pivot.rowFieldType || '') || !pivot.rowFieldType) {
217
234
  return create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databaseType, rowLimit);
218
235
  }
219
236
  return create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseType, dateBucket, comparisonInterval, rowLimit);
@@ -226,9 +243,9 @@ function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databas
226
243
  const valueField = pivot.valueField;
227
244
  const columnField = pivot.columnField;
228
245
  const rowFieldAlias = processColumnReference(rowField, databaseType, undefined, false, true);
229
- const valueFieldAlias = processColumnReference(valueField, databaseType, undefined, false, true);
246
+ const valueFieldAlias = processColumnReference(valueField ?? rowField, databaseType, undefined, false, true);
230
247
  const columnFieldAlias = processColumnReference(columnField, databaseType, undefined, false, true);
231
- const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
248
+ const max = 'GREATEST';
232
249
  const valueAliasSubstring = valueField
233
250
  ? `${processColumnReference(valueField, databaseType, undefined, true)} AS ${valueFieldAlias},`
234
251
  : '';
@@ -250,7 +267,7 @@ function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databas
250
267
  ${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
251
268
  : '';
252
269
  const compareCaseWhenCTE = itemQueries[1]
253
- ? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
270
+ ? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}${caseWhensCompare.length > 0 ? `, ${caseWhensCompare.join(', ')}` : ''} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
254
271
  : '';
255
272
  const joinQuery = itemQueries[1]
256
273
  ? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)} = qt.${rowFieldAlias}`
@@ -258,7 +275,7 @@ function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databas
258
275
  return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
259
276
  quill_alias AS (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
260
277
  ${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_qt),
261
- quill_qt_cw AS (SELECT ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${rowFieldAlias})
278
+ quill_qt_cw AS (SELECT ${rowFieldAlias}${caseWhens.length > 0 ? `, ${caseWhens.join(', ')}` : ''} FROM quill_alias GROUP BY ${rowFieldAlias})
262
279
  ${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
263
280
  SELECT * FROM quill_qt_cw qt
264
281
  ${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
@@ -277,7 +294,7 @@ function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databas
277
294
  ${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
278
295
  : '';
279
296
  const compareCaseWhenCTE = itemQueries[1]
280
- ? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
297
+ ? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}${caseWhensCompare.length > 0 ? `, ${caseWhensCompare.join(', ')}` : ''} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
281
298
  : '';
282
299
  const joinQuery = itemQueries[1]
283
300
  ? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)} = qt.${rowFieldAlias}`
@@ -285,7 +302,7 @@ function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databas
285
302
  return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
286
303
  quill_alias AS (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring} ${value2AliasSubstring}
287
304
  ${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_qt),
288
- quill_qt_cw AS (SELECT ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${rowFieldAlias})
305
+ quill_qt_cw AS (SELECT ${rowFieldAlias}${caseWhens.length > 0 ? `, ${caseWhens.join(', ')}` : ''} FROM quill_alias GROUP BY ${rowFieldAlias})
289
306
  ${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
290
307
  SELECT * FROM quill_qt_cw qt
291
308
  ${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
@@ -304,7 +321,7 @@ function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databas
304
321
  ${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
305
322
  : '';
306
323
  const compareCaseWhenCTE = itemQueries[1]
307
- ? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
324
+ ? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}${caseWhensCompare.length > 0 ? `, ${caseWhensCompare.join(', ')}` : ''} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
308
325
  : '';
309
326
  const joinQuery = itemQueries[1]
310
327
  ? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)} = qt.${rowFieldAlias}`
@@ -312,7 +329,7 @@ function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databas
312
329
  return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
313
330
  quill_alias AS (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
314
331
  ${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_qt),
315
- quill_qt_cw AS (SELECT ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${rowFieldAlias})
332
+ quill_qt_cw AS (SELECT ${rowFieldAlias}${caseWhens.length > 0 ? `, ${caseWhens.join(', ')}` : ''} FROM quill_alias GROUP BY ${rowFieldAlias})
316
333
  ${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
317
334
  SELECT * FROM quill_qt_cw qt
318
335
  ${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
@@ -329,7 +346,7 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
329
346
  const valueAliasSubstring = pivot.valueField
330
347
  ? `${processColumnReference(pivot.valueField, databaseType, undefined, true)} AS ${valueFieldAlias},`
331
348
  : '';
332
- const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
349
+ const max = 'GREATEST';
333
350
  if (pivot.aggregationType === 'percentage' && pivot.valueField2) {
334
351
  const valueField2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
335
352
  const value2AliasSubstring = `${processColumnReference(pivot.valueField2, databaseType, undefined, true)} AS ${valueField2Alias},`;
@@ -349,7 +366,7 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
349
366
  ${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
350
367
  : '';
351
368
  const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
352
- ? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${processDateTrunc(dateBucket, rowField, databaseType)})`
369
+ ? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}${caseWhensCompare.length > 0 ? `, ${caseWhensCompare.join(', ')}` : ''} FROM quill_c_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
353
370
  : '';
354
371
  const joinQuery = itemQueries[1] && comparisonInterval
355
372
  ? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${rowFieldAlias} = ${processDateTrunc(dateBucket, `ct.comparison_${rowFieldAlias}`, databaseType, comparisonInterval)}`
@@ -357,7 +374,7 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
357
374
  return `WITH quill_query_table AS (${itemQueries[0]?.replaceAll(';', '')}),
358
375
  quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
359
376
  ${processColumnReference(columnField, databaseType, undefined, true, true)} AS ${columnFieldAlias} FROM quill_query_table),
360
- quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
377
+ quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}${caseWhens.length > 0 ? `, ${caseWhens.join(', ')}` : ''} FROM quill_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
361
378
  ${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
362
379
  SELECT * FROM quill_qt_agg qt
363
380
  ${joinQuery} ORDER BY qt.${rowFieldAlias}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
@@ -376,7 +393,7 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
376
393
  ${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
377
394
  : '';
378
395
  const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
379
- ? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${processDateTrunc(dateBucket, rowField, databaseType)})`
396
+ ? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}${caseWhensCompare.length > 0 ? `, ${caseWhensCompare.join(', ')}` : ''} FROM quill_c_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
380
397
  : '';
381
398
  const joinQuery = itemQueries[1] && comparisonInterval
382
399
  ? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${rowFieldAlias} = ${processDateTrunc(dateBucket, `ct.comparison_${rowFieldAlias}`, databaseType, comparisonInterval)}`
@@ -384,7 +401,7 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
384
401
  return `WITH quill_query_table AS (${itemQueries[0]?.replaceAll(';', '')}),
385
402
  quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring} ${value2AliasSubstring}
386
403
  ${processColumnReference(columnField, databaseType, undefined, true, true)} AS ${columnFieldAlias} FROM quill_query_table),
387
- quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
404
+ quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}${caseWhens.length > 0 ? `, ${caseWhens.join(', ')}` : ''} FROM quill_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
388
405
  ${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
389
406
  SELECT * FROM quill_qt_agg qt
390
407
  ${joinQuery} ORDER BY qt.${rowFieldAlias}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
@@ -403,7 +420,7 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
403
420
  ${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
404
421
  : '';
405
422
  const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
406
- ? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${processDateTrunc(dateBucket, rowField, databaseType)})`
423
+ ? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}${caseWhensCompare.length > 0 ? `, ${caseWhensCompare.join(', ')}` : ''} FROM quill_c_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
407
424
  : '';
408
425
  const joinQuery = itemQueries[1] && comparisonInterval
409
426
  ? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${rowFieldAlias} = ${processDateTrunc(dateBucket, `ct.comparison_${rowFieldAlias}`, databaseType, comparisonInterval)}`
@@ -411,14 +428,13 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
411
428
  return `WITH quill_query_table AS (${itemQueries[0]?.replaceAll(';', '')}),
412
429
  quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
413
430
  ${processColumnReference(columnField, databaseType, undefined, true, true)} AS ${columnFieldAlias} FROM quill_query_table),
414
- quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
431
+ quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}${caseWhens.length > 0 ? `, ${caseWhens.join(', ')}` : ''} FROM quill_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
415
432
  ${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
416
433
  SELECT * FROM quill_qt_agg qt
417
434
  ${joinQuery} ORDER BY qt.${rowFieldAlias}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
418
435
  }
419
436
  function create1DPivotQuery(pivot, itemQueries, dateBucket = 'month', databaseType, comparisonInterval, rowLimit) {
420
- if (['string', 'varchar', 'text', 'char'].includes(pivot.rowFieldType || '') ||
421
- !pivot.rowFieldType) {
437
+ if (isStringType(pivot.rowFieldType || '') || !pivot.rowFieldType) {
422
438
  return create1DStringPivotQuery(pivot, itemQueries, databaseType, rowLimit);
423
439
  }
424
440
  return create1DDatePivotQuery(pivot, itemQueries, dateBucket, databaseType, comparisonInterval, rowLimit);
@@ -429,7 +445,7 @@ function create1DStringPivotQuery(pivot, itemQueries, databaseType, rowLimit) {
429
445
  const rowAlias = processColumnReference(rowField, databaseType, undefined, false, true);
430
446
  const valueAlias = processColumnReference(valueField ?? rowField, databaseType, undefined, false, true);
431
447
  const countAlias = processColumnReference('count', databaseType);
432
- const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
448
+ const max = 'GREATEST';
433
449
  const valueAliasSubstring = valueField
434
450
  ? `, ${processColumnReference(`${valueField}`, databaseType, undefined, true)} AS ${valueAlias}`
435
451
  : ``;
@@ -452,7 +468,7 @@ function create1DStringPivotQuery(pivot, itemQueries, databaseType, rowLimit) {
452
468
  : '';
453
469
  return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
454
470
  quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowAlias}${valueAliasSubstring}${value2AliasSubstring} FROM quill_qt),
455
- quill_qt_cw AS (SELECT ${rowAlias}, sum(${valueAlias}) / ${max}(sum(${value2Alias}), 1) as ${valueField ? valueAlias : countAlias}_PERCENTAGE FROM quill_alias GROUP BY ${rowAlias})
471
+ quill_qt_cw AS (SELECT ${rowAlias}, sum(${valueAlias}) / ${max}(sum(${value2Alias}), 1) as ${processColumnReference(`${valueField ?? ''}_${matchCasing('percentage', valueField)}`, databaseType, undefined, false, true)} FROM quill_alias GROUP BY ${rowAlias})
456
472
  ${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
457
473
  SELECT * FROM quill_qt_cw qt
458
474
  ${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
@@ -485,7 +501,7 @@ function create1DDatePivotQuery(pivot, itemQueries, dateBucket = 'month', databa
485
501
  const valueAliasSubstring = valueField
486
502
  ? `, ${processColumnReference(`${valueField}`, databaseType, undefined, true)} AS ${valueFieldAlias}`
487
503
  : ``;
488
- const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
504
+ const max = 'GREATEST';
489
505
  // this "and" is for typescript. in reality, pivot.valueField2 must exist if pivot.aggregationType === 'percentage'
490
506
  if (pivot.aggregationType === 'percentage' && pivot.valueField2) {
491
507
  const valueField2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
@@ -500,14 +516,14 @@ function create1DDatePivotQuery(pivot, itemQueries, dateBucket = 'month', databa
500
516
  : '';
501
517
  const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
502
518
  ? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)},
503
- sum(${processColumnReference(`${valueFieldAlias}`, databaseType, undefined, true)}) / ${max}(sum(${processColumnReference(`${valueField2Alias}`, databaseType, undefined, true)}), 1) as ${processColumnReference(`comparison_${valueField ? valueFieldAlias : 'count'}`, databaseType)}_PERCENTAGE FROM quill_c_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
519
+ sum(${processColumnReference(`${valueFieldAlias}`, databaseType, undefined, true)}) / ${max}(sum(${processColumnReference(`${valueField2Alias}`, databaseType, undefined, true)}), 1) as ${processColumnReference(`comparison_${valueField ? valueFieldAlias : 'count'}_${matchCasing('percentage', valueField)}`, databaseType, undefined, false, true)} FROM quill_c_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
504
520
  : '';
505
521
  const joinQuery = itemQueries[1] && comparisonInterval
506
522
  ? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${processColumnReference(rowField, databaseType)} = ${processDateTrunc(dateBucket, `ct.comparison_${rowField}`, databaseType, comparisonInterval)}`
507
523
  : '';
508
524
  return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
509
525
  quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}${valueAliasSubstring}${value2AliasSubstring} FROM quill_qt),
510
- quill_qt_agg AS (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`${rowField}`, databaseType)}, sum(${valueFieldAlias}) / ${max}(sum(${valueField2Alias}), 1) as ${valueField ? valueFieldAlias : countAlias}_PERCENTAGE FROM quill_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
526
+ quill_qt_agg AS (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`${rowField}`, databaseType)}, sum(${valueFieldAlias}) / ${max}(sum(${valueField2Alias}), 1) as ${processColumnReference(`${valueField ?? ''}_${matchCasing('percentage', valueField)}`, databaseType, undefined, false, true)} FROM quill_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
511
527
  ${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
512
528
  SELECT * FROM quill_qt_agg qt
513
529
  ${joinQuery} ORDER BY qt.${processColumnReference(`${rowField}`, databaseType)}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
@@ -520,14 +536,14 @@ function create1DDatePivotQuery(pivot, itemQueries, dateBucket = 'month', databa
520
536
  : '';
521
537
  const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
522
538
  ? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)},
523
- ${processAggType(pivot.aggregationType)}(${valueFieldAlias}) as ${processColumnReference(`comparison_${valueField ? valueFieldAlias : 'count'}`, databaseType)} FROM quill_c_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
539
+ ${processAggType(pivot.aggregationType)}(${valueFieldAlias}) as ${processColumnReference(`comparison_${valueField ? valueFieldAlias : 'count'}`, databaseType)} FROM quill_c_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
524
540
  : '';
525
541
  const joinQuery = itemQueries[1] && comparisonInterval
526
542
  ? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${processColumnReference(rowField, databaseType)} = ${processDateTrunc(dateBucket, `ct.comparison_${rowField}`, databaseType, comparisonInterval)}`
527
543
  : '';
528
544
  return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
529
545
  quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}${valueAliasSubstring} FROM quill_qt),
530
- quill_qt_agg AS (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`${rowField}`, databaseType)}, ${processAggType(pivot.aggregationType)}(${valueField ? valueFieldAlias : rowFieldAlias}) as ${valueField ? valueFieldAlias : countAlias} FROM quill_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
546
+ quill_qt_agg AS (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`${rowField}`, databaseType)}, ${processAggType(pivot.aggregationType)}(${valueField ? valueFieldAlias : rowFieldAlias}) as ${valueField ? valueFieldAlias : countAlias} FROM quill_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
531
547
  ${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
532
548
  SELECT * FROM quill_qt_agg qt
533
549
  ${joinQuery} ORDER BY qt.${processColumnReference(`${rowField}`, databaseType)}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
@@ -540,7 +556,7 @@ function createAggregationValuePivot(pivot, itemQueries, databaseType, rowLimit)
540
556
  const valueAlias = processColumnReference(valueField, databaseType, undefined, false, true);
541
557
  if (aggregationType === 'percentage' && pivot.valueField2) {
542
558
  const value2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
543
- const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
559
+ const max = 'GREATEST';
544
560
  const compareCTE = itemQueries[1]
545
561
  ? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
546
562
  : '';
@@ -548,11 +564,11 @@ function createAggregationValuePivot(pivot, itemQueries, databaseType, rowLimit)
548
564
  ? `, quill_c_alias as (SELECT ${processColumnReference(valueField, databaseType, undefined, true)} AS ${valueAlias}, ${processColumnReference(pivot.valueField2, databaseType, undefined, true)} AS ${value2Alias} FROM quill_ct)`
549
565
  : '';
550
566
  const compareAggregation = itemQueries[1]
551
- ? `, quill_ct_cw as (SELECT sum(${processColumnReference(`${valueField}`, databaseType)}) / ${max}(sum(${processColumnReference(`${pivot.valueField2}`, databaseType)}), 1) as ${processColumnReference(`comparison_${valueField}_PERCENTAGE`, databaseType)} FROM quill_c_alias)`
567
+ ? `, quill_ct_cw as (SELECT sum(${processColumnReference(`${valueField}`, databaseType)}) / ${max}(sum(${processColumnReference(`${pivot.valueField2}`, databaseType)}), 1) as ${processColumnReference(`comparison_${valueField}_${matchCasing('percentage', valueField)}`, databaseType, undefined, false, true)} FROM quill_c_alias)`
552
568
  : '';
553
569
  const joinQuery = itemQueries[1] ? `CROSS JOIN quill_ct_cw ct` : '';
554
570
  return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}), quill_alias AS (SELECT ${processColumnReference(`${valueField}`, databaseType, undefined, true)} AS ${valueAlias}, ${processColumnReference(`${pivot.valueField2}`, databaseType, undefined, true)} AS ${value2Alias} FROM quill_qt),
555
- quill_qt_agg AS (SELECT sum(${valueAlias}) / ${max}(sum(${value2Alias}), 1) as ${processColumnReference(`${valueField}`, databaseType)}_PERCENTAGE FROM quill_alias)
571
+ quill_qt_agg AS (SELECT sum(${valueAlias}) / ${max}(sum(${value2Alias}), 1) as ${processColumnReference(`${valueField}_${matchCasing('percentage', valueField)}`, databaseType)} FROM quill_alias)
556
572
  ${compareCTE} ${aliasCTE} ${compareAggregation}
557
573
  SELECT * FROM quill_qt_agg qt
558
574
  ${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
@@ -25,7 +25,10 @@ export type ReportBuilderInfo = {
25
25
  };
26
26
  export declare const EMPTY_REPORT: QuillReport;
27
27
  export declare const EMPTY_INTERNAL_REPORT: QuillReportInternal;
28
- export declare function fetchReport(reportId: string, client: QuillProviderClient, useReportTask?: boolean, filters?: any[], additionalProcessing?: AdditionalProcessing, dateBucket?: string, customFields?: any, rowsOnly?: boolean, rowCountOnly?: boolean, abortSignal?: AbortSignal, getDefaultDashboardFilters?: boolean): Promise<{
28
+ export declare function fetchReport(reportId: string, client: QuillProviderClient, tenants?: {
29
+ tenantField: string;
30
+ tenantIds: (string | number)[];
31
+ }[] | (string | number)[], flags?: string[], useReportTask?: boolean, filters?: any[], additionalProcessing?: AdditionalProcessing, dateBucket?: string, customFields?: any, rowsOnly?: boolean, rowCountOnly?: boolean, abortSignal?: AbortSignal, getDefaultDashboardFilters?: boolean): Promise<{
29
32
  report: QuillReportInternal;
30
33
  error?: string;
31
34
  }>;
@@ -36,11 +39,17 @@ export declare function processReportResponse({ resp, client, filters, dateBucke
36
39
  dateBucket?: string;
37
40
  additionalProcessing?: AdditionalProcessing;
38
41
  }): Promise<QuillReportInternal>;
39
- export declare function fetchReportInfo(reportId: string, client: QuillProviderClient): Promise<{
42
+ export declare function fetchReportInfo(reportId: string, client: QuillProviderClient, tenants?: {
43
+ tenantField: string;
44
+ tenantIds: (string | number)[];
45
+ }[] | (string | number)[]): Promise<{
40
46
  report: any;
41
47
  filters: any;
42
48
  }>;
43
- export declare function fetchReportRowCount(reportId: string, client: QuillProviderClient, useReportTask?: boolean, filters?: any[], additionalProcessing?: AdditionalProcessing, customFields?: any, abortSignal?: AbortSignal): Promise<number | undefined>;
49
+ export declare function fetchReportRowCount(reportId: string, client: QuillProviderClient, tenants?: {
50
+ tenantField: string;
51
+ tenantIds: (string | number)[];
52
+ }[] | (string | number)[], flags?: string[], useReportTask?: boolean, filters?: any[], additionalProcessing?: AdditionalProcessing, customFields?: any, abortSignal?: AbortSignal): Promise<number | undefined>;
44
53
  export declare function saveReport({ report, dashboardItemId, client, }: {
45
54
  report: any;
46
55
  dashboardItemId?: string;
@@ -48,8 +57,11 @@ export declare function saveReport({ report, dashboardItemId, client, }: {
48
57
  }): Promise<any>;
49
58
  export declare const formatRowsFromReport: (report: any, xAxisField?: string, xAxisFormat?: string) => any;
50
59
  export declare function convertInternalReportToReport(report: QuillReportInternal, dashboardFilters: DashboardFilter[], initiator?: string): QuillReport;
51
- export declare const fetchReportBuilderDataFromAST: (baseAst: any, formData: any, schema: Table[], client: QuillProviderClient, pivot?: Pivot, previousFormData?: any, currentTable?: string, previousRelevant?: {
60
+ export declare const fetchReportBuilderDataFromAST: (baseAst: any, formData: any, schema: Table[], client: QuillProviderClient, tenants?: {
61
+ tenantField: string;
62
+ tenantIds: (string | number)[];
63
+ }[] | (string | number)[], pivot?: Pivot, previousFormData?: any, currentTable?: string, previousRelevant?: {
52
64
  uniqueStrings: UniqueValuesByTable;
53
65
  dateRanges: DateRangesByColumn;
54
- }, report?: QuillReportInternal, customFields?: any, skipUniqueValues?: boolean, skipRowCount?: boolean, processing?: AdditionalProcessing) => Promise<ReportBuilderInfo>;
66
+ }, report?: QuillReportInternal, customFields?: any, skipUniqueValues?: boolean, skipRowCount?: boolean, processing?: AdditionalProcessing, dashboardName?: string) => Promise<ReportBuilderInfo>;
55
67
  //# sourceMappingURL=report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAU,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EACL,kBAAkB,EAClB,KAAK,EACL,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EACL,oBAAoB,EAKrB,MAAM,mBAAmB,CAAC;AAI3B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,OAAO,EAAE,cAAc,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,aAAa,EAAE,GAAG,EAAE,CAAC;IACrB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,mBAAmB,CAAC;IAClC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,WAiB1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,mBAGnC,CAAC;AA4BF,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,aAAa,UAAO,EACpB,OAAO,GAAE,GAAG,EAAO,EACnB,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,GAAG,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,YAAY,CAAC,EAAE,OAAO,EACtB,WAAW,CAAC,EAAE,WAAW,EACzB,0BAA0B,CAAC,EAAE,OAAO,GACnC,OAAO,CAAC;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoE1D;AAED,wBAAsB,qBAAqB,CAAC,EAC1C,IAAI,EACJ,MAAM,EACN,OAAO,EACP,UAAU,EACV,oBAAoB,GACrB,EAAE;IACD,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAC,eAAe,GAAG,cAAc,CAAC,EAAE,CAAC;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkE/B;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB;;;GA0B5B;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,aAAa,UAAO,EACpB,OAAO,GAAE,GAAG,EAAO,EACnB,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,YAAY,CAAC,EAAE,GAAG,EAClB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmC7B;AAED,wBAAsB,UAAU,CAAC,EAC/B,MAAM,EACN,eAAe,EACf,MAAM,GACP,EAAE;IACD,MAAM,EAAE,GAAG,CAAC;IACZ,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,mBAAmB,CAAC;CAC7B,GAAG,OAAO,CAAC,GAAG,CAAC,CA4Cf;AAED,eAAO,MAAM,oBAAoB,WACvB,GAAG,eACE,MAAM,gBACL,MAAM,QAsBrB,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,mBAAmB,EAC3B,gBAAgB,EAAE,eAAe,EAAE,EACnC,SAAS,CAAC,EAAE,MAAM,GACjB,WAAW,CAkEb;AAED,eAAO,MAAM,6BAA6B,YAC/B,GAAG,YACF,GAAG,UACL,KAAK,EAAE,UACP,mBAAmB,UACnB,KAAK,qBACM,GAAG,iBACP,MAAM,qBACF;IACjB,aAAa,EAAE,mBAAmB,CAAC;IACnC,UAAU,EAAE,kBAAkB,CAAC;CAChC,WACQ,mBAAmB,iBACb,GAAG,qBACC,OAAO,iBACX,OAAO,eACT,oBAAoB,KAChC,OAAO,CAAC,iBAAiB,CA8K3B,CAAC"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"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"}