@quillsql/react 2.12.35 → 2.12.37

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 (475) hide show
  1. package/dist/cjs/Chart.d.ts +2 -1
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +3 -3
  4. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  5. package/dist/cjs/ChartBuilder.js +3 -3
  6. package/dist/cjs/Dashboard.d.ts.map +1 -1
  7. package/dist/cjs/Dashboard.js +2 -2
  8. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  9. package/dist/cjs/ReportBuilder.js +13 -0
  10. package/dist/cjs/SQLEditor.js +2 -1
  11. package/dist/cjs/components/Chart/BarList.d.ts +1 -0
  12. package/dist/cjs/components/Chart/BarList.d.ts.map +1 -1
  13. package/dist/cjs/components/Chart/BarList.js +3 -3
  14. package/dist/cjs/components/Chart/ChartError.js +1 -1
  15. package/dist/cjs/utils/dashboard.js +1 -1
  16. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  17. package/dist/cjs/utils/dataFetcher.js +7 -1
  18. package/dist/cjs/utils/dataProcessing.d.ts +1 -0
  19. package/dist/cjs/utils/dataProcessing.d.ts.map +1 -1
  20. package/dist/cjs/utils/dataProcessing.js +20 -1
  21. package/dist/cjs/utils/queryConstructor.d.ts +1 -1
  22. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  23. package/dist/cjs/utils/queryConstructor.js +8 -5
  24. package/dist/cjs/utils/report.d.ts.map +1 -1
  25. package/dist/cjs/utils/report.js +17 -5
  26. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  27. package/dist/cjs/utils/tableProcessing.js +7 -0
  28. package/package.json +1 -1
  29. package/dist/esm/Chart.d.ts +0 -203
  30. package/dist/esm/Chart.d.ts.map +0 -1
  31. package/dist/esm/Chart.js +0 -431
  32. package/dist/esm/ChartBuilder.d.ts +0 -339
  33. package/dist/esm/ChartBuilder.d.ts.map +0 -1
  34. package/dist/esm/ChartBuilder.js +0 -1312
  35. package/dist/esm/ChartEditor.d.ts +0 -209
  36. package/dist/esm/ChartEditor.d.ts.map +0 -1
  37. package/dist/esm/ChartEditor.js +0 -182
  38. package/dist/esm/Context.d.ts +0 -14
  39. package/dist/esm/Context.d.ts.map +0 -1
  40. package/dist/esm/Context.js +0 -269
  41. package/dist/esm/Dashboard.d.ts +0 -279
  42. package/dist/esm/Dashboard.d.ts.map +0 -1
  43. package/dist/esm/Dashboard.js +0 -660
  44. package/dist/esm/DateRangePicker/Calendar.d.ts +0 -17
  45. package/dist/esm/DateRangePicker/Calendar.d.ts.map +0 -1
  46. package/dist/esm/DateRangePicker/Calendar.js +0 -164
  47. package/dist/esm/DateRangePicker/DateRangePicker.d.ts +0 -39
  48. package/dist/esm/DateRangePicker/DateRangePicker.d.ts.map +0 -1
  49. package/dist/esm/DateRangePicker/DateRangePicker.js +0 -95
  50. package/dist/esm/DateRangePicker/DateRangePickerButton.d.ts +0 -22
  51. package/dist/esm/DateRangePicker/DateRangePickerButton.d.ts.map +0 -1
  52. package/dist/esm/DateRangePicker/DateRangePickerButton.js +0 -134
  53. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +0 -25
  54. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +0 -1
  55. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +0 -260
  56. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +0 -80
  57. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +0 -1
  58. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +0 -521
  59. package/dist/esm/DateRangePicker/index.d.ts +0 -3
  60. package/dist/esm/DateRangePicker/index.d.ts.map +0 -1
  61. package/dist/esm/DateRangePicker/index.js +0 -2
  62. package/dist/esm/QuillProvider.d.ts +0 -163
  63. package/dist/esm/QuillProvider.d.ts.map +0 -1
  64. package/dist/esm/QuillProvider.js +0 -104
  65. package/dist/esm/ReportBuilder.d.ts +0 -318
  66. package/dist/esm/ReportBuilder.d.ts.map +0 -1
  67. package/dist/esm/ReportBuilder.js +0 -3266
  68. package/dist/esm/SQLEditor.d.ts +0 -272
  69. package/dist/esm/SQLEditor.d.ts.map +0 -1
  70. package/dist/esm/SQLEditor.js +0 -509
  71. package/dist/esm/Table.d.ts +0 -167
  72. package/dist/esm/Table.d.ts.map +0 -1
  73. package/dist/esm/Table.js +0 -215
  74. package/dist/esm/TableChart.d.ts +0 -15
  75. package/dist/esm/TableChart.d.ts.map +0 -1
  76. package/dist/esm/TableChart.js +0 -95
  77. package/dist/esm/assets/ArrowDownHeadIcon.d.ts +0 -5
  78. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +0 -1
  79. package/dist/esm/assets/ArrowDownHeadIcon.js +0 -3
  80. package/dist/esm/assets/ArrowDownIcon.d.ts +0 -5
  81. package/dist/esm/assets/ArrowDownIcon.d.ts.map +0 -1
  82. package/dist/esm/assets/ArrowDownIcon.js +0 -3
  83. package/dist/esm/assets/ArrowDownRightIcon.d.ts +0 -5
  84. package/dist/esm/assets/ArrowDownRightIcon.d.ts.map +0 -1
  85. package/dist/esm/assets/ArrowDownRightIcon.js +0 -3
  86. package/dist/esm/assets/ArrowLeftHeadIcon.d.ts +0 -5
  87. package/dist/esm/assets/ArrowLeftHeadIcon.d.ts.map +0 -1
  88. package/dist/esm/assets/ArrowLeftHeadIcon.js +0 -3
  89. package/dist/esm/assets/ArrowRightHeadIcon.d.ts +0 -5
  90. package/dist/esm/assets/ArrowRightHeadIcon.d.ts.map +0 -1
  91. package/dist/esm/assets/ArrowRightHeadIcon.js +0 -3
  92. package/dist/esm/assets/ArrowRightIcon.d.ts +0 -5
  93. package/dist/esm/assets/ArrowRightIcon.d.ts.map +0 -1
  94. package/dist/esm/assets/ArrowRightIcon.js +0 -3
  95. package/dist/esm/assets/ArrowUpHeadIcon.d.ts +0 -5
  96. package/dist/esm/assets/ArrowUpHeadIcon.d.ts.map +0 -1
  97. package/dist/esm/assets/ArrowUpHeadIcon.js +0 -3
  98. package/dist/esm/assets/ArrowUpIcon.d.ts +0 -5
  99. package/dist/esm/assets/ArrowUpIcon.d.ts.map +0 -1
  100. package/dist/esm/assets/ArrowUpIcon.js +0 -3
  101. package/dist/esm/assets/ArrowUpRightIcon.d.ts +0 -5
  102. package/dist/esm/assets/ArrowUpRightIcon.d.ts.map +0 -1
  103. package/dist/esm/assets/ArrowUpRightIcon.js +0 -3
  104. package/dist/esm/assets/CalendarIcon.d.ts +0 -5
  105. package/dist/esm/assets/CalendarIcon.d.ts.map +0 -1
  106. package/dist/esm/assets/CalendarIcon.js +0 -3
  107. package/dist/esm/assets/CalendarNormalIcon.d.ts +0 -5
  108. package/dist/esm/assets/CalendarNormalIcon.d.ts.map +0 -1
  109. package/dist/esm/assets/CalendarNormalIcon.js +0 -3
  110. package/dist/esm/assets/DoubleArrowLeftHeadIcon.d.ts +0 -5
  111. package/dist/esm/assets/DoubleArrowLeftHeadIcon.d.ts.map +0 -1
  112. package/dist/esm/assets/DoubleArrowLeftHeadIcon.js +0 -3
  113. package/dist/esm/assets/DoubleArrowRightHeadIcon.d.ts +0 -5
  114. package/dist/esm/assets/DoubleArrowRightHeadIcon.d.ts.map +0 -1
  115. package/dist/esm/assets/DoubleArrowRightHeadIcon.js +0 -3
  116. package/dist/esm/assets/ExclamationFilledIcon.d.ts +0 -5
  117. package/dist/esm/assets/ExclamationFilledIcon.d.ts.map +0 -1
  118. package/dist/esm/assets/ExclamationFilledIcon.js +0 -3
  119. package/dist/esm/assets/FilterIcon.d.ts +0 -5
  120. package/dist/esm/assets/FilterIcon.d.ts.map +0 -1
  121. package/dist/esm/assets/FilterIcon.js +0 -3
  122. package/dist/esm/assets/LoadingSpinner.d.ts +0 -5
  123. package/dist/esm/assets/LoadingSpinner.d.ts.map +0 -1
  124. package/dist/esm/assets/LoadingSpinner.js +0 -3
  125. package/dist/esm/assets/RefreshIcon.d.ts +0 -5
  126. package/dist/esm/assets/RefreshIcon.d.ts.map +0 -1
  127. package/dist/esm/assets/RefreshIcon.js +0 -3
  128. package/dist/esm/assets/SearchIcon.d.ts +0 -5
  129. package/dist/esm/assets/SearchIcon.d.ts.map +0 -1
  130. package/dist/esm/assets/SearchIcon.js +0 -3
  131. package/dist/esm/assets/UpLeftArrowsIcon.d.ts +0 -5
  132. package/dist/esm/assets/UpLeftArrowsIcon.d.ts.map +0 -1
  133. package/dist/esm/assets/UpLeftArrowsIcon.js +0 -3
  134. package/dist/esm/assets/XCircleIcon.d.ts +0 -5
  135. package/dist/esm/assets/XCircleIcon.d.ts.map +0 -1
  136. package/dist/esm/assets/XCircleIcon.js +0 -3
  137. package/dist/esm/assets/XIcon.d.ts +0 -5
  138. package/dist/esm/assets/XIcon.d.ts.map +0 -1
  139. package/dist/esm/assets/XIcon.js +0 -3
  140. package/dist/esm/assets/index.d.ts +0 -22
  141. package/dist/esm/assets/index.d.ts.map +0 -1
  142. package/dist/esm/assets/index.js +0 -21
  143. package/dist/esm/components/Banner/index.d.ts +0 -3
  144. package/dist/esm/components/Banner/index.d.ts.map +0 -1
  145. package/dist/esm/components/Banner/index.js +0 -24
  146. package/dist/esm/components/BigModal/BigModal.d.ts +0 -15
  147. package/dist/esm/components/BigModal/BigModal.d.ts.map +0 -1
  148. package/dist/esm/components/BigModal/BigModal.js +0 -56
  149. package/dist/esm/components/Chart/BarChart.d.ts +0 -23
  150. package/dist/esm/components/Chart/BarChart.d.ts.map +0 -1
  151. package/dist/esm/components/Chart/BarChart.js +0 -110
  152. package/dist/esm/components/Chart/BarList.d.ts +0 -26
  153. package/dist/esm/components/Chart/BarList.d.ts.map +0 -1
  154. package/dist/esm/components/Chart/BarList.js +0 -148
  155. package/dist/esm/components/Chart/ChartError.d.ts +0 -10
  156. package/dist/esm/components/Chart/ChartError.d.ts.map +0 -1
  157. package/dist/esm/components/Chart/ChartError.js +0 -65
  158. package/dist/esm/components/Chart/ChartSkeleton.d.ts +0 -8
  159. package/dist/esm/components/Chart/ChartSkeleton.d.ts.map +0 -1
  160. package/dist/esm/components/Chart/ChartSkeleton.js +0 -19
  161. package/dist/esm/components/Chart/ChartTooltip.d.ts +0 -31
  162. package/dist/esm/components/Chart/ChartTooltip.d.ts.map +0 -1
  163. package/dist/esm/components/Chart/ChartTooltip.js +0 -234
  164. package/dist/esm/components/Chart/ChartTooltipFrame.d.ts +0 -6
  165. package/dist/esm/components/Chart/ChartTooltipFrame.d.ts.map +0 -1
  166. package/dist/esm/components/Chart/ChartTooltipFrame.js +0 -14
  167. package/dist/esm/components/Chart/ChartTooltipGroup.d.ts +0 -11
  168. package/dist/esm/components/Chart/ChartTooltipGroup.d.ts.map +0 -1
  169. package/dist/esm/components/Chart/ChartTooltipGroup.js +0 -23
  170. package/dist/esm/components/Chart/ChartTooltipRow.d.ts +0 -8
  171. package/dist/esm/components/Chart/ChartTooltipRow.d.ts.map +0 -1
  172. package/dist/esm/components/Chart/ChartTooltipRow.js +0 -41
  173. package/dist/esm/components/Chart/LineChart.d.ts +0 -29
  174. package/dist/esm/components/Chart/LineChart.d.ts.map +0 -1
  175. package/dist/esm/components/Chart/LineChart.js +0 -163
  176. package/dist/esm/components/Chart/PieChart.d.ts +0 -62
  177. package/dist/esm/components/Chart/PieChart.d.ts.map +0 -1
  178. package/dist/esm/components/Chart/PieChart.js +0 -195
  179. package/dist/esm/components/Dashboard/ChartComponent.d.ts +0 -4
  180. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +0 -1
  181. package/dist/esm/components/Dashboard/ChartComponent.js +0 -60
  182. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +0 -38
  183. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +0 -1
  184. package/dist/esm/components/Dashboard/DashboardFilter.js +0 -89
  185. package/dist/esm/components/Dashboard/DashboardSection.d.ts +0 -7
  186. package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +0 -1
  187. package/dist/esm/components/Dashboard/DashboardSection.js +0 -22
  188. package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts +0 -3
  189. package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts.map +0 -1
  190. package/dist/esm/components/Dashboard/DashboardSectionContainer.js +0 -10
  191. package/dist/esm/components/Dashboard/DataLoader.d.ts +0 -44
  192. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +0 -1
  193. package/dist/esm/components/Dashboard/DataLoader.js +0 -190
  194. package/dist/esm/components/Dashboard/MetricComponent.d.ts +0 -4
  195. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +0 -1
  196. package/dist/esm/components/Dashboard/MetricComponent.js +0 -133
  197. package/dist/esm/components/Dashboard/TableComponent.d.ts +0 -15
  198. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +0 -1
  199. package/dist/esm/components/Dashboard/TableComponent.js +0 -62
  200. package/dist/esm/components/Dropdown/Dropdown.d.ts +0 -14
  201. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +0 -1
  202. package/dist/esm/components/Dropdown/Dropdown.js +0 -69
  203. package/dist/esm/components/Dropdown/DropdownItem.d.ts +0 -11
  204. package/dist/esm/components/Dropdown/DropdownItem.d.ts.map +0 -1
  205. package/dist/esm/components/Dropdown/DropdownItem.js +0 -37
  206. package/dist/esm/components/Dropdown/index.d.ts +0 -3
  207. package/dist/esm/components/Dropdown/index.d.ts.map +0 -1
  208. package/dist/esm/components/Dropdown/index.js +0 -2
  209. package/dist/esm/components/Modal/Modal.d.ts +0 -15
  210. package/dist/esm/components/Modal/Modal.d.ts.map +0 -1
  211. package/dist/esm/components/Modal/Modal.js +0 -64
  212. package/dist/esm/components/Modal/index.d.ts +0 -2
  213. package/dist/esm/components/Modal/index.d.ts.map +0 -1
  214. package/dist/esm/components/Modal/index.js +0 -1
  215. package/dist/esm/components/QuillCard.d.ts +0 -9
  216. package/dist/esm/components/QuillCard.d.ts.map +0 -1
  217. package/dist/esm/components/QuillCard.js +0 -56
  218. package/dist/esm/components/QuillMultiSelect.d.ts +0 -11
  219. package/dist/esm/components/QuillMultiSelect.d.ts.map +0 -1
  220. package/dist/esm/components/QuillMultiSelect.js +0 -193
  221. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +0 -11
  222. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +0 -1
  223. package/dist/esm/components/QuillMultiSelectWithCombo.js +0 -215
  224. package/dist/esm/components/QuillSelect.d.ts +0 -6
  225. package/dist/esm/components/QuillSelect.d.ts.map +0 -1
  226. package/dist/esm/components/QuillSelect.js +0 -136
  227. package/dist/esm/components/QuillSelectWithCombo.d.ts +0 -6
  228. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +0 -1
  229. package/dist/esm/components/QuillSelectWithCombo.js +0 -163
  230. package/dist/esm/components/QuillTable.d.ts +0 -31
  231. package/dist/esm/components/QuillTable.d.ts.map +0 -1
  232. package/dist/esm/components/QuillTable.js +0 -261
  233. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +0 -34
  234. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +0 -1
  235. package/dist/esm/components/ReportBuilder/AddColumnModal.js +0 -145
  236. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +0 -26
  237. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +0 -1
  238. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +0 -36
  239. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +0 -23
  240. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +0 -1
  241. package/dist/esm/components/ReportBuilder/AddSortPopover.js +0 -73
  242. package/dist/esm/components/ReportBuilder/FilterModal.d.ts +0 -30
  243. package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +0 -1
  244. package/dist/esm/components/ReportBuilder/FilterModal.js +0 -576
  245. package/dist/esm/components/ReportBuilder/ast.d.ts +0 -523
  246. package/dist/esm/components/ReportBuilder/ast.d.ts.map +0 -1
  247. package/dist/esm/components/ReportBuilder/ast.js +0 -230
  248. package/dist/esm/components/ReportBuilder/bigDateMap.d.ts +0 -7
  249. package/dist/esm/components/ReportBuilder/bigDateMap.d.ts.map +0 -1
  250. package/dist/esm/components/ReportBuilder/bigDateMap.js +0 -687
  251. package/dist/esm/components/ReportBuilder/constants.d.ts +0 -117
  252. package/dist/esm/components/ReportBuilder/constants.d.ts.map +0 -1
  253. package/dist/esm/components/ReportBuilder/constants.js +0 -161
  254. package/dist/esm/components/ReportBuilder/convert.d.ts +0 -65
  255. package/dist/esm/components/ReportBuilder/convert.d.ts.map +0 -1
  256. package/dist/esm/components/ReportBuilder/convert.js +0 -717
  257. package/dist/esm/components/ReportBuilder/operators.d.ts +0 -462
  258. package/dist/esm/components/ReportBuilder/operators.d.ts.map +0 -1
  259. package/dist/esm/components/ReportBuilder/operators.js +0 -581
  260. package/dist/esm/components/ReportBuilder/pivot.d.ts +0 -16
  261. package/dist/esm/components/ReportBuilder/pivot.d.ts.map +0 -1
  262. package/dist/esm/components/ReportBuilder/pivot.js +0 -1
  263. package/dist/esm/components/ReportBuilder/postgres.d.ts +0 -150
  264. package/dist/esm/components/ReportBuilder/postgres.d.ts.map +0 -1
  265. package/dist/esm/components/ReportBuilder/postgres.js +0 -355
  266. package/dist/esm/components/ReportBuilder/schema.d.ts +0 -23
  267. package/dist/esm/components/ReportBuilder/schema.d.ts.map +0 -1
  268. package/dist/esm/components/ReportBuilder/schema.js +0 -1
  269. package/dist/esm/components/ReportBuilder/ui.d.ts +0 -119
  270. package/dist/esm/components/ReportBuilder/ui.d.ts.map +0 -1
  271. package/dist/esm/components/ReportBuilder/ui.js +0 -382
  272. package/dist/esm/components/ReportBuilder/util.d.ts +0 -76
  273. package/dist/esm/components/ReportBuilder/util.d.ts.map +0 -1
  274. package/dist/esm/components/ReportBuilder/util.js +0 -729
  275. package/dist/esm/components/UiComponents.d.ts +0 -221
  276. package/dist/esm/components/UiComponents.d.ts.map +0 -1
  277. package/dist/esm/components/UiComponents.js +0 -571
  278. package/dist/esm/components/selectUtils.d.ts +0 -9
  279. package/dist/esm/components/selectUtils.d.ts.map +0 -1
  280. package/dist/esm/components/selectUtils.js +0 -17
  281. package/dist/esm/contexts/BaseColorContext.d.ts +0 -4
  282. package/dist/esm/contexts/BaseColorContext.d.ts.map +0 -1
  283. package/dist/esm/contexts/BaseColorContext.js +0 -3
  284. package/dist/esm/contexts/HoveredValueContext.d.ts +0 -8
  285. package/dist/esm/contexts/HoveredValueContext.d.ts.map +0 -1
  286. package/dist/esm/contexts/HoveredValueContext.js +0 -5
  287. package/dist/esm/contexts/RootStylesContext.d.ts +0 -4
  288. package/dist/esm/contexts/RootStylesContext.d.ts.map +0 -1
  289. package/dist/esm/contexts/RootStylesContext.js +0 -3
  290. package/dist/esm/contexts/SelectedValueContext.d.ts +0 -8
  291. package/dist/esm/contexts/SelectedValueContext.d.ts.map +0 -1
  292. package/dist/esm/contexts/SelectedValueContext.js +0 -6
  293. package/dist/esm/contexts/index.d.ts +0 -5
  294. package/dist/esm/contexts/index.d.ts.map +0 -1
  295. package/dist/esm/contexts/index.js +0 -4
  296. package/dist/esm/hooks/index.d.ts +0 -6
  297. package/dist/esm/hooks/index.d.ts.map +0 -1
  298. package/dist/esm/hooks/index.js +0 -5
  299. package/dist/esm/hooks/useAstToFilterTree.d.ts +0 -11
  300. package/dist/esm/hooks/useAstToFilterTree.d.ts.map +0 -1
  301. package/dist/esm/hooks/useAstToFilterTree.js +0 -24
  302. package/dist/esm/hooks/useDashboard.d.ts +0 -7
  303. package/dist/esm/hooks/useDashboard.d.ts.map +0 -1
  304. package/dist/esm/hooks/useDashboard.js +0 -69
  305. package/dist/esm/hooks/useExport.d.ts +0 -6
  306. package/dist/esm/hooks/useExport.d.ts.map +0 -1
  307. package/dist/esm/hooks/useExport.js +0 -125
  308. package/dist/esm/hooks/useFormat.d.ts +0 -5
  309. package/dist/esm/hooks/useFormat.d.ts.map +0 -1
  310. package/dist/esm/hooks/useFormat.js +0 -25
  311. package/dist/esm/hooks/useInternalState.d.ts +0 -4
  312. package/dist/esm/hooks/useInternalState.d.ts.map +0 -1
  313. package/dist/esm/hooks/useInternalState.js +0 -14
  314. package/dist/esm/hooks/useOnClickOutside.d.ts +0 -3
  315. package/dist/esm/hooks/useOnClickOutside.d.ts.map +0 -1
  316. package/dist/esm/hooks/useOnClickOutside.js +0 -18
  317. package/dist/esm/hooks/useOnWindowResize.d.ts +0 -5
  318. package/dist/esm/hooks/useOnWindowResize.d.ts.map +0 -1
  319. package/dist/esm/hooks/useOnWindowResize.js +0 -14
  320. package/dist/esm/hooks/useQuill.d.ts +0 -37
  321. package/dist/esm/hooks/useQuill.d.ts.map +0 -1
  322. package/dist/esm/hooks/useQuill.js +0 -182
  323. package/dist/esm/hooks/useSelectOnKeyDown.d.ts +0 -3
  324. package/dist/esm/hooks/useSelectOnKeyDown.d.ts.map +0 -1
  325. package/dist/esm/hooks/useSelectOnKeyDown.js +0 -63
  326. package/dist/esm/hooks/useTheme.d.ts +0 -7
  327. package/dist/esm/hooks/useTheme.d.ts.map +0 -1
  328. package/dist/esm/hooks/useTheme.js +0 -10
  329. package/dist/esm/index.d.ts +0 -29
  330. package/dist/esm/index.d.ts.map +0 -1
  331. package/dist/esm/index.js +0 -16
  332. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +0 -28
  333. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +0 -1
  334. package/dist/esm/internals/ReportBuilder/PivotForm.js +0 -62
  335. package/dist/esm/internals/ReportBuilder/PivotList.d.ts +0 -39
  336. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +0 -1
  337. package/dist/esm/internals/ReportBuilder/PivotList.js +0 -89
  338. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +0 -146
  339. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +0 -1
  340. package/dist/esm/internals/ReportBuilder/PivotModal.js +0 -1210
  341. package/dist/esm/lib/font.d.ts +0 -14
  342. package/dist/esm/lib/font.d.ts.map +0 -1
  343. package/dist/esm/lib/font.js +0 -13
  344. package/dist/esm/lib/index.d.ts +0 -4
  345. package/dist/esm/lib/index.d.ts.map +0 -1
  346. package/dist/esm/lib/index.js +0 -3
  347. package/dist/esm/lib/inputTypes.d.ts +0 -21
  348. package/dist/esm/lib/inputTypes.d.ts.map +0 -1
  349. package/dist/esm/lib/inputTypes.js +0 -55
  350. package/dist/esm/lib/utils.d.ts +0 -10
  351. package/dist/esm/lib/utils.d.ts.map +0 -1
  352. package/dist/esm/lib/utils.js +0 -35
  353. package/dist/esm/models/Columns.d.ts +0 -12
  354. package/dist/esm/models/Columns.d.ts.map +0 -1
  355. package/dist/esm/models/Columns.js +0 -1
  356. package/dist/esm/models/Filter.d.ts +0 -118
  357. package/dist/esm/models/Filter.d.ts.map +0 -1
  358. package/dist/esm/models/Filter.js +0 -98
  359. package/dist/esm/models/Pagination.d.ts +0 -10
  360. package/dist/esm/models/Pagination.d.ts.map +0 -1
  361. package/dist/esm/models/Pagination.js +0 -1
  362. package/dist/esm/models/Pivots.d.ts +0 -2
  363. package/dist/esm/models/Pivots.d.ts.map +0 -1
  364. package/dist/esm/models/Pivots.js +0 -1
  365. package/dist/esm/models/Report.d.ts +0 -103
  366. package/dist/esm/models/Report.d.ts.map +0 -1
  367. package/dist/esm/models/Report.js +0 -1
  368. package/dist/esm/models/Tables.d.ts +0 -8
  369. package/dist/esm/models/Tables.d.ts.map +0 -1
  370. package/dist/esm/models/Tables.js +0 -1
  371. package/dist/esm/utils/aggregate.d.ts +0 -4
  372. package/dist/esm/utils/aggregate.d.ts.map +0 -1
  373. package/dist/esm/utils/aggregate.js +0 -422
  374. package/dist/esm/utils/astFilterProcessing.d.ts +0 -36
  375. package/dist/esm/utils/astFilterProcessing.d.ts.map +0 -1
  376. package/dist/esm/utils/astFilterProcessing.js +0 -8084
  377. package/dist/esm/utils/astProcessing.d.ts +0 -26
  378. package/dist/esm/utils/astProcessing.d.ts.map +0 -1
  379. package/dist/esm/utils/astProcessing.js +0 -254
  380. package/dist/esm/utils/axisFormatter.d.ts +0 -20
  381. package/dist/esm/utils/axisFormatter.d.ts.map +0 -1
  382. package/dist/esm/utils/axisFormatter.js +0 -179
  383. package/dist/esm/utils/color.d.ts +0 -44
  384. package/dist/esm/utils/color.d.ts.map +0 -1
  385. package/dist/esm/utils/color.js +0 -425
  386. package/dist/esm/utils/columnProcessing.d.ts +0 -13
  387. package/dist/esm/utils/columnProcessing.d.ts.map +0 -1
  388. package/dist/esm/utils/columnProcessing.js +0 -260
  389. package/dist/esm/utils/constants.d.ts +0 -2
  390. package/dist/esm/utils/constants.d.ts.map +0 -1
  391. package/dist/esm/utils/constants.js +0 -1
  392. package/dist/esm/utils/crypto.d.ts +0 -2
  393. package/dist/esm/utils/crypto.d.ts.map +0 -1
  394. package/dist/esm/utils/crypto.js +0 -10
  395. package/dist/esm/utils/csv.d.ts +0 -6
  396. package/dist/esm/utils/csv.d.ts.map +0 -1
  397. package/dist/esm/utils/csv.js +0 -78
  398. package/dist/esm/utils/dashboard.d.ts +0 -13
  399. package/dist/esm/utils/dashboard.d.ts.map +0 -1
  400. package/dist/esm/utils/dashboard.js +0 -171
  401. package/dist/esm/utils/dataFetcher.d.ts +0 -3
  402. package/dist/esm/utils/dataFetcher.d.ts.map +0 -1
  403. package/dist/esm/utils/dataFetcher.js +0 -199
  404. package/dist/esm/utils/dataProcessing.d.ts +0 -10
  405. package/dist/esm/utils/dataProcessing.d.ts.map +0 -1
  406. package/dist/esm/utils/dataProcessing.js +0 -144
  407. package/dist/esm/utils/dates.d.ts +0 -20
  408. package/dist/esm/utils/dates.d.ts.map +0 -1
  409. package/dist/esm/utils/dates.js +0 -95
  410. package/dist/esm/utils/error.d.ts +0 -5
  411. package/dist/esm/utils/error.d.ts.map +0 -1
  412. package/dist/esm/utils/error.js +0 -8
  413. package/dist/esm/utils/errorProcessing.d.ts +0 -2
  414. package/dist/esm/utils/errorProcessing.d.ts.map +0 -1
  415. package/dist/esm/utils/errorProcessing.js +0 -5
  416. package/dist/esm/utils/filterConstants.d.ts +0 -34
  417. package/dist/esm/utils/filterConstants.d.ts.map +0 -1
  418. package/dist/esm/utils/filterConstants.js +0 -33
  419. package/dist/esm/utils/filterProcessing.d.ts +0 -10
  420. package/dist/esm/utils/filterProcessing.d.ts.map +0 -1
  421. package/dist/esm/utils/filterProcessing.js +0 -232
  422. package/dist/esm/utils/getDomain.d.ts +0 -8
  423. package/dist/esm/utils/getDomain.d.ts.map +0 -1
  424. package/dist/esm/utils/getDomain.js +0 -52
  425. package/dist/esm/utils/logging.d.ts +0 -2
  426. package/dist/esm/utils/logging.d.ts.map +0 -1
  427. package/dist/esm/utils/logging.js +0 -7
  428. package/dist/esm/utils/merge.d.ts +0 -2
  429. package/dist/esm/utils/merge.d.ts.map +0 -1
  430. package/dist/esm/utils/merge.js +0 -18
  431. package/dist/esm/utils/monacoConfig.d.ts +0 -21
  432. package/dist/esm/utils/monacoConfig.d.ts.map +0 -1
  433. package/dist/esm/utils/monacoConfig.js +0 -319
  434. package/dist/esm/utils/paginationProcessing.d.ts +0 -5
  435. package/dist/esm/utils/paginationProcessing.d.ts.map +0 -1
  436. package/dist/esm/utils/paginationProcessing.js +0 -25
  437. package/dist/esm/utils/parserBigQuery.d.ts +0 -6
  438. package/dist/esm/utils/parserBigQuery.d.ts.map +0 -1
  439. package/dist/esm/utils/parserBigQuery.js +0 -52
  440. package/dist/esm/utils/parserPostgres.d.ts +0 -3
  441. package/dist/esm/utils/parserPostgres.d.ts.map +0 -1
  442. package/dist/esm/utils/parserPostgres.js +0 -37
  443. package/dist/esm/utils/pivotConstructor.d.ts +0 -7
  444. package/dist/esm/utils/pivotConstructor.d.ts.map +0 -1
  445. package/dist/esm/utils/pivotConstructor.js +0 -151
  446. package/dist/esm/utils/pivotProcessing.d.ts +0 -17
  447. package/dist/esm/utils/pivotProcessing.d.ts.map +0 -1
  448. package/dist/esm/utils/pivotProcessing.js +0 -132
  449. package/dist/esm/utils/queryConstructor.d.ts +0 -7
  450. package/dist/esm/utils/queryConstructor.d.ts.map +0 -1
  451. package/dist/esm/utils/queryConstructor.js +0 -223
  452. package/dist/esm/utils/report.d.ts +0 -10
  453. package/dist/esm/utils/report.d.ts.map +0 -1
  454. package/dist/esm/utils/report.js +0 -174
  455. package/dist/esm/utils/schema.d.ts +0 -6
  456. package/dist/esm/utils/schema.d.ts.map +0 -1
  457. package/dist/esm/utils/schema.js +0 -153
  458. package/dist/esm/utils/styles.d.ts +0 -17
  459. package/dist/esm/utils/styles.d.ts.map +0 -1
  460. package/dist/esm/utils/styles.js +0 -16
  461. package/dist/esm/utils/tableProcessing.d.ts +0 -45
  462. package/dist/esm/utils/tableProcessing.d.ts.map +0 -1
  463. package/dist/esm/utils/tableProcessing.js +0 -293
  464. package/dist/esm/utils/textProcessing.d.ts +0 -6
  465. package/dist/esm/utils/textProcessing.d.ts.map +0 -1
  466. package/dist/esm/utils/textProcessing.js +0 -49
  467. package/dist/esm/utils/validation.d.ts +0 -9
  468. package/dist/esm/utils/validation.d.ts.map +0 -1
  469. package/dist/esm/utils/validation.js +0 -20
  470. package/dist/esm/utils/valueFormatter.d.ts +0 -29
  471. package/dist/esm/utils/valueFormatter.d.ts.map +0 -1
  472. package/dist/esm/utils/valueFormatter.js +0 -342
  473. package/dist/esm/utils/width.d.ts +0 -12
  474. package/dist/esm/utils/width.d.ts.map +0 -1
  475. package/dist/esm/utils/width.js +0 -21
