@lightdash/common 0.2104.6 → 0.2104.8

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 (752) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -0
  2. package/dist/cjs/authorization/index.d.ts +1 -4
  3. package/dist/cjs/authorization/index.d.ts.map +1 -1
  4. package/dist/cjs/authorization/index.js +0 -4
  5. package/dist/cjs/authorization/index.js.map +1 -1
  6. package/dist/cjs/ee/AiAgent/chartConfig/web/getWebAiChartConfig.d.ts +8 -8
  7. package/dist/cjs/ee/AiAgent/index.d.ts +2 -2
  8. package/dist/cjs/ee/AiAgent/schemas/parser.d.ts +24 -24
  9. package/dist/cjs/ee/AiAgent/schemas/tools/toolDashboardV2Args.d.ts +96 -96
  10. package/dist/cjs/ee/AiAgent/schemas/tools/toolRunQueryArgs.d.ts +48 -48
  11. package/dist/cjs/ee/AiAgent/utils.d.ts +8 -8
  12. package/dist/cjs/index.d.ts +23 -449
  13. package/dist/cjs/index.d.ts.map +1 -1
  14. package/dist/cjs/index.js +21 -55
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/pivot/index.d.ts +1 -0
  17. package/dist/cjs/pivot/index.d.ts.map +1 -1
  18. package/dist/cjs/pivot/index.js +1 -0
  19. package/dist/cjs/pivot/index.js.map +1 -1
  20. package/dist/cjs/pivot/pivotConfig.d.ts +7 -0
  21. package/dist/cjs/pivot/pivotConfig.d.ts.map +1 -0
  22. package/dist/cjs/pivot/pivotConfig.js +32 -0
  23. package/dist/cjs/pivot/pivotConfig.js.map +1 -0
  24. package/dist/cjs/types/api.d.ts +447 -0
  25. package/dist/cjs/types/api.d.ts.map +1 -1
  26. package/dist/cjs/types/api.js +50 -1
  27. package/dist/cjs/types/api.js.map +1 -1
  28. package/dist/cjs/types/auth.d.ts +2 -1
  29. package/dist/cjs/types/auth.d.ts.map +1 -1
  30. package/dist/cjs/types/auth.js +4 -4
  31. package/dist/cjs/types/auth.js.map +1 -1
  32. package/dist/cjs/types/changeset.d.ts +10 -10
  33. package/dist/cjs/types/pivot.d.ts +0 -2
  34. package/dist/cjs/types/pivot.d.ts.map +1 -1
  35. package/dist/cjs/types/pivot.js +0 -29
  36. package/dist/cjs/types/pivot.js.map +1 -1
  37. package/dist/cjs/types/resourceViewItem.d.ts +1 -1
  38. package/dist/esm/.tsbuildinfo +1 -0
  39. package/dist/esm/authorization/index.d.ts +1 -4
  40. package/dist/esm/authorization/index.d.ts.map +1 -1
  41. package/dist/esm/authorization/index.js +0 -4
  42. package/dist/esm/authorization/index.js.map +1 -1
  43. package/dist/esm/ee/AiAgent/chartConfig/web/getWebAiChartConfig.d.ts +8 -8
  44. package/dist/esm/ee/AiAgent/index.d.ts +2 -2
  45. package/dist/esm/ee/AiAgent/schemas/parser.d.ts +24 -24
  46. package/dist/esm/ee/AiAgent/schemas/tools/toolDashboardV2Args.d.ts +96 -96
  47. package/dist/esm/ee/AiAgent/schemas/tools/toolRunQueryArgs.d.ts +48 -48
  48. package/dist/esm/ee/AiAgent/utils.d.ts +8 -8
  49. package/dist/esm/index.d.ts +23 -449
  50. package/dist/esm/index.d.ts.map +1 -1
  51. package/dist/esm/index.js +16 -50
  52. package/dist/esm/index.js.map +1 -1
  53. package/dist/esm/pivot/index.d.ts +1 -0
  54. package/dist/esm/pivot/index.d.ts.map +1 -1
  55. package/dist/esm/pivot/index.js +1 -0
  56. package/dist/esm/pivot/index.js.map +1 -1
  57. package/dist/esm/pivot/pivotConfig.d.ts +7 -0
  58. package/dist/esm/pivot/pivotConfig.d.ts.map +1 -0
  59. package/dist/esm/pivot/pivotConfig.js +28 -0
  60. package/dist/esm/pivot/pivotConfig.js.map +1 -0
  61. package/dist/esm/types/api.d.ts +447 -0
  62. package/dist/esm/types/api.d.ts.map +1 -1
  63. package/dist/esm/types/api.js +46 -0
  64. package/dist/esm/types/api.js.map +1 -1
  65. package/dist/esm/types/auth.d.ts +2 -1
  66. package/dist/esm/types/auth.d.ts.map +1 -1
  67. package/dist/esm/types/auth.js +2 -2
  68. package/dist/esm/types/auth.js.map +1 -1
  69. package/dist/esm/types/changeset.d.ts +10 -10
  70. package/dist/esm/types/pivot.d.ts +0 -2
  71. package/dist/esm/types/pivot.d.ts.map +1 -1
  72. package/dist/esm/types/pivot.js +1 -27
  73. package/dist/esm/types/pivot.js.map +1 -1
  74. package/dist/esm/types/resourceViewItem.d.ts +1 -1
  75. package/dist/types/.tsbuildinfo +1 -0
  76. package/dist/types/authorization/buildAccountHelpers.js +11 -0
  77. package/dist/types/authorization/buildAccountHelpers.js.map +1 -0
  78. package/dist/types/authorization/index.d.ts +1 -4
  79. package/dist/types/authorization/index.d.ts.map +1 -1
  80. package/dist/types/authorization/index.js +62 -0
  81. package/dist/types/authorization/index.js.map +1 -0
  82. package/dist/types/authorization/index.mock.js +42 -0
  83. package/dist/types/authorization/index.mock.js.map +1 -0
  84. package/dist/types/authorization/index.test.js +220 -0
  85. package/dist/types/authorization/index.test.js.map +1 -0
  86. package/dist/types/authorization/jwtAbility.js +77 -0
  87. package/dist/types/authorization/jwtAbility.js.map +1 -0
  88. package/dist/types/authorization/jwtAbility.test.js +416 -0
  89. package/dist/types/authorization/jwtAbility.test.js.map +1 -0
  90. package/dist/types/authorization/organizationMemberAbility.js +318 -0
  91. package/dist/types/authorization/organizationMemberAbility.js.map +1 -0
  92. package/dist/types/authorization/organizationMemberAbility.mock.js +34 -0
  93. package/dist/types/authorization/organizationMemberAbility.mock.js.map +1 -0
  94. package/dist/types/authorization/organizationMemberAbility.test.js +1265 -0
  95. package/dist/types/authorization/organizationMemberAbility.test.js.map +1 -0
  96. package/dist/types/authorization/parseAccount.js +28 -0
  97. package/dist/types/authorization/parseAccount.js.map +1 -0
  98. package/dist/types/authorization/parseScopes.js +31 -0
  99. package/dist/types/authorization/parseScopes.js.map +1 -0
  100. package/dist/types/authorization/parseScopes.test.js +102 -0
  101. package/dist/types/authorization/parseScopes.test.js.map +1 -0
  102. package/dist/types/authorization/projectMemberAbility.js +239 -0
  103. package/dist/types/authorization/projectMemberAbility.js.map +1 -0
  104. package/dist/types/authorization/projectMemberAbility.mock.js +27 -0
  105. package/dist/types/authorization/projectMemberAbility.mock.js.map +1 -0
  106. package/dist/types/authorization/projectMemberAbility.test.js +1031 -0
  107. package/dist/types/authorization/projectMemberAbility.test.js.map +1 -0
  108. package/dist/types/authorization/roleToScopeMapping.js +150 -0
  109. package/dist/types/authorization/roleToScopeMapping.js.map +1 -0
  110. package/dist/types/authorization/roleToScopeMapping.test.js +561 -0
  111. package/dist/types/authorization/roleToScopeMapping.test.js.map +1 -0
  112. package/dist/types/authorization/roleToScopeMapping.testUtils.js +319 -0
  113. package/dist/types/authorization/roleToScopeMapping.testUtils.js.map +1 -0
  114. package/dist/types/authorization/roleToScopeParity.test.js +194 -0
  115. package/dist/types/authorization/roleToScopeParity.test.js.map +1 -0
  116. package/dist/types/authorization/scopeAbilityBuilder.js +57 -0
  117. package/dist/types/authorization/scopeAbilityBuilder.js.map +1 -0
  118. package/dist/types/authorization/scopeAbilityBuilder.test.js +1348 -0
  119. package/dist/types/authorization/scopeAbilityBuilder.test.js.map +1 -0
  120. package/dist/types/authorization/scopes.js +613 -0
  121. package/dist/types/authorization/scopes.js.map +1 -0
  122. package/dist/types/authorization/serviceAccountAbility.js +303 -0
  123. package/dist/types/authorization/serviceAccountAbility.js.map +1 -0
  124. package/dist/types/authorization/types.js +2 -0
  125. package/dist/types/authorization/types.js.map +1 -0
  126. package/dist/types/compiler/exploreCompiler.js +462 -0
  127. package/dist/types/compiler/exploreCompiler.js.map +1 -0
  128. package/dist/types/compiler/exploreCompiler.mock.js +2016 -0
  129. package/dist/types/compiler/exploreCompiler.mock.js.map +1 -0
  130. package/dist/types/compiler/exploreCompiler.test.js +679 -0
  131. package/dist/types/compiler/exploreCompiler.test.js.map +1 -0
  132. package/dist/types/compiler/fieldSetExpander.js +119 -0
  133. package/dist/types/compiler/fieldSetExpander.js.map +1 -0
  134. package/dist/types/compiler/fieldSetExpander.test.js +184 -0
  135. package/dist/types/compiler/fieldSetExpander.test.js.map +1 -0
  136. package/dist/types/compiler/filtersCompiler.js +337 -0
  137. package/dist/types/compiler/filtersCompiler.js.map +1 -0
  138. package/dist/types/compiler/filtersCompiler.mock.js +496 -0
  139. package/dist/types/compiler/filtersCompiler.mock.js.map +1 -0
  140. package/dist/types/compiler/filtersCompiler.test.js +570 -0
  141. package/dist/types/compiler/filtersCompiler.test.js.map +1 -0
  142. package/dist/types/compiler/lightdashProjectConfig.js +37 -0
  143. package/dist/types/compiler/lightdashProjectConfig.js.map +1 -0
  144. package/dist/types/compiler/parameters.js +75 -0
  145. package/dist/types/compiler/parameters.js.map +1 -0
  146. package/dist/types/compiler/parameters.test.js +216 -0
  147. package/dist/types/compiler/parameters.test.js.map +1 -0
  148. package/dist/types/compiler/translator.js +707 -0
  149. package/dist/types/compiler/translator.js.map +1 -0
  150. package/dist/types/compiler/translator.mock.js +1901 -0
  151. package/dist/types/compiler/translator.mock.js.map +1 -0
  152. package/dist/types/compiler/translator.test.js +323 -0
  153. package/dist/types/compiler/translator.test.js.map +1 -0
  154. package/dist/types/constants/pivot.js +7 -0
  155. package/dist/types/constants/pivot.js.map +1 -0
  156. package/dist/types/constants/sessionStorageKeys.js +6 -0
  157. package/dist/types/constants/sessionStorageKeys.js.map +1 -0
  158. package/dist/types/constants/sqlRunner.js +3 -0
  159. package/dist/types/constants/sqlRunner.js.map +1 -0
  160. package/dist/types/dbt/DbtSchemaEditor/DbtSchemaEditor.js +285 -0
  161. package/dist/types/dbt/DbtSchemaEditor/DbtSchemaEditor.js.map +1 -0
  162. package/dist/types/dbt/DbtSchemaEditor/DbtSchemaEditor.mock.js +224 -0
  163. package/dist/types/dbt/DbtSchemaEditor/DbtSchemaEditor.mock.js.map +1 -0
  164. package/dist/types/dbt/DbtSchemaEditor/DbtSchemaEditor.test.js +129 -0
  165. package/dist/types/dbt/DbtSchemaEditor/DbtSchemaEditor.test.js.map +1 -0
  166. package/dist/types/dbt/schemas/lightdashMetadata.json +385 -0
  167. package/dist/types/dbt/schemas/lightdashV10.json +72 -0
  168. package/dist/types/dbt/schemas/lightdashV11.json +72 -0
  169. package/dist/types/dbt/schemas/lightdashV12.json +63 -0
  170. package/dist/types/dbt/schemas/lightdashV7.json +72 -0
  171. package/dist/types/dbt/schemas/lightdashV8.json +76 -0
  172. package/dist/types/dbt/schemas/lightdashV9.json +72 -0
  173. package/dist/types/dbt/schemas/manifestV10.json +5545 -0
  174. package/dist/types/dbt/schemas/manifestV11.json +6041 -0
  175. package/dist/types/dbt/schemas/manifestV12.json +22567 -0
  176. package/dist/types/dbt/schemas/manifestV7.json +6481 -0
  177. package/dist/types/dbt/schemas/manifestV8.json +4358 -0
  178. package/dist/types/dbt/schemas/manifestV9.json +4879 -0
  179. package/dist/types/dbt/validation.js +67 -0
  180. package/dist/types/dbt/validation.js.map +1 -0
  181. package/dist/types/ee/AiAgent/adminTypes.js +2 -0
  182. package/dist/types/ee/AiAgent/adminTypes.js.map +1 -0
  183. package/dist/types/ee/AiAgent/chartConfig/shared/formatFieldLabel.js +10 -0
  184. package/dist/types/ee/AiAgent/chartConfig/shared/formatFieldLabel.js.map +1 -0
  185. package/dist/types/ee/AiAgent/chartConfig/slack/generateBarVizConfigTool/getVerticalBarChartEchartsConfig.js +60 -0
  186. package/dist/types/ee/AiAgent/chartConfig/slack/generateBarVizConfigTool/getVerticalBarChartEchartsConfig.js.map +1 -0
  187. package/dist/types/ee/AiAgent/chartConfig/slack/generateTimeSeriesVizConfigTool/getTimeSeriesChartEchartsConfig.js +60 -0
  188. package/dist/types/ee/AiAgent/chartConfig/slack/generateTimeSeriesVizConfigTool/getTimeSeriesChartEchartsConfig.js.map +1 -0
  189. package/dist/types/ee/AiAgent/chartConfig/slack/getSlackAiEchartsConfig.js +33 -0
  190. package/dist/types/ee/AiAgent/chartConfig/slack/getSlackAiEchartsConfig.js.map +1 -0
  191. package/dist/types/ee/AiAgent/chartConfig/slack/index.js +2 -0
  192. package/dist/types/ee/AiAgent/chartConfig/slack/index.js.map +1 -0
  193. package/dist/types/ee/AiAgent/chartConfig/slack/runQueryTool/getRunQueryEchartsConfig.js +43 -0
  194. package/dist/types/ee/AiAgent/chartConfig/slack/runQueryTool/getRunQueryEchartsConfig.js.map +1 -0
  195. package/dist/types/ee/AiAgent/chartConfig/slack/runQueryTool/viz/bar.js +98 -0
  196. package/dist/types/ee/AiAgent/chartConfig/slack/runQueryTool/viz/bar.js.map +1 -0
  197. package/dist/types/ee/AiAgent/chartConfig/slack/runQueryTool/viz/funnel.js +38 -0
  198. package/dist/types/ee/AiAgent/chartConfig/slack/runQueryTool/viz/funnel.js.map +1 -0
  199. package/dist/types/ee/AiAgent/chartConfig/slack/runQueryTool/viz/horizontalBar.js +65 -0
  200. package/dist/types/ee/AiAgent/chartConfig/slack/runQueryTool/viz/horizontalBar.js.map +1 -0
  201. package/dist/types/ee/AiAgent/chartConfig/slack/runQueryTool/viz/line.js +105 -0
  202. package/dist/types/ee/AiAgent/chartConfig/slack/runQueryTool/viz/line.js.map +1 -0
  203. package/dist/types/ee/AiAgent/chartConfig/slack/runQueryTool/viz/pie.js +34 -0
  204. package/dist/types/ee/AiAgent/chartConfig/slack/runQueryTool/viz/pie.js.map +1 -0
  205. package/dist/types/ee/AiAgent/chartConfig/slack/runQueryTool/viz/scatter.js +66 -0
  206. package/dist/types/ee/AiAgent/chartConfig/slack/runQueryTool/viz/scatter.js.map +1 -0
  207. package/dist/types/ee/AiAgent/chartConfig/slack/shared/getCommonEChartsConfig.js +104 -0
  208. package/dist/types/ee/AiAgent/chartConfig/slack/shared/getCommonEChartsConfig.js.map +1 -0
  209. package/dist/types/ee/AiAgent/chartConfig/slack/types.js +2 -0
  210. package/dist/types/ee/AiAgent/chartConfig/slack/types.js.map +1 -0
  211. package/dist/types/ee/AiAgent/chartConfig/web/generateBarVizConfigTool/getVerticalBarChartConfig.js +65 -0
  212. package/dist/types/ee/AiAgent/chartConfig/web/generateBarVizConfigTool/getVerticalBarChartConfig.js.map +1 -0
  213. package/dist/types/ee/AiAgent/chartConfig/web/generateTableVizConfigTool/getTableChartConfig.js +5 -0
  214. package/dist/types/ee/AiAgent/chartConfig/web/generateTableVizConfigTool/getTableChartConfig.js.map +1 -0
  215. package/dist/types/ee/AiAgent/chartConfig/web/generateTimeSeriesVizConfigTool/getTimeSeriesChartConfig.js +63 -0
  216. package/dist/types/ee/AiAgent/chartConfig/web/generateTimeSeriesVizConfigTool/getTimeSeriesChartConfig.js.map +1 -0
  217. package/dist/types/ee/AiAgent/chartConfig/web/getWebAiChartConfig.d.ts +8 -8
  218. package/dist/types/ee/AiAgent/chartConfig/web/getWebAiChartConfig.js +51 -0
  219. package/dist/types/ee/AiAgent/chartConfig/web/getWebAiChartConfig.js.map +1 -0
  220. package/dist/types/ee/AiAgent/chartConfig/web/index.js +6 -0
  221. package/dist/types/ee/AiAgent/chartConfig/web/index.js.map +1 -0
  222. package/dist/types/ee/AiAgent/chartConfig/web/runQueryTool/getRunQueryChartConfig.js +73 -0
  223. package/dist/types/ee/AiAgent/chartConfig/web/runQueryTool/getRunQueryChartConfig.js.map +1 -0
  224. package/dist/types/ee/AiAgent/chartConfig/web/runQueryTool/viz/bar.js +91 -0
  225. package/dist/types/ee/AiAgent/chartConfig/web/runQueryTool/viz/bar.js.map +1 -0
  226. package/dist/types/ee/AiAgent/chartConfig/web/runQueryTool/viz/funnel.js +17 -0
  227. package/dist/types/ee/AiAgent/chartConfig/web/runQueryTool/viz/funnel.js.map +1 -0
  228. package/dist/types/ee/AiAgent/chartConfig/web/runQueryTool/viz/horizontalBar.js +52 -0
  229. package/dist/types/ee/AiAgent/chartConfig/web/runQueryTool/viz/horizontalBar.js.map +1 -0
  230. package/dist/types/ee/AiAgent/chartConfig/web/runQueryTool/viz/line.js +96 -0
  231. package/dist/types/ee/AiAgent/chartConfig/web/runQueryTool/viz/line.js.map +1 -0
  232. package/dist/types/ee/AiAgent/chartConfig/web/runQueryTool/viz/pie.js +15 -0
  233. package/dist/types/ee/AiAgent/chartConfig/web/runQueryTool/viz/pie.js.map +1 -0
  234. package/dist/types/ee/AiAgent/chartConfig/web/runQueryTool/viz/scatter.js +66 -0
  235. package/dist/types/ee/AiAgent/chartConfig/web/runQueryTool/viz/scatter.js.map +1 -0
  236. package/dist/types/ee/AiAgent/chartConfig/web/shared/canRenderAsChart.js +24 -0
  237. package/dist/types/ee/AiAgent/chartConfig/web/shared/canRenderAsChart.js.map +1 -0
  238. package/dist/types/ee/AiAgent/chartConfig/web/shared/formatPivotValueLabel.js +15 -0
  239. package/dist/types/ee/AiAgent/chartConfig/web/shared/formatPivotValueLabel.js.map +1 -0
  240. package/dist/types/ee/AiAgent/chartConfig/web/shared/getAvailableChartTypes.js +11 -0
  241. package/dist/types/ee/AiAgent/chartConfig/web/shared/getAvailableChartTypes.js.map +1 -0
  242. package/dist/types/ee/AiAgent/chartConfig/web/shared/getGroupByDimensions.js +15 -0
  243. package/dist/types/ee/AiAgent/chartConfig/web/shared/getGroupByDimensions.js.map +1 -0
  244. package/dist/types/ee/AiAgent/chartConfig/web/types.js +2 -0
  245. package/dist/types/ee/AiAgent/chartConfig/web/types.js.map +1 -0
  246. package/dist/types/ee/AiAgent/constants.js +2 -0
  247. package/dist/types/ee/AiAgent/constants.js.map +1 -0
  248. package/dist/types/ee/AiAgent/filterExploreByTags.js +94 -0
  249. package/dist/types/ee/AiAgent/filterExploreByTags.js.map +1 -0
  250. package/dist/types/ee/AiAgent/filterExploreByTags.test.js +634 -0
  251. package/dist/types/ee/AiAgent/filterExploreByTags.test.js.map +1 -0
  252. package/dist/types/ee/AiAgent/followUpTools.js +33 -0
  253. package/dist/types/ee/AiAgent/followUpTools.js.map +1 -0
  254. package/dist/types/ee/AiAgent/index.d.ts +2 -2
  255. package/dist/types/ee/AiAgent/index.js +43 -0
  256. package/dist/types/ee/AiAgent/index.js.map +1 -0
  257. package/dist/types/ee/AiAgent/requestTypes.js +2 -0
  258. package/dist/types/ee/AiAgent/requestTypes.js.map +1 -0
  259. package/dist/types/ee/AiAgent/schemas/customMetrics.js +50 -0
  260. package/dist/types/ee/AiAgent/schemas/customMetrics.js.map +1 -0
  261. package/dist/types/ee/AiAgent/schemas/fieldId.js +11 -0
  262. package/dist/types/ee/AiAgent/schemas/fieldId.js.map +1 -0
  263. package/dist/types/ee/AiAgent/schemas/filters/booleanFilters.js +29 -0
  264. package/dist/types/ee/AiAgent/schemas/filters/booleanFilters.js.map +1 -0
  265. package/dist/types/ee/AiAgent/schemas/filters/dateFilters.js +84 -0
  266. package/dist/types/ee/AiAgent/schemas/filters/dateFilters.js.map +1 -0
  267. package/dist/types/ee/AiAgent/schemas/filters/index.js +98 -0
  268. package/dist/types/ee/AiAgent/schemas/filters/index.js.map +1 -0
  269. package/dist/types/ee/AiAgent/schemas/filters/numberFilters.js +53 -0
  270. package/dist/types/ee/AiAgent/schemas/filters/numberFilters.js.map +1 -0
  271. package/dist/types/ee/AiAgent/schemas/filters/stringFilters.js +33 -0
  272. package/dist/types/ee/AiAgent/schemas/filters/stringFilters.js.map +1 -0
  273. package/dist/types/ee/AiAgent/schemas/index.js +9 -0
  274. package/dist/types/ee/AiAgent/schemas/index.js.map +1 -0
  275. package/dist/types/ee/AiAgent/schemas/outputMetadata.js +5 -0
  276. package/dist/types/ee/AiAgent/schemas/outputMetadata.js.map +1 -0
  277. package/dist/types/ee/AiAgent/schemas/parser.d.ts +24 -24
  278. package/dist/types/ee/AiAgent/schemas/parser.js +43 -0
  279. package/dist/types/ee/AiAgent/schemas/parser.js.map +1 -0
  280. package/dist/types/ee/AiAgent/schemas/sortField.js +14 -0
  281. package/dist/types/ee/AiAgent/schemas/sortField.js.map +1 -0
  282. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcBaseSchemas.js +28 -0
  283. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcBaseSchemas.js.map +1 -0
  284. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcPercentChangeFromPrevious.js +14 -0
  285. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcPercentChangeFromPrevious.js.map +1 -0
  286. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcPercentOfColumnTotal.js +14 -0
  287. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcPercentOfColumnTotal.js.map +1 -0
  288. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcPercentOfPreviousValue.js +14 -0
  289. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcPercentOfPreviousValue.js.map +1 -0
  290. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcRankInColumn.js +10 -0
  291. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcRankInColumn.js.map +1 -0
  292. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcRunningTotal.js +10 -0
  293. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcRunningTotal.js.map +1 -0
  294. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcWindowFunction.js +105 -0
  295. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcWindowFunction.js.map +1 -0
  296. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcs.js +168 -0
  297. package/dist/types/ee/AiAgent/schemas/tableCalcs/tableCalcs.js.map +1 -0
  298. package/dist/types/ee/AiAgent/schemas/toolSchemaBuilder.js +37 -0
  299. package/dist/types/ee/AiAgent/schemas/toolSchemaBuilder.js.map +1 -0
  300. package/dist/types/ee/AiAgent/schemas/tools/index.js +16 -0
  301. package/dist/types/ee/AiAgent/schemas/tools/index.js.map +1 -0
  302. package/dist/types/ee/AiAgent/schemas/tools/toolDashboardArgs.js +103 -0
  303. package/dist/types/ee/AiAgent/schemas/tools/toolDashboardArgs.js.map +1 -0
  304. package/dist/types/ee/AiAgent/schemas/tools/toolDashboardV2Args.d.ts +96 -96
  305. package/dist/types/ee/AiAgent/schemas/tools/toolDashboardV2Args.js +50 -0
  306. package/dist/types/ee/AiAgent/schemas/tools/toolDashboardV2Args.js.map +1 -0
  307. package/dist/types/ee/AiAgent/schemas/tools/toolFindChartsArgs.js +34 -0
  308. package/dist/types/ee/AiAgent/schemas/tools/toolFindChartsArgs.js.map +1 -0
  309. package/dist/types/ee/AiAgent/schemas/tools/toolFindContentArgs.js +33 -0
  310. package/dist/types/ee/AiAgent/schemas/tools/toolFindContentArgs.js.map +1 -0
  311. package/dist/types/ee/AiAgent/schemas/tools/toolFindDashboardsArgs.js +36 -0
  312. package/dist/types/ee/AiAgent/schemas/tools/toolFindDashboardsArgs.js.map +1 -0
  313. package/dist/types/ee/AiAgent/schemas/tools/toolFindExploresArgs.js +45 -0
  314. package/dist/types/ee/AiAgent/schemas/tools/toolFindExploresArgs.js.map +1 -0
  315. package/dist/types/ee/AiAgent/schemas/tools/toolFindFieldsArgs.js +34 -0
  316. package/dist/types/ee/AiAgent/schemas/tools/toolFindFieldsArgs.js.map +1 -0
  317. package/dist/types/ee/AiAgent/schemas/tools/toolImproveContextArgs.js +60 -0
  318. package/dist/types/ee/AiAgent/schemas/tools/toolImproveContextArgs.js.map +1 -0
  319. package/dist/types/ee/AiAgent/schemas/tools/toolProposeChangeArgs.js +157 -0
  320. package/dist/types/ee/AiAgent/schemas/tools/toolProposeChangeArgs.js.map +1 -0
  321. package/dist/types/ee/AiAgent/schemas/tools/toolRunMetricQueryArgs.js +41 -0
  322. package/dist/types/ee/AiAgent/schemas/tools/toolRunMetricQueryArgs.js.map +1 -0
  323. package/dist/types/ee/AiAgent/schemas/tools/toolRunQueryArgs.d.ts +48 -48
  324. package/dist/types/ee/AiAgent/schemas/tools/toolRunQueryArgs.js +151 -0
  325. package/dist/types/ee/AiAgent/schemas/tools/toolRunQueryArgs.js.map +1 -0
  326. package/dist/types/ee/AiAgent/schemas/tools/toolSearchFieldValuesArgs.js +46 -0
  327. package/dist/types/ee/AiAgent/schemas/tools/toolSearchFieldValuesArgs.js.map +1 -0
  328. package/dist/types/ee/AiAgent/schemas/tools/toolTableVizArgs.js +53 -0
  329. package/dist/types/ee/AiAgent/schemas/tools/toolTableVizArgs.js.map +1 -0
  330. package/dist/types/ee/AiAgent/schemas/tools/toolTimeSeriesArgs.js +58 -0
  331. package/dist/types/ee/AiAgent/schemas/tools/toolTimeSeriesArgs.js.map +1 -0
  332. package/dist/types/ee/AiAgent/schemas/tools/toolVerticalBarArgs.js +53 -0
  333. package/dist/types/ee/AiAgent/schemas/tools/toolVerticalBarArgs.js.map +1 -0
  334. package/dist/types/ee/AiAgent/schemas/visualizationMetadata.js +9 -0
  335. package/dist/types/ee/AiAgent/schemas/visualizationMetadata.js.map +1 -0
  336. package/dist/types/ee/AiAgent/schemas/visualizations/index.js +58 -0
  337. package/dist/types/ee/AiAgent/schemas/visualizations/index.js.map +1 -0
  338. package/dist/types/ee/AiAgent/schemas/visualizations/tableViz.js +38 -0
  339. package/dist/types/ee/AiAgent/schemas/visualizations/tableViz.js.map +1 -0
  340. package/dist/types/ee/AiAgent/schemas/visualizations/timeSeriesViz.js +63 -0
  341. package/dist/types/ee/AiAgent/schemas/visualizations/timeSeriesViz.js.map +1 -0
  342. package/dist/types/ee/AiAgent/schemas/visualizations/verticalBarViz.js +68 -0
  343. package/dist/types/ee/AiAgent/schemas/visualizations/verticalBarViz.js.map +1 -0
  344. package/dist/types/ee/AiAgent/types.js +12 -0
  345. package/dist/types/ee/AiAgent/types.js.map +1 -0
  346. package/dist/types/ee/AiAgent/utils.d.ts +8 -8
  347. package/dist/types/ee/AiAgent/utils.js +82 -0
  348. package/dist/types/ee/AiAgent/utils.js.map +1 -0
  349. package/dist/types/ee/AiAgent/validators.js +10 -0
  350. package/dist/types/ee/AiAgent/validators.js.map +1 -0
  351. package/dist/types/ee/commercialFeatureFlags.js +10 -0
  352. package/dist/types/ee/commercialFeatureFlags.js.map +1 -0
  353. package/dist/types/ee/embed/index.js +90 -0
  354. package/dist/types/ee/embed/index.js.map +1 -0
  355. package/dist/types/ee/index.js +19 -0
  356. package/dist/types/ee/index.js.map +1 -0
  357. package/dist/types/ee/scim/errors.js +22 -0
  358. package/dist/types/ee/scim/errors.js.map +1 -0
  359. package/dist/types/ee/scim/types.js +2 -0
  360. package/dist/types/ee/scim/types.js.map +1 -0
  361. package/dist/types/ee/serviceAccounts/types.js +8 -0
  362. package/dist/types/ee/serviceAccounts/types.js.map +1 -0
  363. package/dist/types/index.d.ts +23 -449
  364. package/dist/types/index.d.ts.map +1 -1
  365. package/dist/types/index.js +652 -0
  366. package/dist/types/index.js.map +1 -0
  367. package/dist/types/index.mock.js +44 -0
  368. package/dist/types/index.mock.js.map +1 -0
  369. package/dist/types/index.test.js +123 -0
  370. package/dist/types/index.test.js.map +1 -0
  371. package/dist/types/pivot/derivePivotConfigFromChart.js +206 -0
  372. package/dist/types/pivot/derivePivotConfigFromChart.js.map +1 -0
  373. package/dist/types/pivot/derivePivotConfigFromChart.mock.js +112 -0
  374. package/dist/types/pivot/derivePivotConfigFromChart.mock.js.map +1 -0
  375. package/dist/types/pivot/derivePivotConfigFromChart.test.js +418 -0
  376. package/dist/types/pivot/derivePivotConfigFromChart.test.js.map +1 -0
  377. package/dist/types/pivot/index.d.ts +1 -0
  378. package/dist/types/pivot/index.d.ts.map +1 -1
  379. package/dist/types/pivot/index.js +5 -0
  380. package/dist/types/pivot/index.js.map +1 -0
  381. package/dist/types/pivot/pivotConfig.d.ts +7 -0
  382. package/dist/types/pivot/pivotConfig.d.ts.map +1 -0
  383. package/dist/types/pivot/pivotConfig.js +28 -0
  384. package/dist/types/pivot/pivotConfig.js.map +1 -0
  385. package/dist/types/pivot/pivotQueryResults.js +1034 -0
  386. package/dist/types/pivot/pivotQueryResults.js.map +1 -0
  387. package/dist/types/pivot/pivotQueryResults.mock.js +2412 -0
  388. package/dist/types/pivot/pivotQueryResults.mock.js.map +1 -0
  389. package/dist/types/pivot/pivotQueryResults.test.js +1222 -0
  390. package/dist/types/pivot/pivotQueryResults.test.js.map +1 -0
  391. package/dist/types/pivot/utils.js +14 -0
  392. package/dist/types/pivot/utils.js.map +1 -0
  393. package/dist/types/schemas/json/chart-as-code-1.0.json +436 -0
  394. package/dist/types/schemas/json/dashboard-as-code-1.0.json +349 -0
  395. package/dist/types/schemas/json/lightdash-dbt-2.0.json +1417 -0
  396. package/dist/types/schemas/json/lightdash-project-config-1.0.json +138 -0
  397. package/dist/types/templating/template.js +30 -0
  398. package/dist/types/templating/template.js.map +1 -0
  399. package/dist/types/templating/template.mock.js +45 -0
  400. package/dist/types/templating/template.mock.js.map +1 -0
  401. package/dist/types/templating/template.test.js +21 -0
  402. package/dist/types/templating/template.test.js.map +1 -0
  403. package/dist/types/types/SshKeyPair.js +2 -0
  404. package/dist/types/types/SshKeyPair.js.map +1 -0
  405. package/dist/types/types/account.js +2 -0
  406. package/dist/types/types/account.js.map +1 -0
  407. package/dist/types/types/analytics.js +29 -0
  408. package/dist/types/types/analytics.js.map +1 -0
  409. package/dist/types/types/any.js +2 -0
  410. package/dist/types/types/any.js.map +1 -0
  411. package/dist/types/types/api/comments.js +2 -0
  412. package/dist/types/types/api/comments.js.map +1 -0
  413. package/dist/types/types/api/email.js +2 -0
  414. package/dist/types/types/api/email.js.map +1 -0
  415. package/dist/types/types/api/errors.js +2 -0
  416. package/dist/types/types/api/errors.js.map +1 -0
  417. package/dist/types/types/api/notifications.js +5 -0
  418. package/dist/types/types/api/notifications.js.map +1 -0
  419. package/dist/types/types/api/paginatedQuery.js +3 -0
  420. package/dist/types/types/api/paginatedQuery.js.map +1 -0
  421. package/dist/types/types/api/parameters.js +2 -0
  422. package/dist/types/types/api/parameters.js.map +1 -0
  423. package/dist/types/types/api/share.js +2 -0
  424. package/dist/types/types/api/share.js.map +1 -0
  425. package/dist/types/types/api/sort.js +2 -0
  426. package/dist/types/types/api/sort.js.map +1 -0
  427. package/dist/types/types/api/spotlight.js +2 -0
  428. package/dist/types/types/api/spotlight.js.map +1 -0
  429. package/dist/types/types/api/success.js +2 -0
  430. package/dist/types/types/api/success.js.map +1 -0
  431. package/dist/types/types/api/uuid.js +2 -0
  432. package/dist/types/types/api/uuid.js.map +1 -0
  433. package/dist/types/types/api.d.ts +447 -0
  434. package/dist/types/types/api.d.ts.map +1 -1
  435. package/dist/types/types/api.js +57 -0
  436. package/dist/types/types/api.js.map +1 -0
  437. package/dist/types/types/applyDimensionOverrides.test.js +338 -0
  438. package/dist/types/types/applyDimensionOverrides.test.js.map +1 -0
  439. package/dist/types/types/auth.d.ts +2 -1
  440. package/dist/types/types/auth.d.ts.map +1 -1
  441. package/dist/types/types/auth.js +42 -0
  442. package/dist/types/types/auth.js.map +1 -0
  443. package/dist/types/types/bigQuerySSO.js +2 -0
  444. package/dist/types/types/bigQuerySSO.js.map +1 -0
  445. package/dist/types/types/catalog.js +50 -0
  446. package/dist/types/types/catalog.js.map +1 -0
  447. package/dist/types/types/changeset.d.ts +10 -10
  448. package/dist/types/types/changeset.js +72 -0
  449. package/dist/types/types/changeset.js.map +1 -0
  450. package/dist/types/types/coder.js +2 -0
  451. package/dist/types/types/coder.js.map +1 -0
  452. package/dist/types/types/comments.js +2 -0
  453. package/dist/types/types/comments.js.map +1 -0
  454. package/dist/types/types/conditionalFormatting.js +25 -0
  455. package/dist/types/types/conditionalFormatting.js.map +1 -0
  456. package/dist/types/types/content.js +19 -0
  457. package/dist/types/types/content.js.map +1 -0
  458. package/dist/types/types/csv.js +2 -0
  459. package/dist/types/types/csv.js.map +1 -0
  460. package/dist/types/types/dashboard.js +46 -0
  461. package/dist/types/types/dashboard.js.map +1 -0
  462. package/dist/types/types/dbt.js +262 -0
  463. package/dist/types/types/dbt.js.map +1 -0
  464. package/dist/types/types/dbtFromSchema.js +2 -0
  465. package/dist/types/types/dbtFromSchema.js.map +1 -0
  466. package/dist/types/types/deepPartial.js +7 -0
  467. package/dist/types/types/deepPartial.js.map +1 -0
  468. package/dist/types/types/downloadFile.js +9 -0
  469. package/dist/types/types/downloadFile.js.map +1 -0
  470. package/dist/types/types/email.js +2 -0
  471. package/dist/types/types/email.js.map +1 -0
  472. package/dist/types/types/errors.js +496 -0
  473. package/dist/types/types/errors.js.map +1 -0
  474. package/dist/types/types/explore.js +24 -0
  475. package/dist/types/types/explore.js.map +1 -0
  476. package/dist/types/types/featureFlags.js +62 -0
  477. package/dist/types/types/featureFlags.js.map +1 -0
  478. package/dist/types/types/field.js +473 -0
  479. package/dist/types/types/field.js.map +1 -0
  480. package/dist/types/types/field.test.js +90 -0
  481. package/dist/types/types/field.test.js.map +1 -0
  482. package/dist/types/types/fieldMatch.js +2 -0
  483. package/dist/types/types/fieldMatch.js.map +1 -0
  484. package/dist/types/types/filter.js +287 -0
  485. package/dist/types/types/filter.js.map +1 -0
  486. package/dist/types/types/filter.test.js +372 -0
  487. package/dist/types/types/filter.test.js.map +1 -0
  488. package/dist/types/types/filterGrammar.js +358 -0
  489. package/dist/types/types/filterGrammar.js.map +1 -0
  490. package/dist/types/types/filterGrammar.test.js +549 -0
  491. package/dist/types/types/filterGrammar.test.js.map +1 -0
  492. package/dist/types/types/filterGrammarConversion.js +94 -0
  493. package/dist/types/types/filterGrammarConversion.js.map +1 -0
  494. package/dist/types/types/filterGrammarConversion.test.js +260 -0
  495. package/dist/types/types/filterGrammarConversion.test.js.map +1 -0
  496. package/dist/types/types/gdrive.js +2 -0
  497. package/dist/types/types/gdrive.js.map +1 -0
  498. package/dist/types/types/gitIntegration.js +2 -0
  499. package/dist/types/types/gitIntegration.js.map +1 -0
  500. package/dist/types/types/groups.js +4 -0
  501. package/dist/types/types/groups.js.map +1 -0
  502. package/dist/types/types/job.js +67 -0
  503. package/dist/types/types/job.js.map +1 -0
  504. package/dist/types/types/knex-paginate.js +2 -0
  505. package/dist/types/types/knex-paginate.js.map +1 -0
  506. package/dist/types/types/lightdashProjectConfig.js +4 -0
  507. package/dist/types/types/lightdashProjectConfig.js.map +1 -0
  508. package/dist/types/types/metricQuery.js +20 -0
  509. package/dist/types/types/metricQuery.js.map +1 -0
  510. package/dist/types/types/metricsExplorer.js +12 -0
  511. package/dist/types/types/metricsExplorer.js.map +1 -0
  512. package/dist/types/types/notifications.js +2 -0
  513. package/dist/types/types/notifications.js.map +1 -0
  514. package/dist/types/types/oauth.js +2 -0
  515. package/dist/types/types/oauth.js.map +1 -0
  516. package/dist/types/types/openIdIdentity.js +12 -0
  517. package/dist/types/types/openIdIdentity.js.map +1 -0
  518. package/dist/types/types/organization.js +20 -0
  519. package/dist/types/types/organization.js.map +1 -0
  520. package/dist/types/types/organizationMemberProfile.js +30 -0
  521. package/dist/types/types/organizationMemberProfile.js.map +1 -0
  522. package/dist/types/types/organizationWarehouseCredentials.js +2 -0
  523. package/dist/types/types/organizationWarehouseCredentials.js.map +1 -0
  524. package/dist/types/types/paginateResults.js +2 -0
  525. package/dist/types/types/paginateResults.js.map +1 -0
  526. package/dist/types/types/parameters.js +2 -0
  527. package/dist/types/types/parameters.js.map +1 -0
  528. package/dist/types/types/personalAccessToken.js +2 -0
  529. package/dist/types/types/personalAccessToken.js.map +1 -0
  530. package/dist/types/types/pinning.js +5 -0
  531. package/dist/types/types/pinning.js.map +1 -0
  532. package/dist/types/types/pivot.d.ts +0 -2
  533. package/dist/types/types/pivot.d.ts.map +1 -1
  534. package/dist/types/types/pivot.js +2 -0
  535. package/dist/types/types/pivot.js.map +1 -0
  536. package/dist/types/types/projectGroupAccess.js +2 -0
  537. package/dist/types/types/projectGroupAccess.js.map +1 -0
  538. package/dist/types/types/projectMemberProfile.js +2 -0
  539. package/dist/types/types/projectMemberProfile.js.map +1 -0
  540. package/dist/types/types/projectMemberRole.js +30 -0
  541. package/dist/types/types/projectMemberRole.js.map +1 -0
  542. package/dist/types/types/projects.js +149 -0
  543. package/dist/types/types/projects.js.map +1 -0
  544. package/dist/types/types/promotion.js +8 -0
  545. package/dist/types/types/promotion.js.map +1 -0
  546. package/dist/types/types/queryHistory.js +8 -0
  547. package/dist/types/types/queryHistory.js.map +1 -0
  548. package/dist/types/types/rename.js +6 -0
  549. package/dist/types/types/rename.js.map +1 -0
  550. package/dist/types/types/resourceViewItem.d.ts +1 -1
  551. package/dist/types/types/resourceViewItem.js +103 -0
  552. package/dist/types/types/resourceViewItem.js.map +1 -0
  553. package/dist/types/types/results.js +51 -0
  554. package/dist/types/types/results.js.map +1 -0
  555. package/dist/types/types/roles.js +2 -0
  556. package/dist/types/types/roles.js.map +1 -0
  557. package/dist/types/types/savedCharts.js +225 -0
  558. package/dist/types/types/savedCharts.js.map +1 -0
  559. package/dist/types/types/scheduler.js +87 -0
  560. package/dist/types/types/scheduler.js.map +1 -0
  561. package/dist/types/types/schedulerLog.js +2 -0
  562. package/dist/types/types/schedulerLog.js.map +1 -0
  563. package/dist/types/types/schedulerTaskList.js +31 -0
  564. package/dist/types/types/schedulerTaskList.js.map +1 -0
  565. package/dist/types/types/scopes.js +14 -0
  566. package/dist/types/types/scopes.js.map +1 -0
  567. package/dist/types/types/search.js +53 -0
  568. package/dist/types/types/search.js.map +1 -0
  569. package/dist/types/types/share.js +2 -0
  570. package/dist/types/types/share.js.map +1 -0
  571. package/dist/types/types/slack.js +2 -0
  572. package/dist/types/types/slack.js.map +1 -0
  573. package/dist/types/types/slackSettings.js +2 -0
  574. package/dist/types/types/slackSettings.js.map +1 -0
  575. package/dist/types/types/space.js +7 -0
  576. package/dist/types/types/space.js.map +1 -0
  577. package/dist/types/types/spotlightTableConfig.js +17 -0
  578. package/dist/types/types/spotlightTableConfig.js.map +1 -0
  579. package/dist/types/types/sqlRunner.js +41 -0
  580. package/dist/types/types/sqlRunner.js.map +1 -0
  581. package/dist/types/types/table.js +6 -0
  582. package/dist/types/types/table.js.map +1 -0
  583. package/dist/types/types/tags.js +2 -0
  584. package/dist/types/types/tags.js.map +1 -0
  585. package/dist/types/types/timeFrames.js +42 -0
  586. package/dist/types/types/timeFrames.js.map +1 -0
  587. package/dist/types/types/timezone.js +33 -0
  588. package/dist/types/types/timezone.js.map +1 -0
  589. package/dist/types/types/user.js +23 -0
  590. package/dist/types/types/user.js.map +1 -0
  591. package/dist/types/types/userAttributes.js +2 -0
  592. package/dist/types/types/userAttributes.js.map +1 -0
  593. package/dist/types/types/userWarehouseCredentials.js +2 -0
  594. package/dist/types/types/userWarehouseCredentials.js.map +1 -0
  595. package/dist/types/types/validation.js +29 -0
  596. package/dist/types/types/validation.js.map +1 -0
  597. package/dist/types/types/warehouse.js +6 -0
  598. package/dist/types/types/warehouse.js.map +1 -0
  599. package/dist/types/types/yamlSchema.js +2 -0
  600. package/dist/types/types/yamlSchema.js.map +1 -0
  601. package/dist/types/utils/accessors.js +27 -0
  602. package/dist/types/utils/accessors.js.map +1 -0
  603. package/dist/types/utils/accessors.test.js +45 -0
  604. package/dist/types/utils/accessors.test.js.map +1 -0
  605. package/dist/types/utils/additionalMetrics.js +54 -0
  606. package/dist/types/utils/additionalMetrics.js.map +1 -0
  607. package/dist/types/utils/api.js +5 -0
  608. package/dist/types/utils/api.js.map +1 -0
  609. package/dist/types/utils/assertUnreachable.js +10 -0
  610. package/dist/types/utils/assertUnreachable.js.map +1 -0
  611. package/dist/types/utils/booleanConverter.js +27 -0
  612. package/dist/types/utils/booleanConverter.js.map +1 -0
  613. package/dist/types/utils/booleanConverter.test.js +59 -0
  614. package/dist/types/utils/booleanConverter.test.js.map +1 -0
  615. package/dist/types/utils/catalogMetricsTree.js +2 -0
  616. package/dist/types/utils/catalogMetricsTree.js.map +1 -0
  617. package/dist/types/utils/changeset.js +132 -0
  618. package/dist/types/utils/changeset.js.map +1 -0
  619. package/dist/types/utils/changeset.mock.js +146 -0
  620. package/dist/types/utils/changeset.mock.js.map +1 -0
  621. package/dist/types/utils/changeset.test.js +248 -0
  622. package/dist/types/utils/changeset.test.js.map +1 -0
  623. package/dist/types/utils/charts.js +74 -0
  624. package/dist/types/utils/charts.js.map +1 -0
  625. package/dist/types/utils/colors.js +15 -0
  626. package/dist/types/utils/colors.js.map +1 -0
  627. package/dist/types/utils/colors.test.js +85 -0
  628. package/dist/types/utils/colors.test.js.map +1 -0
  629. package/dist/types/utils/conditionalFormatting.js +436 -0
  630. package/dist/types/utils/conditionalFormatting.js.map +1 -0
  631. package/dist/types/utils/conditionalFormatting.test.js +105 -0
  632. package/dist/types/utils/conditionalFormatting.test.js.map +1 -0
  633. package/dist/types/utils/convertCustomDimensionsToYaml.js +115 -0
  634. package/dist/types/utils/convertCustomDimensionsToYaml.js.map +1 -0
  635. package/dist/types/utils/convertCustomMetricsToYaml.js +15 -0
  636. package/dist/types/utils/convertCustomMetricsToYaml.js.map +1 -0
  637. package/dist/types/utils/customDimensions.js +27 -0
  638. package/dist/types/utils/customDimensions.js.map +1 -0
  639. package/dist/types/utils/dashboard.js +35 -0
  640. package/dist/types/utils/dashboard.js.map +1 -0
  641. package/dist/types/utils/dashboard.test.js +36 -0
  642. package/dist/types/utils/dashboard.test.js.map +1 -0
  643. package/dist/types/utils/dbt.js +4 -0
  644. package/dist/types/utils/dbt.js.map +1 -0
  645. package/dist/types/utils/dbt.test.js +39 -0
  646. package/dist/types/utils/dbt.test.js.map +1 -0
  647. package/dist/types/utils/dependencyGraph.js +51 -0
  648. package/dist/types/utils/dependencyGraph.js.map +1 -0
  649. package/dist/types/utils/dependencyGraph.test.js +113 -0
  650. package/dist/types/utils/dependencyGraph.test.js.map +1 -0
  651. package/dist/types/utils/email.js +76 -0
  652. package/dist/types/utils/email.js.map +1 -0
  653. package/dist/types/utils/email.test.js +49 -0
  654. package/dist/types/utils/email.test.js.map +1 -0
  655. package/dist/types/utils/fields.js +183 -0
  656. package/dist/types/utils/fields.js.map +1 -0
  657. package/dist/types/utils/fields.mock.js +150 -0
  658. package/dist/types/utils/fields.mock.js.map +1 -0
  659. package/dist/types/utils/fields.test.js +259 -0
  660. package/dist/types/utils/fields.test.js.map +1 -0
  661. package/dist/types/utils/filters.js +763 -0
  662. package/dist/types/utils/filters.js.map +1 -0
  663. package/dist/types/utils/filters.mock.js +450 -0
  664. package/dist/types/utils/filters.mock.js.map +1 -0
  665. package/dist/types/utils/filters.test.js +360 -0
  666. package/dist/types/utils/filters.test.js.map +1 -0
  667. package/dist/types/utils/formatting.js +552 -0
  668. package/dist/types/utils/formatting.js.map +1 -0
  669. package/dist/types/utils/formatting.mock.js +28 -0
  670. package/dist/types/utils/formatting.mock.js.map +1 -0
  671. package/dist/types/utils/formatting.test.js +1047 -0
  672. package/dist/types/utils/formatting.test.js.map +1 -0
  673. package/dist/types/utils/github.js +11 -0
  674. package/dist/types/utils/github.js.map +1 -0
  675. package/dist/types/utils/i18n/abstract.js +3 -0
  676. package/dist/types/utils/i18n/abstract.js.map +1 -0
  677. package/dist/types/utils/i18n/chartAsCode.js +132 -0
  678. package/dist/types/utils/i18n/chartAsCode.js.map +1 -0
  679. package/dist/types/utils/i18n/chartAsCode.test.js +350 -0
  680. package/dist/types/utils/i18n/chartAsCode.test.js.map +1 -0
  681. package/dist/types/utils/i18n/dashboardAsCode.js +58 -0
  682. package/dist/types/utils/i18n/dashboardAsCode.js.map +1 -0
  683. package/dist/types/utils/i18n/index.js +5 -0
  684. package/dist/types/utils/i18n/index.js.map +1 -0
  685. package/dist/types/utils/i18n/merge.js +20 -0
  686. package/dist/types/utils/i18n/merge.js.map +1 -0
  687. package/dist/types/utils/i18n/types.js +2 -0
  688. package/dist/types/utils/i18n/types.js.map +1 -0
  689. package/dist/types/utils/item.js +154 -0
  690. package/dist/types/utils/item.js.map +1 -0
  691. package/dist/types/utils/loadLightdashProjectConfig.js +49 -0
  692. package/dist/types/utils/loadLightdashProjectConfig.js.map +1 -0
  693. package/dist/types/utils/loadLightdashProjectConfig.mock.js +127 -0
  694. package/dist/types/utils/loadLightdashProjectConfig.mock.js.map +1 -0
  695. package/dist/types/utils/loadLightdashProjectConfig.test.js +137 -0
  696. package/dist/types/utils/loadLightdashProjectConfig.test.js.map +1 -0
  697. package/dist/types/utils/metricsExplorer.js +365 -0
  698. package/dist/types/utils/metricsExplorer.js.map +1 -0
  699. package/dist/types/utils/oauth.js +242 -0
  700. package/dist/types/utils/oauth.js.map +1 -0
  701. package/dist/types/utils/organization.js +23 -0
  702. package/dist/types/utils/organization.js.map +1 -0
  703. package/dist/types/utils/projectMemberRole.js +85 -0
  704. package/dist/types/utils/projectMemberRole.js.map +1 -0
  705. package/dist/types/utils/projectMemberRole.test.js +36 -0
  706. package/dist/types/utils/projectMemberRole.test.js.map +1 -0
  707. package/dist/types/utils/promises.js +5 -0
  708. package/dist/types/utils/promises.js.map +1 -0
  709. package/dist/types/utils/sanitizeHtml.js +111 -0
  710. package/dist/types/utils/sanitizeHtml.js.map +1 -0
  711. package/dist/types/utils/sanitizeHtml.test.js +101 -0
  712. package/dist/types/utils/sanitizeHtml.test.js.map +1 -0
  713. package/dist/types/utils/scheduler.js +85 -0
  714. package/dist/types/utils/scheduler.js.map +1 -0
  715. package/dist/types/utils/scheduler.test.js +41 -0
  716. package/dist/types/utils/scheduler.test.js.map +1 -0
  717. package/dist/types/utils/searchParams.js +8 -0
  718. package/dist/types/utils/searchParams.js.map +1 -0
  719. package/dist/types/utils/sleep.js +6 -0
  720. package/dist/types/utils/sleep.js.map +1 -0
  721. package/dist/types/utils/slug.test.js +129 -0
  722. package/dist/types/utils/slug.test.js.map +1 -0
  723. package/dist/types/utils/slugs.js +55 -0
  724. package/dist/types/utils/slugs.js.map +1 -0
  725. package/dist/types/utils/subtotals.js +4 -0
  726. package/dist/types/utils/subtotals.js.map +1 -0
  727. package/dist/types/utils/time.js +25 -0
  728. package/dist/types/utils/time.js.map +1 -0
  729. package/dist/types/utils/timeFrames.js +529 -0
  730. package/dist/types/utils/timeFrames.js.map +1 -0
  731. package/dist/types/utils/timeFrames.test.js +50 -0
  732. package/dist/types/utils/timeFrames.test.js.map +1 -0
  733. package/dist/types/utils/virtualView.js +98 -0
  734. package/dist/types/utils/virtualView.js.map +1 -0
  735. package/dist/types/utils/warehouse.js +57 -0
  736. package/dist/types/utils/warehouse.js.map +1 -0
  737. package/dist/types/visualizations/CartesianChartDataModel.js +515 -0
  738. package/dist/types/visualizations/CartesianChartDataModel.js.map +1 -0
  739. package/dist/types/visualizations/PieChartDataModel.js +258 -0
  740. package/dist/types/visualizations/PieChartDataModel.js.map +1 -0
  741. package/dist/types/visualizations/TableDataModel.js +96 -0
  742. package/dist/types/visualizations/TableDataModel.js.map +1 -0
  743. package/dist/types/visualizations/chartTransformations.js +107 -0
  744. package/dist/types/visualizations/chartTransformations.js.map +1 -0
  745. package/dist/types/visualizations/helpers/getCartesianAxisFormatterConfig.js +142 -0
  746. package/dist/types/visualizations/helpers/getCartesianAxisFormatterConfig.js.map +1 -0
  747. package/dist/types/visualizations/types/IResultsRunner.js +2 -0
  748. package/dist/types/visualizations/types/IResultsRunner.js.map +1 -0
  749. package/dist/types/visualizations/types/index.js +78 -0
  750. package/dist/types/visualizations/types/index.js.map +1 -0
  751. package/package.json +1 -1
  752. package/dist/tsconfig.types.tsbuildinfo +0 -1
