@quillsql/react 2.12.36 → 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 (456) hide show
  1. package/dist/cjs/ChartBuilder.js +2 -2
  2. package/dist/cjs/Dashboard.d.ts.map +1 -1
  3. package/dist/cjs/Dashboard.js +1 -1
  4. package/dist/cjs/components/Chart/ChartError.js +1 -1
  5. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  6. package/dist/cjs/utils/dataFetcher.js +7 -1
  7. package/dist/cjs/utils/report.d.ts.map +1 -1
  8. package/dist/cjs/utils/report.js +6 -3
  9. package/package.json +1 -1
  10. package/dist/esm/Chart.d.ts +0 -204
  11. package/dist/esm/Chart.d.ts.map +0 -1
  12. package/dist/esm/Chart.js +0 -431
  13. package/dist/esm/ChartBuilder.d.ts +0 -339
  14. package/dist/esm/ChartBuilder.d.ts.map +0 -1
  15. package/dist/esm/ChartBuilder.js +0 -1312
  16. package/dist/esm/ChartEditor.d.ts +0 -209
  17. package/dist/esm/ChartEditor.d.ts.map +0 -1
  18. package/dist/esm/ChartEditor.js +0 -182
  19. package/dist/esm/Context.d.ts +0 -14
  20. package/dist/esm/Context.d.ts.map +0 -1
  21. package/dist/esm/Context.js +0 -269
  22. package/dist/esm/Dashboard.d.ts +0 -279
  23. package/dist/esm/Dashboard.d.ts.map +0 -1
  24. package/dist/esm/Dashboard.js +0 -660
  25. package/dist/esm/DateRangePicker/Calendar.d.ts +0 -17
  26. package/dist/esm/DateRangePicker/Calendar.d.ts.map +0 -1
  27. package/dist/esm/DateRangePicker/Calendar.js +0 -164
  28. package/dist/esm/DateRangePicker/DateRangePicker.d.ts +0 -39
  29. package/dist/esm/DateRangePicker/DateRangePicker.d.ts.map +0 -1
  30. package/dist/esm/DateRangePicker/DateRangePicker.js +0 -95
  31. package/dist/esm/DateRangePicker/DateRangePickerButton.d.ts +0 -22
  32. package/dist/esm/DateRangePicker/DateRangePickerButton.d.ts.map +0 -1
  33. package/dist/esm/DateRangePicker/DateRangePickerButton.js +0 -134
  34. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +0 -25
  35. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +0 -1
  36. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +0 -260
  37. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +0 -80
  38. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +0 -1
  39. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +0 -521
  40. package/dist/esm/DateRangePicker/index.d.ts +0 -3
  41. package/dist/esm/DateRangePicker/index.d.ts.map +0 -1
  42. package/dist/esm/DateRangePicker/index.js +0 -2
  43. package/dist/esm/QuillProvider.d.ts +0 -163
  44. package/dist/esm/QuillProvider.d.ts.map +0 -1
  45. package/dist/esm/QuillProvider.js +0 -104
  46. package/dist/esm/ReportBuilder.d.ts +0 -318
  47. package/dist/esm/ReportBuilder.d.ts.map +0 -1
  48. package/dist/esm/ReportBuilder.js +0 -3279
  49. package/dist/esm/SQLEditor.d.ts +0 -272
  50. package/dist/esm/SQLEditor.d.ts.map +0 -1
  51. package/dist/esm/SQLEditor.js +0 -510
  52. package/dist/esm/Table.d.ts +0 -167
  53. package/dist/esm/Table.d.ts.map +0 -1
  54. package/dist/esm/Table.js +0 -215
  55. package/dist/esm/TableChart.d.ts +0 -15
  56. package/dist/esm/TableChart.d.ts.map +0 -1
  57. package/dist/esm/TableChart.js +0 -95
  58. package/dist/esm/assets/ArrowDownHeadIcon.d.ts +0 -5
  59. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +0 -1
  60. package/dist/esm/assets/ArrowDownHeadIcon.js +0 -3
  61. package/dist/esm/assets/ArrowDownIcon.d.ts +0 -5
  62. package/dist/esm/assets/ArrowDownIcon.d.ts.map +0 -1
  63. package/dist/esm/assets/ArrowDownIcon.js +0 -3
  64. package/dist/esm/assets/ArrowDownRightIcon.d.ts +0 -5
  65. package/dist/esm/assets/ArrowDownRightIcon.d.ts.map +0 -1
  66. package/dist/esm/assets/ArrowDownRightIcon.js +0 -3
  67. package/dist/esm/assets/ArrowLeftHeadIcon.d.ts +0 -5
  68. package/dist/esm/assets/ArrowLeftHeadIcon.d.ts.map +0 -1
  69. package/dist/esm/assets/ArrowLeftHeadIcon.js +0 -3
  70. package/dist/esm/assets/ArrowRightHeadIcon.d.ts +0 -5
  71. package/dist/esm/assets/ArrowRightHeadIcon.d.ts.map +0 -1
  72. package/dist/esm/assets/ArrowRightHeadIcon.js +0 -3
  73. package/dist/esm/assets/ArrowRightIcon.d.ts +0 -5
  74. package/dist/esm/assets/ArrowRightIcon.d.ts.map +0 -1
  75. package/dist/esm/assets/ArrowRightIcon.js +0 -3
  76. package/dist/esm/assets/ArrowUpHeadIcon.d.ts +0 -5
  77. package/dist/esm/assets/ArrowUpHeadIcon.d.ts.map +0 -1
  78. package/dist/esm/assets/ArrowUpHeadIcon.js +0 -3
  79. package/dist/esm/assets/ArrowUpIcon.d.ts +0 -5
  80. package/dist/esm/assets/ArrowUpIcon.d.ts.map +0 -1
  81. package/dist/esm/assets/ArrowUpIcon.js +0 -3
  82. package/dist/esm/assets/ArrowUpRightIcon.d.ts +0 -5
  83. package/dist/esm/assets/ArrowUpRightIcon.d.ts.map +0 -1
  84. package/dist/esm/assets/ArrowUpRightIcon.js +0 -3
  85. package/dist/esm/assets/CalendarIcon.d.ts +0 -5
  86. package/dist/esm/assets/CalendarIcon.d.ts.map +0 -1
  87. package/dist/esm/assets/CalendarIcon.js +0 -3
  88. package/dist/esm/assets/CalendarNormalIcon.d.ts +0 -5
  89. package/dist/esm/assets/CalendarNormalIcon.d.ts.map +0 -1
  90. package/dist/esm/assets/CalendarNormalIcon.js +0 -3
  91. package/dist/esm/assets/DoubleArrowLeftHeadIcon.d.ts +0 -5
  92. package/dist/esm/assets/DoubleArrowLeftHeadIcon.d.ts.map +0 -1
  93. package/dist/esm/assets/DoubleArrowLeftHeadIcon.js +0 -3
  94. package/dist/esm/assets/DoubleArrowRightHeadIcon.d.ts +0 -5
  95. package/dist/esm/assets/DoubleArrowRightHeadIcon.d.ts.map +0 -1
  96. package/dist/esm/assets/DoubleArrowRightHeadIcon.js +0 -3
  97. package/dist/esm/assets/ExclamationFilledIcon.d.ts +0 -5
  98. package/dist/esm/assets/ExclamationFilledIcon.d.ts.map +0 -1
  99. package/dist/esm/assets/ExclamationFilledIcon.js +0 -3
  100. package/dist/esm/assets/FilterIcon.d.ts +0 -5
  101. package/dist/esm/assets/FilterIcon.d.ts.map +0 -1
  102. package/dist/esm/assets/FilterIcon.js +0 -3
  103. package/dist/esm/assets/LoadingSpinner.d.ts +0 -5
  104. package/dist/esm/assets/LoadingSpinner.d.ts.map +0 -1
  105. package/dist/esm/assets/LoadingSpinner.js +0 -3
  106. package/dist/esm/assets/RefreshIcon.d.ts +0 -5
  107. package/dist/esm/assets/RefreshIcon.d.ts.map +0 -1
  108. package/dist/esm/assets/RefreshIcon.js +0 -3
  109. package/dist/esm/assets/SearchIcon.d.ts +0 -5
  110. package/dist/esm/assets/SearchIcon.d.ts.map +0 -1
  111. package/dist/esm/assets/SearchIcon.js +0 -3
  112. package/dist/esm/assets/UpLeftArrowsIcon.d.ts +0 -5
  113. package/dist/esm/assets/UpLeftArrowsIcon.d.ts.map +0 -1
  114. package/dist/esm/assets/UpLeftArrowsIcon.js +0 -3
  115. package/dist/esm/assets/XCircleIcon.d.ts +0 -5
  116. package/dist/esm/assets/XCircleIcon.d.ts.map +0 -1
  117. package/dist/esm/assets/XCircleIcon.js +0 -3
  118. package/dist/esm/assets/XIcon.d.ts +0 -5
  119. package/dist/esm/assets/XIcon.d.ts.map +0 -1
  120. package/dist/esm/assets/XIcon.js +0 -3
  121. package/dist/esm/assets/index.d.ts +0 -22
  122. package/dist/esm/assets/index.d.ts.map +0 -1
  123. package/dist/esm/assets/index.js +0 -21
  124. package/dist/esm/components/Banner/index.d.ts +0 -3
  125. package/dist/esm/components/Banner/index.d.ts.map +0 -1
  126. package/dist/esm/components/Banner/index.js +0 -24
  127. package/dist/esm/components/BigModal/BigModal.d.ts +0 -15
  128. package/dist/esm/components/BigModal/BigModal.d.ts.map +0 -1
  129. package/dist/esm/components/BigModal/BigModal.js +0 -56
  130. package/dist/esm/components/Chart/BarChart.d.ts +0 -23
  131. package/dist/esm/components/Chart/BarChart.d.ts.map +0 -1
  132. package/dist/esm/components/Chart/BarChart.js +0 -110
  133. package/dist/esm/components/Chart/BarList.d.ts +0 -27
  134. package/dist/esm/components/Chart/BarList.d.ts.map +0 -1
  135. package/dist/esm/components/Chart/BarList.js +0 -148
  136. package/dist/esm/components/Chart/ChartError.d.ts +0 -10
  137. package/dist/esm/components/Chart/ChartError.d.ts.map +0 -1
  138. package/dist/esm/components/Chart/ChartError.js +0 -65
  139. package/dist/esm/components/Chart/ChartSkeleton.d.ts +0 -8
  140. package/dist/esm/components/Chart/ChartSkeleton.d.ts.map +0 -1
  141. package/dist/esm/components/Chart/ChartSkeleton.js +0 -19
  142. package/dist/esm/components/Chart/ChartTooltip.d.ts +0 -31
  143. package/dist/esm/components/Chart/ChartTooltip.d.ts.map +0 -1
  144. package/dist/esm/components/Chart/ChartTooltip.js +0 -234
  145. package/dist/esm/components/Chart/ChartTooltipFrame.d.ts +0 -6
  146. package/dist/esm/components/Chart/ChartTooltipFrame.d.ts.map +0 -1
  147. package/dist/esm/components/Chart/ChartTooltipFrame.js +0 -14
  148. package/dist/esm/components/Chart/ChartTooltipGroup.d.ts +0 -11
  149. package/dist/esm/components/Chart/ChartTooltipGroup.d.ts.map +0 -1
  150. package/dist/esm/components/Chart/ChartTooltipGroup.js +0 -23
  151. package/dist/esm/components/Chart/ChartTooltipRow.d.ts +0 -8
  152. package/dist/esm/components/Chart/ChartTooltipRow.d.ts.map +0 -1
  153. package/dist/esm/components/Chart/ChartTooltipRow.js +0 -41
  154. package/dist/esm/components/Chart/LineChart.d.ts +0 -29
  155. package/dist/esm/components/Chart/LineChart.d.ts.map +0 -1
  156. package/dist/esm/components/Chart/LineChart.js +0 -163
  157. package/dist/esm/components/Chart/PieChart.d.ts +0 -62
  158. package/dist/esm/components/Chart/PieChart.d.ts.map +0 -1
  159. package/dist/esm/components/Chart/PieChart.js +0 -195
  160. package/dist/esm/components/Dashboard/ChartComponent.d.ts +0 -4
  161. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +0 -1
  162. package/dist/esm/components/Dashboard/ChartComponent.js +0 -60
  163. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +0 -38
  164. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +0 -1
  165. package/dist/esm/components/Dashboard/DashboardFilter.js +0 -89
  166. package/dist/esm/components/Dashboard/DashboardSection.d.ts +0 -7
  167. package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +0 -1
  168. package/dist/esm/components/Dashboard/DashboardSection.js +0 -22
  169. package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts +0 -3
  170. package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts.map +0 -1
  171. package/dist/esm/components/Dashboard/DashboardSectionContainer.js +0 -10
  172. package/dist/esm/components/Dashboard/DataLoader.d.ts +0 -44
  173. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +0 -1
  174. package/dist/esm/components/Dashboard/DataLoader.js +0 -190
  175. package/dist/esm/components/Dashboard/MetricComponent.d.ts +0 -4
  176. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +0 -1
  177. package/dist/esm/components/Dashboard/MetricComponent.js +0 -133
  178. package/dist/esm/components/Dashboard/TableComponent.d.ts +0 -15
  179. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +0 -1
  180. package/dist/esm/components/Dashboard/TableComponent.js +0 -62
  181. package/dist/esm/components/Dropdown/Dropdown.d.ts +0 -14
  182. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +0 -1
  183. package/dist/esm/components/Dropdown/Dropdown.js +0 -69
  184. package/dist/esm/components/Dropdown/DropdownItem.d.ts +0 -11
  185. package/dist/esm/components/Dropdown/DropdownItem.d.ts.map +0 -1
  186. package/dist/esm/components/Dropdown/DropdownItem.js +0 -37
  187. package/dist/esm/components/Dropdown/index.d.ts +0 -3
  188. package/dist/esm/components/Dropdown/index.d.ts.map +0 -1
  189. package/dist/esm/components/Dropdown/index.js +0 -2
  190. package/dist/esm/components/Modal/Modal.d.ts +0 -15
  191. package/dist/esm/components/Modal/Modal.d.ts.map +0 -1
  192. package/dist/esm/components/Modal/Modal.js +0 -64
  193. package/dist/esm/components/Modal/index.d.ts +0 -2
  194. package/dist/esm/components/Modal/index.d.ts.map +0 -1
  195. package/dist/esm/components/Modal/index.js +0 -1
  196. package/dist/esm/components/QuillCard.d.ts +0 -9
  197. package/dist/esm/components/QuillCard.d.ts.map +0 -1
  198. package/dist/esm/components/QuillCard.js +0 -56
  199. package/dist/esm/components/QuillMultiSelect.d.ts +0 -11
  200. package/dist/esm/components/QuillMultiSelect.d.ts.map +0 -1
  201. package/dist/esm/components/QuillMultiSelect.js +0 -193
  202. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +0 -11
  203. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +0 -1
  204. package/dist/esm/components/QuillMultiSelectWithCombo.js +0 -215
  205. package/dist/esm/components/QuillSelect.d.ts +0 -6
  206. package/dist/esm/components/QuillSelect.d.ts.map +0 -1
  207. package/dist/esm/components/QuillSelect.js +0 -136
  208. package/dist/esm/components/QuillSelectWithCombo.d.ts +0 -6
  209. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +0 -1
  210. package/dist/esm/components/QuillSelectWithCombo.js +0 -163
  211. package/dist/esm/components/QuillTable.d.ts +0 -31
  212. package/dist/esm/components/QuillTable.d.ts.map +0 -1
  213. package/dist/esm/components/QuillTable.js +0 -261
  214. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +0 -34
  215. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +0 -1
  216. package/dist/esm/components/ReportBuilder/AddColumnModal.js +0 -145
  217. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +0 -26
  218. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +0 -1
  219. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +0 -36
  220. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +0 -23
  221. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +0 -1
  222. package/dist/esm/components/ReportBuilder/AddSortPopover.js +0 -73
  223. package/dist/esm/components/ReportBuilder/FilterModal.d.ts +0 -30
  224. package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +0 -1
  225. package/dist/esm/components/ReportBuilder/FilterModal.js +0 -576
  226. package/dist/esm/components/ReportBuilder/ast.d.ts +0 -523
  227. package/dist/esm/components/ReportBuilder/ast.d.ts.map +0 -1
  228. package/dist/esm/components/ReportBuilder/ast.js +0 -230
  229. package/dist/esm/components/ReportBuilder/bigDateMap.d.ts +0 -7
  230. package/dist/esm/components/ReportBuilder/bigDateMap.d.ts.map +0 -1
  231. package/dist/esm/components/ReportBuilder/bigDateMap.js +0 -687
  232. package/dist/esm/components/ReportBuilder/constants.d.ts +0 -117
  233. package/dist/esm/components/ReportBuilder/constants.d.ts.map +0 -1
  234. package/dist/esm/components/ReportBuilder/constants.js +0 -161
  235. package/dist/esm/components/ReportBuilder/convert.d.ts +0 -65
  236. package/dist/esm/components/ReportBuilder/convert.d.ts.map +0 -1
  237. package/dist/esm/components/ReportBuilder/convert.js +0 -717
  238. package/dist/esm/components/ReportBuilder/operators.d.ts +0 -462
  239. package/dist/esm/components/ReportBuilder/operators.d.ts.map +0 -1
  240. package/dist/esm/components/ReportBuilder/operators.js +0 -581
  241. package/dist/esm/components/ReportBuilder/pivot.d.ts +0 -16
  242. package/dist/esm/components/ReportBuilder/pivot.d.ts.map +0 -1
  243. package/dist/esm/components/ReportBuilder/pivot.js +0 -1
  244. package/dist/esm/components/ReportBuilder/postgres.d.ts +0 -150
  245. package/dist/esm/components/ReportBuilder/postgres.d.ts.map +0 -1
  246. package/dist/esm/components/ReportBuilder/postgres.js +0 -355
  247. package/dist/esm/components/ReportBuilder/schema.d.ts +0 -23
  248. package/dist/esm/components/ReportBuilder/schema.d.ts.map +0 -1
  249. package/dist/esm/components/ReportBuilder/schema.js +0 -1
  250. package/dist/esm/components/ReportBuilder/ui.d.ts +0 -119
  251. package/dist/esm/components/ReportBuilder/ui.d.ts.map +0 -1
  252. package/dist/esm/components/ReportBuilder/ui.js +0 -382
  253. package/dist/esm/components/ReportBuilder/util.d.ts +0 -76
  254. package/dist/esm/components/ReportBuilder/util.d.ts.map +0 -1
  255. package/dist/esm/components/ReportBuilder/util.js +0 -729
  256. package/dist/esm/components/UiComponents.d.ts +0 -221
  257. package/dist/esm/components/UiComponents.d.ts.map +0 -1
  258. package/dist/esm/components/UiComponents.js +0 -571
  259. package/dist/esm/components/selectUtils.d.ts +0 -9
  260. package/dist/esm/components/selectUtils.d.ts.map +0 -1
  261. package/dist/esm/components/selectUtils.js +0 -17
  262. package/dist/esm/contexts/BaseColorContext.d.ts +0 -4
  263. package/dist/esm/contexts/BaseColorContext.d.ts.map +0 -1
  264. package/dist/esm/contexts/BaseColorContext.js +0 -3
  265. package/dist/esm/contexts/HoveredValueContext.d.ts +0 -8
  266. package/dist/esm/contexts/HoveredValueContext.d.ts.map +0 -1
  267. package/dist/esm/contexts/HoveredValueContext.js +0 -5
  268. package/dist/esm/contexts/RootStylesContext.d.ts +0 -4
  269. package/dist/esm/contexts/RootStylesContext.d.ts.map +0 -1
  270. package/dist/esm/contexts/RootStylesContext.js +0 -3
  271. package/dist/esm/contexts/SelectedValueContext.d.ts +0 -8
  272. package/dist/esm/contexts/SelectedValueContext.d.ts.map +0 -1
  273. package/dist/esm/contexts/SelectedValueContext.js +0 -6
  274. package/dist/esm/contexts/index.d.ts +0 -5
  275. package/dist/esm/contexts/index.d.ts.map +0 -1
  276. package/dist/esm/contexts/index.js +0 -4
  277. package/dist/esm/hooks/index.d.ts +0 -6
  278. package/dist/esm/hooks/index.d.ts.map +0 -1
  279. package/dist/esm/hooks/index.js +0 -5
  280. package/dist/esm/hooks/useAstToFilterTree.d.ts +0 -11
  281. package/dist/esm/hooks/useAstToFilterTree.d.ts.map +0 -1
  282. package/dist/esm/hooks/useAstToFilterTree.js +0 -24
  283. package/dist/esm/hooks/useDashboard.d.ts +0 -7
  284. package/dist/esm/hooks/useDashboard.d.ts.map +0 -1
  285. package/dist/esm/hooks/useDashboard.js +0 -69
  286. package/dist/esm/hooks/useExport.d.ts +0 -6
  287. package/dist/esm/hooks/useExport.d.ts.map +0 -1
  288. package/dist/esm/hooks/useExport.js +0 -125
  289. package/dist/esm/hooks/useFormat.d.ts +0 -5
  290. package/dist/esm/hooks/useFormat.d.ts.map +0 -1
  291. package/dist/esm/hooks/useFormat.js +0 -25
  292. package/dist/esm/hooks/useInternalState.d.ts +0 -4
  293. package/dist/esm/hooks/useInternalState.d.ts.map +0 -1
  294. package/dist/esm/hooks/useInternalState.js +0 -14
  295. package/dist/esm/hooks/useOnClickOutside.d.ts +0 -3
  296. package/dist/esm/hooks/useOnClickOutside.d.ts.map +0 -1
  297. package/dist/esm/hooks/useOnClickOutside.js +0 -18
  298. package/dist/esm/hooks/useOnWindowResize.d.ts +0 -5
  299. package/dist/esm/hooks/useOnWindowResize.d.ts.map +0 -1
  300. package/dist/esm/hooks/useOnWindowResize.js +0 -14
  301. package/dist/esm/hooks/useQuill.d.ts +0 -37
  302. package/dist/esm/hooks/useQuill.d.ts.map +0 -1
  303. package/dist/esm/hooks/useQuill.js +0 -182
  304. package/dist/esm/hooks/useSelectOnKeyDown.d.ts +0 -3
  305. package/dist/esm/hooks/useSelectOnKeyDown.d.ts.map +0 -1
  306. package/dist/esm/hooks/useSelectOnKeyDown.js +0 -63
  307. package/dist/esm/hooks/useTheme.d.ts +0 -7
  308. package/dist/esm/hooks/useTheme.d.ts.map +0 -1
  309. package/dist/esm/hooks/useTheme.js +0 -10
  310. package/dist/esm/index.d.ts +0 -29
  311. package/dist/esm/index.d.ts.map +0 -1
  312. package/dist/esm/index.js +0 -16
  313. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +0 -28
  314. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +0 -1
  315. package/dist/esm/internals/ReportBuilder/PivotForm.js +0 -62
  316. package/dist/esm/internals/ReportBuilder/PivotList.d.ts +0 -39
  317. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +0 -1
  318. package/dist/esm/internals/ReportBuilder/PivotList.js +0 -89
  319. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +0 -146
  320. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +0 -1
  321. package/dist/esm/internals/ReportBuilder/PivotModal.js +0 -1210
  322. package/dist/esm/lib/font.d.ts +0 -14
  323. package/dist/esm/lib/font.d.ts.map +0 -1
  324. package/dist/esm/lib/font.js +0 -13
  325. package/dist/esm/lib/index.d.ts +0 -4
  326. package/dist/esm/lib/index.d.ts.map +0 -1
  327. package/dist/esm/lib/index.js +0 -3
  328. package/dist/esm/lib/inputTypes.d.ts +0 -21
  329. package/dist/esm/lib/inputTypes.d.ts.map +0 -1
  330. package/dist/esm/lib/inputTypes.js +0 -55
  331. package/dist/esm/lib/utils.d.ts +0 -10
  332. package/dist/esm/lib/utils.d.ts.map +0 -1
  333. package/dist/esm/lib/utils.js +0 -35
  334. package/dist/esm/models/Columns.d.ts +0 -12
  335. package/dist/esm/models/Columns.d.ts.map +0 -1
  336. package/dist/esm/models/Columns.js +0 -1
  337. package/dist/esm/models/Filter.d.ts +0 -118
  338. package/dist/esm/models/Filter.d.ts.map +0 -1
  339. package/dist/esm/models/Filter.js +0 -98
  340. package/dist/esm/models/Pagination.d.ts +0 -10
  341. package/dist/esm/models/Pagination.d.ts.map +0 -1
  342. package/dist/esm/models/Pagination.js +0 -1
  343. package/dist/esm/models/Pivots.d.ts +0 -2
  344. package/dist/esm/models/Pivots.d.ts.map +0 -1
  345. package/dist/esm/models/Pivots.js +0 -1
  346. package/dist/esm/models/Report.d.ts +0 -103
  347. package/dist/esm/models/Report.d.ts.map +0 -1
  348. package/dist/esm/models/Report.js +0 -1
  349. package/dist/esm/models/Tables.d.ts +0 -8
  350. package/dist/esm/models/Tables.d.ts.map +0 -1
  351. package/dist/esm/models/Tables.js +0 -1
  352. package/dist/esm/utils/aggregate.d.ts +0 -4
  353. package/dist/esm/utils/aggregate.d.ts.map +0 -1
  354. package/dist/esm/utils/aggregate.js +0 -422
  355. package/dist/esm/utils/astFilterProcessing.d.ts +0 -36
  356. package/dist/esm/utils/astFilterProcessing.d.ts.map +0 -1
  357. package/dist/esm/utils/astFilterProcessing.js +0 -8084
  358. package/dist/esm/utils/astProcessing.d.ts +0 -26
  359. package/dist/esm/utils/astProcessing.d.ts.map +0 -1
  360. package/dist/esm/utils/astProcessing.js +0 -254
  361. package/dist/esm/utils/axisFormatter.d.ts +0 -20
  362. package/dist/esm/utils/axisFormatter.d.ts.map +0 -1
  363. package/dist/esm/utils/axisFormatter.js +0 -179
  364. package/dist/esm/utils/color.d.ts +0 -44
  365. package/dist/esm/utils/color.d.ts.map +0 -1
  366. package/dist/esm/utils/color.js +0 -425
  367. package/dist/esm/utils/columnProcessing.d.ts +0 -13
  368. package/dist/esm/utils/columnProcessing.d.ts.map +0 -1
  369. package/dist/esm/utils/columnProcessing.js +0 -260
  370. package/dist/esm/utils/constants.d.ts +0 -2
  371. package/dist/esm/utils/constants.d.ts.map +0 -1
  372. package/dist/esm/utils/constants.js +0 -1
  373. package/dist/esm/utils/crypto.d.ts +0 -2
  374. package/dist/esm/utils/crypto.d.ts.map +0 -1
  375. package/dist/esm/utils/crypto.js +0 -10
  376. package/dist/esm/utils/csv.d.ts +0 -6
  377. package/dist/esm/utils/csv.d.ts.map +0 -1
  378. package/dist/esm/utils/csv.js +0 -78
  379. package/dist/esm/utils/dashboard.d.ts +0 -13
  380. package/dist/esm/utils/dashboard.d.ts.map +0 -1
  381. package/dist/esm/utils/dashboard.js +0 -171
  382. package/dist/esm/utils/dataFetcher.d.ts +0 -3
  383. package/dist/esm/utils/dataFetcher.d.ts.map +0 -1
  384. package/dist/esm/utils/dataFetcher.js +0 -199
  385. package/dist/esm/utils/dataProcessing.d.ts +0 -11
  386. package/dist/esm/utils/dataProcessing.d.ts.map +0 -1
  387. package/dist/esm/utils/dataProcessing.js +0 -162
  388. package/dist/esm/utils/dates.d.ts +0 -20
  389. package/dist/esm/utils/dates.d.ts.map +0 -1
  390. package/dist/esm/utils/dates.js +0 -95
  391. package/dist/esm/utils/error.d.ts +0 -5
  392. package/dist/esm/utils/error.d.ts.map +0 -1
  393. package/dist/esm/utils/error.js +0 -8
  394. package/dist/esm/utils/errorProcessing.d.ts +0 -2
  395. package/dist/esm/utils/errorProcessing.d.ts.map +0 -1
  396. package/dist/esm/utils/errorProcessing.js +0 -5
  397. package/dist/esm/utils/filterConstants.d.ts +0 -34
  398. package/dist/esm/utils/filterConstants.d.ts.map +0 -1
  399. package/dist/esm/utils/filterConstants.js +0 -33
  400. package/dist/esm/utils/filterProcessing.d.ts +0 -10
  401. package/dist/esm/utils/filterProcessing.d.ts.map +0 -1
  402. package/dist/esm/utils/filterProcessing.js +0 -232
  403. package/dist/esm/utils/getDomain.d.ts +0 -8
  404. package/dist/esm/utils/getDomain.d.ts.map +0 -1
  405. package/dist/esm/utils/getDomain.js +0 -52
  406. package/dist/esm/utils/logging.d.ts +0 -2
  407. package/dist/esm/utils/logging.d.ts.map +0 -1
  408. package/dist/esm/utils/logging.js +0 -7
  409. package/dist/esm/utils/merge.d.ts +0 -2
  410. package/dist/esm/utils/merge.d.ts.map +0 -1
  411. package/dist/esm/utils/merge.js +0 -18
  412. package/dist/esm/utils/monacoConfig.d.ts +0 -21
  413. package/dist/esm/utils/monacoConfig.d.ts.map +0 -1
  414. package/dist/esm/utils/monacoConfig.js +0 -319
  415. package/dist/esm/utils/paginationProcessing.d.ts +0 -5
  416. package/dist/esm/utils/paginationProcessing.d.ts.map +0 -1
  417. package/dist/esm/utils/paginationProcessing.js +0 -25
  418. package/dist/esm/utils/parserBigQuery.d.ts +0 -6
  419. package/dist/esm/utils/parserBigQuery.d.ts.map +0 -1
  420. package/dist/esm/utils/parserBigQuery.js +0 -52
  421. package/dist/esm/utils/parserPostgres.d.ts +0 -3
  422. package/dist/esm/utils/parserPostgres.d.ts.map +0 -1
  423. package/dist/esm/utils/parserPostgres.js +0 -37
  424. package/dist/esm/utils/pivotConstructor.d.ts +0 -7
  425. package/dist/esm/utils/pivotConstructor.d.ts.map +0 -1
  426. package/dist/esm/utils/pivotConstructor.js +0 -151
  427. package/dist/esm/utils/pivotProcessing.d.ts +0 -17
  428. package/dist/esm/utils/pivotProcessing.d.ts.map +0 -1
  429. package/dist/esm/utils/pivotProcessing.js +0 -132
  430. package/dist/esm/utils/queryConstructor.d.ts +0 -7
  431. package/dist/esm/utils/queryConstructor.d.ts.map +0 -1
  432. package/dist/esm/utils/queryConstructor.js +0 -226
  433. package/dist/esm/utils/report.d.ts +0 -10
  434. package/dist/esm/utils/report.d.ts.map +0 -1
  435. package/dist/esm/utils/report.js +0 -183
  436. package/dist/esm/utils/schema.d.ts +0 -6
  437. package/dist/esm/utils/schema.d.ts.map +0 -1
  438. package/dist/esm/utils/schema.js +0 -153
  439. package/dist/esm/utils/styles.d.ts +0 -17
  440. package/dist/esm/utils/styles.d.ts.map +0 -1
  441. package/dist/esm/utils/styles.js +0 -16
  442. package/dist/esm/utils/tableProcessing.d.ts +0 -45
  443. package/dist/esm/utils/tableProcessing.d.ts.map +0 -1
  444. package/dist/esm/utils/tableProcessing.js +0 -300
  445. package/dist/esm/utils/textProcessing.d.ts +0 -6
  446. package/dist/esm/utils/textProcessing.d.ts.map +0 -1
  447. package/dist/esm/utils/textProcessing.js +0 -49
  448. package/dist/esm/utils/validation.d.ts +0 -9
  449. package/dist/esm/utils/validation.d.ts.map +0 -1
  450. package/dist/esm/utils/validation.js +0 -20
  451. package/dist/esm/utils/valueFormatter.d.ts +0 -29
  452. package/dist/esm/utils/valueFormatter.d.ts.map +0 -1
  453. package/dist/esm/utils/valueFormatter.js +0 -342
  454. package/dist/esm/utils/width.d.ts +0 -12
  455. package/dist/esm/utils/width.d.ts.map +0 -1
  456. 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
- }