@@ -1,717 +0,0 @@
1
- import { isValid, parseISO } from 'date-fns';
2
- import { generatePivotTitle } from '../../internals/ReportBuilder/PivotModal';
3
- import { extractColumnish, isSelect, isLogicalBinaryExpr, isBigQuery, isNumericColumnType, getColumnName, } from './ast';
4
- import { generateColumnExpr, isIdColumn } from './util';
5
- import { convertColumnInfoToColumnInternal } from '../../utils/columnProcessing';
6
- // Helper functions that preprocess the AST.
7
- // Find and replace certain pre-set date comparison queries with their
8
- // more stable counterparts.
9
- // TODO: implement me
10
- // eslint-disable-next-line no-unused-vars
11
- export function convertDateComparison(node) {
12
- function searchAndReplace(obj) {
13
- if (Array.isArray(obj)) {
14
- // If the current node is an array, process each element of the array
15
- obj.forEach((element) => {
16
- searchAndReplace(element);
17
- });
18
- }
19
- else if (typeof obj === 'object' && obj !== null) {
20
- // "Created in the past 90 days" should be written in SQL as:
21
- // "created_at" >= date_trunc('day', CURRENT_DATE) - INTERVAL '90 days';
22
- // "created_at" >= date_trunc('month', CURRENT_DATE) - INTERVAL '6 months';
23
- // TODO: add more matchers here
24
- }
25
- else {
26
- // If the current object does not match the pattern, continue searching its properties
27
- Object.values(obj).forEach((value) => {
28
- searchAndReplace(value);
29
- });
30
- }
31
- }
32
- // Start the recursive search and replace from the root node
33
- searchAndReplace(node);
34
- return node;
35
- }
36
- // THIS IS ONLY USEFUL TO CONVERT FUNCTIONS INTO OTHER FUNCTIONS FOR BIGQUERY FOR FILTERS
37
- export function recursiveSearchAndReplace(node, search, replace) {
38
- if (typeof node !== 'object') {
39
- return;
40
- }
41
- if (node) {
42
- Object.keys(node).forEach((key) => {
43
- recursiveSearchAndReplace(node[key], search, replace);
44
- if (node[key] === search) {
45
- node[key] = replace;
46
- }
47
- });
48
- }
49
- }
50
- // THIS IS USED TO REPLACE UNITS IN INTERVALS FOR BIGQUERY
51
- export function recursiveSearchAndReplaceByKey(node, search, replace, searchKey) {
52
- if (typeof node !== 'object') {
53
- return;
54
- }
55
- if (node) {
56
- Object.keys(node).forEach((key) => {
57
- recursiveSearchAndReplaceByKey(node[key], search, replace, searchKey);
58
- if (searchKey === key && node[key] === search) {
59
- node[key] = replace;
60
- }
61
- });
62
- }
63
- }
64
- /**
65
- * Takes a bigquery AST as input, cleans it, and returns a Select AST.
66
- */
67
- export function convertBigQuery(ast) {
68
- // For BigQuery, the info we want is nested inside the 'select' key
69
- if (isBigQuery(ast)) {
70
- const newAst = ast.select;
71
- newAst.from?.forEach((tbl) => {
72
- tbl.table = tbl.table.replaceAll('`', '');
73
- });
74
- if (newAst.columns && Array.isArray(newAst.columns)) {
75
- newAst.columns.forEach((col) => {
76
- if (col.expr && !col.type) {
77
- col.type = 'expr';
78
- }
79
- });
80
- }
81
- // Look through every node in the AST convert every instance of DATE_SUB to TIMESTAMP_SUB
82
- recursiveSearchAndReplace(newAst.where, 'DATE_SUB', 'TIMESTAMP_SUB');
83
- recursiveSearchAndReplace(newAst.where, 'CURRENT_DATE', 'CURRENT_TIMESTAMP');
84
- recursiveSearchAndReplace(newAst.where, 'DATE_TRUNC', 'TIMESTAMP_TRUNC');
85
- recursiveSearchAndReplace(newAst.where, 'DATE', 'TIMESTAMP');
86
- // JANK: If anyone is here this is how you have to do intervals in BigQuery no joke
87
- recursiveSearchAndReplaceByKey(newAst.where, 'year', '* 365 DAY', 'unit');
88
- recursiveSearchAndReplaceByKey(newAst.where, 'week', '* 7 DAY', 'unit');
89
- recursiveSearchAndReplaceByKey(newAst.where, 'month', '* 30 DAY', 'unit');
90
- // TODO: handle joins nicely
91
- if (newAst.from && newAst.from.length > 1) {
92
- newAst.from = [newAst.from[0]];
93
- }
94
- // TODO: handle UNION ALL joins
95
- if (newAst._next) {
96
- delete newAst._next;
97
- }
98
- return newAst;
99
- }
100
- else {
101
- // TODO: handle joins nicely
102
- if (ast.from && ast.from.length > 1) {
103
- ast.from = [ast.from[0]];
104
- }
105
- // TODO: handle UNION ALL joins
106
- if (ast._next) {
107
- delete ast._next;
108
- }
109
- return ast;
110
- }
111
- }
112
- function columnExistsInNewColumns(columns, col) {
113
- return columns.find((c) => [c.expr?.value, c.expr?.column, c.expr?.column?.expr?.value, c.as].includes(col));
114
- }
115
- /**
116
- * Replaces the wildcard column selector with their literal column names.
117
- */
118
- export function convertWildcardColumns(ast, schemaTables) {
119
- if (ast.columns !== '*' &&
120
- ast.columns.length !== 0 &&
121
- (!ast.columns[0].expr || ast.columns[0].expr.column !== '*')) {
122
- return ast;
123
- }
124
- if (!ast.from)
125
- return ast;
126
- // Map SELECT(*) to their actual columns
127
- const tableNamesInQuery = ast.from.map((tbl) => tbl.table);
128
- const allColumns = schemaTables
129
- .filter((t) => tableNamesInQuery.includes(t.displayName))
130
- .flatMap((table) => table.columns);
131
- return {
132
- ...ast,
133
- columns: allColumns.map((column) => ({
134
- type: 'expr',
135
- expr: {
136
- type: 'column_ref',
137
- table: null,
138
- column: column.name,
139
- },
140
- as: null,
141
- })),
142
- };
143
- }
144
- /**
145
- * Take a list of AST column objects of any form and turn them into the generic select form
146
- */
147
- export function convertColumnToGenericColumns(astColumns) {
148
- const genericColumnReferences = [];
149
- astColumns.forEach((column) => {
150
- const columnName = getColumnName(column);
151
- if (!columnName) {
152
- return;
153
- }
154
- genericColumnReferences.push({
155
- type: 'expr',
156
- expr: {
157
- type: 'column_ref',
158
- table: null,
159
- column: columnName,
160
- },
161
- as: columnName,
162
- });
163
- });
164
- return genericColumnReferences;
165
- }
166
- function cleanASTColumns(ast, columns) {
167
- let newColumns = convertColumnToGenericColumns(ast.columns);
168
- const columnNames = [];
169
- newColumns = newColumns.filter((col) => {
170
- if (!columnNames.includes(col.as)) {
171
- columnNames.push(col.as);
172
- return true;
173
- }
174
- else {
175
- return false;
176
- }
177
- });
178
- newColumns = newColumns.filter((col) => columns.find((c) => c.field === col.as));
179
- return newColumns;
180
- }
181
- function addAllPivotColumnsToColumnAST(astColumns, pivot) {
182
- if (!pivot) {
183
- return;
184
- }
185
- [pivot.valueField, pivot.rowField, pivot.columnField].forEach((field) => {
186
- if (!field || columnExistsInNewColumns(astColumns, field)) {
187
- return;
188
- }
189
- if (field && !astColumns.find((col) => col.as === field)) {
190
- astColumns.push(generateColumnExpr(field));
191
- }
192
- });
193
- }
194
- function convertGroupByToPivotData(ast, columns, aliasMap) {
195
- if (!ast.groupby) {
196
- return {};
197
- }
198
- const pivot = {};
199
- const isDateTrunc = (item) => ['function', 'date_trunc'].includes(item.type);
200
- const isExtract = (item) => 'extract' === item.type;
201
- const isCol = (x) => ['double_quote_string', 'column_ref'].includes(x.type);
202
- const dateTruncGroup = ast.groupby.find(isDateTrunc);
203
- const extractGroup = ast.groupby.find(isExtract);
204
- if (dateTruncGroup) {
205
- const column = dateTruncGroup.args?.value.find(isCol);
206
- const columnName = extractColumnish(column);
207
- pivot.rowField = columnName;
208
- pivot.rowFieldType = columns.find((c) => c.field === columnName)?.fieldType;
209
- }
210
- else if (extractGroup) {
211
- const column = extractGroup.args?.source;
212
- const columnName = extractColumnish(column);
213
- pivot.rowField = columnName;
214
- pivot.rowFieldType = columns.find((c) => c.field === columnName)?.fieldType;
215
- }
216
- // Otherwise, set the first groupby to rowField then set
217
- // next field to columnField (if there is one)
218
- for (let j = 0; j < ast.groupby.length; j++) {
219
- const group = ast.groupby[j];
220
- let groupValue = extractColumnish(group);
221
- if (!groupValue || isIdColumn(groupValue)) {
222
- continue;
223
- }
224
- // check if this value is an alias, if so use concrete value
225
- if (groupValue && aliasMap[groupValue]) {
226
- groupValue = aliasMap[groupValue];
227
- }
228
- // Try to set the rowField and columnField.
229
- const column = columns.find((c) => c.field === groupValue);
230
- if (!column ||
231
- isNumericColumnType(column.fieldType) ||
232
- isIdColumn(column.field)) {
233
- continue;
234
- }
235
- if (!pivot.rowField) {
236
- pivot.rowField = groupValue;
237
- pivot.rowFieldType = columns.find((c) => c.field === groupValue)?.fieldType;
238
- }
239
- else if (!pivot.columnField && groupValue !== pivot.rowField) {
240
- pivot.columnField = groupValue;
241
- }
242
- }
243
- return pivot;
244
- }
245
- function convertCaseWhenToPivotData(column) {
246
- const pivot = {};
247
- const columnNode = column.expr?.args?.expr?.args[0]?.result;
248
- const columnName = columnNode?.value ?? columnNode?.column?.expr?.value ?? columnNode?.column;
249
- if (columnName && typeof columnName === 'string') {
250
- if (!isIdColumn(columnName)) {
251
- pivot.valueField = columnName;
252
- pivot.aggregationType = column?.expr?.name?.toLowerCase();
253
- if (pivot.aggregationType === 'avg') {
254
- pivot.aggregationType = 'average';
255
- }
256
- }
257
- }
258
- // We need to extract a column name from the condition expression of
259
- // the CASE and we'll use that as the columnField in our pivot.
260
- const condNode = column.expr?.args?.expr?.args[0]?.cond;
261
- const condColumnName = condNode.left?.column?.expr?.value ??
262
- condNode.left?.column ??
263
- condNode.left?.value;
264
- if (!isIdColumn(condColumnName)) {
265
- pivot.columnField = condColumnName;
266
- }
267
- return pivot;
268
- }
269
- export function convertASTToPivotData(ast, columnInfo) {
270
- const newPivot = {};
271
- const aliasMap = {};
272
- if (ast.columns === '*') {
273
- return null;
274
- }
275
- ast.columns.forEach((column) => {
276
- const columnName = getColumnName(column);
277
- if (!columnName) {
278
- return;
279
- }
280
- const alias = column.as || columnName;
281
- aliasMap[alias] = columnName;
282
- if (column.expr?.args?.expr?.type.toLowerCase() === 'case' &&
283
- ['double_quote_string', 'column_ref'].includes(column.expr?.args?.expr?.args[0]?.result?.type)) {
284
- const caseWhenPivot = convertCaseWhenToPivotData(column);
285
- newPivot.valueField = caseWhenPivot.valueField;
286
- newPivot.aggregationType = caseWhenPivot.aggregationType;
287
- newPivot.columnField = caseWhenPivot.columnField;
288
- }
289
- else if (column.expr.type === 'aggr_func' && !isIdColumn(columnName)) {
290
- const aggObj = column.expr;
291
- newPivot.aggregationType = aggObj.name.toLowerCase();
292
- if (newPivot.aggregationType === 'avg') {
293
- newPivot.aggregationType = 'average';
294
- }
295
- newPivot.valueField = columnName;
296
- }
297
- else if (column.expr.type === 'function') {
298
- const functionInfo = column.expr.name;
299
- if (Array.isArray(functionInfo.name) &&
300
- functionInfo.name[0].value &&
301
- ['timestamp_trunc', 'date_trunc', 'date_part'].includes(functionInfo.name[0].value.toLowerCase())) {
302
- newPivot.rowField = columnName;
303
- }
304
- }
305
- });
306
- const pivotData = convertGroupByToPivotData(ast, columnInfo, aliasMap);
307
- const finalPivot = { ...pivotData, ...newPivot };
308
- const isColumnDate = columnInfo.find((column) => column.field === finalPivot?.columnField)
309
- ?.fieldType === 'date';
310
- if (finalPivot) {
311
- // Make sure date fields are set to the rowField
312
- const isPivot1D = finalPivot.rowField && !finalPivot.columnField;
313
- if (finalPivot.columnField && isColumnDate) {
314
- [finalPivot.rowField, finalPivot.columnField] = [
315
- finalPivot.columnField,
316
- finalPivot.rowField,
317
- ];
318
- finalPivot.rowFieldType = 'date';
319
- }
320
- // Make sure pivot value field is of numeric type
321
- if (finalPivot.valueField) {
322
- const column = columnInfo.find((c) => c.field === finalPivot.valueField);
323
- if (!column || !isNumericColumnType(column.fieldType)) {
324
- // @ts-ignore
325
- finalPivot.valueField = null;
326
- finalPivot.aggregationType = 'count';
327
- }
328
- }
329
- if (finalPivot.rowFieldType === 'date') {
330
- finalPivot.sort = true;
331
- finalPivot.sortDirection = 'ASC';
332
- finalPivot.sortField = finalPivot.rowField;
333
- finalPivot.sortFieldType = finalPivot.rowFieldType;
334
- }
335
- else if (isPivot1D) {
336
- finalPivot.sort = true;
337
- finalPivot.sortDirection = 'ASC';
338
- finalPivot.sortField = finalPivot.rowField;
339
- finalPivot.sortFieldType = finalPivot.rowFieldType;
340
- }
341
- }
342
- return finalPivot;
343
- }
344
- function addValueFieldToPivot(newAst, pivot, columns) {
345
- if (!pivot) {
346
- return;
347
- }
348
- if (!pivot.valueField) {
349
- let firstNumericNonIdColumn = undefined;
350
- newAst.columns.forEach((col) => {
351
- if (!isIdColumn(col.as) &&
352
- isNumericColumnType(columns.find((c) => c.field === col.as)?.fieldType)) {
353
- firstNumericNonIdColumn = { ...col };
354
- }
355
- });
356
- if (firstNumericNonIdColumn) {
357
- pivot.valueField = firstNumericNonIdColumn.as;
358
- pivot.aggregationType = 'sum';
359
- }
360
- else {
361
- pivot.aggregationType = 'count';
362
- }
363
- }
364
- }
365
- /**
366
- * Processes the AST and builds up a new pivot, given the old AST, the old pivot
367
- * and a list of tables in the schema.
368
- */
369
- export function convertGroupBy(ast, prevPivot = null, schemaTables) {
370
- if (!isSelect(ast))
371
- return { ast, pivot: prevPivot };
372
- let newAst = {};
373
- let pivot;
374
- const newColumns = [];
375
- const tableNamesInQuery = (ast.from ?? []).map((tbl) => {
376
- // This assumes that all the entries in the from clause are BaseFrom.
377
- // TODO: Handle Join, TableExpr, and Dual (maybe not the last one).
378
- return tbl.table;
379
- });
380
- const columns = schemaTables
381
- .filter((t) => tableNamesInQuery.includes(t.displayName))
382
- .flatMap((table) => table.columns)
383
- .map((column) => {
384
- return convertColumnInfoToColumnInternal(column);
385
- });
386
- // If there is not GROUP BY clause in the AST, we still need to process the
387
- // AST but it should pass-through in nature.
388
- if (!ast.groupby) {
389
- // If there was a pivot before, evaluate the pivot.
390
- if (prevPivot) {
391
- // Make sure that the AST includes all the columns on the prevPivot
392
- const columnAlreadyExists = (col) => ast.columns.find((c) => [
393
- c.expr?.value,
394
- c.expr?.column,
395
- c.expr?.column?.expr?.value,
396
- c.as,
397
- ].includes(col));
398
- if (prevPivot.valueField) {
399
- const existingCol = columnAlreadyExists(prevPivot.valueField);
400
- newColumns.push(existingCol ?? generateColumnExpr(prevPivot.valueField));
401
- }
402
- if (prevPivot.rowField) {
403
- const existingCol = columnAlreadyExists(prevPivot.rowField);
404
- newColumns.push(existingCol ?? generateColumnExpr(prevPivot.rowField));
405
- }
406
- if (prevPivot.columnField) {
407
- const existingCol = columnAlreadyExists(prevPivot.columnField);
408
- newColumns.push(existingCol ?? generateColumnExpr(prevPivot.columnField));
409
- }
410
- ast.columns = newColumns;
411
- return { pivot: prevPivot, ast };
412
- }
413
- pivot = convertASTToPivotData(ast, columns);
414
- if (pivot && Object.keys(pivot).length === 0) {
415
- pivot = null;
416
- }
417
- addAllPivotColumnsToColumnAST(ast.columns, pivot);
418
- newAst = { ...ast };
419
- newAst.columns = cleanASTColumns(ast, columns);
420
- addValueFieldToPivot(newAst, pivot, columns);
421
- return { pivot, ast: newAst };
422
- }
423
- pivot = convertASTToPivotData(ast, columns);
424
- if (!pivot || pivot == null) {
425
- throw new Error('Pivot is null');
426
- }
427
- addAllPivotColumnsToColumnAST(ast.columns, pivot);
428
- newAst = { ...ast };
429
- newAst.groupby = null;
430
- newAst.columns = cleanASTColumns(ast, columns);
431
- // ADD sort if pivot has sort
432
- if (pivot.sort) {
433
- newAst.orderby = [
434
- {
435
- expr: { type: 'column_ref', table: null, column: pivot.rowField },
436
- type: newAst.orderby !== null ? newAst.orderby[0]?.type ?? 'DESC' : 'DESC',
437
- },
438
- ];
439
- }
440
- addValueFieldToPivot(newAst, pivot, columns);
441
- // @ts-ignore
442
- const title = generatePivotTitle(pivot);
443
- return { pivot: { ...pivot, title }, ast: newAst };
444
- }
445
- export function convertStringComparison(node, databaseType) {
446
- // Function to recursively search and replace the pattern in the object
447
- function searchAndReplace(obj) {
448
- if (Array.isArray(obj)) {
449
- // If the current node is an array, process each element of the array
450
- obj.forEach((element) => {
451
- searchAndReplace(element);
452
- });
453
- }
454
- else if (typeof obj === 'object' && obj !== null) {
455
- // If the current node is an object, check for the pattern
456
- if (obj.type === 'binary_expr' &&
457
- ((obj.operator === '=' && !isValid(parseISO(obj.right.value))) || // don't do it on date objects
458
- obj.operator === 'LIKE' ||
459
- obj.operator === 'ILIKE') &&
460
- obj.left &&
461
- (obj.left.type === 'column_ref' ||
462
- obj.left.type === 'double_quote_string') &&
463
- obj.right &&
464
- obj.right.type === 'single_quote_string') {
465
- // Pattern found, modify the current object to use LOWER and LIKE
466
- obj.operator = 'LIKE';
467
- obj.left = {
468
- type: 'function',
469
- name: {
470
- name: [
471
- {
472
- type: 'default',
473
- value: 'LOWER',
474
- },
475
- ],
476
- },
477
- args: {
478
- type: 'expr_list',
479
- value: [
480
- databaseType === 'BigQuery'
481
- ? {
482
- type: 'column_ref',
483
- value: obj.left.column?.expr?.value ||
484
- obj.left.column ||
485
- obj.left.value,
486
- }
487
- : {
488
- type: 'column_ref',
489
- table: null,
490
- column: {
491
- expr: {
492
- type: 'default',
493
- value: obj.left.column?.expr?.value ||
494
- obj.left.column ||
495
- obj.left.value,
496
- },
497
- },
498
- },
499
- ],
500
- },
501
- };
502
- obj.right = {
503
- type: 'function',
504
- name: {
505
- name: [
506
- {
507
- type: 'default',
508
- value: 'LOWER',
509
- },
510
- ],
511
- },
512
- args: {
513
- type: 'expr_list',
514
- value: [
515
- {
516
- type: 'single_quote_string',
517
- value: `%${obj.right.value.replaceAll('%', '')}%`,
518
- },
519
- ],
520
- },
521
- };
522
- }
523
- else if (obj.type === 'binary_expr' &&
524
- (obj.operator === '!=' ||
525
- obj.operator === 'NOT LIKE' ||
526
- obj.operator === 'NOT ILIKE' ||
527
- obj.operator === '<>') &&
528
- obj.left &&
529
- (obj.left.type === 'column_ref' ||
530
- obj.left.type === 'double_quote_string') &&
531
- obj.right &&
532
- obj.right.type === 'single_quote_string') {
533
- // Pattern found, modify the current object to use LOWER and LIKE
534
- obj.operator = 'NOT LIKE';
535
- obj.left = {
536
- type: 'function',
537
- name: {
538
- name: [
539
- {
540
- type: 'default',
541
- value: 'LOWER',
542
- },
543
- ],
544
- },
545
- args: {
546
- type: 'expr_list',
547
- value: [
548
- databaseType === 'BigQuery'
549
- ? {
550
- type: 'column_ref',
551
- value: obj.left.column?.expr?.value ||
552
- obj.left.column ||
553
- obj.left.value,
554
- }
555
- : {
556
- type: 'double_quote_string',
557
- value: obj.left.column?.expr?.value ||
558
- obj.left.column ||
559
- obj.left.value,
560
- },
561
- ],
562
- },
563
- };
564
- obj.right = {
565
- type: 'function',
566
- name: {
567
- name: [
568
- {
569
- type: 'default',
570
- value: 'LOWER',
571
- },
572
- ],
573
- },
574
- args: {
575
- type: 'expr_list',
576
- value: [
577
- {
578
- type: 'single_quote_string',
579
- value: `%${obj.right.value.replaceAll('%', '')}%`,
580
- },
581
- ],
582
- },
583
- };
584
- }
585
- else if (obj.type === 'binary_expr' &&
586
- (obj.operator === 'NOT IN' || obj.operator === 'IN') &&
587
- obj.left &&
588
- (obj.left.type === 'column_ref' ||
589
- obj.left.type === 'double_quote_string') &&
590
- obj.right &&
591
- obj.right.type === 'expr_list' &&
592
- obj.right.value &&
593
- obj.right.value.length &&
594
- obj.right.value[0].type === 'single_quote_string') {
595
- obj.left = {
596
- type: 'function',
597
- name: {
598
- name: [],
599
- schema: {
600
- type: 'default',
601
- value: 'LOWER',
602
- },
603
- },
604
- args: {
605
- type: 'expr_list',
606
- value: [
607
- databaseType === 'BigQuery'
608
- ? {
609
- type: 'column_ref',
610
- value: obj.left.column?.expr?.value ||
611
- obj.left.column ||
612
- obj.left.value,
613
- }
614
- : {
615
- type: 'double_quote_string',
616
- value: obj.left.column?.expr?.value ||
617
- obj.left.column ||
618
- obj.left.value,
619
- },
620
- ],
621
- },
622
- };
623
- obj.right = {
624
- type: 'expr_list',
625
- // convert NOT IN ('fuel', 'food') to NOT IN (LOWER('fuel'), LOWER('food'))
626
- value: obj.right.value.map((elem) => ({
627
- type: 'function',
628
- name: {
629
- name: [],
630
- schema: {
631
- type: 'default',
632
- value: 'LOWER',
633
- },
634
- },
635
- args: {
636
- type: 'expr_list',
637
- value: [{ type: 'single_quote_string', value: elem.value }],
638
- },
639
- })),
640
- };
641
- }
642
- else {
643
- // If the current object does not match the pattern, continue searching its properties
644
- Object.values(obj).forEach((value) => {
645
- searchAndReplace(value);
646
- });
647
- }
648
- }
649
- }
650
- // Start the recursive search and replace from the root node
651
- searchAndReplace(node);
652
- return node;
653
- }
654
- // When there is a single "OR" boolean operator, we ensure that there
655
- // are no parentheses on that object.
656
- export function convertRemoveSimpleParentheses(ast) {
657
- const node = ast.where;
658
- if (isLogicalBinaryExpr(node) &&
659
- node.operator === 'OR' &&
660
- !isLogicalBinaryExpr(node.left) &&
661
- !isLogicalBinaryExpr(node.right) &&
662
- node.parentheses) {
663
- delete node.parentheses;
664
- }
665
- return { ...ast, where: node };
666
- }
667
- /**
668
- * Processes an ast and converts all unary_expr nodes or direct column_refs
669
- * into binary_expr form
670
- */
671
- export function convertUnaryToBinary(ast) {
672
- const newAst = { ...ast };
673
- if (!newAst.where) {
674
- return ast;
675
- }
676
- function searchAndReplace(node) {
677
- if (!node) {
678
- return { ...node };
679
- }
680
- else if (node.type === 'binary_expr') {
681
- if (node.operator.toLowerCase() === 'and' ||
682
- node.operator.toLowerCase() === 'or') {
683
- return {
684
- ...node,
685
- left: searchAndReplace(node.left),
686
- right: searchAndReplace(node.right),
687
- };
688
- }
689
- else {
690
- return { ...node };
691
- }
692
- }
693
- else if (node.type === 'unary_expr' && node.operator === 'NOT') {
694
- // yet to run into any other operator from AI
695
- return {
696
- type: 'binary_expr',
697
- operator: '<>',
698
- left: { ...node.expr },
699
- right: { type: 'bool', value: true },
700
- };
701
- }
702
- else if (node.type === 'column_ref') {
703
- // e.g. WHERE field (boolean)
704
- return {
705
- type: 'binary_expr',
706
- operator: '=',
707
- left: { ...node },
708
- right: { type: 'bool', value: true },
709
- };
710
- }
711
- else {
712
- return { ...node };
713
- }
714
- }
715
- const newWhere = searchAndReplace(newAst.where);
716
- return { ...newAst, where: newWhere };
717
- }