@@ -0,0 +1,763 @@
1
+ import dayjs from 'dayjs';
2
+ import isNil from 'lodash/isNil';
3
+ import moment from 'moment';
4
+ import { v4 as uuidv4 } from 'uuid';
5
+ import { DashboardTileTypes } from '../types/dashboard';
6
+ import { DimensionType, MetricType, TableCalculationType, convertFieldRefToFieldId, isCustomSqlDimension, isDimension, isTableCalculation, } from '../types/field';
7
+ import { FilterOperator, FilterType, UnitOfTime, isAndFilterGroup, isFilterGroup, isFilterRule, isFilterRuleDefinedForFieldId, isJoinModelRequiredFilter, } from '../types/filter';
8
+ import { TimeFrames } from '../types/timeFrames';
9
+ import assertUnreachable from './assertUnreachable';
10
+ import { formatDate } from './formatting';
11
+ import { getItemId, getItemType, isDateItem } from './item';
12
+ export const getFilterRulesFromGroup = (filterGroup) => {
13
+ if (filterGroup) {
14
+ const items = isAndFilterGroup(filterGroup)
15
+ ? filterGroup.and
16
+ : filterGroup.or;
17
+ return items.reduce((sum, item) => isFilterGroup(item)
18
+ ? [...sum, ...getFilterRulesFromGroup(item)]
19
+ : [...sum, item], []);
20
+ }
21
+ return [];
22
+ };
23
+ export const getTotalFilterRules = (filters) => [
24
+ ...getFilterRulesFromGroup(filters.dimensions),
25
+ ...getFilterRulesFromGroup(filters.metrics),
26
+ ...getFilterRulesFromGroup(filters.tableCalculations),
27
+ ];
28
+ export const countTotalFilterRules = (filters) => getTotalFilterRules(filters).length;
29
+ export const hasNestedGroups = (filters) => {
30
+ const hasGroups = (filterGroup) => {
31
+ const items = isAndFilterGroup(filterGroup)
32
+ ? filterGroup.and
33
+ : filterGroup.or;
34
+ return items.some(isFilterGroup);
35
+ };
36
+ return ((!!filters.dimensions && hasGroups(filters.dimensions)) ||
37
+ (!!filters.metrics && hasGroups(filters.metrics)) ||
38
+ (!!filters.tableCalculations && hasGroups(filters.tableCalculations)));
39
+ };
40
+ export const getItemsFromFilterGroup = (filterGroup) => {
41
+ if (filterGroup) {
42
+ return isAndFilterGroup(filterGroup) ? filterGroup.and : filterGroup.or;
43
+ }
44
+ return [];
45
+ };
46
+ export const getFilterGroupItemsPropertyName = (filterGroup) => {
47
+ if (filterGroup) {
48
+ return isAndFilterGroup(filterGroup) ? 'and' : 'or';
49
+ }
50
+ return 'and';
51
+ };
52
+ export const getFilterTypeFromItemType = (type) => {
53
+ switch (type) {
54
+ case DimensionType.STRING:
55
+ case MetricType.STRING:
56
+ case TableCalculationType.STRING:
57
+ return FilterType.STRING;
58
+ case DimensionType.NUMBER:
59
+ case MetricType.NUMBER:
60
+ case MetricType.PERCENTILE:
61
+ case MetricType.MEDIAN:
62
+ case MetricType.AVERAGE:
63
+ case MetricType.COUNT:
64
+ case MetricType.COUNT_DISTINCT:
65
+ case MetricType.SUM:
66
+ case MetricType.MIN:
67
+ case MetricType.MAX:
68
+ case MetricType.PERCENT_OF_PREVIOUS:
69
+ case MetricType.PERCENT_OF_TOTAL:
70
+ case MetricType.RUNNING_TOTAL:
71
+ case TableCalculationType.NUMBER:
72
+ return FilterType.NUMBER;
73
+ case DimensionType.TIMESTAMP:
74
+ case MetricType.TIMESTAMP:
75
+ case DimensionType.DATE:
76
+ case MetricType.DATE:
77
+ case TableCalculationType.DATE:
78
+ case TableCalculationType.TIMESTAMP:
79
+ return FilterType.DATE;
80
+ case DimensionType.BOOLEAN:
81
+ case MetricType.BOOLEAN:
82
+ case TableCalculationType.BOOLEAN:
83
+ return FilterType.BOOLEAN;
84
+ default: {
85
+ return assertUnreachable(type, `No filter type found for field type: ${type}`);
86
+ }
87
+ }
88
+ };
89
+ export const getFilterTypeFromItem = (item) => {
90
+ const type = getItemType(item);
91
+ return getFilterTypeFromItemType(type);
92
+ };
93
+ export const timeframeToUnitOfTime = (timeframe) => {
94
+ switch (timeframe) {
95
+ case TimeFrames.MILLISECOND:
96
+ return UnitOfTime.milliseconds;
97
+ case TimeFrames.SECOND:
98
+ return UnitOfTime.seconds;
99
+ case TimeFrames.MINUTE:
100
+ return UnitOfTime.minutes;
101
+ case TimeFrames.HOUR:
102
+ return UnitOfTime.hours;
103
+ case TimeFrames.DAY:
104
+ return UnitOfTime.days;
105
+ case TimeFrames.WEEK:
106
+ return UnitOfTime.weeks;
107
+ case TimeFrames.MONTH:
108
+ return UnitOfTime.months;
109
+ case TimeFrames.QUARTER:
110
+ return UnitOfTime.quarters;
111
+ case TimeFrames.YEAR:
112
+ return UnitOfTime.years;
113
+ default:
114
+ return undefined;
115
+ }
116
+ };
117
+ export const supportsSingleValue = (filterType, filterOperator) => [FilterType.STRING, FilterType.NUMBER].includes(filterType) &&
118
+ [
119
+ FilterOperator.EQUALS,
120
+ FilterOperator.NOT_EQUALS,
121
+ FilterOperator.STARTS_WITH,
122
+ FilterOperator.ENDS_WITH,
123
+ FilterOperator.INCLUDE,
124
+ FilterOperator.NOT_INCLUDE,
125
+ ].includes(filterOperator);
126
+ export const isWithValueFilter = (filterOperator) => filterOperator !== FilterOperator.NULL &&
127
+ filterOperator !== FilterOperator.NOT_NULL;
128
+ export const getFilterRuleWithDefaultValue = (filterType, field, filterRule, values) => {
129
+ const filterRuleDefaults = {};
130
+ if (![FilterOperator.NULL, FilterOperator.NOT_NULL].includes(filterRule.operator) &&
131
+ values !== null) {
132
+ switch (filterType) {
133
+ case FilterType.DATE: {
134
+ const value = values ? values[0] : undefined;
135
+ const isTimestamp = !field ||
136
+ (isCustomSqlDimension(field)
137
+ ? field.dimensionType
138
+ : field.type) === DimensionType.TIMESTAMP;
139
+ if (filterRule.operator === FilterOperator.IN_THE_PAST ||
140
+ filterRule.operator === FilterOperator.NOT_IN_THE_PAST ||
141
+ filterRule.operator === FilterOperator.IN_THE_NEXT ||
142
+ filterRule.operator === FilterOperator.IN_THE_CURRENT ||
143
+ filterRule.operator === FilterOperator.NOT_IN_THE_CURRENT) {
144
+ const numberValue = value === undefined || typeof value !== 'number'
145
+ ? 1
146
+ : value;
147
+ const defaultUnitOfTime = isDimension(field) && field.timeInterval
148
+ ? timeframeToUnitOfTime(field.timeInterval)
149
+ : UnitOfTime.days;
150
+ filterRuleDefaults.values = [numberValue];
151
+ filterRuleDefaults.settings = {
152
+ unitOfTime: defaultUnitOfTime,
153
+ completed: false,
154
+ };
155
+ }
156
+ else if (isTimestamp) {
157
+ const valueIsDate = value !== undefined && typeof value !== 'number';
158
+ // NOTE: Using .format() makes this a standard ISO string
159
+ const timestampValue = valueIsDate
160
+ ? dayjs(value).format()
161
+ : dayjs().format();
162
+ filterRuleDefaults.values = [timestampValue];
163
+ }
164
+ else {
165
+ const valueIsDate = value !== undefined && typeof value !== 'number';
166
+ const defaultTimeIntervalValues = {
167
+ [TimeFrames.DAY]: moment(),
168
+ [TimeFrames.WEEK]: moment(valueIsDate ? value : undefined).startOf('week'),
169
+ [TimeFrames.QUARTER]: moment(valueIsDate ? value : undefined).startOf('quarter'),
170
+ [TimeFrames.MONTH]: moment(valueIsDate ? value : undefined).startOf('month'),
171
+ [TimeFrames.YEAR]: moment(valueIsDate ? value : undefined).startOf('year'),
172
+ };
173
+ const fieldTimeInterval = isDimension(field) && field.timeInterval
174
+ ? field.timeInterval
175
+ : undefined;
176
+ const defaultDate = fieldTimeInterval &&
177
+ defaultTimeIntervalValues[fieldTimeInterval]
178
+ ? defaultTimeIntervalValues[fieldTimeInterval]
179
+ : moment();
180
+ const dateValue = valueIsDate
181
+ ? formatDate(
182
+ // Treat the date as UTC, then remove its timezone information before formatting
183
+ moment.utc(value).format('YYYY-MM-DD'),
184
+ // For QUARTER, we don't want to use the field's time interval(YYYY-[Q]Q) because the date is already in the correct format when generating the SQL
185
+ fieldTimeInterval === TimeFrames.QUARTER
186
+ ? undefined
187
+ : fieldTimeInterval, // Use the field's time interval if it has one
188
+ false)
189
+ : formatDate(defaultDate, undefined, false);
190
+ filterRuleDefaults.values = [dateValue];
191
+ }
192
+ break;
193
+ }
194
+ case FilterType.BOOLEAN: {
195
+ filterRuleDefaults.values =
196
+ values !== undefined ? values : [false];
197
+ break;
198
+ }
199
+ default:
200
+ break;
201
+ }
202
+ }
203
+ return {
204
+ ...filterRule,
205
+ values: values !== undefined && values !== null ? values : [],
206
+ settings: undefined,
207
+ ...filterRuleDefaults,
208
+ };
209
+ };
210
+ export const getFilterRuleFromFieldWithDefaultValue = (field, filterRule, values) => getFilterRuleWithDefaultValue(getFilterTypeFromItem(field), field, filterRule, values);
211
+ export const createFilterRuleFromField = (field, value) => getFilterRuleFromFieldWithDefaultValue(field, {
212
+ id: uuidv4(),
213
+ target: {
214
+ fieldId: getItemId(field),
215
+ },
216
+ operator: value === null ? FilterOperator.NULL : FilterOperator.EQUALS,
217
+ }, value ? [value] : []);
218
+ export const matchFieldExact = (a) => (b) => a.type === b.type && a.name === b.name && a.table === b.table;
219
+ export const matchFieldByTypeAndName = (a) => (b) => a.type === b.type && a.name === b.name;
220
+ export const matchFieldByType = (a) => (b) => a.type === b.type;
221
+ export const isTileFilterable = (tile) => ![DashboardTileTypes.MARKDOWN, DashboardTileTypes.LOOM].includes(tile.type);
222
+ const getDefaultTileTargets = (field, availableTileFilters) => Object.entries(availableTileFilters).reduce((acc, [tileUuid, availableFilters]) => {
223
+ if (!availableFilters)
224
+ return acc;
225
+ const filterableField = availableFilters.find(matchFieldExact(field));
226
+ if (!filterableField)
227
+ return acc;
228
+ return {
229
+ ...acc,
230
+ [tileUuid]: {
231
+ fieldId: getItemId(filterableField),
232
+ tableName: filterableField.table,
233
+ },
234
+ };
235
+ }, {});
236
+ export const applyDefaultTileTargets = (filterRule, field, availableTileFilters) => {
237
+ if (!filterRule.tileTargets) {
238
+ return {
239
+ ...filterRule,
240
+ tileTargets: getDefaultTileTargets(field, availableTileFilters),
241
+ };
242
+ }
243
+ return filterRule;
244
+ };
245
+ export const createDashboardFilterRuleFromField = ({ field, availableTileFilters, isTemporary, value, }) => getFilterRuleFromFieldWithDefaultValue(field, {
246
+ id: uuidv4(),
247
+ operator: value === null ? FilterOperator.NULL : FilterOperator.EQUALS,
248
+ target: {
249
+ fieldId: getItemId(field),
250
+ tableName: field.table,
251
+ fieldName: field.name,
252
+ },
253
+ tileTargets: getDefaultTileTargets(field, availableTileFilters),
254
+ disabled: !isTemporary,
255
+ label: undefined,
256
+ }, !isNil(value) ? [value] : null);
257
+ const getDefaultTileSqlTargets = (column, availableTileColumns) => Object.entries(availableTileColumns).reduce((acc, [tileUuid, availableColumns]) => {
258
+ if (!availableColumns)
259
+ return acc;
260
+ const filterableField = availableColumns.find((target) => target.reference === column.reference);
261
+ if (!filterableField)
262
+ return acc;
263
+ return {
264
+ ...acc,
265
+ [tileUuid]: {
266
+ fieldId: filterableField.reference,
267
+ tableName: `sql_chart`,
268
+ isSqlColumn: true,
269
+ fallbackType: filterableField.type,
270
+ },
271
+ };
272
+ }, {});
273
+ export const createDashboardFilterRuleFromSqlColumn = ({ column, availableTileColumns, isTemporary, value, }) => getFilterRuleWithDefaultValue(getFilterTypeFromItemType(column.type), undefined, {
274
+ id: uuidv4(),
275
+ operator: value === null ? FilterOperator.NULL : FilterOperator.EQUALS,
276
+ target: {
277
+ fieldId: column.reference,
278
+ tableName: 'sql_chart',
279
+ isSqlColumn: true,
280
+ fallbackType: column.type,
281
+ },
282
+ tileTargets: getDefaultTileSqlTargets(column, availableTileColumns),
283
+ disabled: !isTemporary,
284
+ label: undefined,
285
+ }, !isNil(value) ? [value] : null);
286
+ export const addFilterRule = ({ filters, field, value, }) => {
287
+ const groupKey = ((f) => {
288
+ if (isDimension(f) || isCustomSqlDimension(f)) {
289
+ return 'dimensions';
290
+ }
291
+ if (isTableCalculation(f)) {
292
+ return 'tableCalculations';
293
+ }
294
+ return 'metrics';
295
+ })(field);
296
+ const group = filters[groupKey];
297
+ return {
298
+ ...filters,
299
+ [groupKey]: {
300
+ id: uuidv4(),
301
+ ...group,
302
+ [getFilterGroupItemsPropertyName(group)]: [
303
+ ...getItemsFromFilterGroup(group),
304
+ createFilterRuleFromField(field, value),
305
+ ],
306
+ },
307
+ };
308
+ };
309
+ /**
310
+ * Takes a filter group and flattens it by merging nested groups into the parent group if they are the same filter group type
311
+ * @param filterGroup - The filter group to flatten
312
+ * @returns Flattened filter group
313
+ */
314
+ const flattenSameFilterGroupType = (filterGroup) => {
315
+ const items = getItemsFromFilterGroup(filterGroup);
316
+ return {
317
+ id: filterGroup.id,
318
+ [getFilterGroupItemsPropertyName(filterGroup)]: items.reduce((acc, item) => {
319
+ if (isFilterGroup(item)) {
320
+ const flatGroup = flattenSameFilterGroupType(item);
321
+ // If the parent group is the same type as the current group, we merge the current group items into the parent group
322
+ if (getFilterGroupItemsPropertyName(flatGroup) ===
323
+ getFilterGroupItemsPropertyName(filterGroup)) {
324
+ return [...acc, ...getItemsFromFilterGroup(flatGroup)];
325
+ }
326
+ // If the parent group is not the same type as the current group, we just add the current group as an item
327
+ return [...acc, flatGroup];
328
+ }
329
+ return [...acc, item];
330
+ }, []),
331
+ };
332
+ };
333
+ /**
334
+ * Checks if a dimension value is an invalid date before it is added to the filter
335
+ * @param item - The field to compare against the value
336
+ * @param value - The value to check
337
+ * @returns True if the value is an invalid date, false otherwise
338
+ */
339
+ export const isDimensionValueInvalidDate = (item, value) => isDateItem(item) && value.raw === 'Invalid Date'; // Message from moment.js when it can't parse a date
340
+ /**
341
+ * Takes a filter group and build a filters object from it based on the field type
342
+ * @param filterGroup - The filter group to extract filters from
343
+ * @param fields - Fields to compare against the filter group items to determine types
344
+ * @returns Filters object with dimensions, metrics, and table calculations
345
+ */
346
+ export const getFiltersFromGroup = (filterGroup, fields) => {
347
+ const flatFilterGroup = flattenSameFilterGroupType(filterGroup);
348
+ const items = getItemsFromFilterGroup(flatFilterGroup);
349
+ return items.reduce((accumulator, item) => {
350
+ if (isFilterRule(item)) {
351
+ // when filter group item is a filter rule, we find the field it's targeting
352
+ const fieldInRule = fields.find((field) => getItemId(field) === item.target.fieldId);
353
+ // determine the type of the field and add the rule it to the correct filters object property
354
+ // always keep the parent filter group type (AND/OR) when adding the filter rules
355
+ if (fieldInRule) {
356
+ if (isDimension(fieldInRule) ||
357
+ isCustomSqlDimension(fieldInRule)) {
358
+ accumulator.dimensions = {
359
+ id: uuidv4(),
360
+ ...accumulator.dimensions,
361
+ [getFilterGroupItemsPropertyName(flatFilterGroup)]: [
362
+ ...getItemsFromFilterGroup(accumulator.dimensions),
363
+ item,
364
+ ],
365
+ };
366
+ }
367
+ else if (isTableCalculation(fieldInRule)) {
368
+ accumulator.tableCalculations = {
369
+ id: uuidv4(),
370
+ ...accumulator.tableCalculations,
371
+ [getFilterGroupItemsPropertyName(flatFilterGroup)]: [
372
+ ...getItemsFromFilterGroup(accumulator.tableCalculations),
373
+ item,
374
+ ],
375
+ };
376
+ }
377
+ else {
378
+ accumulator.metrics = {
379
+ id: uuidv4(),
380
+ ...accumulator.metrics,
381
+ [getFilterGroupItemsPropertyName(flatFilterGroup)]: [
382
+ ...getItemsFromFilterGroup(accumulator.metrics),
383
+ item,
384
+ ],
385
+ };
386
+ }
387
+ }
388
+ }
389
+ if (isFilterGroup(item)) {
390
+ // when filter group item is a filter group, we need to recursively call this function to extract filters objects from the nested group
391
+ // then we add each field type filter group - from nested filters group - into the correct parent filters object property keeping the parent filter group type (AND/OR)
392
+ const filters = getFiltersFromGroup(item, fields);
393
+ if (filters.dimensions) {
394
+ accumulator.dimensions = {
395
+ id: uuidv4(),
396
+ ...accumulator.dimensions,
397
+ [getFilterGroupItemsPropertyName(flatFilterGroup)]: [
398
+ ...getItemsFromFilterGroup(accumulator.dimensions),
399
+ filters.dimensions,
400
+ ],
401
+ };
402
+ }
403
+ if (filters.metrics) {
404
+ accumulator.metrics = {
405
+ id: uuidv4(),
406
+ ...accumulator.metrics,
407
+ [getFilterGroupItemsPropertyName(flatFilterGroup)]: [
408
+ ...getItemsFromFilterGroup(accumulator.metrics),
409
+ filters.metrics,
410
+ ],
411
+ };
412
+ }
413
+ if (filters.tableCalculations) {
414
+ accumulator.tableCalculations = {
415
+ id: uuidv4(),
416
+ ...accumulator.tableCalculations,
417
+ [getFilterGroupItemsPropertyName(flatFilterGroup)]: [
418
+ ...getItemsFromFilterGroup(accumulator.tableCalculations),
419
+ filters.tableCalculations,
420
+ ],
421
+ };
422
+ }
423
+ }
424
+ return accumulator;
425
+ }, {});
426
+ };
427
+ export const deleteFilterRuleFromGroup = (filterGroup, id) => {
428
+ const items = getItemsFromFilterGroup(filterGroup);
429
+ // If the filter group contains the rule we want to delete, we remove it
430
+ if (items.some((rule) => rule.id === id)) {
431
+ return {
432
+ id: filterGroup.id,
433
+ [getFilterGroupItemsPropertyName(filterGroup)]: items.filter((rule) => rule.id !== id),
434
+ };
435
+ }
436
+ const groupGroups = items.filter(isFilterGroup);
437
+ const groupItems = items.filter(isFilterRule);
438
+ // If the filter group contains nested groups, we recursively call this function on each nested group
439
+ const newGroups = groupGroups.map((group) => deleteFilterRuleFromGroup(group, id));
440
+ return {
441
+ id: filterGroup.id,
442
+ [getFilterGroupItemsPropertyName(filterGroup)]: [
443
+ ...groupItems,
444
+ ...newGroups,
445
+ ],
446
+ };
447
+ };
448
+ export const getDashboardFilterRulesForTile = (tileUuid, rules, needsExplicitTileOverride = false) => rules
449
+ .filter((rule) => !rule.disabled)
450
+ .map((filter) => {
451
+ const tileConfig = filter.tileTargets?.[tileUuid];
452
+ // If the config is false, we remove this filter
453
+ if (tileConfig === false) {
454
+ return null;
455
+ }
456
+ // If the tile isn't in the tileTarget overrides,
457
+ // we return the filter and don't treat this tile
458
+ // differently.
459
+ if (tileConfig === undefined) {
460
+ // If needs explicit override, we remove this filter
461
+ if (needsExplicitTileOverride) {
462
+ return null;
463
+ }
464
+ return filter;
465
+ }
466
+ return {
467
+ ...filter,
468
+ target: tileConfig,
469
+ };
470
+ })
471
+ .filter((f) => f !== null);
472
+ export const getTabUuidsForFilterRules = (dashboardTiles, filters, filterableFieldsByTileUuid) => {
473
+ if (!dashboardTiles)
474
+ return {};
475
+ return dashboardTiles.reduce((acc, tile) => {
476
+ if (!tile.tabUuid || !isTileFilterable(tile)) {
477
+ return acc;
478
+ }
479
+ const filterIdsForTile = getDashboardFilterRulesForTile(tile.uuid, filters.dimensions)
480
+ .filter((filterRule) => {
481
+ const tileConfig = filterRule.tileTargets?.[tile.uuid];
482
+ // TODO: Move this fallback logic to the getDashboardFilterRulesForTile function
483
+ if (tileConfig === undefined && filterableFieldsByTileUuid) {
484
+ return filterableFieldsByTileUuid[tile.uuid]?.some((f) => getItemId(f) === filterRule.target.fieldId);
485
+ }
486
+ // Apply filter to tile
487
+ return !!tileConfig;
488
+ })
489
+ .map((tileFilter) => tileFilter.id);
490
+ // Set filter id as key and tile tab uuids as values
491
+ filterIdsForTile.forEach((filterId) => {
492
+ if (!acc[filterId]) {
493
+ acc[filterId] = [];
494
+ }
495
+ if (tile.tabUuid && !acc[filterId].includes(tile.tabUuid)) {
496
+ acc[filterId].push(tile.tabUuid);
497
+ }
498
+ });
499
+ return acc;
500
+ }, {});
501
+ };
502
+ export const getDashboardFilterRulesForTileAndReferences = (tileUuid, references, rules) => getDashboardFilterRulesForTile(tileUuid, rules, true).filter((f) => f.target.isSqlColumn && references.includes(f.target.fieldId));
503
+ export const getDashboardFilterRulesForTables = (tables, rules) => rules.filter((f) => tables.includes(f.target.tableName));
504
+ export const getDashboardFilterRulesForTileAndTables = (tileUuid, tables, rules) => getDashboardFilterRulesForTables(tables, getDashboardFilterRulesForTile(tileUuid, rules));
505
+ export const getDashboardFiltersForTileAndTables = (tileUuid, tables, dashboardFilters) => ({
506
+ dimensions: getDashboardFilterRulesForTileAndTables(tileUuid, tables, dashboardFilters.dimensions),
507
+ metrics: getDashboardFilterRulesForTileAndTables(tileUuid, tables, dashboardFilters.metrics),
508
+ tableCalculations: getDashboardFilterRulesForTileAndTables(tileUuid, tables, dashboardFilters.tableCalculations),
509
+ });
510
+ const combineFilterGroups = (a, b) => ({
511
+ id: uuidv4(),
512
+ and: [a, b].filter((f) => !!f),
513
+ });
514
+ export const addFiltersToMetricQuery = (metricQuery, filters) => ({
515
+ ...metricQuery,
516
+ filters: {
517
+ dimensions: combineFilterGroups(metricQuery.filters?.dimensions, filters.dimensions),
518
+ metrics: combineFilterGroups(metricQuery.filters?.metrics, filters.metrics),
519
+ tableCalculations: combineFilterGroups(metricQuery.filters?.tableCalculations, filters.tableCalculations),
520
+ },
521
+ });
522
+ /**
523
+ * This function is used to override the chart filter with the dashboard filter
524
+ * if the dashboard filter is a time or date dimension and the chart filter is a different granularity of the same dimension
525
+ * or if the dashboard filter is the same dimension as the chart filter
526
+ * Example:
527
+ * Chart has a filter order_date_month; User applies Dashboard filter order_date_year
528
+ * The chart filter will be overridden with the dashboard filter
529
+ * set in the timeBasedOverrideMap so we know which metric filter to override
530
+ * Another example:
531
+ * Chart has a filter is_completed: true; User applies Dashboard filter is_completed: false
532
+ * The chart filter will be overridden with the dashboard filter (is_completed: false)
533
+ * @param item - The item to override
534
+ * @param filterRulesList - The list of filter rules to check against
535
+ * @param timeBasedOverrideMap - The map of overridden filters
536
+ * @returns The overridden item
537
+ */
538
+ const findAndOverrideChartFilter = (item, filterRulesList, timeBasedOverrideMap) => {
539
+ const identicalDashboardFilter = isFilterRule(item)
540
+ ? filterRulesList.find((dashboardFilter) => {
541
+ const overrideData = timeBasedOverrideMap?.[dashboardFilter.id];
542
+ return (overrideData?.fieldsToChange.includes(item.target.fieldId) ||
543
+ dashboardFilter.target.fieldId === item.target.fieldId);
544
+ })
545
+ : undefined;
546
+ return identicalDashboardFilter
547
+ ? {
548
+ ...item,
549
+ target: {
550
+ fieldId: identicalDashboardFilter.target.fieldId,
551
+ },
552
+ id: identicalDashboardFilter.id,
553
+ values: identicalDashboardFilter.values,
554
+ ...(identicalDashboardFilter.settings && {
555
+ settings: identicalDashboardFilter.settings,
556
+ }),
557
+ operator: identicalDashboardFilter.operator,
558
+ }
559
+ : item;
560
+ };
561
+ export const overrideChartFilter = (filterGroup, filterRules, timeBasedOverrideMap) => isAndFilterGroup(filterGroup)
562
+ ? {
563
+ id: filterGroup.id,
564
+ and: filterGroup.and.map((item) => findAndOverrideChartFilter(item, filterRules, timeBasedOverrideMap)),
565
+ }
566
+ : {
567
+ id: filterGroup.id,
568
+ or: filterGroup.or.map((item) => findAndOverrideChartFilter(item, filterRules, timeBasedOverrideMap)),
569
+ };
570
+ const getDeduplicatedFilterRules = (filterRules, filterGroup) => {
571
+ const groupFilterRules = getFilterRulesFromGroup(filterGroup);
572
+ return filterRules.filter((rule) => !groupFilterRules.some((groupRule) => groupRule.id === rule.id));
573
+ };
574
+ /**
575
+ * Merges dashboard filters with existing filters using override tracking
576
+ * @param filterGroup - Existing filter group to override
577
+ * @param filterRules - Dashboard filter rules to apply
578
+ * @param timeBasedOverrideMap - Dictionary tracking time-based field relationships
579
+ * @returns New combined filter group with overrides applied
580
+ */
581
+ export const overrideFilterGroupWithFilterRules = (filterGroup, filterRules, timeBasedOverrideMap) => {
582
+ if (!filterGroup) {
583
+ return {
584
+ id: uuidv4(),
585
+ and: filterRules,
586
+ };
587
+ }
588
+ const overriddenGroup = overrideChartFilter(filterGroup, filterRules, timeBasedOverrideMap);
589
+ // deduplicate the dashboard filter rules from the ones used when overriding the chart filterGroup
590
+ const deduplicatedRules = getDeduplicatedFilterRules(filterRules, overriddenGroup);
591
+ // if it's AND group we don't need to sub-group the rules - all can be in the same group
592
+ // if it's OR group we need to sub-group the rules
593
+ const overridenGroupItems = isAndFilterGroup(overriddenGroup)
594
+ ? overriddenGroup.and
595
+ : [overriddenGroup];
596
+ return {
597
+ id: uuidv4(),
598
+ and: [...overridenGroupItems, ...deduplicatedRules],
599
+ };
600
+ };
601
+ const convertDashboardFilterRuleToFilterRule = (dashboardFilterRule) => ({
602
+ id: dashboardFilterRule.id,
603
+ target: {
604
+ // ...dashboardFilterRule.target,
605
+ fieldId: dashboardFilterRule.target.fieldId,
606
+ },
607
+ operator: dashboardFilterRule.operator,
608
+ values: dashboardFilterRule.values,
609
+ ...(dashboardFilterRule.settings && {
610
+ settings: dashboardFilterRule.settings,
611
+ }),
612
+ ...(dashboardFilterRule.disabled && {
613
+ disabled: dashboardFilterRule.disabled,
614
+ }),
615
+ });
616
+ const getFieldIdWithoutTable = (fieldId, tableName) => fieldId.replace(`${tableName}_`, '');
617
+ /**
618
+ * Tracks time-based metric filters that need overriding via external map
619
+ * @param metricQueryDimensionFilters - Existing dimension filters in the query
620
+ * @param dashboardFilterRule - Dashboard filter being applied
621
+ * @param explore - Explore context for field relationships
622
+ * @returns Filter rule with override data for external tracking
623
+ */
624
+ export const trackWhichTimeBasedMetricFiltersToOverride = (metricQueryDimensionFilters, dashboardFilterRule, explore) => {
625
+ if (!explore)
626
+ return { filter: dashboardFilterRule };
627
+ const baseDimension = explore.tables[dashboardFilterRule.target.tableName]?.dimensions[getFieldIdWithoutTable(dashboardFilterRule.target.fieldId, dashboardFilterRule.target.tableName)];
628
+ if (!baseDimension?.timeIntervalBaseDimensionName) {
629
+ return { filter: dashboardFilterRule };
630
+ }
631
+ const traverseFilterGroup = (filterGroup) => {
632
+ if (!filterGroup)
633
+ return [];
634
+ return getItemsFromFilterGroup(filterGroup).reduce((acc, item) => {
635
+ if (isFilterGroup(item)) {
636
+ return [...acc, ...traverseFilterGroup(item)];
637
+ }
638
+ if (isFilterRule(item)) {
639
+ const itemFieldId = getFieldIdWithoutTable(item.target.fieldId, dashboardFilterRule.target.tableName);
640
+ const itemDimension = explore.tables[dashboardFilterRule.target.tableName]
641
+ ?.dimensions[itemFieldId];
642
+ const isTimeOrDateDimension = itemDimension?.timeIntervalBaseDimensionName ===
643
+ baseDimension.timeIntervalBaseDimensionName;
644
+ if (isTimeOrDateDimension) {
645
+ return [...acc, item.target.fieldId];
646
+ }
647
+ }
648
+ return acc;
649
+ }, []);
650
+ };
651
+ const fieldsToChange = traverseFilterGroup(metricQueryDimensionFilters);
652
+ return fieldsToChange.length > 0
653
+ ? {
654
+ filter: dashboardFilterRule,
655
+ overrideData: {
656
+ baseTimeDimensionName: baseDimension.timeIntervalBaseDimensionName,
657
+ fieldsToChange,
658
+ },
659
+ }
660
+ : { filter: dashboardFilterRule };
661
+ };
662
+ /**
663
+ * Adds dashboard filters to a metric query while tracking time-based overrides
664
+ * @param metricQuery - The original metric query
665
+ * @param dashboardFilters - Dashboard filters to apply
666
+ * @param explore - Explore context for field validation
667
+ * @returns Enhanced metric query with merged filters and override map
668
+ */
669
+ export const addDashboardFiltersToMetricQuery = (metricQuery, dashboardFilters, explore) => {
670
+ const timeBasedOverrideMap = {};
671
+ const processedDimensionFilters = dashboardFilters.dimensions
672
+ .map((filter) => {
673
+ const result = trackWhichTimeBasedMetricFiltersToOverride(metricQuery.filters?.dimensions, filter, explore);
674
+ if (result.overrideData) {
675
+ timeBasedOverrideMap[filter.id] = result.overrideData;
676
+ }
677
+ return result.filter;
678
+ })
679
+ .map(convertDashboardFilterRuleToFilterRule);
680
+ return {
681
+ ...metricQuery,
682
+ filters: {
683
+ dimensions: overrideFilterGroupWithFilterRules(metricQuery.filters?.dimensions, processedDimensionFilters, timeBasedOverrideMap),
684
+ metrics: overrideFilterGroupWithFilterRules(metricQuery.filters?.metrics, dashboardFilters.metrics.map(convertDashboardFilterRuleToFilterRule), undefined),
685
+ tableCalculations: overrideFilterGroupWithFilterRules(metricQuery.filters?.tableCalculations, dashboardFilters.tableCalculations.map(convertDashboardFilterRuleToFilterRule), undefined),
686
+ },
687
+ };
688
+ };
689
+ export const createFilterRuleFromModelRequiredFilterRule = (filter, tableName) => ({
690
+ id: filter.id,
691
+ target: {
692
+ fieldId: convertFieldRefToFieldId(filter.target.fieldRef, tableName),
693
+ },
694
+ operator: filter.operator,
695
+ values: filter.values,
696
+ ...(filter.settings?.unitOfTime && {
697
+ settings: {
698
+ unitOfTime: filter.settings.unitOfTime,
699
+ },
700
+ }),
701
+ required: filter.required === undefined ? true : filter.required,
702
+ });
703
+ export const isFilterRuleInQuery = (dimension, filterRule, dimensionsFilterGroup) => {
704
+ let dimensionFieldId = filterRule.target.fieldId;
705
+ const timeDimension = dimension.isIntervalBase || dimension.timeInterval !== undefined;
706
+ if (!dimension.isIntervalBase && dimension.timeInterval) {
707
+ dimensionFieldId = dimensionFieldId.replace(`_${dimension.timeInterval.toLowerCase()}`, '');
708
+ }
709
+ return (dimensionsFilterGroup &&
710
+ isFilterRuleDefinedForFieldId(dimensionsFilterGroup, dimensionFieldId, timeDimension));
711
+ };
712
+ export const reduceRequiredDimensionFiltersToFilterRules = (requiredFilters, filters, explore) => {
713
+ const table = explore.tables[explore.baseTable];
714
+ return requiredFilters.reduce((acc, filter) => {
715
+ let dimension;
716
+ // This function already takes care of falling back to the base table if the fieldRef doesn't have 2 parts (falls back to base table name)
717
+ const filterRule = createFilterRuleFromModelRequiredFilterRule(filter, table.name);
718
+ if (isJoinModelRequiredFilter(filter)) {
719
+ const joinedTable = explore.tables[filter.target.tableName];
720
+ if (joinedTable) {
721
+ dimension = Object.values(joinedTable.dimensions).find((d) => getItemId(d) === filterRule.target.fieldId);
722
+ }
723
+ }
724
+ else {
725
+ dimension = Object.values(table.dimensions).find((tc) => getItemId(tc) === filterRule.target.fieldId);
726
+ }
727
+ if (dimension && !isFilterRuleInQuery(dimension, filterRule, filters)) {
728
+ return [...acc, filterRule];
729
+ }
730
+ return acc;
731
+ }, []);
732
+ };
733
+ export const resetRequiredFilterRules = (filterGroup, requiredFiltersRef) => {
734
+ // Check if the input is a valid filter group
735
+ if (!isFilterGroup(filterGroup))
736
+ return filterGroup;
737
+ const filterGroupItems = isAndFilterGroup(filterGroup)
738
+ ? filterGroup.and
739
+ : filterGroup.or;
740
+ // Iterate over each item in the filter group
741
+ const updatedItems = filterGroupItems.map((filterGroupItem) => {
742
+ // If the item is a filter rule, check if its id is not in the required filters reference
743
+ if (isFilterRule(filterGroupItem) &&
744
+ !requiredFiltersRef.includes(filterGroupItem.target.fieldId)) {
745
+ // Mark the filter rule as not required
746
+ const newFilterRule = {
747
+ ...filterGroupItem,
748
+ required: false,
749
+ };
750
+ return newFilterRule;
751
+ }
752
+ // If the item is a nested filter group, recursively call the function
753
+ if (isFilterGroup(filterGroupItem)) {
754
+ return resetRequiredFilterRules(filterGroupItem, requiredFiltersRef);
755
+ }
756
+ return filterGroupItem;
757
+ });
758
+ return {
759
+ ...filterGroup,
760
+ [getFilterGroupItemsPropertyName(filterGroup)]: updatedItems,
761
+ };
762
+ };
763
+ //# sourceMappingURL=filters.js.map