@lightdash/common 0.2104.7 → 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,365 @@
1
+ import dayjs from 'dayjs';
2
+ import isoWeek from 'dayjs/plugin/isoWeek';
3
+ import weekOfYear from 'dayjs/plugin/weekOfYear';
4
+ import groupBy from 'lodash/groupBy';
5
+ import mapKeys from 'lodash/mapKeys';
6
+ import { v4 as uuidv4 } from 'uuid';
7
+ import { DimensionType, MetricType, } from '../types/field';
8
+ import { FilterOperator, } from '../types/filter';
9
+ import { MetricExplorerComparison, } from '../types/metricsExplorer';
10
+ import { TimeFrames } from '../types/timeFrames';
11
+ import assertUnreachable from './assertUnreachable';
12
+ import { getItemId } from './item';
13
+ dayjs.extend(isoWeek);
14
+ dayjs.extend(weekOfYear);
15
+ export const assertUnimplementedTimeframe = (timeframe) => {
16
+ switch (timeframe) {
17
+ case TimeFrames.RAW:
18
+ case TimeFrames.QUARTER:
19
+ case TimeFrames.HOUR:
20
+ case TimeFrames.MINUTE:
21
+ case TimeFrames.SECOND:
22
+ case TimeFrames.MILLISECOND:
23
+ case TimeFrames.DAY_OF_WEEK_INDEX:
24
+ case TimeFrames.DAY_OF_MONTH_NUM:
25
+ case TimeFrames.DAY_OF_YEAR_NUM:
26
+ case TimeFrames.WEEK_NUM:
27
+ case TimeFrames.MONTH_NUM:
28
+ case TimeFrames.QUARTER_NUM:
29
+ case TimeFrames.YEAR_NUM:
30
+ case TimeFrames.DAY_OF_WEEK_NAME:
31
+ case TimeFrames.MONTH_NAME:
32
+ case TimeFrames.QUARTER_NAME:
33
+ case TimeFrames.HOUR_OF_DAY_NUM:
34
+ case TimeFrames.MINUTE_OF_HOUR_NUM:
35
+ throw new Error(`Timeframe "${timeframe}" is not supported for default time interval`);
36
+ default:
37
+ return assertUnreachable(timeframe, `Unknown time interval: "${timeframe}"`);
38
+ }
39
+ };
40
+ export const getFieldIdForDateDimension = (fieldId, timeframe) => {
41
+ switch (timeframe) {
42
+ case TimeFrames.DAY:
43
+ return `${fieldId}_day`;
44
+ case TimeFrames.WEEK:
45
+ return `${fieldId}_week`;
46
+ case TimeFrames.MONTH:
47
+ return `${fieldId}_month`;
48
+ case TimeFrames.YEAR:
49
+ return `${fieldId}_year`;
50
+ default:
51
+ return assertUnimplementedTimeframe(timeframe);
52
+ }
53
+ };
54
+ export const getDateCalcUtils = (timeFrame, grain) => {
55
+ switch (timeFrame) {
56
+ case TimeFrames.MONTH:
57
+ if (grain && grain !== TimeFrames.DAY) {
58
+ throw new Error(`Granularity "${grain}" is not supported yet for this timeframe "${timeFrame}"`);
59
+ }
60
+ return {
61
+ forward: (date) => dayjs(date).add(1, 'month').toDate(),
62
+ back: (date) => dayjs(date).subtract(1, 'month').toDate(),
63
+ };
64
+ case TimeFrames.YEAR:
65
+ // Handle week shift for previous year comparison and subtract what the amount of weeks is in a year
66
+ if (grain === TimeFrames.WEEK) {
67
+ return {
68
+ forward: (date) => dayjs(date)
69
+ // 52 weeks in a year
70
+ .add(52, 'weeks')
71
+ .startOf('isoWeek')
72
+ .toDate(),
73
+ back: (date) => dayjs(date)
74
+ // 52 weeks in a year
75
+ .subtract(52, 'weeks')
76
+ .startOf('isoWeek')
77
+ .toDate(),
78
+ };
79
+ }
80
+ return {
81
+ forward: (date) => dayjs(date).add(1, 'year').toDate(),
82
+ back: (date) => dayjs(date).subtract(1, 'year').toDate(),
83
+ };
84
+ case TimeFrames.DAY:
85
+ case TimeFrames.WEEK:
86
+ throw new Error(`Timeframe "${timeFrame}" is not supported yet`);
87
+ default:
88
+ return assertUnimplementedTimeframe(timeFrame);
89
+ }
90
+ };
91
+ export const METRICS_EXPLORER_DATE_FORMAT = 'YYYY-MM-DD';
92
+ export const getDateRangeFromString = (dateRange) => [
93
+ dayjs(dateRange[0], METRICS_EXPLORER_DATE_FORMAT).toDate(),
94
+ dayjs(dateRange[1], METRICS_EXPLORER_DATE_FORMAT).toDate(),
95
+ ];
96
+ // TODO: refine the time grain for each time frame
97
+ // Time grain Year: -> past 5 years (i.e. 5 completed years + this uncompleted year)
98
+ // Time grain Month -> past 12 months (i.e. 12 completed months + this uncompleted month)
99
+ // Time grain Week -> past 12 weeks (i.e. 12 completed weeks + this uncompleted week)
100
+ // Time grain Day -> past 30 days (i.e. 30 completed days + this uncompleted day)
101
+ // above sample is taken from the spec but the implementation is different for practical reasons for visualization
102
+ export const getGrainForDateRange = (dateRange) => {
103
+ const diff = dateRange[1].getTime() - dateRange[0].getTime();
104
+ const days = diff / (1000 * 60 * 60 * 24);
105
+ if (days <= 31 * 3) {
106
+ return TimeFrames.DAY;
107
+ }
108
+ if (days <= 7 * 12) {
109
+ return TimeFrames.WEEK;
110
+ }
111
+ if (days <= 31 * 12) {
112
+ return TimeFrames.MONTH;
113
+ }
114
+ return TimeFrames.YEAR;
115
+ };
116
+ export const getMetricsExplorerSegmentFilters = (segmentDimension, segments) => {
117
+ if (!segmentDimension || segments.length === 0)
118
+ return [];
119
+ return [
120
+ {
121
+ id: uuidv4(),
122
+ target: { fieldId: segmentDimension },
123
+ operator: FilterOperator.EQUALS,
124
+ values: segments,
125
+ },
126
+ ];
127
+ };
128
+ export const getMetricExplorerDateRangeFilters = (timeDimensionConfig, dateRange) => {
129
+ const targetFieldId = getItemId({
130
+ table: timeDimensionConfig.table,
131
+ name: getFieldIdForDateDimension(timeDimensionConfig.field, timeDimensionConfig.interval),
132
+ });
133
+ return [
134
+ {
135
+ id: uuidv4(),
136
+ target: { fieldId: targetFieldId },
137
+ operator: FilterOperator.IN_BETWEEN,
138
+ values: dateRange.map((date) => dayjs(date).format(METRICS_EXPLORER_DATE_FORMAT)),
139
+ },
140
+ ];
141
+ };
142
+ // Parse the metric value to a number, returning null if it's not a number
143
+ export const parseMetricValue = (value) => {
144
+ if (value === null || value === undefined)
145
+ return null;
146
+ const parsed = Number(value);
147
+ return Number.isNaN(parsed) ? null : parsed;
148
+ };
149
+ // we are assuming that the dimension value is a string and if it's not defined we just return null
150
+ // so actually `null` value will be converted to `"null"` string
151
+ const parseDimensionValue = (value) => {
152
+ if (value === undefined)
153
+ return null;
154
+ return String(value);
155
+ };
156
+ export const MAX_SEGMENT_DIMENSION_UNIQUE_VALUES = 10;
157
+ export const getMetricExplorerDataPoints = (dimension, metric, metricRows, segmentDimensionId) => {
158
+ const dimensionId = getItemId(dimension);
159
+ const metricId = getItemId(metric);
160
+ let filteredMetricRows = metricRows;
161
+ let isSegmentDimensionFiltered = false;
162
+ if (segmentDimensionId) {
163
+ const countUniqueValues = new Set(metricRows.map((row) => row[segmentDimensionId])).size;
164
+ if (countUniqueValues > MAX_SEGMENT_DIMENSION_UNIQUE_VALUES) {
165
+ isSegmentDimensionFiltered = true;
166
+ const first10Values = Array.from(new Set(metricRows.map((row) => row[segmentDimensionId]))).slice(0, MAX_SEGMENT_DIMENSION_UNIQUE_VALUES);
167
+ filteredMetricRows = metricRows.filter((row) => first10Values.includes(row[segmentDimensionId]));
168
+ }
169
+ }
170
+ const groupByMetricRows = groupBy(filteredMetricRows, (row) => new Date(String(row[dimensionId])).toISOString());
171
+ const dataPoints = Object.entries(groupByMetricRows).flatMap(([date, rows]) => rows.map((row) => {
172
+ const segmentValue = segmentDimensionId
173
+ ? parseDimensionValue(row[segmentDimensionId])
174
+ : null;
175
+ return {
176
+ date: new Date(date),
177
+ segment: segmentValue,
178
+ metric: {
179
+ value: parseMetricValue(row[metricId]),
180
+ label: segmentValue ?? metric.label ?? metric.name,
181
+ },
182
+ compareMetric: {
183
+ value: null,
184
+ label: null,
185
+ },
186
+ };
187
+ }));
188
+ return {
189
+ dataPoints,
190
+ isSegmentDimensionFiltered,
191
+ };
192
+ };
193
+ function offsetWeekCompareDates(groupByCompareMetricRows, timeFrame) {
194
+ return Object.fromEntries(Object.keys(groupByCompareMetricRows).map((compareDate) => {
195
+ const compareDateWeek = dayjs(compareDate).week();
196
+ const compareDateNextYear = getDateCalcUtils(TimeFrames.YEAR, timeFrame).forward(new Date(compareDate));
197
+ const adjustedCompareDate = dayjs(compareDateNextYear)
198
+ .week(compareDateWeek)
199
+ .startOf('isoWeek')
200
+ .toISOString();
201
+ return [compareDate, adjustedCompareDate];
202
+ }));
203
+ }
204
+ export const getMetricExplorerDataPointsWithCompare = (dimension, compareDimension, metric, metricRows, compareMetricRows, query, timeFrame) => {
205
+ if (query.comparison === MetricExplorerComparison.NONE) {
206
+ throw new Error('Comparison type is required');
207
+ }
208
+ const metricId = getItemId(metric);
209
+ const dimensionId = getItemId(dimension);
210
+ const compareDimensionId = getItemId(compareDimension);
211
+ const groupByMetricRows = groupBy(metricRows, (row) => new Date(String(row[dimensionId])).toISOString());
212
+ const groupByCompareMetricRows = groupBy(compareMetricRows, (row) => new Date(String(row[compareDimensionId])).toISOString());
213
+ const offsetGroupByCompareMetricRows = mapKeys(groupByCompareMetricRows, (_, date) => {
214
+ if (query.comparison === MetricExplorerComparison.PREVIOUS_PERIOD) {
215
+ if (timeFrame === TimeFrames.WEEK) {
216
+ return offsetWeekCompareDates(groupByCompareMetricRows, timeFrame)[date];
217
+ }
218
+ return getDateCalcUtils(TimeFrames.YEAR, timeFrame)
219
+ .forward(new Date(date))
220
+ .toISOString();
221
+ }
222
+ return date;
223
+ });
224
+ const dates = new Set([
225
+ ...Object.keys(groupByMetricRows),
226
+ ...Object.keys(offsetGroupByCompareMetricRows),
227
+ ]);
228
+ const compareMetricId = query.comparison === MetricExplorerComparison.PREVIOUS_PERIOD
229
+ ? metricId
230
+ : getItemId({
231
+ table: query.metric.table,
232
+ name: query.metric.name,
233
+ });
234
+ let comparisonMetricLabel = null;
235
+ if (query.comparison === MetricExplorerComparison.DIFFERENT_METRIC) {
236
+ comparisonMetricLabel = query.metric.label ?? query.metric.name;
237
+ }
238
+ else if (query.comparison === MetricExplorerComparison.PREVIOUS_PERIOD) {
239
+ comparisonMetricLabel = 'Previous Period';
240
+ }
241
+ const dataPoints = Array.from(dates).map((date) => ({
242
+ date: new Date(date),
243
+ segment: null,
244
+ metric: {
245
+ value: parseMetricValue(groupByMetricRows[date]?.[0]?.[metricId]),
246
+ label: metric.label ?? metric.name,
247
+ },
248
+ compareMetric: {
249
+ value: parseMetricValue(offsetGroupByCompareMetricRows[date]?.[0]?.[compareMetricId]),
250
+ label: comparisonMetricLabel,
251
+ },
252
+ }));
253
+ return { dataPoints };
254
+ };
255
+ /**
256
+ * Get the date range for a given time interval, based on the current date and the time interval
257
+ * Time grain Year: -> past 3 years (i.e. 3 completed years + this uncompleted year)
258
+ * Time grain Month -> past 12 months (i.e. 12 completed months + this uncompleted month)
259
+ * Time grain Week -> past 12 weeks (i.e. 12 completed weeks + this uncompleted week)
260
+ * Time grain Day -> past 30 days (i.e. 30 completed days + this uncompleted day)
261
+ * @param timeInterval - The time interval
262
+ * @returns The date range
263
+ */
264
+ export const getDefaultDateRangeFromInterval = (timeInterval) => {
265
+ const now = dayjs();
266
+ switch (timeInterval) {
267
+ case TimeFrames.DAY:
268
+ return [
269
+ now.subtract(30, 'day').startOf('day').toDate(),
270
+ now.toDate(),
271
+ ];
272
+ case TimeFrames.WEEK:
273
+ return [
274
+ now.subtract(12, 'week').startOf('isoWeek').toDate(),
275
+ now.toDate(),
276
+ ];
277
+ case TimeFrames.MONTH:
278
+ return [
279
+ now.subtract(12, 'month').startOf('month').toDate(),
280
+ now.toDate(),
281
+ ];
282
+ case TimeFrames.YEAR:
283
+ return [
284
+ now.subtract(3, 'year').startOf('year').toDate(),
285
+ now.toDate(),
286
+ ];
287
+ default:
288
+ return assertUnimplementedTimeframe(timeInterval);
289
+ }
290
+ };
291
+ export const getDefaultMetricTreeNodeDateRange = (timeFrame) => {
292
+ const now = dayjs();
293
+ switch (timeFrame) {
294
+ case TimeFrames.DAY:
295
+ return [
296
+ now.startOf('day').subtract(1, 'day').toDate(),
297
+ now.endOf('day').subtract(1, 'day').toDate(),
298
+ ];
299
+ case TimeFrames.WEEK:
300
+ return [now.startOf('isoWeek').toDate(), now.toDate()];
301
+ case TimeFrames.MONTH:
302
+ return [now.startOf('month').toDate(), now.toDate()];
303
+ case TimeFrames.YEAR:
304
+ return [now.startOf('year').toDate(), now.toDate()];
305
+ default:
306
+ return assertUnimplementedTimeframe(timeFrame);
307
+ }
308
+ };
309
+ /**
310
+ * Default time interval to use when no time interval is provided.
311
+ * For example, when there is no default time dimension defined for a metric or table.
312
+ */
313
+ export const DEFAULT_METRICS_EXPLORER_TIME_INTERVAL = TimeFrames.MONTH;
314
+ export const getFirstAvailableTimeDimension = (metric) => {
315
+ if (metric.availableTimeDimensions &&
316
+ metric.availableTimeDimensions.length > 0) {
317
+ return {
318
+ table: metric.availableTimeDimensions[0].table,
319
+ field: metric.availableTimeDimensions[0].name,
320
+ interval: DEFAULT_METRICS_EXPLORER_TIME_INTERVAL,
321
+ };
322
+ }
323
+ return undefined;
324
+ };
325
+ export const getDefaultTimeDimension = (metric, table) => {
326
+ // Priority 1: Use metric-level default time dimension if defined in yml
327
+ if (metric.defaultTimeDimension) {
328
+ return metric.defaultTimeDimension;
329
+ }
330
+ // Priority 2: Use model-level default time dimension if defined in yml
331
+ if (table?.defaultTimeDimension) {
332
+ return table.defaultTimeDimension;
333
+ }
334
+ // Priority 3: Use the only time dimension if there's exactly one
335
+ if (table?.dimensions) {
336
+ const timeDimensions = Object.values(table.dimensions).filter((dim) => (dim.type === DimensionType.DATE ||
337
+ dim.type === DimensionType.TIMESTAMP) &&
338
+ !!dim.isIntervalBase &&
339
+ !dim.hidden);
340
+ if (timeDimensions.length === 1) {
341
+ return {
342
+ field: timeDimensions[0].name,
343
+ interval: DEFAULT_METRICS_EXPLORER_TIME_INTERVAL,
344
+ };
345
+ }
346
+ }
347
+ return undefined;
348
+ };
349
+ export const getAvailableTimeDimensionsFromTables = (tables) => Object.values(tables).flatMap((table) => Object.values(table.dimensions).filter((dim) => (dim.type === DimensionType.DATE ||
350
+ dim.type === DimensionType.TIMESTAMP) &&
351
+ !!dim.isIntervalBase &&
352
+ !dim.hidden));
353
+ export const getAvailableSegmentDimensions = (dimensions) => dimensions
354
+ .filter((d) => !!d)
355
+ .filter((d) => d.type !== DimensionType.DATE &&
356
+ d.type !== DimensionType.TIMESTAMP &&
357
+ d.type !== DimensionType.NUMBER &&
358
+ !d.timeIntervalBaseDimensionName);
359
+ export const getAvailableCompareMetrics = (metrics) => metrics
360
+ .filter((metric) => !!metric.timeDimension)
361
+ .filter((metric) => metric.type !== MetricType.STRING &&
362
+ metric.type !== MetricType.BOOLEAN &&
363
+ metric.type !== MetricType.DATE &&
364
+ metric.type !== MetricType.TIMESTAMP);
365
+ //# sourceMappingURL=metricsExplorer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metricsExplorer.js","sourceRoot":"","sources":["../../../src/utils/metricsExplorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,UAAU,MAAM,yBAAyB,CAAC;AAEjD,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAIpC,OAAO,EACH,aAAa,EACb,UAAU,GAIb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,cAAc,GAIjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,wBAAwB,GAI3B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,UAAU,EAA6B,MAAM,qBAAqB,CAAC;AAC5E,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtB,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAiBzB,MAAM,CAAC,MAAM,4BAA4B,GAAG,CACxC,SAAiC,EAC5B,EAAE;IACP,QAAQ,SAAS,EAAE,CAAC;QAChB,KAAK,UAAU,CAAC,GAAG,CAAC;QACpB,KAAK,UAAU,CAAC,OAAO,CAAC;QACxB,KAAK,UAAU,CAAC,IAAI,CAAC;QACrB,KAAK,UAAU,CAAC,MAAM,CAAC;QACvB,KAAK,UAAU,CAAC,MAAM,CAAC;QACvB,KAAK,UAAU,CAAC,WAAW,CAAC;QAC5B,KAAK,UAAU,CAAC,iBAAiB,CAAC;QAClC,KAAK,UAAU,CAAC,gBAAgB,CAAC;QACjC,KAAK,UAAU,CAAC,eAAe,CAAC;QAChC,KAAK,UAAU,CAAC,QAAQ,CAAC;QACzB,KAAK,UAAU,CAAC,SAAS,CAAC;QAC1B,KAAK,UAAU,CAAC,WAAW,CAAC;QAC5B,KAAK,UAAU,CAAC,QAAQ,CAAC;QACzB,KAAK,UAAU,CAAC,gBAAgB,CAAC;QACjC,KAAK,UAAU,CAAC,UAAU,CAAC;QAC3B,KAAK,UAAU,CAAC,YAAY,CAAC;QAC7B,KAAK,UAAU,CAAC,eAAe,CAAC;QAChC,KAAK,UAAU,CAAC,kBAAkB;YAC9B,MAAM,IAAI,KAAK,CACX,cAAc,SAAS,8CAA8C,CACxE,CAAC;QACN;YACI,OAAO,iBAAiB,CACpB,SAAS,EACT,2BAA2B,SAAS,GAAG,CAC1C,CAAC;IACV,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,OAAe,EACf,SAAqB,EACvB,EAAE;IACA,QAAQ,SAAS,EAAE,CAAC;QAChB,KAAK,UAAU,CAAC,GAAG;YACf,OAAO,GAAG,OAAO,MAAM,CAAC;QAC5B,KAAK,UAAU,CAAC,IAAI;YAChB,OAAO,GAAG,OAAO,OAAO,CAAC;QAC7B,KAAK,UAAU,CAAC,KAAK;YACjB,OAAO,GAAG,OAAO,QAAQ,CAAC;QAC9B,KAAK,UAAU,CAAC,IAAI;YAChB,OAAO,GAAG,OAAO,OAAO,CAAC;QAC7B;YACI,OAAO,4BAA4B,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAqB,EAAE,KAAkB,EAAE,EAAE;IAC1E,QAAQ,SAAS,EAAE,CAAC;QAChB,KAAK,UAAU,CAAC,KAAK;YACjB,IAAI,KAAK,IAAI,KAAK,KAAK,UAAU,CAAC,GAAG,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACX,gBAAgB,KAAK,8CAA8C,SAAS,GAAG,CAClF,CAAC;YACN,CAAC;YAED,OAAO;gBACH,OAAO,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE;gBAC7D,IAAI,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE;aAClE,CAAC;QACN,KAAK,UAAU,CAAC,IAAI;YAChB,oGAAoG;YACpG,IAAI,KAAK,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC5B,OAAO;oBACH,OAAO,EAAE,CAAC,IAAU,EAAE,EAAE,CACpB,KAAK,CAAC,IAAI,CAAC;wBACP,qBAAqB;yBACpB,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC;yBAChB,OAAO,CAAC,SAAS,CAAC;yBAClB,MAAM,EAAE;oBACjB,IAAI,EAAE,CAAC,IAAU,EAAE,EAAE,CACjB,KAAK,CAAC,IAAI,CAAC;wBACP,qBAAqB;yBACpB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;yBACrB,OAAO,CAAC,SAAS,CAAC;yBAClB,MAAM,EAAE;iBACpB,CAAC;YACN,CAAC;YACD,OAAO;gBACH,OAAO,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE;gBAC5D,IAAI,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE;aACjE,CAAC;QACN,KAAK,UAAU,CAAC,GAAG,CAAC;QACpB,KAAK,UAAU,CAAC,IAAI;YAChB,MAAM,IAAI,KAAK,CAAC,cAAc,SAAS,wBAAwB,CAAC,CAAC;QACrE;YACI,OAAO,4BAA4B,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,YAAY,CAAC;AAEzD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,SAA2B,EACJ,EAAE,CAAC;IAC1B,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC,MAAM,EAAE;IAC1D,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC,MAAM,EAAE;CAC7D,CAAC;AAEF,kDAAkD;AAClD,sFAAsF;AACtF,2FAA2F;AAC3F,uFAAuF;AACvF,mFAAmF;AACnF,kHAAkH;AAClH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,SAAuB,EACH,EAAE;IACtB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAE1C,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,UAAU,CAAC,GAAG,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACjB,OAAO,UAAU,CAAC,IAAI,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QAClB,OAAO,UAAU,CAAC,KAAK,CAAC;IAC5B,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC5C,gBAA+B,EAC/B,QAAkB,EACN,EAAE;IACd,IAAI,CAAC,gBAAgB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE1D,OAAO;QACH;YACI,EAAE,EAAE,MAAM,EAAE;YACZ,MAAM,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE;YACrC,QAAQ,EAAE,cAAc,CAAC,MAAM;YAC/B,MAAM,EAAE,QAAQ;SACnB;KACJ,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC7C,mBAAwC,EACxC,SAAkC,EACtB,EAAE;IACd,MAAM,aAAa,GAAG,SAAS,CAAC;QAC5B,KAAK,EAAE,mBAAmB,CAAC,KAAK;QAChC,IAAI,EAAE,0BAA0B,CAC5B,mBAAmB,CAAC,KAAK,EACzB,mBAAmB,CAAC,QAAQ,CAC/B;KACJ,CAAC,CAAC;IAEH,OAAO;QACH;YACI,EAAE,EAAE,MAAM,EAAE;YACZ,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;YAClC,QAAQ,EAAE,cAAc,CAAC,UAAU;YACnC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3B,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,4BAA4B,CAAC,CACnD;SACJ;KACJ,CAAC;AACN,CAAC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAiB,EAAE;IAC9D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAChD,CAAC,CAAC;AAEF,mGAAmG;AACnG,gEAAgE;AAChE,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAiB,EAAE;IAC1D,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mCAAmC,GAAG,EAAE,CAAC;AAEtD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACvC,SAAoB,EACpB,MAAyC,EACzC,UAAqC,EACrC,kBAAiC,EAInC,EAAE;IACA,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEnC,IAAI,kBAAkB,GAAG,UAAU,CAAC;IACpC,IAAI,0BAA0B,GAAG,KAAK,CAAC;IACvC,IAAI,kBAAkB,EAAE,CAAC;QACrB,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC7B,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CACnD,CAAC,IAAI,CAAC;QAEP,IAAI,iBAAiB,GAAG,mCAAmC,EAAE,CAAC;YAC1D,0BAA0B,GAAG,IAAI,CAAC;YAClC,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAC5B,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAC5D,CAAC,KAAK,CAAC,CAAC,EAAE,mCAAmC,CAAC,CAAC;YAChD,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAC3C,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAClD,CAAC;QACN,CAAC;IACL,CAAC;IAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,EAAE,CAC1D,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CACnD,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CACxD,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CACb,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,YAAY,GAAG,kBAAkB;YACnC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC9C,CAAC,CAAC,IAAI,CAAC;QAEX,OAAO;YACH,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC;YACpB,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE;gBACJ,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACtC,KAAK,EAAE,YAAY,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI;aACrD;YACD,aAAa,EAAE;gBACX,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;aACd;SACJ,CAAC;IACN,CAAC,CAAC,CACT,CAAC;IAEF,OAAO;QACH,UAAU;QACV,0BAA0B;KAC7B,CAAC;AACN,CAAC,CAAC;AAEF,SAAS,sBAAsB,CAC3B,wBAAiD,EACjD,SAA0B;IAE1B,OAAO,MAAM,CAAC,WAAW,CACrB,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;QACtD,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,MAAM,mBAAmB,GAAG,gBAAgB,CACxC,UAAU,CAAC,IAAI,EACf,SAAS,CACZ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAEjC,MAAM,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;aACjD,IAAI,CAAC,eAAe,CAAC;aACrB,OAAO,CAAC,SAAS,CAAC;aAClB,WAAW,EAAE,CAAC;QAEnB,OAAO,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAC9C,CAAC,CAAC,CACL,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAClD,SAAoB,EACpB,gBAA2B,EAC3B,MAAyC,EACzC,UAAqC,EACrC,iBAA4C,EAC5C,KAA0B,EAC1B,SAAqB,EAGvB,EAAE;IACA,IAAI,KAAK,CAAC,UAAU,KAAK,wBAAwB,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEnC,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,kBAAkB,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEvD,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAClD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CACnD,CAAC;IACF,MAAM,wBAAwB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAChE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAC1D,CAAC;IAEF,MAAM,8BAA8B,GAAG,OAAO,CAC1C,wBAAwB,EACxB,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;QACR,IAAI,KAAK,CAAC,UAAU,KAAK,wBAAwB,CAAC,eAAe,EAAE,CAAC;YAChE,IAAI,SAAS,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;gBAChC,OAAO,sBAAsB,CACzB,wBAAwB,EACxB,SAAS,CACZ,CAAC,IAAI,CAAC,CAAC;YACZ,CAAC;YAED,OAAO,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;iBAC9C,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;iBACvB,WAAW,EAAE,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CACJ,CAAC;IAEF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC;QAClB,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACjC,GAAG,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC;KACjD,CAAC,CAAC;IAEH,MAAM,eAAe,GACjB,KAAK,CAAC,UAAU,KAAK,wBAAwB,CAAC,eAAe;QACzD,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,SAAS,CAAC;YACN,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;YACzB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;SAC1B,CAAC,CAAC;IAEb,IAAI,qBAAqB,GAAkB,IAAI,CAAC;IAChD,IAAI,KAAK,CAAC,UAAU,KAAK,wBAAwB,CAAC,gBAAgB,EAAE,CAAC;QACjE,qBAAqB,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IACpE,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,KAAK,wBAAwB,CAAC,eAAe,EAAE,CAAC;QACvE,qBAAqB,GAAG,iBAAiB,CAAC;IAC9C,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC;QACpB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE;YACJ,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;YACjE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI;SACrC;QACD,aAAa,EAAE;YACX,KAAK,EAAE,gBAAgB,CACnB,8BAA8B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAC/D;YACD,KAAK,EAAE,qBAAqB;SAC/B;KACJ,CAAC,CAAC,CAAC;IAEJ,OAAO,EAAE,UAAU,EAAE,CAAC;AAC1B,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC3C,YAAwB,EACD,EAAE;IACzB,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;IAEpB,QAAQ,YAAY,EAAE,CAAC;QACnB,KAAK,UAAU,CAAC,GAAG;YACf,OAAO;gBACH,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;gBAC/C,GAAG,CAAC,MAAM,EAAE;aACf,CAAC;QACN,KAAK,UAAU,CAAC,IAAI;YAChB,OAAO;gBACH,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;gBACpD,GAAG,CAAC,MAAM,EAAE;aACf,CAAC;QACN,KAAK,UAAU,CAAC,KAAK;YACjB,OAAO;gBACH,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;gBACnD,GAAG,CAAC,MAAM,EAAE;aACf,CAAC;QACN,KAAK,UAAU,CAAC,IAAI;YAChB,OAAO;gBACH,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;gBAChD,GAAG,CAAC,MAAM,EAAE;aACf,CAAC;QACN;YACI,OAAO,4BAA4B,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC7C,SAAqB,EACE,EAAE;IACzB,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;IAEpB,QAAQ,SAAS,EAAE,CAAC;QAChB,KAAK,UAAU,CAAC,GAAG;YACf,OAAO;gBACH,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE;gBAC9C,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE;aAC/C,CAAC;QACN,KAAK,UAAU,CAAC,IAAI;YAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3D,KAAK,UAAU,CAAC,KAAK;YACjB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,KAAK,UAAU,CAAC,IAAI;YAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD;YACI,OAAO,4BAA4B,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;AACL,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,UAAU,CAAC,KAAK,CAAC;AAIvE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC1C,MAAyC,EACV,EAAE;IACjC,IACI,MAAM,CAAC,uBAAuB;QAC9B,MAAM,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAC3C,CAAC;QACC,OAAO;YACH,KAAK,EAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,KAAK;YAC9C,KAAK,EAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI;YAC7C,QAAQ,EAAE,sCAAsC;SACnD,CAAC;IACN,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACnC,MAAsB,EACtB,KAAqB,EACW,EAAE;IAClC,wEAAwE;IACxE,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,oBAAoB,CAAC;IACvC,CAAC;IAED,uEAAuE;IACvE,IAAI,KAAK,EAAE,oBAAoB,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,oBAAoB,CAAC;IACtC,CAAC;IAED,iEAAiE;IACjE,IAAI,KAAK,EAAE,UAAU,EAAE,CAAC;QACpB,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CACzD,CAAC,GAAG,EAAE,EAAE,CACJ,CAAC,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI;YAC5B,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,SAAS,CAAC;YACzC,CAAC,CAAC,GAAG,CAAC,cAAc;YACpB,CAAC,GAAG,CAAC,MAAM,CAClB,CAAC;QACF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACH,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC7B,QAAQ,EAAE,sCAAsC;aACnD,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAChD,MAAqC,EAGpC,EAAE,CACH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACpC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAClC,CACI,GAAG,EAGL,EAAE,CACA,CAAC,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI;IAC5B,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,SAAS,CAAC;IACzC,CAAC,CAAC,GAAG,CAAC,cAAc;IACpB,CAAC,GAAG,CAAC,MAAM,CAClB,CACJ,CAAC;AAEN,MAAM,CAAC,MAAM,6BAA6B,GAAG,CACzC,UAAuB,EACJ,EAAE,CACrB,UAAU;KACL,MAAM,CAAC,CAAC,CAAC,EAA0B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1C,MAAM,CACH,CAAC,CAAC,EAAE,EAAE,CACF,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI;IAC7B,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,SAAS;IAClC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM;IAC/B,CAAC,CAAC,CAAC,6BAA6B,CACvC,CAAC;AAEV,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,OAA4C,EACT,EAAE,CACrC,OAAO;KACF,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;KAC1C,MAAM,CACH,CAAC,MAAM,EAAE,EAAE,CACP,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM;IACjC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO;IAClC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI;IAC/B,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,SAAS,CAC3C,CAAC"}
@@ -0,0 +1,242 @@
1
+ import { compile } from 'handlebars';
2
+ export const oauthPageStyles = `
3
+ body {
4
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Open Sans', 'Helvetica Neue', sans-serif;
5
+ background-color: #f8fafc;
6
+ margin: 0;
7
+ padding: 0;
8
+ min-height: 100vh;
9
+ display: flex;
10
+ align-items: center;
11
+ justify-content: center;
12
+ font-size: 14px;
13
+ line-height: 1.4;
14
+ }
15
+ .container {
16
+ background: white;
17
+ border-radius: 4px;
18
+ border: 1px solid #e9ecef;
19
+ box-shadow: 0px 1px 2px 0px rgba(10, 13, 18, 0.05);
20
+ padding: 24px;
21
+ max-width: 400px;
22
+ width: 90%;
23
+ text-align: center;
24
+ }
25
+ h1 {
26
+ color: #111418;
27
+ margin: 0 0 16px 0;
28
+ font-size: 20px;
29
+ font-weight: 600;
30
+ text-align: center;
31
+ }
32
+ p {
33
+ color: #6c757d;
34
+ margin: 0 0 12px 0;
35
+ line-height: 1.4;
36
+ font-size: 14px;
37
+ }
38
+ .success h1 {
39
+ color: #10b981;
40
+ }
41
+ .error h1 {
42
+ color: #ef4444;
43
+ }
44
+ .icon {
45
+ width: 32px;
46
+ height: 32px;
47
+ margin: 0 auto 16px auto;
48
+ display: block;
49
+ }
50
+ .success .icon {
51
+ color: #10b981;
52
+ }
53
+ .error .icon {
54
+ color: #ef4444;
55
+ }
56
+ .stack {
57
+ display: flex;
58
+ flex-direction: column;
59
+ gap: 16px;
60
+ }
61
+ `;
62
+ // OAuth response HTML template
63
+ const OAUTH_RESPONSE_TEMPLATE = `
64
+ <html>
65
+ <head>
66
+ <style>{{{styles}}}</style>
67
+ </head>
68
+ <body>
69
+ <div class="stack">
70
+ <div class="container {{status}}">
71
+ <svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
72
+ {{{icon}}}
73
+ </svg>
74
+ <h1>{{title}}</h1>
75
+ {{#each messages}}
76
+ <p>{{this}}</p>
77
+ {{/each}}
78
+ </div>
79
+ </div>
80
+ </body>
81
+ </html>
82
+ `;
83
+ // OAuth authorization page template
84
+ const OAUTH_AUTHORIZE_TEMPLATE = `
85
+ <html>
86
+ <head>
87
+ <title>Authorize Application</title>
88
+ <style>
89
+ {{{styles}}}
90
+ .container, .container p, .container strong, .container form { text-align: center; }
91
+ .container p { margin-left: auto; margin-right: auto; }
92
+ .oauth-desc { margin-bottom: 18px; color: #374151; font-size: 12px; }
93
+ .oauth-btn-row { display: flex; justify-content: center; gap: 12px; margin-top: 18px; }
94
+ .oauth-btn {
95
+ padding: 8px 24px;
96
+ border: none;
97
+ border-radius: 4px;
98
+ font-weight: 600;
99
+ font-size: 15px;
100
+ cursor: pointer;
101
+ transition: background 0.15s;
102
+ }
103
+ .oauth-btn.approve {
104
+ background: #00B26F;
105
+ color: #fff;
106
+ }
107
+ .oauth-btn.approve:hover {
108
+ background: #00975E;
109
+ }
110
+ .oauth-btn.deny {
111
+ background: #E03131;
112
+ color: #fff;
113
+ }
114
+ .oauth-btn.deny:hover {
115
+ background: #B32525;
116
+ }
117
+ </style>
118
+ </head>
119
+ <body>
120
+ <div class="stack">
121
+ <form class="container" method="POST" action="{{action}}">
122
+ <h1>Authorize Application</h1>
123
+ <p class="oauth-desc">
124
+ You are about to grant access to your Lightdash account using OAuth.<br/>
125
+ This is a secure way to let trusted applications access your account without sharing your password.<br/>
126
+ Approving will allow the client below to perform actions on your behalf, according to the requested permissions.
127
+ </p>
128
+ <p>Client: <b>{{client_id}}</b></p>
129
+ <p>Scope: <b>{{scope}}</b></p>
130
+
131
+ {{#each hiddenInputs}}
132
+ <input type="hidden" name="{{name}}" value="{{value}}" />
133
+ {{/each}}
134
+
135
+ <p>Authenticate as user: <b>{{user.firstName}} {{user.lastName}}</b></p>
136
+ <p>on organization: <b>{{user.organizationName}}</b></p>
137
+
138
+ <div class="oauth-btn-row">
139
+ <button type="submit" name="approve" value="true" class="oauth-btn approve">Approve</button>
140
+ <button type="submit" name="approve" value="false" class="oauth-btn deny">Deny</button>
141
+ </div>
142
+ </form>
143
+ </div>
144
+ </body>
145
+ </html>
146
+ `;
147
+ // SVG icons for different response types
148
+ const OAUTH_ICONS = {
149
+ success: '<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2"/><path d="M9 12l2 2 4-4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>',
150
+ error: '<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2"/><path d="M15 9l-6 6M9 9l6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>',
151
+ sessionExpired: '<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2"/><path d="M12 6v6l4 2" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>',
152
+ };
153
+ // OAuth redirect page template
154
+ const OAUTH_REDIRECT_TEMPLATE = `
155
+ <html>
156
+ <head>
157
+ <title>Redirecting...</title>
158
+ <style>
159
+ {{{styles}}}
160
+ .spinner {
161
+ width: 32px;
162
+ height: 32px;
163
+ margin: 0 auto 16px auto;
164
+ border: 3px solid #e9ecef;
165
+ border-top: 3px solid #00B26F;
166
+ border-radius: 50%;
167
+ animation: spin 1s linear infinite;
168
+ }
169
+ @keyframes spin {
170
+ 0% { transform: rotate(0deg); }
171
+ 100% { transform: rotate(360deg); }
172
+ }
173
+ .redirect-link {
174
+ color: #00B26F;
175
+ text-decoration: none;
176
+ font-weight: 600;
177
+ }
178
+ .redirect-link:hover {
179
+ text-decoration: underline;
180
+ }
181
+ </style>
182
+ <script>
183
+ setTimeout(function() {
184
+ window.location.href = "{{{redirectUrl}}}";
185
+ }, 2000);
186
+ </script>
187
+ </head>
188
+ <body>
189
+ <div class="stack">
190
+ <div class="container">
191
+ <div class="spinner"></div>
192
+ <h1>Redirecting...</h1>
193
+ <p>{{message}}</p>
194
+ <p>If you are not redirected automatically, <a href="{{{redirectUrl}}}" class="redirect-link">click here</a>.</p>
195
+ </div>
196
+ </div>
197
+ </body>
198
+ </html>
199
+ `;
200
+ // Compile the templates once with proper type safety
201
+ const compiledResponseTemplate = compile(OAUTH_RESPONSE_TEMPLATE);
202
+ const compiledAuthorizeTemplate = compile(OAUTH_AUTHORIZE_TEMPLATE);
203
+ const compiledRedirectTemplate = compile(OAUTH_REDIRECT_TEMPLATE);
204
+ /**
205
+ * Generates an OAuth response HTML page using Handlebars templating
206
+ * This prevents XSS issues by auto-escaping content while still allowing safe HTML in icons and styles
207
+ */
208
+ export const generateOAuthResponseHtml = (status, title, messages, iconType = status === 'success' ? 'success' : 'error') => compiledResponseTemplate({
209
+ styles: oauthPageStyles,
210
+ status,
211
+ title,
212
+ messages,
213
+ icon: OAUTH_ICONS[iconType],
214
+ });
215
+ /**
216
+ * Generates a success OAuth response
217
+ */
218
+ export const generateOAuthSuccessResponse = (title = 'Authentication Successful!', messages = [
219
+ 'You have been successfully authenticated with Lightdash.',
220
+ 'You can close this window and return to the CLI.',
221
+ ]) => generateOAuthResponseHtml('success', title, messages, 'success');
222
+ /**
223
+ * Generates an error OAuth response
224
+ */
225
+ export const generateOAuthErrorResponse = (title, messages, iconType = 'error') => generateOAuthResponseHtml('error', title, [...messages, 'You can close this window and try again.'], iconType);
226
+ /**
227
+ * Generates an OAuth authorization page HTML using Handlebars templating
228
+ * This prevents XSS issues by auto-escaping all user content
229
+ */
230
+ export const generateOAuthAuthorizePage = (params) => compiledAuthorizeTemplate({
231
+ styles: oauthPageStyles,
232
+ ...params,
233
+ });
234
+ /**
235
+ * Generates an OAuth redirect page HTML using JavaScript redirect
236
+ * This prevents CSP errors by using JavaScript-based redirection instead of HTTP redirects
237
+ */
238
+ export const generateOAuthRedirectPage = (params) => compiledRedirectTemplate({
239
+ styles: oauthPageStyles,
240
+ ...params,
241
+ });
242
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/utils/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2D9B,CAAC;AAEF,+BAA+B;AAC/B,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;CAmB/B,CAAC;AAEF,oCAAoC;AACpC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DhC,CAAC;AAEF,yCAAyC;AACzC,MAAM,WAAW,GAAG;IAChB,OAAO,EACH,wLAAwL;IAC5L,KAAK,EAAE,6LAA6L;IACpM,cAAc,EACV,sLAAsL;CACpL,CAAC;AAEX,+BAA+B;AAC/B,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C/B,CAAC;AAEF,qDAAqD;AACrD,MAAM,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAClE,MAAM,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;AACpE,MAAM,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AA8BlE;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACrC,MAA2B,EAC3B,KAAa,EACb,QAAkB,EAClB,WAA0B,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAC9D,EAAE,CACR,wBAAwB,CAAC;IACrB,MAAM,EAAE,eAAe;IACvB,MAAM;IACN,KAAK;IACL,QAAQ;IACR,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;CAC9B,CAAC,CAAC;AAEP;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CACxC,QAAgB,4BAA4B,EAC5C,WAAqB;IACjB,0DAA0D;IAC1D,kDAAkD;CACrD,EACK,EAAE,CAAC,yBAAyB,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE9E;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,KAAa,EACb,QAAkB,EAClB,WAA0B,OAAO,EAC3B,EAAE,CACR,yBAAyB,CACrB,OAAO,EACP,KAAK,EACL,CAAC,GAAG,QAAQ,EAAE,0CAA0C,CAAC,EACzD,QAAQ,CACX,CAAC;AAEN;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,MAA4B,EACtB,EAAE,CACR,yBAAyB,CAAC;IACtB,MAAM,EAAE,eAAe;IACvB,GAAG,MAAM;CACZ,CAAC,CAAC;AAEP;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACrC,MAA2B,EACrB,EAAE,CACR,wBAAwB,CAAC;IACrB,MAAM,EAAE,eAAe;IACvB,GAAG,MAAM;CACZ,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ import { ParameterError } from '../types/errors';
3
+ export const validateOrganizationName = (name) => {
4
+ const trimmedName = name.trim();
5
+ if (trimmedName === '')
6
+ return false;
7
+ const pattern = /^[A-Za-z0-9 _-]+$/;
8
+ return pattern.test(trimmedName);
9
+ };
10
+ export const getOrganizationNameSchema = () => z.string().min(0).refine(validateOrganizationName, {
11
+ message: 'Organization name can be composed only of letters, numbers, spaces, underscores or dashes, and not be empty',
12
+ });
13
+ export const validateOrganizationNameOrThrow = (name) => {
14
+ const parsedOrganizationName = getOrganizationNameSchema().safeParse(name);
15
+ if (!parsedOrganizationName.success) {
16
+ const error = parsedOrganizationName.error.errors[0];
17
+ if (error.code === 'custom') {
18
+ throw new ParameterError(error.message);
19
+ }
20
+ throw new ParameterError(parsedOrganizationName.error.message);
21
+ }
22
+ };
23
+ //# sourceMappingURL=organization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.js","sourceRoot":"","sources":["../../../src/utils/organization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAY,EAAE,EAAE;IACrD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAEhC,IAAI,WAAW,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IAErC,MAAM,OAAO,GAAG,mBAAmB,CAAC;IACpC,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE,CAC1C,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAwB,EAAE;IAC/C,OAAO,EACH,6GAA6G;CACpH,CAAC,CAAC;AAEP,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,IAAY,EAAE,EAAE;IAC5D,MAAM,sBAAsB,GAAG,yBAAyB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAE3E,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,IAAI,cAAc,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;AACL,CAAC,CAAC"}