@finos/legend-cube-builder 0.0.4 → 0.0.6

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 (719) hide show
  1. package/README.md +9 -3
  2. package/docs/adding-an-operation.md +24 -12
  3. package/docs/demo/DEMO-FAST-NOTES.md +67 -0
  4. package/docs/demo/README.md +102 -0
  5. package/docs/demo/specs/duckdb-sales-pivot.cube.json +110 -0
  6. package/docs/demo/specs/trades-desks-1-joined.cube.json +123 -0
  7. package/docs/demo/specs/trades-desks-2-grouped.cube.json +140 -0
  8. package/docs/demo/specs/trades-desks-3-ranked.cube.json +158 -0
  9. package/docs/demo/specs/trades-desks-4-extended.cube.json +208 -0
  10. package/docs/demo/specs/trades-desks-5-final.cube.json +248 -0
  11. package/docs/hosting.md +83 -5
  12. package/docs/testing.md +32 -0
  13. package/lib/__lib__/LegendCubeCommand.d.ts +2 -0
  14. package/lib/__lib__/LegendCubeCommand.d.ts.map +1 -1
  15. package/lib/__lib__/LegendCubeCommand.js +7 -0
  16. package/lib/__lib__/LegendCubeCommand.js.map +1 -1
  17. package/lib/__lib__/LegendCubeFunctionLabels.d.ts +29 -0
  18. package/lib/__lib__/LegendCubeFunctionLabels.d.ts.map +1 -0
  19. package/lib/__lib__/LegendCubeFunctionLabels.js +31 -0
  20. package/lib/__lib__/LegendCubeFunctionLabels.js.map +1 -0
  21. package/lib/__lib__/LegendCubeHelpText.d.ts +5 -1
  22. package/lib/__lib__/LegendCubeHelpText.d.ts.map +1 -1
  23. package/lib/__lib__/LegendCubeHelpText.js +16 -2
  24. package/lib/__lib__/LegendCubeHelpText.js.map +1 -1
  25. package/lib/__lib__/LegendCubeLabels.d.ts +130 -9
  26. package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -1
  27. package/lib/__lib__/LegendCubeLabels.js +169 -17
  28. package/lib/__lib__/LegendCubeLabels.js.map +1 -1
  29. package/lib/__lib__/LegendCubeNavigation.d.ts +23 -0
  30. package/lib/__lib__/LegendCubeNavigation.d.ts.map +1 -0
  31. package/lib/__lib__/LegendCubeNavigation.js +33 -0
  32. package/lib/__lib__/LegendCubeNavigation.js.map +1 -0
  33. package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts +26 -0
  34. package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts.map +1 -0
  35. package/lib/__lib__/LegendCubeProjectSourceLabels.js +26 -0
  36. package/lib/__lib__/LegendCubeProjectSourceLabels.js.map +1 -0
  37. package/lib/__lib__/LegendCubeServiceLabels.d.ts +27 -0
  38. package/lib/__lib__/LegendCubeServiceLabels.d.ts.map +1 -0
  39. package/lib/__lib__/LegendCubeServiceLabels.js +32 -0
  40. package/lib/__lib__/LegendCubeServiceLabels.js.map +1 -0
  41. package/lib/__lib__/LegendCubeTesting.d.ts +10 -1
  42. package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -1
  43. package/lib/__lib__/LegendCubeTesting.js +9 -0
  44. package/lib/__lib__/LegendCubeTesting.js.map +1 -1
  45. package/lib/__lib__/LegendCubeTour.d.ts +62 -0
  46. package/lib/__lib__/LegendCubeTour.d.ts.map +1 -0
  47. package/lib/__lib__/LegendCubeTour.js +149 -0
  48. package/lib/__lib__/LegendCubeTour.js.map +1 -0
  49. package/lib/__test-utils__/CubeEngineTestSupport.d.ts +1 -1
  50. package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -1
  51. package/lib/__test-utils__/CubeEngineTestSupport.js +2 -2
  52. package/lib/__test-utils__/CubeEngineTestSupport.js.map +1 -1
  53. package/lib/__test-utils__/CubeExampleTestUtils.d.ts +34 -0
  54. package/lib/__test-utils__/CubeExampleTestUtils.d.ts.map +1 -0
  55. package/lib/__test-utils__/CubeExampleTestUtils.js +72 -0
  56. package/lib/__test-utils__/CubeExampleTestUtils.js.map +1 -0
  57. package/lib/__test-utils__/CubeExpressionTestUtils.d.ts +8 -1
  58. package/lib/__test-utils__/CubeExpressionTestUtils.d.ts.map +1 -1
  59. package/lib/__test-utils__/CubeExpressionTestUtils.js +20 -3
  60. package/lib/__test-utils__/CubeExpressionTestUtils.js.map +1 -1
  61. package/lib/__test-utils__/CubeFunctionTestOutline.d.ts +26 -0
  62. package/lib/__test-utils__/CubeFunctionTestOutline.d.ts.map +1 -0
  63. package/lib/__test-utils__/CubeFunctionTestOutline.js +56 -0
  64. package/lib/__test-utils__/CubeFunctionTestOutline.js.map +1 -0
  65. package/lib/__test-utils__/CubeLambdaCorpus.d.ts +36 -0
  66. package/lib/__test-utils__/CubeLambdaCorpus.d.ts.map +1 -0
  67. package/lib/__test-utils__/CubeLambdaCorpus.js +83 -0
  68. package/lib/__test-utils__/CubeLambdaCorpus.js.map +1 -0
  69. package/lib/__test-utils__/CubePageTestUtils.d.ts +6 -0
  70. package/lib/__test-utils__/CubePageTestUtils.d.ts.map +1 -1
  71. package/lib/__test-utils__/CubePageTestUtils.js +21 -0
  72. package/lib/__test-utils__/CubePageTestUtils.js.map +1 -1
  73. package/lib/__test-utils__/CubeTestApplication.d.ts +9 -0
  74. package/lib/__test-utils__/CubeTestApplication.d.ts.map +1 -1
  75. package/lib/__test-utils__/CubeTestApplication.js +16 -0
  76. package/lib/__test-utils__/CubeTestApplication.js.map +1 -1
  77. package/lib/__test-utils__/CubeVariantTestUtils.d.ts +16 -0
  78. package/lib/__test-utils__/CubeVariantTestUtils.d.ts.map +1 -0
  79. package/lib/__test-utils__/CubeVariantTestUtils.js +66 -0
  80. package/lib/__test-utils__/CubeVariantTestUtils.js.map +1 -0
  81. package/lib/__test-utils__/FakeCubeEngine.d.ts +5 -0
  82. package/lib/__test-utils__/FakeCubeEngine.d.ts.map +1 -1
  83. package/lib/__test-utils__/FakeCubeEngine.js +17 -0
  84. package/lib/__test-utils__/FakeCubeEngine.js.map +1 -1
  85. package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts +7 -1
  86. package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts.map +1 -1
  87. package/lib/__test-utils__/FakeCubeIngestCatalog.js +16 -0
  88. package/lib/__test-utils__/FakeCubeIngestCatalog.js.map +1 -1
  89. package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts +26 -0
  90. package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts.map +1 -0
  91. package/lib/__test-utils__/FakeCubeServiceCatalog.js +40 -0
  92. package/lib/__test-utils__/FakeCubeServiceCatalog.js.map +1 -0
  93. package/lib/components/CubeAddItems.d.ts.map +1 -1
  94. package/lib/components/CubeAddItems.js +11 -7
  95. package/lib/components/CubeAddItems.js.map +1 -1
  96. package/lib/components/CubeDialogTheme.d.ts +25 -0
  97. package/lib/components/CubeDialogTheme.d.ts.map +1 -0
  98. package/lib/components/CubeDialogTheme.js +25 -0
  99. package/lib/components/CubeDialogTheme.js.map +1 -0
  100. package/lib/components/CubeEditor.d.ts +12 -1
  101. package/lib/components/CubeEditor.d.ts.map +1 -1
  102. package/lib/components/CubeEditor.js +22 -14
  103. package/lib/components/CubeEditor.js.map +1 -1
  104. package/lib/components/CubeFileMenu.d.ts +28 -0
  105. package/lib/components/CubeFileMenu.d.ts.map +1 -0
  106. package/lib/components/CubeFileMenu.js +78 -0
  107. package/lib/components/CubeFileMenu.js.map +1 -0
  108. package/lib/components/CubeLambdaImportBanner.d.ts +26 -0
  109. package/lib/components/CubeLambdaImportBanner.d.ts.map +1 -0
  110. package/lib/components/CubeLambdaImportBanner.js +47 -0
  111. package/lib/components/CubeLambdaImportBanner.js.map +1 -0
  112. package/lib/components/CubeNodeIcon.d.ts.map +1 -1
  113. package/lib/components/CubeNodeIcon.js +6 -1
  114. package/lib/components/CubeNodeIcon.js.map +1 -1
  115. package/lib/components/CubeSchemaColumnsTable.d.ts.map +1 -1
  116. package/lib/components/CubeSchemaColumnsTable.js +2 -2
  117. package/lib/components/CubeSchemaColumnsTable.js.map +1 -1
  118. package/lib/components/canvas/CubeCanvas.d.ts.map +1 -1
  119. package/lib/components/canvas/CubeCanvas.js +40 -6
  120. package/lib/components/canvas/CubeCanvas.js.map +1 -1
  121. package/lib/components/canvas/CubeCanvasContextMenu.d.ts.map +1 -1
  122. package/lib/components/canvas/CubeCanvasContextMenu.js +2 -1
  123. package/lib/components/canvas/CubeCanvasContextMenu.js.map +1 -1
  124. package/lib/components/canvas/CubeCanvasElements.d.ts +18 -1
  125. package/lib/components/canvas/CubeCanvasElements.d.ts.map +1 -1
  126. package/lib/components/canvas/CubeCanvasElements.js +58 -3
  127. package/lib/components/canvas/CubeCanvasElements.js.map +1 -1
  128. package/lib/components/canvas/CubeCanvasLayout.js +1 -1
  129. package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -1
  130. package/lib/components/canvas/CubeCanvasNode.js +11 -4
  131. package/lib/components/canvas/CubeCanvasNode.js.map +1 -1
  132. package/lib/components/dev-settings/CubeDevSettings.d.ts +35 -0
  133. package/lib/components/dev-settings/CubeDevSettings.d.ts.map +1 -0
  134. package/lib/components/dev-settings/CubeDevSettings.js +54 -0
  135. package/lib/components/dev-settings/CubeDevSettings.js.map +1 -0
  136. package/lib/components/editors/CubeColumnChecklist.d.ts.map +1 -1
  137. package/lib/components/editors/CubeColumnChecklist.js +2 -2
  138. package/lib/components/editors/CubeColumnChecklist.js.map +1 -1
  139. package/lib/components/editors/CubeColumnPicker.d.ts.map +1 -1
  140. package/lib/components/editors/CubeColumnPicker.js +6 -4
  141. package/lib/components/editors/CubeColumnPicker.js.map +1 -1
  142. package/lib/components/editors/CubeConcatEditor.js +2 -2
  143. package/lib/components/editors/CubeConcatEditor.js.map +1 -1
  144. package/lib/components/editors/CubeExplodeEditor.d.ts +26 -0
  145. package/lib/components/editors/CubeExplodeEditor.d.ts.map +1 -0
  146. package/lib/components/editors/CubeExplodeEditor.js +61 -0
  147. package/lib/components/editors/CubeExplodeEditor.js.map +1 -0
  148. package/lib/components/editors/CubeExpressionFilterEditor.d.ts +25 -0
  149. package/lib/components/editors/CubeExpressionFilterEditor.d.ts.map +1 -0
  150. package/lib/components/editors/CubeExpressionFilterEditor.js +86 -0
  151. package/lib/components/editors/CubeExpressionFilterEditor.js.map +1 -0
  152. package/lib/components/editors/CubeExtendEditor.d.ts.map +1 -1
  153. package/lib/components/editors/CubeExtendEditor.js +13 -12
  154. package/lib/components/editors/CubeExtendEditor.js.map +1 -1
  155. package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -1
  156. package/lib/components/editors/CubeFilterEditor.js +13 -2
  157. package/lib/components/editors/CubeFilterEditor.js.map +1 -1
  158. package/lib/components/editors/CubeFunctionSourceEditor.d.ts +25 -0
  159. package/lib/components/editors/CubeFunctionSourceEditor.d.ts.map +1 -0
  160. package/lib/components/editors/CubeFunctionSourceEditor.js +55 -0
  161. package/lib/components/editors/CubeFunctionSourceEditor.js.map +1 -0
  162. package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -1
  163. package/lib/components/editors/CubeJoinEditor.js +16 -4
  164. package/lib/components/editors/CubeJoinEditor.js.map +1 -1
  165. package/lib/components/editors/CubeJsonFieldsTree.d.ts +46 -0
  166. package/lib/components/editors/CubeJsonFieldsTree.d.ts.map +1 -0
  167. package/lib/components/editors/CubeJsonFieldsTree.js +93 -0
  168. package/lib/components/editors/CubeJsonFieldsTree.js.map +1 -0
  169. package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -1
  170. package/lib/components/editors/CubeNodeEditorPanel.js +18 -8
  171. package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -1
  172. package/lib/components/editors/CubeNodeEditorPopper.d.ts +5 -1
  173. package/lib/components/editors/CubeNodeEditorPopper.d.ts.map +1 -1
  174. package/lib/components/editors/CubeNodeEditorPopper.js +10 -2
  175. package/lib/components/editors/CubeNodeEditorPopper.js.map +1 -1
  176. package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -1
  177. package/lib/components/editors/CubeNodeEditorRegistry.js +11 -1
  178. package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -1
  179. package/lib/components/editors/CubePivotEditor.d.ts +26 -0
  180. package/lib/components/editors/CubePivotEditor.d.ts.map +1 -0
  181. package/lib/components/editors/CubePivotEditor.js +93 -0
  182. package/lib/components/editors/CubePivotEditor.js.map +1 -0
  183. package/lib/components/editors/CubeRestrictEditor.d.ts.map +1 -1
  184. package/lib/components/editors/CubeRestrictEditor.js +2 -2
  185. package/lib/components/editors/CubeRestrictEditor.js.map +1 -1
  186. package/lib/components/editors/CubeServiceSourceEditor.d.ts +25 -0
  187. package/lib/components/editors/CubeServiceSourceEditor.d.ts.map +1 -0
  188. package/lib/components/editors/CubeServiceSourceEditor.js +41 -0
  189. package/lib/components/editors/CubeServiceSourceEditor.js.map +1 -0
  190. package/lib/components/grid/CubeColumnFormatDialog.d.ts +28 -0
  191. package/lib/components/grid/CubeColumnFormatDialog.d.ts.map +1 -0
  192. package/lib/components/grid/CubeColumnFormatDialog.js +94 -0
  193. package/lib/components/grid/CubeColumnFormatDialog.js.map +1 -0
  194. package/lib/components/grid/CubeDrilldownBar.d.ts +37 -0
  195. package/lib/components/grid/CubeDrilldownBar.d.ts.map +1 -0
  196. package/lib/components/grid/CubeDrilldownBar.js +77 -0
  197. package/lib/components/grid/CubeDrilldownBar.js.map +1 -0
  198. package/lib/components/grid/CubeGridRegion.d.ts.map +1 -1
  199. package/lib/components/grid/CubeGridRegion.js +43 -28
  200. package/lib/components/grid/CubeGridRegion.js.map +1 -1
  201. package/lib/components/grid/CubeGridValues.d.ts +36 -4
  202. package/lib/components/grid/CubeGridValues.d.ts.map +1 -1
  203. package/lib/components/grid/CubeGridValues.js +116 -4
  204. package/lib/components/grid/CubeGridValues.js.map +1 -1
  205. package/lib/components/grid/CubeJsonExplorerDialog.d.ts +27 -0
  206. package/lib/components/grid/CubeJsonExplorerDialog.d.ts.map +1 -0
  207. package/lib/components/grid/CubeJsonExplorerDialog.js +102 -0
  208. package/lib/components/grid/CubeJsonExplorerDialog.js.map +1 -0
  209. package/lib/components/grid/CubeJsonViewerDialog.d.ts +27 -0
  210. package/lib/components/grid/CubeJsonViewerDialog.d.ts.map +1 -0
  211. package/lib/components/grid/CubeJsonViewerDialog.js +68 -0
  212. package/lib/components/grid/CubeJsonViewerDialog.js.map +1 -0
  213. package/lib/components/grid/CubeResultGrid.d.ts +81 -6
  214. package/lib/components/grid/CubeResultGrid.d.ts.map +1 -1
  215. package/lib/components/grid/CubeResultGrid.js +400 -35
  216. package/lib/components/grid/CubeResultGrid.js.map +1 -1
  217. package/lib/components/grid/CubeRunStatsPanel.d.ts +28 -0
  218. package/lib/components/grid/CubeRunStatsPanel.d.ts.map +1 -0
  219. package/lib/components/grid/CubeRunStatsPanel.js +61 -0
  220. package/lib/components/grid/CubeRunStatsPanel.js.map +1 -0
  221. package/lib/components/grid/CubeServerSideGrid.d.ts +36 -0
  222. package/lib/components/grid/CubeServerSideGrid.d.ts.map +1 -0
  223. package/lib/components/grid/CubeServerSideGrid.js +116 -0
  224. package/lib/components/grid/CubeServerSideGrid.js.map +1 -0
  225. package/lib/components/grid/CubeSqlDialog.d.ts +24 -0
  226. package/lib/components/grid/CubeSqlDialog.d.ts.map +1 -0
  227. package/lib/components/grid/CubeSqlDialog.js +39 -0
  228. package/lib/components/grid/CubeSqlDialog.js.map +1 -0
  229. package/lib/components/grid/CubeSqlFormat.d.ts +20 -0
  230. package/lib/components/grid/CubeSqlFormat.d.ts.map +1 -0
  231. package/lib/components/grid/CubeSqlFormat.js +32 -0
  232. package/lib/components/grid/CubeSqlFormat.js.map +1 -0
  233. package/lib/components/palette/CubePalette.d.ts.map +1 -1
  234. package/lib/components/palette/CubePalette.js +36 -14
  235. package/lib/components/palette/CubePalette.js.map +1 -1
  236. package/lib/components/show-pure/CubeShowPureDialog.d.ts +4 -1
  237. package/lib/components/show-pure/CubeShowPureDialog.d.ts.map +1 -1
  238. package/lib/components/show-pure/CubeShowPureDialog.js +8 -4
  239. package/lib/components/show-pure/CubeShowPureDialog.js.map +1 -1
  240. package/lib/components/source-picker/CubeDataProductTab.d.ts.map +1 -1
  241. package/lib/components/source-picker/CubeDataProductTab.js +37 -16
  242. package/lib/components/source-picker/CubeDataProductTab.js.map +1 -1
  243. package/lib/components/source-picker/CubeDirectConnectionTab.d.ts.map +1 -1
  244. package/lib/components/source-picker/CubeDirectConnectionTab.js +6 -4
  245. package/lib/components/source-picker/CubeDirectConnectionTab.js.map +1 -1
  246. package/lib/components/source-picker/CubeFunctionSteps.d.ts +36 -0
  247. package/lib/components/source-picker/CubeFunctionSteps.d.ts.map +1 -0
  248. package/lib/components/source-picker/CubeFunctionSteps.js +76 -0
  249. package/lib/components/source-picker/CubeFunctionSteps.js.map +1 -0
  250. package/lib/components/source-picker/CubeIngestTab.d.ts +2 -2
  251. package/lib/components/source-picker/CubeIngestTab.d.ts.map +1 -1
  252. package/lib/components/source-picker/CubeIngestTab.js +49 -20
  253. package/lib/components/source-picker/CubeIngestTab.js.map +1 -1
  254. package/lib/components/source-picker/CubeInlineModelTab.d.ts +3 -2
  255. package/lib/components/source-picker/CubeInlineModelTab.d.ts.map +1 -1
  256. package/lib/components/source-picker/CubeInlineModelTab.js +23 -13
  257. package/lib/components/source-picker/CubeInlineModelTab.js.map +1 -1
  258. package/lib/components/source-picker/CubePickerListItem.d.ts +47 -0
  259. package/lib/components/source-picker/CubePickerListItem.d.ts.map +1 -0
  260. package/lib/components/source-picker/CubePickerListItem.js +62 -0
  261. package/lib/components/source-picker/CubePickerListItem.js.map +1 -0
  262. package/lib/components/source-picker/CubeProjectTab.d.ts +4 -3
  263. package/lib/components/source-picker/CubeProjectTab.d.ts.map +1 -1
  264. package/lib/components/source-picker/CubeProjectTab.js +7 -4
  265. package/lib/components/source-picker/CubeProjectTab.js.map +1 -1
  266. package/lib/components/source-picker/CubeServiceTab.d.ts +27 -0
  267. package/lib/components/source-picker/CubeServiceTab.d.ts.map +1 -0
  268. package/lib/components/source-picker/CubeServiceTab.js +36 -0
  269. package/lib/components/source-picker/CubeServiceTab.js.map +1 -0
  270. package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -1
  271. package/lib/components/source-picker/CubeSourcePicker.js +16 -3
  272. package/lib/components/source-picker/CubeSourcePicker.js.map +1 -1
  273. package/lib/components/source-picker/CubeTablePreview.d.ts +29 -0
  274. package/lib/components/source-picker/CubeTablePreview.d.ts.map +1 -0
  275. package/lib/components/source-picker/CubeTablePreview.js +10 -0
  276. package/lib/components/source-picker/CubeTablePreview.js.map +1 -0
  277. package/lib/components/spec-transfer/CubeImportPureDialog.d.ts +27 -0
  278. package/lib/components/spec-transfer/CubeImportPureDialog.d.ts.map +1 -0
  279. package/lib/components/spec-transfer/CubeImportPureDialog.js +38 -0
  280. package/lib/components/spec-transfer/CubeImportPureDialog.js.map +1 -0
  281. package/lib/components/spec-transfer/CubeSpecTransferDialog.d.ts.map +1 -1
  282. package/lib/components/spec-transfer/CubeSpecTransferDialog.js +9 -3
  283. package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -1
  284. package/lib/components/tour/CubeTour.d.ts +36 -0
  285. package/lib/components/tour/CubeTour.d.ts.map +1 -0
  286. package/lib/components/tour/CubeTour.js +183 -0
  287. package/lib/components/tour/CubeTour.js.map +1 -0
  288. package/lib/graph-manager/CubeDataProductCatalog.d.ts +10 -0
  289. package/lib/graph-manager/CubeDataProductCatalog.d.ts.map +1 -1
  290. package/lib/graph-manager/CubeDataProductCatalog.js.map +1 -1
  291. package/lib/graph-manager/CubeEngine.d.ts +46 -1
  292. package/lib/graph-manager/CubeEngine.d.ts.map +1 -1
  293. package/lib/graph-manager/CubeEngine.js.map +1 -1
  294. package/lib/graph-manager/CubeEngineClientSettings.d.ts +43 -0
  295. package/lib/graph-manager/CubeEngineClientSettings.d.ts.map +1 -0
  296. package/lib/graph-manager/CubeEngineClientSettings.js +51 -0
  297. package/lib/graph-manager/CubeEngineClientSettings.js.map +1 -0
  298. package/lib/graph-manager/CubeIngest.d.ts +5 -0
  299. package/lib/graph-manager/CubeIngest.d.ts.map +1 -1
  300. package/lib/graph-manager/CubeIngest.js +10 -0
  301. package/lib/graph-manager/CubeIngest.js.map +1 -1
  302. package/lib/graph-manager/CubeIngestCatalog.d.ts +26 -0
  303. package/lib/graph-manager/CubeIngestCatalog.d.ts.map +1 -1
  304. package/lib/graph-manager/CubeIngestCatalog.js +6 -0
  305. package/lib/graph-manager/CubeIngestCatalog.js.map +1 -1
  306. package/lib/graph-manager/CubeLakehouseRuntime.d.ts +29 -0
  307. package/lib/graph-manager/CubeLakehouseRuntime.d.ts.map +1 -0
  308. package/lib/graph-manager/CubeLakehouseRuntime.js +40 -0
  309. package/lib/graph-manager/CubeLakehouseRuntime.js.map +1 -0
  310. package/lib/graph-manager/CubeProjectCatalog.d.ts +3 -3
  311. package/lib/graph-manager/CubeService.d.ts +20 -0
  312. package/lib/graph-manager/CubeService.d.ts.map +1 -0
  313. package/lib/graph-manager/CubeService.js +22 -0
  314. package/lib/graph-manager/CubeService.js.map +1 -0
  315. package/lib/graph-manager/CubeServiceCatalog.d.ts +31 -0
  316. package/lib/graph-manager/CubeServiceCatalog.d.ts.map +1 -0
  317. package/lib/graph-manager/CubeServiceCatalog.js +17 -0
  318. package/lib/graph-manager/CubeServiceCatalog.js.map +1 -0
  319. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +52 -5
  320. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -1
  321. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +63 -5
  322. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -1
  323. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts +9 -6
  324. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts.map +1 -1
  325. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js +12 -8
  326. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js.map +1 -1
  327. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts +30 -0
  328. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts.map +1 -0
  329. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js +229 -0
  330. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js.map +1 -0
  331. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts.map +1 -1
  332. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js +18 -9
  333. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js.map +1 -1
  334. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts +4 -9
  335. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts.map +1 -1
  336. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js +2 -1
  337. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js.map +1 -1
  338. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts +34 -0
  339. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts.map +1 -0
  340. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js +332 -0
  341. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js.map +1 -0
  342. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts.map +1 -1
  343. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js +49 -10
  344. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +1 -1
  345. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts +1 -1
  346. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts.map +1 -1
  347. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js +3 -1
  348. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js.map +1 -1
  349. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts +2 -1
  350. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts.map +1 -1
  351. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js +2 -1
  352. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js.map +1 -1
  353. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +18 -0
  354. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -1
  355. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +74 -6
  356. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -1
  357. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts.map +1 -1
  358. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js +7 -4
  359. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js.map +1 -1
  360. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts +31 -0
  361. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts.map +1 -0
  362. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js +69 -0
  363. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js.map +1 -0
  364. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts.map +1 -1
  365. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js +6 -2
  366. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js.map +1 -1
  367. package/lib/index.css +2 -2
  368. package/lib/index.css.map +1 -1
  369. package/lib/index.d.ts +13 -3
  370. package/lib/index.d.ts.map +1 -1
  371. package/lib/index.js +11 -1
  372. package/lib/index.js.map +1 -1
  373. package/lib/stores/CubeAddPlacement.d.ts +10 -3
  374. package/lib/stores/CubeAddPlacement.d.ts.map +1 -1
  375. package/lib/stores/CubeAddPlacement.js +16 -5
  376. package/lib/stores/CubeAddPlacement.js.map +1 -1
  377. package/lib/stores/CubeDevSettingsState.d.ts +47 -0
  378. package/lib/stores/CubeDevSettingsState.d.ts.map +1 -0
  379. package/lib/stores/CubeDevSettingsState.js +99 -0
  380. package/lib/stores/CubeDevSettingsState.js.map +1 -0
  381. package/lib/stores/CubeEditorState.d.ts +189 -43
  382. package/lib/stores/CubeEditorState.d.ts.map +1 -1
  383. package/lib/stores/CubeEditorState.js +532 -117
  384. package/lib/stores/CubeEditorState.js.map +1 -1
  385. package/lib/stores/CubeEngineChecks.d.ts +59 -0
  386. package/lib/stores/CubeEngineChecks.d.ts.map +1 -0
  387. package/lib/stores/CubeEngineChecks.js +100 -0
  388. package/lib/stores/CubeEngineChecks.js.map +1 -0
  389. package/lib/stores/CubeExamples.d.ts.map +1 -1
  390. package/lib/stores/CubeExamples.js +136 -2
  391. package/lib/stores/CubeExamples.js.map +1 -1
  392. package/lib/stores/CubeExamplesState.d.ts +1 -1
  393. package/lib/stores/CubeExamplesState.d.ts.map +1 -1
  394. package/lib/stores/CubeExamplesState.js +6 -3
  395. package/lib/stores/CubeExamplesState.js.map +1 -1
  396. package/lib/stores/CubeExecutionState.d.ts.map +1 -1
  397. package/lib/stores/CubeExecutionState.js +24 -33
  398. package/lib/stores/CubeExecutionState.js.map +1 -1
  399. package/lib/stores/CubeExportState.d.ts +41 -0
  400. package/lib/stores/CubeExportState.d.ts.map +1 -0
  401. package/lib/stores/CubeExportState.js +134 -0
  402. package/lib/stores/CubeExportState.js.map +1 -0
  403. package/lib/stores/CubeExpressionFilterCheck.d.ts +51 -0
  404. package/lib/stores/CubeExpressionFilterCheck.d.ts.map +1 -0
  405. package/lib/stores/CubeExpressionFilterCheck.js +134 -0
  406. package/lib/stores/CubeExpressionFilterCheck.js.map +1 -0
  407. package/lib/stores/CubeExtendTyping.d.ts +6 -14
  408. package/lib/stores/CubeExtendTyping.d.ts.map +1 -1
  409. package/lib/stores/CubeExtendTyping.js +6 -33
  410. package/lib/stores/CubeExtendTyping.js.map +1 -1
  411. package/lib/stores/CubeFunctionRecheck.d.ts +30 -0
  412. package/lib/stores/CubeFunctionRecheck.d.ts.map +1 -0
  413. package/lib/stores/CubeFunctionRecheck.js +67 -0
  414. package/lib/stores/CubeFunctionRecheck.js.map +1 -0
  415. package/lib/stores/CubeGridFetcher.d.ts +75 -0
  416. package/lib/stores/CubeGridFetcher.d.ts.map +1 -0
  417. package/lib/stores/CubeGridFetcher.js +197 -0
  418. package/lib/stores/CubeGridFetcher.js.map +1 -0
  419. package/lib/stores/CubeGridQuickActions.d.ts +25 -6
  420. package/lib/stores/CubeGridQuickActions.d.ts.map +1 -1
  421. package/lib/stores/CubeGridQuickActions.js +52 -23
  422. package/lib/stores/CubeGridQuickActions.js.map +1 -1
  423. package/lib/stores/CubeGridState.d.ts +136 -0
  424. package/lib/stores/CubeGridState.d.ts.map +1 -0
  425. package/lib/stores/CubeGridState.js +317 -0
  426. package/lib/stores/CubeGridState.js.map +1 -0
  427. package/lib/stores/CubeHost.d.ts +42 -0
  428. package/lib/stores/CubeHost.d.ts.map +1 -1
  429. package/lib/stores/CubeHost.js +4 -0
  430. package/lib/stores/CubeHost.js.map +1 -1
  431. package/lib/stores/CubeLambdaImportState.d.ts +118 -0
  432. package/lib/stores/CubeLambdaImportState.d.ts.map +1 -0
  433. package/lib/stores/CubeLambdaImportState.js +302 -0
  434. package/lib/stores/CubeLambdaImportState.js.map +1 -0
  435. package/lib/stores/CubeLambdaSources.d.ts +45 -0
  436. package/lib/stores/CubeLambdaSources.d.ts.map +1 -0
  437. package/lib/stores/CubeLambdaSources.js +261 -0
  438. package/lib/stores/CubeLambdaSources.js.map +1 -0
  439. package/lib/stores/CubePureText.d.ts +20 -0
  440. package/lib/stores/CubePureText.d.ts.map +1 -0
  441. package/lib/stores/CubePureText.js +24 -0
  442. package/lib/stores/CubePureText.js.map +1 -0
  443. package/lib/stores/CubeQueryRun.d.ts +59 -0
  444. package/lib/stores/CubeQueryRun.d.ts.map +1 -0
  445. package/lib/stores/CubeQueryRun.js +101 -0
  446. package/lib/stores/CubeQueryRun.js.map +1 -0
  447. package/lib/stores/CubeRunStatsState.d.ts +61 -0
  448. package/lib/stores/CubeRunStatsState.d.ts.map +1 -0
  449. package/lib/stores/CubeRunStatsState.js +54 -0
  450. package/lib/stores/CubeRunStatsState.js.map +1 -0
  451. package/lib/stores/CubeRunningStepLambda.d.ts +25 -0
  452. package/lib/stores/CubeRunningStepLambda.d.ts.map +1 -0
  453. package/lib/stores/CubeRunningStepLambda.js +45 -0
  454. package/lib/stores/CubeRunningStepLambda.js.map +1 -0
  455. package/lib/stores/CubeServiceRecheck.d.ts +29 -0
  456. package/lib/stores/CubeServiceRecheck.d.ts.map +1 -0
  457. package/lib/stores/CubeServiceRecheck.js +33 -0
  458. package/lib/stores/CubeServiceRecheck.js.map +1 -0
  459. package/lib/stores/CubeShowPureState.d.ts +14 -1
  460. package/lib/stores/CubeShowPureState.d.ts.map +1 -1
  461. package/lib/stores/CubeShowPureState.js +41 -11
  462. package/lib/stores/CubeShowPureState.js.map +1 -1
  463. package/lib/stores/CubeSourcePickerState.d.ts +20 -4
  464. package/lib/stores/CubeSourcePickerState.d.ts.map +1 -1
  465. package/lib/stores/CubeSourcePickerState.js +75 -14
  466. package/lib/stores/CubeSourcePickerState.js.map +1 -1
  467. package/lib/stores/CubeTourState.d.ts +49 -0
  468. package/lib/stores/CubeTourState.d.ts.map +1 -0
  469. package/lib/stores/CubeTourState.js +92 -0
  470. package/lib/stores/CubeTourState.js.map +1 -0
  471. package/lib/stores/LegendCubeHost.d.ts +88 -0
  472. package/lib/stores/LegendCubeHost.d.ts.map +1 -0
  473. package/lib/stores/LegendCubeHost.js +149 -0
  474. package/lib/stores/LegendCubeHost.js.map +1 -0
  475. package/lib/stores/LocalModelCatalog.d.ts.map +1 -1
  476. package/lib/stores/LocalModelCatalog.js +3 -1
  477. package/lib/stores/LocalModelCatalog.js.map +1 -1
  478. package/lib/stores/editors/CubeExplodeDraft.d.ts +87 -0
  479. package/lib/stores/editors/CubeExplodeDraft.d.ts.map +1 -0
  480. package/lib/stores/editors/CubeExplodeDraft.js +221 -0
  481. package/lib/stores/editors/CubeExplodeDraft.js.map +1 -0
  482. package/lib/stores/editors/CubeExpressionFilterDraft.d.ts +94 -0
  483. package/lib/stores/editors/CubeExpressionFilterDraft.d.ts.map +1 -0
  484. package/lib/stores/editors/CubeExpressionFilterDraft.js +258 -0
  485. package/lib/stores/editors/CubeExpressionFilterDraft.js.map +1 -0
  486. package/lib/stores/editors/CubeExtendDraft.d.ts +9 -0
  487. package/lib/stores/editors/CubeExtendDraft.d.ts.map +1 -1
  488. package/lib/stores/editors/CubeExtendDraft.js +26 -0
  489. package/lib/stores/editors/CubeExtendDraft.js.map +1 -1
  490. package/lib/stores/editors/CubeFunctionDraft.d.ts +34 -0
  491. package/lib/stores/editors/CubeFunctionDraft.d.ts.map +1 -0
  492. package/lib/stores/editors/CubeFunctionDraft.js +69 -0
  493. package/lib/stores/editors/CubeFunctionDraft.js.map +1 -0
  494. package/lib/stores/editors/CubeNodeDraftRegistry.d.ts +4 -2
  495. package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -1
  496. package/lib/stores/editors/CubeNodeDraftRegistry.js +25 -3
  497. package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -1
  498. package/lib/stores/editors/CubePivotDraft.d.ts +93 -0
  499. package/lib/stores/editors/CubePivotDraft.d.ts.map +1 -0
  500. package/lib/stores/editors/CubePivotDraft.js +267 -0
  501. package/lib/stores/editors/CubePivotDraft.js.map +1 -0
  502. package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts +27 -0
  503. package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts.map +1 -0
  504. package/lib/stores/fixtures/CubeSalesDuckDbModel.js +52 -0
  505. package/lib/stores/fixtures/CubeSalesDuckDbModel.js.map +1 -0
  506. package/lib/stores/fixtures/CubeTradesModel.d.ts +4 -0
  507. package/lib/stores/fixtures/CubeTradesModel.d.ts.map +1 -1
  508. package/lib/stores/fixtures/CubeTradesModel.js +31 -1
  509. package/lib/stores/fixtures/CubeTradesModel.js.map +1 -1
  510. package/lib/stores/source-picker/CubeDataProductTabState.d.ts +34 -5
  511. package/lib/stores/source-picker/CubeDataProductTabState.d.ts.map +1 -1
  512. package/lib/stores/source-picker/CubeDataProductTabState.js +111 -26
  513. package/lib/stores/source-picker/CubeDataProductTabState.js.map +1 -1
  514. package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts +25 -2
  515. package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts.map +1 -1
  516. package/lib/stores/source-picker/CubeDirectConnectionTabState.js +183 -31
  517. package/lib/stores/source-picker/CubeDirectConnectionTabState.js.map +1 -1
  518. package/lib/stores/source-picker/CubeIngestTabState.d.ts +62 -15
  519. package/lib/stores/source-picker/CubeIngestTabState.d.ts.map +1 -1
  520. package/lib/stores/source-picker/CubeIngestTabState.js +212 -60
  521. package/lib/stores/source-picker/CubeIngestTabState.js.map +1 -1
  522. package/lib/stores/source-picker/CubeInlineModelTabState.d.ts +100 -4
  523. package/lib/stores/source-picker/CubeInlineModelTabState.d.ts.map +1 -1
  524. package/lib/stores/source-picker/CubeInlineModelTabState.js +415 -28
  525. package/lib/stores/source-picker/CubeInlineModelTabState.js.map +1 -1
  526. package/lib/stores/source-picker/CubeProjectTabState.d.ts +18 -3
  527. package/lib/stores/source-picker/CubeProjectTabState.d.ts.map +1 -1
  528. package/lib/stores/source-picker/CubeProjectTabState.js +26 -1
  529. package/lib/stores/source-picker/CubeProjectTabState.js.map +1 -1
  530. package/lib/stores/source-picker/CubeServiceTabState.d.ts +74 -0
  531. package/lib/stores/source-picker/CubeServiceTabState.d.ts.map +1 -0
  532. package/lib/stores/source-picker/CubeServiceTabState.js +216 -0
  533. package/lib/stores/source-picker/CubeServiceTabState.js.map +1 -0
  534. package/lib/stores/source-picker/CubeSourcePickerTab.d.ts +15 -3
  535. package/lib/stores/source-picker/CubeSourcePickerTab.d.ts.map +1 -1
  536. package/lib/stores/source-picker/CubeSourcePickerTab.js +21 -0
  537. package/lib/stores/source-picker/CubeSourcePickerTab.js.map +1 -1
  538. package/lib/stores/variant/CubeJson.d.ts +48 -0
  539. package/lib/stores/variant/CubeJson.d.ts.map +1 -0
  540. package/lib/stores/variant/CubeJson.js +207 -0
  541. package/lib/stores/variant/CubeJson.js.map +1 -0
  542. package/lib/stores/variant/CubeJsonExplorerState.d.ts +88 -0
  543. package/lib/stores/variant/CubeJsonExplorerState.d.ts.map +1 -0
  544. package/lib/stores/variant/CubeJsonExplorerState.js +297 -0
  545. package/lib/stores/variant/CubeJsonExplorerState.js.map +1 -0
  546. package/lib/stores/variant/CubeJsonFieldsState.d.ts +83 -0
  547. package/lib/stores/variant/CubeJsonFieldsState.d.ts.map +1 -0
  548. package/lib/stores/variant/CubeJsonFieldsState.js +207 -0
  549. package/lib/stores/variant/CubeJsonFieldsState.js.map +1 -0
  550. package/lib/stores/variant/CubeJsonOffers.d.ts +76 -0
  551. package/lib/stores/variant/CubeJsonOffers.d.ts.map +1 -0
  552. package/lib/stores/variant/CubeJsonOffers.js +250 -0
  553. package/lib/stores/variant/CubeJsonOffers.js.map +1 -0
  554. package/lib/stores/variant/CubeJsonParse.d.ts +28 -0
  555. package/lib/stores/variant/CubeJsonParse.d.ts.map +1 -0
  556. package/lib/stores/variant/CubeJsonParse.js +53 -0
  557. package/lib/stores/variant/CubeJsonParse.js.map +1 -0
  558. package/lib/stores/variant/CubeJsonSampling.d.ts +41 -0
  559. package/lib/stores/variant/CubeJsonSampling.d.ts.map +1 -0
  560. package/lib/stores/variant/CubeJsonSampling.js +59 -0
  561. package/lib/stores/variant/CubeJsonSampling.js.map +1 -0
  562. package/lib/stores/variant/CubeJsonShape.d.ts +87 -0
  563. package/lib/stores/variant/CubeJsonShape.d.ts.map +1 -0
  564. package/lib/stores/variant/CubeJsonShape.js +209 -0
  565. package/lib/stores/variant/CubeJsonShape.js.map +1 -0
  566. package/lib/stores/variant/CubeJsonViewerState.d.ts +33 -0
  567. package/lib/stores/variant/CubeJsonViewerState.d.ts.map +1 -0
  568. package/lib/stores/variant/CubeJsonViewerState.js +53 -0
  569. package/lib/stores/variant/CubeJsonViewerState.js.map +1 -0
  570. package/package.json +10 -9
  571. package/src/__lib__/LegendCubeCommand.ts +7 -0
  572. package/src/__lib__/LegendCubeFunctionLabels.ts +41 -0
  573. package/src/__lib__/LegendCubeHelpText.ts +27 -1
  574. package/src/__lib__/LegendCubeLabels.ts +225 -16
  575. package/src/__lib__/LegendCubeNavigation.ts +48 -0
  576. package/src/__lib__/LegendCubeProjectSourceLabels.ts +26 -0
  577. package/src/__lib__/LegendCubeServiceLabels.ts +41 -0
  578. package/src/__lib__/LegendCubeTesting.ts +9 -0
  579. package/src/__lib__/LegendCubeTour.ts +173 -0
  580. package/src/__test-utils__/CubeEngineTestSupport.ts +2 -1
  581. package/src/__test-utils__/CubeExampleTestUtils.ts +119 -0
  582. package/src/__test-utils__/CubeExpressionTestUtils.ts +29 -2
  583. package/src/__test-utils__/CubeFunctionTestOutline.ts +78 -0
  584. package/src/__test-utils__/CubeLambdaCorpus.ts +137 -0
  585. package/src/__test-utils__/CubePageTestUtils.tsx +34 -0
  586. package/src/__test-utils__/CubeTestApplication.ts +25 -0
  587. package/src/__test-utils__/CubeVariantTestUtils.ts +103 -0
  588. package/src/__test-utils__/FakeCubeEngine.ts +27 -0
  589. package/src/__test-utils__/FakeCubeIngestCatalog.ts +18 -0
  590. package/src/__test-utils__/FakeCubeServiceCatalog.ts +57 -0
  591. package/src/components/CubeAddItems.tsx +15 -6
  592. package/src/components/CubeDialogTheme.ts +25 -0
  593. package/src/components/CubeEditor.tsx +170 -129
  594. package/src/components/CubeFileMenu.tsx +129 -0
  595. package/src/components/CubeLambdaImportBanner.tsx +97 -0
  596. package/src/components/CubeNodeIcon.tsx +9 -0
  597. package/src/components/CubeSchemaColumnsTable.tsx +7 -2
  598. package/src/components/canvas/CubeCanvas.tsx +65 -10
  599. package/src/components/canvas/CubeCanvasContextMenu.tsx +33 -2
  600. package/src/components/canvas/CubeCanvasElements.ts +76 -3
  601. package/src/components/canvas/CubeCanvasLayout.ts +1 -1
  602. package/src/components/canvas/CubeCanvasNode.tsx +37 -3
  603. package/src/components/dev-settings/CubeDevSettings.tsx +169 -0
  604. package/src/components/editors/CubeColumnChecklist.tsx +8 -2
  605. package/src/components/editors/CubeColumnPicker.tsx +9 -3
  606. package/src/components/editors/CubeConcatEditor.tsx +2 -2
  607. package/src/components/editors/CubeExplodeEditor.tsx +207 -0
  608. package/src/components/editors/CubeExpressionFilterEditor.tsx +210 -0
  609. package/src/components/editors/CubeExtendEditor.tsx +34 -21
  610. package/src/components/editors/CubeFilterEditor.tsx +13 -1
  611. package/src/components/editors/CubeFunctionSourceEditor.tsx +140 -0
  612. package/src/components/editors/CubeJoinEditor.tsx +23 -4
  613. package/src/components/editors/CubeJsonFieldsTree.tsx +316 -0
  614. package/src/components/editors/CubeNodeEditorPanel.tsx +22 -10
  615. package/src/components/editors/CubeNodeEditorPopper.tsx +9 -1
  616. package/src/components/editors/CubeNodeEditorRegistry.ts +15 -0
  617. package/src/components/editors/CubePivotEditor.tsx +277 -0
  618. package/src/components/editors/CubeRestrictEditor.tsx +8 -2
  619. package/src/components/editors/CubeServiceSourceEditor.tsx +77 -0
  620. package/src/components/grid/CubeColumnFormatDialog.tsx +289 -0
  621. package/src/components/grid/CubeDrilldownBar.tsx +219 -0
  622. package/src/components/grid/CubeGridRegion.tsx +190 -56
  623. package/src/components/grid/CubeGridValues.ts +154 -4
  624. package/src/components/grid/CubeJsonExplorerDialog.tsx +304 -0
  625. package/src/components/grid/CubeJsonViewerDialog.tsx +190 -0
  626. package/src/components/grid/CubeResultGrid.tsx +586 -42
  627. package/src/components/grid/CubeRunStatsPanel.tsx +156 -0
  628. package/src/components/grid/CubeServerSideGrid.tsx +213 -0
  629. package/src/components/grid/CubeSqlDialog.tsx +90 -0
  630. package/src/components/grid/CubeSqlFormat.ts +37 -0
  631. package/src/components/palette/CubePalette.tsx +54 -12
  632. package/src/components/show-pure/CubeShowPureDialog.tsx +19 -5
  633. package/src/components/source-picker/CubeDataProductTab.tsx +169 -75
  634. package/src/components/source-picker/CubeDirectConnectionTab.tsx +42 -30
  635. package/src/components/source-picker/CubeFunctionSteps.tsx +244 -0
  636. package/src/components/source-picker/CubeIngestTab.tsx +195 -83
  637. package/src/components/source-picker/CubeInlineModelTab.tsx +110 -81
  638. package/src/components/source-picker/CubePickerListItem.tsx +118 -0
  639. package/src/components/source-picker/CubeProjectTab.tsx +6 -3
  640. package/src/components/source-picker/CubeServiceTab.tsx +151 -0
  641. package/src/components/source-picker/CubeSourcePicker.tsx +54 -18
  642. package/src/components/source-picker/CubeTablePreview.tsx +49 -0
  643. package/src/components/spec-transfer/CubeImportPureDialog.tsx +122 -0
  644. package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +21 -8
  645. package/src/components/tour/CubeTour.tsx +317 -0
  646. package/src/graph-manager/CubeDataProductCatalog.ts +11 -0
  647. package/src/graph-manager/CubeEngine.ts +51 -1
  648. package/src/graph-manager/CubeEngineClientSettings.ts +64 -0
  649. package/src/graph-manager/CubeIngest.ts +15 -0
  650. package/src/graph-manager/CubeIngestCatalog.ts +33 -0
  651. package/src/graph-manager/CubeLakehouseRuntime.ts +43 -0
  652. package/src/graph-manager/CubeProjectCatalog.ts +3 -3
  653. package/src/graph-manager/CubeService.ts +29 -0
  654. package/src/graph-manager/CubeServiceCatalog.ts +35 -0
  655. package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +115 -5
  656. package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.ts +13 -7
  657. package/src/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.ts +312 -0
  658. package/src/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.ts +35 -9
  659. package/src/graph-manager/protocol/pure/v1/V1_CubeIngestModel.ts +6 -15
  660. package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.ts +471 -0
  661. package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +70 -15
  662. package/src/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.ts +3 -1
  663. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.ts +7 -1
  664. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +122 -7
  665. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.ts +9 -4
  666. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.ts +92 -0
  667. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +6 -1
  668. package/src/index.ts +39 -2
  669. package/src/stores/CubeAddPlacement.ts +25 -5
  670. package/src/stores/CubeDevSettingsState.ts +117 -0
  671. package/src/stores/CubeEditorState.ts +722 -201
  672. package/src/stores/CubeEngineChecks.ts +240 -0
  673. package/src/stores/CubeExamples.ts +188 -1
  674. package/src/stores/CubeExamplesState.ts +13 -3
  675. package/src/stores/CubeExecutionState.ts +26 -57
  676. package/src/stores/CubeExportState.ts +196 -0
  677. package/src/stores/CubeExpressionFilterCheck.ts +218 -0
  678. package/src/stores/CubeExtendTyping.ts +6 -46
  679. package/src/stores/CubeFunctionRecheck.ts +97 -0
  680. package/src/stores/CubeGridFetcher.ts +302 -0
  681. package/src/stores/CubeGridQuickActions.ts +56 -23
  682. package/src/stores/CubeGridState.ts +450 -0
  683. package/src/stores/CubeHost.ts +48 -0
  684. package/src/stores/CubeLambdaImportState.ts +434 -0
  685. package/src/stores/CubeLambdaSources.ts +390 -0
  686. package/src/stores/CubePureText.ts +28 -0
  687. package/src/stores/CubeQueryRun.ts +169 -0
  688. package/src/stores/CubeRunStatsState.ts +91 -0
  689. package/src/stores/CubeRunningStepLambda.ts +62 -0
  690. package/src/stores/CubeServiceRecheck.ts +53 -0
  691. package/src/stores/CubeShowPureState.ts +51 -12
  692. package/src/stores/CubeSourcePickerState.ts +89 -13
  693. package/src/stores/CubeTourState.ts +116 -0
  694. package/src/stores/LegendCubeHost.ts +243 -0
  695. package/src/stores/LocalModelCatalog.ts +6 -1
  696. package/src/stores/editors/CubeExplodeDraft.ts +272 -0
  697. package/src/stores/editors/CubeExpressionFilterDraft.ts +389 -0
  698. package/src/stores/editors/CubeExtendDraft.ts +29 -0
  699. package/src/stores/editors/CubeFunctionDraft.ts +92 -0
  700. package/src/stores/editors/CubeNodeDraftRegistry.ts +34 -2
  701. package/src/stores/editors/CubePivotDraft.ts +355 -0
  702. package/src/stores/fixtures/CubeSalesDuckDbModel.ts +60 -0
  703. package/src/stores/fixtures/CubeTradesModel.ts +36 -1
  704. package/src/stores/source-picker/CubeDataProductTabState.ts +162 -35
  705. package/src/stores/source-picker/CubeDirectConnectionTabState.ts +246 -47
  706. package/src/stores/source-picker/CubeIngestTabState.ts +331 -106
  707. package/src/stores/source-picker/CubeInlineModelTabState.ts +514 -34
  708. package/src/stores/source-picker/CubeProjectTabState.ts +35 -3
  709. package/src/stores/source-picker/CubeServiceTabState.ts +288 -0
  710. package/src/stores/source-picker/CubeSourcePickerTab.ts +31 -2
  711. package/src/stores/variant/CubeJson.ts +229 -0
  712. package/src/stores/variant/CubeJsonExplorerState.ts +378 -0
  713. package/src/stores/variant/CubeJsonFieldsState.ts +252 -0
  714. package/src/stores/variant/CubeJsonOffers.ts +359 -0
  715. package/src/stores/variant/CubeJsonParse.ts +75 -0
  716. package/src/stores/variant/CubeJsonSampling.ts +90 -0
  717. package/src/stores/variant/CubeJsonShape.ts +279 -0
  718. package/src/stores/variant/CubeJsonViewerState.ts +59 -0
  719. package/tsconfig.json +72 -1
package/docs/hosting.md CHANGED
@@ -1,8 +1,16 @@
1
1
  # Hosting the Cube page
2
2
 
3
- A Legend application hosts the page by giving it a `CubeHost` and contributing its shortcuts. Legend Query is the
4
- host today: `LegendQueryCubeHost` (`src/stores/cube/`), and the lazy route and page (`src/components/cube/`) of
5
- `@finos/legend-application-query`.
3
+ A Legend application hosts the page by giving it a `CubeHost` and contributing its shortcuts. Three applications
4
+ host it today:
5
+
6
+ - **Legend Query**, at `/query/cube`: `LegendQueryCubeHost` (`src/stores/cube/`), and the lazy route and page
7
+ (`src/components/cube/`) of `@finos/legend-application-query`.
8
+ - **Legend Analytics**, at `/analytics/`, an application of its own: `createLegendAnalyticsCubeHost`
9
+ (`src/stores/`) and the page at its root (`src/components/`) of `@finos/legend-application-analytics`, with its
10
+ bootstrap and deployment (PLAN §11.19).
11
+ - **Legend Studio**, from an ingest definition's editor (see [Legend Studio](#legend-studio-create-matview)).
12
+
13
+ Legend Query and Legend Analytics build their hosts on one `LegendCubeHost` (below).
6
14
 
7
15
  ## The host
8
16
 
@@ -15,9 +23,24 @@ interface CubeHost {
15
23
  readonly dataProductCatalog?: CubeDataProductCatalog | undefined;
16
24
  readonly ingestCatalog?: CubeIngestCatalog | undefined;
17
25
  readonly projectCatalog?: CubeProjectCatalog | undefined;
26
+ readonly serviceCatalog?: CubeServiceCatalog | undefined;
27
+ /** False to leave out the Sample Data tab and the Examples, as Studio does */
28
+ readonly offersSampleData?: boolean | undefined;
29
+ readonly engineClientSettings?: CubeEngineClientSettings | undefined;
18
30
  }
19
31
  ```
20
32
 
33
+ **A Legend deployment's host:** `new LegendCubeHost(applicationStore, config, parts?)` builds every part below from
34
+ a plain `LegendCubeHostConfig`, the deployment's servers: `engine` (a `CubeEngineConfig`), and `depotServerUrl`,
35
+ `lakehouseContractUrl`, `lakehousePlatformUrl`, `marketplaceServerUrl`, `marketplaceApplicationUrl`,
36
+ `marketplaceProductionParallelUrl`, `enterpriseStereotype` and `getPreferredEnvironment`, each only where the
37
+ deployment has it. It offers each source by the rules below (no lakehouse, no data products; no platform, no ingest
38
+ data sets; no depot, no projects), links data products to the marketplace of their deployment's class, and registers
39
+ every engine client with its `engineClientSettings`, which Dev Settings changes. Tests give an engine, a connection
40
+ explorer or a project catalog as `parts`. Legend Query passes `buildLegendQueryCubeHostConfig`, Legend Analytics
41
+ `buildLegendAnalyticsCubeHostConfig`; a host whose sources are its own builds its parts
42
+ with the functions below instead.
43
+
21
44
  - **The application store** gives the page its commands, user data, clipboard, theme, notifications and alerts, and
22
45
  its telemetry service, which Cube doesn't use yet: it sends no events. Cube keeps no auth or config of its own.
23
46
  - **The engine:** `buildCubeEngine(config, tracerService)` builds Legend's implementation of the `CubeEngine` port.
@@ -25,7 +48,10 @@ interface CubeHost {
25
48
  and options, so Cube talks to the engine its query editor uses.
26
49
  - **The models:** `new LocalModelCatalog(engine)`. It offers `BUNDLED_MODELS` (the Northwind, Sports and Trades datasets of the Sample Data tab)
27
50
  and caches each model's outline: its tables, for the source picker, and its runtimes' connections with their
28
- database types, which Drop, Slice, Limit and Distinct need on some databases (PLAN §11.4). Users can also paste a Pure
51
+ database types, which Drop, Slice, Limit and Distinct need on some databases (PLAN §11.4), and which tell DuckDB's
52
+ refusal of `%` and `_` in filter patterns (PLAN §8.2) and where Pivot can run (PLAN §11.12). A data product or
53
+ ingest cube's database is the one its lakehouse runtime routes to, from one table in `CubeLakehouseRuntime.ts`
54
+ (Snowflake for now). Users can also paste a Pure
29
55
  model.
30
56
  - **Direct database connections (optional):** `buildCubeConnectionExplorer(config, tracerService)` builds the explorer
31
57
  that reads the database behind a connection through the engine's schema exploration
@@ -58,6 +84,9 @@ interface CubeHost {
58
84
  dialog's Project tab (PLAN §6.3). It reads nothing until the tab opens. Project cubes save the engine's pointer, so
59
85
  the engine must fetch from the same depot. Legend Query builds it from `depot.url`.
60
86
 
87
+ Legend Analytics mounts the page at its root with no flag: deploying the application is the opt-in. Its config takes
88
+ the keys below as Legend Query's does, with `depot` optional too, and only `engine` required.
89
+
61
90
  Legend Query mounts the Cube page at `/query/cube` only where its config turns on non-production features,
62
91
  since Cube is still a proof of concept: `"extensions": { "core": { "NonProductionFeatureFlag": true } }`. Without
63
92
  it, as in production, the address shows nothing. To see it locally, add it to the deployment's
@@ -108,6 +137,48 @@ lives as long as the page; Legend Query makes a new host on each visit.
108
137
  in-memory H2 database through its connection's `testDataSetupSqls`. On an engine that forbids LocalH2, its queries don't
109
138
  run.
110
139
 
140
+ ## Legend Studio: Create MatView
141
+
142
+ An ingest definition's editor in Studio offers **Create MatView** in every deployment: unlike Legend Query's
143
+ `/query/cube`, it doesn't depend on `NonProductionFeatureFlag` (`EmbeddedCubeState`, `src/stores/editor/embedded-cube/` of `@finos/legend-application-studio`). The page opens full
144
+ screen over the editor, as the embedded query builder does, with `LegendStudioCubeHost`:
145
+
146
+ - **The project:** `CubeHost.project` (`LegendStudioCubeWorkspace`) says the page reads one project's own sources. The
147
+ source dialog's Ingest and Data Product tabs then list that project's definitions and products by name, each path
148
+ muted beside it, with no class, producer deployment, search or warehouse to pick, and name the lakehouse runtime
149
+ its runs use: the project's first, the one Studio's own queries of an ingest definition or a data product pick.
150
+ Without one, the tabs say to add one. No sample data or examples (`offersSampleData: false`), databases or
151
+ services; one kind of source per cube, as in Legend Query.
152
+ - **Ingest data sets:** `LegendStudioCubeIngestCatalog` lists the workspace's definitions under one producer that
153
+ stands for the project, names each by the URN it would have if the project deployed it (`formatCubeIngestUrn`),
154
+ and types their data sets from their content (`readCubeIngestDataSets`), with no engine call.
155
+ - **Data products:** `LegendStudioCubeDataProductCatalog` lists the workspace's products, as version `workspace`, and
156
+ types their lakehouse access points with the engine (`#P{product.accessPoint}#`), a product's in one call.
157
+ - **The model typing and runs read:** the workspace, as Studio's own queries send it: the ingest catalog's
158
+ `getModelElements` (`ingestDefinitionSource` on `buildCubeEngine`) and the workspace's `getProjectModel`
159
+ (`dataProductModelSource`), in place of the deployed definitions and the project's deployed version. A run adds
160
+ Cube's lakehouse runtime, in the project runtime's environment (`lakehouseEnvironment`), on the cube's warehouse,
161
+ which starts as the runtime's.
162
+ - **Add MatView:** a button the host adds to the header (`headerActions` on `CubeEditor`) takes the step that runs
163
+ as a lambda with no runtime and no row limit (`buildCubeRunningStepLambda`), asks for a name, a classification of
164
+ its data and a primary key among the step's columns (`analysis.schemas` of the selected step), but the
165
+ milestoning columns a write mode adds (`LAKE_IN_ID`, `LAKE_DIGEST`, …), and appends a
166
+ `FunctionSource` data set to the definition. Studio sees it as a local change; Lineage and View SQL work on it.
167
+ - **Edit MatView:** the button's menu lists the definition's materialized views. Cube opens on one, read back into
168
+ its steps (`initialLambda` on `CubeEditor`, Import Pure, PLAN §11.18): the host binds its sources as the source
169
+ dialog would add them, and a banner says when Cube writes the view another way. The header button is then
170
+ **Save MatView**, which replaces that view's lambda in place, keeping its name, place and other keys, and adding
171
+ the empty lists the engine reads that it lacks. When the view has no classification of its data, or its primary
172
+ key has a column the step no longer has or a milestoning one, Save MatView first asks for them again in Add
173
+ MatView's dialog.
174
+ - **Loading:** Studio loads Cube with the dialog, on its first opening (`React.lazy`), so Cube's code stays out of
175
+ Studio's main bundle.
176
+
177
+ While the page is open, Studio's own shortcuts are off (its F9 compiles), and Cube's are on: Studio's core plugin
178
+ contributes `LEGEND_CUBE_COMMAND_CONFIG`. The floating step editor is placed in the dialog that hosts the page, so the
179
+ dialog doesn't hide it. In a light theme, Cube's dialogs draw their primary button as an accent button
180
+ (`CubeDialogTheme.ts`): legend-art's light variant draws it grey.
181
+
111
182
  ## Shortcuts
112
183
 
113
184
  A Legend application binds keys only through its plugins. The host returns the page's commands from one of its
@@ -129,6 +200,11 @@ The page registers the commands while it is open: F9 runs the query, and Ctrl+Z
129
200
  scans `../legend-*/src/**/*.tsx`. So Tailwind classes go in `.tsx` files only.
130
201
  - React Flow's stylesheet comes with the canvas. Load the page lazily, as Legend Query does, to keep it and the page's
131
202
  libraries out of the host's main bundle.
203
+ - In the legacy light theme, the legend-art components the page uses (dialogs, menus, form fields, inputs, tooltips,
204
+ notifications) take their light look from the application's own stylesheet: Legend Query's light mode
205
+ (`legend-application-query/style/light-mode.scss`), whose matching rules Legend Analytics copies into
206
+ `legend-application-analytics-bootstrap/style/light-mode.scss`, imported after every other style. A new host
207
+ defaulting to the light theme needs the same.
132
208
 
133
209
  ## The dev loop
134
210
 
@@ -137,7 +213,9 @@ The page registers the commands while it is open: F9 runs the query, and Ctrl+Z
137
213
  (`fixtures/legend-docker-setup/grammar-test-setup/grammar-test-setup-docker-compose.yml`). Check it with
138
214
  `curl -s localhost:6300/api/server/v1/info`.
139
215
  2. Run `yarn build` once: `yarn dev:ts` doesn't build the stylesheets.
140
- 3. Run `yarn dev:ts` and `yarn dev:query`, and open `http://localhost:9001/query/cube`.
216
+ 3. Run `yarn dev:ts` and `yarn dev:query`, and open `http://localhost:9001/query/cube`; or `yarn dev:analytics`, and
217
+ open `http://localhost:9009/analytics/` (run `yarn workspace @finos/legend-application-analytics-deployment setup`
218
+ once for its local config).
141
219
  4. Run `yarn workspace @finos/legend-cube-builder dev:sass` to rebuild the stylesheet as you change it (the root
142
220
  `yarn dev:ts` already rebuilds the TypeScript).
143
221
 
package/docs/testing.md CHANGED
@@ -127,6 +127,24 @@ would serve it.
127
127
  failing column found and located, a plan that fails, and a run. A test that needs a typed Extend without the engine
128
128
  builds one with `TEST__typedExtend` (`src/__test-utils__/CubeExpressionTestUtils.ts`), whose types the conformance
129
129
  cases check against the engine.
130
+ - **Filter by Expression** (PLAN §11.11). `CubeExpressionFilter.engine-roundtrip-test.ts` checks conditions through the
131
+ adapter (the cube model's function, a nullable comparison without `->toOne()`, a condition's type named when it
132
+ isn't one Boolean, an unknown column located, `&&` without parentheses refused) and runs them on H2: the late
133
+ orders, an empty value kept by a negation compared directly and by neither after `->toOne()`, a window column after
134
+ a Partition, an Extend's column. The plan-only test pins the condition in the `WHERE` on every type, and a window
135
+ column's filter after the window, never `QUALIFY`; the direct connection runs the empty values and the window on H2
136
+ and DuckDB. A test that needs a checked filter without the engine builds one with `TEST__checkedExpressionFilter`.
137
+ - **Pivot** (PLAN §11.12). `CubePivot.engine-roundtrip-test.ts` runs Cube's pivot on a DuckDB direct connection
138
+ (H2 can't run it): sums, counts with 0 where no rows are, averages and minimums, no row column, string values with a
139
+ space, a quote and a bar, a date and a Boolean pivot column, and later steps over the value columns; and Cube
140
+ refusing H2 and Trino. The plan-only test pins a PIVOT on Snowflake, Databricks, MemSQL and DuckDB whose names the
141
+ outer select reads, Trino and Athena planning none, and the other 14 refusing it: when the engine changes, it fails,
142
+ and `PIVOT_UNSUPPORTED_DATABASE_TYPES` can change. Two conformance cases pin the cast's types and emptiness.
143
+ - **The operations cleanup** (PLAN §11.14). `CubeOperationsCleanup.engine-roundtrip-test.ts` runs, on H2 and DuckDB
144
+ direct connections, a String's and a Boolean's Min and Max in a Group and a window, a String's Max in a Pivot
145
+ (DuckDB), the grid's float rule finding a `REAL` value (DuckDB; H2's is CubeDrilldown's), and a Join of `ID` and
146
+ `id` reported and fixed (DuckDB, which keeps their case). The plan-only test pins a pattern that isn't a literal:
147
+ `contains(a, b)` on Snowflake, the column's own SQL as the text on the others, which Cube refuses (a canary).
130
148
  - `src/__tests__/CubeExamples.engine-roundtrip-test.ts` compiles the Sports and Trades sample models and opens every
131
149
  example cube (PLAN §6.9) as the Examples dialog does: it types its tables, checks every node types as Cube infers it
132
150
  (Sum outputs nullable to Cube only, PLAN §5.7) and runs it, counting rows.
@@ -186,3 +204,17 @@ The engine tests in `src/__tests__/` import `V1_*` classes there, as an exceptio
186
204
  - **Changing the sample projects:** edit `fixtures/legend-mock-server/scripts/generate-cube-depot.mjs` and run it with
187
205
  the engine up (`node scripts/generate-cube-depot.mjs`). The engine caches a pointer's project per version, so restart
188
206
  it after changing a version it has fetched.
207
+
208
+ ### The results grid
209
+
210
+ - **Server-side mode in jsdom.** ag-grid's server-side row model renders in jsdom, group rows and their expansion
211
+ included, so the region's tests drive it as a user would (`CubeGridRegion.test.tsx`). The logic sits below it, in
212
+ `CubeGridFetcher` and `CubeGridState` (store tests on the fake engine) and the core's `deriveDrilldownLevel`.
213
+ - **Each level on the engine:** `src/__tests__/CubeDrilldown.engine-roundtrip-test.ts` runs drill-down levels on H2
214
+ and compares their groups with groups counted and summed from the run's own rows, keys of every type included (a
215
+ 32-bit `REAL` key needs `In [v, fround(v)]`), and over a Partition and a Limit run.
216
+ - **Around the databases:** the plan-only dialect test plans each level shape on every database type, and the
217
+ conformance suite checks the derived Groups' types against the engine's.
218
+ - **Export:** `src/__tests__/CubeExport.engine-roundtrip-test.ts` reads the engine's CSV. The engine test client sends
219
+ the serialization format the client asks for (Studio's CSV is the engine's `CSV_TRANSFORMED`). jsdom has no
220
+ `URL.createObjectURL`, so a test that saves a file stubs it (`CubeExportState.test.ts`).
@@ -17,6 +17,7 @@ import type { CommandConfigData } from '@finos/legend-application';
17
17
  export declare enum LEGEND_CUBE_COMMAND_KEY {
18
18
  EXECUTE = "legend-cube.execute",
19
19
  UNDO = "legend-cube.undo",
20
+ REDO = "legend-cube.redo",
20
21
  VALIDATE_EXPRESSIONS = "legend-cube.validate-expressions"
21
22
  }
22
23
  /** Keys as `KeyboardEvent.code` names */
@@ -24,4 +25,5 @@ export declare const LEGEND_CUBE_COMMAND_CONFIG: CommandConfigData;
24
25
  /** How the buttons' tooltips name the shortcuts */
25
26
  export declare const EXECUTE_SHORTCUT_LABEL = "F9";
26
27
  export declare const UNDO_SHORTCUT_LABEL = "Ctrl+Z / Cmd+Z";
28
+ export declare const REDO_SHORTCUT_LABEL = "Ctrl+Shift+Z / Cmd+Shift+Z";
27
29
  //# sourceMappingURL=LegendCubeCommand.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LegendCubeCommand.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAOnE,oBAAY,uBAAuB;IACjC,OAAO,wBAAwB;IAC/B,IAAI,qBAAqB;IACzB,oBAAoB,qCAAqC;CAC1D;AAED,yCAAyC;AACzC,eAAO,MAAM,0BAA0B,EAAE,iBAcxC,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,mBAAmB,mBAAmB,CAAC"}
1
+ {"version":3,"file":"LegendCubeCommand.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAOnE,oBAAY,uBAAuB;IACjC,OAAO,wBAAwB;IAC/B,IAAI,qBAAqB;IACzB,IAAI,qBAAqB;IACzB,oBAAoB,qCAAqC;CAC1D;AAED,yCAAyC;AACzC,eAAO,MAAM,0BAA0B,EAAE,iBAmBxC,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,mBAAmB,+BAA+B,CAAC"}
@@ -21,6 +21,7 @@ export var LEGEND_CUBE_COMMAND_KEY;
21
21
  (function (LEGEND_CUBE_COMMAND_KEY) {
22
22
  LEGEND_CUBE_COMMAND_KEY["EXECUTE"] = "legend-cube.execute";
23
23
  LEGEND_CUBE_COMMAND_KEY["UNDO"] = "legend-cube.undo";
24
+ LEGEND_CUBE_COMMAND_KEY["REDO"] = "legend-cube.redo";
24
25
  LEGEND_CUBE_COMMAND_KEY["VALIDATE_EXPRESSIONS"] = "legend-cube.validate-expressions";
25
26
  })(LEGEND_CUBE_COMMAND_KEY || (LEGEND_CUBE_COMMAND_KEY = {}));
26
27
  /** Keys as `KeyboardEvent.code` names */
@@ -34,6 +35,11 @@ export const LEGEND_CUBE_COMMAND_CONFIG = {
34
35
  defaultKeyboardShortcut: 'Control+KeyZ',
35
36
  additionalKeyboardShortcuts: ['Meta+KeyZ'],
36
37
  },
38
+ [LEGEND_CUBE_COMMAND_KEY.REDO]: {
39
+ title: 'Redo the last change undone',
40
+ defaultKeyboardShortcut: 'Control+Shift+KeyZ',
41
+ additionalKeyboardShortcuts: ['Meta+Shift+KeyZ', 'Control+KeyY'],
42
+ },
37
43
  [LEGEND_CUBE_COMMAND_KEY.VALIDATE_EXPRESSIONS]: {
38
44
  title: "Validate the Extend's expressions",
39
45
  defaultKeyboardShortcut: 'F10',
@@ -42,4 +48,5 @@ export const LEGEND_CUBE_COMMAND_CONFIG = {
42
48
  /** How the buttons' tooltips name the shortcuts */
43
49
  export const EXECUTE_SHORTCUT_LABEL = 'F9';
44
50
  export const UNDO_SHORTCUT_LABEL = 'Ctrl+Z / Cmd+Z';
51
+ export const REDO_SHORTCUT_LABEL = 'Ctrl+Shift+Z / Cmd+Shift+Z';
45
52
  //# sourceMappingURL=LegendCubeCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LegendCubeCommand.js","sourceRoot":"","sources":["../../src/__lib__/LegendCubeCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,wEAAwE;AACxE,2EAA2E;AAC3E,6EAA6E;AAC7E,oDAAoD;AAEpD,MAAM,CAAN,IAAY,uBAIX;AAJD,WAAY,uBAAuB;IACjC,0DAA+B,CAAA;IAC/B,oDAAyB,CAAA;IACzB,oFAAyD,CAAA;AAC3D,CAAC,EAJW,uBAAuB,KAAvB,uBAAuB,QAIlC;AAED,yCAAyC;AACzC,MAAM,CAAC,MAAM,0BAA0B,GAAsB;IAC3D,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE;QACjC,KAAK,EAAE,mBAAmB;QAC1B,uBAAuB,EAAE,IAAI;KAC9B;IACD,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE;QAC9B,KAAK,EAAE,sBAAsB;QAC7B,uBAAuB,EAAE,cAAc;QACvC,2BAA2B,EAAE,CAAC,WAAW,CAAC;KAC3C;IACD,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,EAAE;QAC9C,KAAK,EAAE,mCAAmC;QAC1C,uBAAuB,EAAE,KAAK;KAC/B;CACF,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC"}
1
+ {"version":3,"file":"LegendCubeCommand.js","sourceRoot":"","sources":["../../src/__lib__/LegendCubeCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,wEAAwE;AACxE,2EAA2E;AAC3E,6EAA6E;AAC7E,oDAAoD;AAEpD,MAAM,CAAN,IAAY,uBAKX;AALD,WAAY,uBAAuB;IACjC,0DAA+B,CAAA;IAC/B,oDAAyB,CAAA;IACzB,oDAAyB,CAAA;IACzB,oFAAyD,CAAA;AAC3D,CAAC,EALW,uBAAuB,KAAvB,uBAAuB,QAKlC;AAED,yCAAyC;AACzC,MAAM,CAAC,MAAM,0BAA0B,GAAsB;IAC3D,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE;QACjC,KAAK,EAAE,mBAAmB;QAC1B,uBAAuB,EAAE,IAAI;KAC9B;IACD,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE;QAC9B,KAAK,EAAE,sBAAsB;QAC7B,uBAAuB,EAAE,cAAc;QACvC,2BAA2B,EAAE,CAAC,WAAW,CAAC;KAC3C;IACD,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE;QAC9B,KAAK,EAAE,6BAA6B;QACpC,uBAAuB,EAAE,oBAAoB;QAC7C,2BAA2B,EAAE,CAAC,iBAAiB,EAAE,cAAc,CAAC;KACjE;IACD,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,EAAE;QAC9C,KAAK,EAAE,mCAAmC;QAC1C,uBAAuB,EAAE,KAAK;KAC/B;CACF,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,4BAA4B,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Copyright (c) 2026-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import type { SchemaDiff } from '@finos/legend-cube';
17
+ export declare const getFunctionDriftWarning: (diff: SchemaDiff) => string;
18
+ export declare const getFunctionRecheckWarning: (firstLine: string) => string;
19
+ export declare const CUBE_FUNCTION_MESSAGE: {
20
+ readonly NO_ANSWER: "The engine gave no columns for this function";
21
+ /** Under a function with its own runtime */
22
+ readonly RUNS_ON: (runtime: string) => string;
23
+ /** A function with its own runtime, on a cube that runs on another */
24
+ readonly OTHER_RUNTIME: (runtime: string, cubeRuntime: string) => string;
25
+ readonly NONE: "This version has no function that returns a relation.";
26
+ readonly NO_MATCH: "No function matches the search.";
27
+ readonly CUBE_CHANGED: "The cube changed while the function was being added; pick it again.";
28
+ };
29
+ //# sourceMappingURL=LegendCubeFunctionLabels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LegendCubeFunctionLabels.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeFunctionLabels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMrD,eAAO,MAAM,uBAAuB,GAAI,MAAM,UAAU,KAAG,MAC+B,CAAC;AAE3F,eAAO,MAAM,yBAAyB,GAAI,WAAW,MAAM,KAAG,MACmB,CAAC;AAElF,eAAO,MAAM,qBAAqB;;IAEhC,4CAA4C;gCACzB,MAAM,KAAG,MAAM;IAElC,sEAAsE;sCAC7C,MAAM,eAAe,MAAM,KAAG,MAAM;;;;CAMrD,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Copyright (c) 2026-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { getSchemaChangeList } from './LegendCubeLabels.js';
17
+ // The text of function sources (PLAN §6.5): the source dialog's Project
18
+ // tab, when it reads functions, and a function's panel
19
+ export const getFunctionDriftWarning = (diff) => `This function's columns changed since the cube was saved: ${getSchemaChangeList(diff)}`;
20
+ export const getFunctionRecheckWarning = (firstLine) => `Could not re-check this function, so it keeps its saved columns: ${firstLine}`;
21
+ export const CUBE_FUNCTION_MESSAGE = {
22
+ NO_ANSWER: 'The engine gave no columns for this function',
23
+ /** Under a function with its own runtime */
24
+ RUNS_ON: (runtime) => `Runs on ${runtime}, set by the function`,
25
+ /** A function with its own runtime, on a cube that runs on another */
26
+ OTHER_RUNTIME: (runtime, cubeRuntime) => `It reads through ${runtime}, but the cube runs on ${cubeRuntime}`,
27
+ NONE: 'This version has no function that returns a relation.',
28
+ NO_MATCH: 'No function matches the search.',
29
+ CUBE_CHANGED: 'The cube changed while the function was being added; pick it again.',
30
+ };
31
+ //# sourceMappingURL=LegendCubeFunctionLabels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LegendCubeFunctionLabels.js","sourceRoot":"","sources":["../../src/__lib__/LegendCubeFunctionLabels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,wEAAwE;AACxE,uDAAuD;AAEvD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAgB,EAAU,EAAE,CAClE,6DAA6D,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;AAE3F,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,SAAiB,EAAU,EAAE,CACrE,oEAAoE,SAAS,EAAE,CAAC;AAElF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,SAAS,EAAE,8CAA8C;IACzD,4CAA4C;IAC5C,OAAO,EAAE,CAAC,OAAe,EAAU,EAAE,CACnC,WAAW,OAAO,uBAAuB;IAC3C,sEAAsE;IACtE,aAAa,EAAE,CAAC,OAAe,EAAE,WAAmB,EAAU,EAAE,CAC9D,oBAAoB,OAAO,0BAA0B,WAAW,EAAE;IACpE,IAAI,EAAE,uDAAuD;IAC7D,QAAQ,EAAE,iCAAiC;IAC3C,YAAY,EACV,qEAAqE;CAC/D,CAAC"}
@@ -15,5 +15,9 @@
15
15
  */
16
16
  export declare const CUBE_NODE_HELP_TEXT: Readonly<Record<string, string>>;
17
17
  /** The tooltip of the editor's Select link (spec §17.9) */
18
- export declare const SELECT_NODE_TOOLTIP = "Selects this node as active and its output will be shown in the grid once query is executed.";
18
+ export declare const SELECT_NODE_TOOLTIP = "Make this the step that runs: Execute shows its rows in the grid.";
19
+ /** The marker on the step that runs, on the canvas and in its editor */
20
+ export declare const RUNNING_NODE_LABEL = "Runs";
21
+ /** What a node's menu and editor call making it the step that runs */
22
+ export declare const RUN_THIS_STEP_LABEL = "Run this step";
19
23
  //# sourceMappingURL=LegendCubeHelpText.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LegendCubeHelpText.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeHelpText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA4BH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmChE,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,iGACgE,CAAC"}
1
+ {"version":3,"file":"LegendCubeHelpText.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeHelpText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAiCH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkDhE,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,sEACqC,CAAC;AAEtE,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAEzC,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,kBAAkB,CAAC"}
@@ -13,24 +13,34 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { Concat, DataProductAccessPointSource, Difference, IngestDatasetSource, Distinct, Drop, Extend, Filter, Group, Join, Limit, Partition, RelationalTableSource, Rename, Restrict, Slice, Sort, UnknownNode, } from '@finos/legend-cube';
16
+ import { Concat, DataProductAccessPointSource, Difference, IngestDatasetSource, Distinct, Drop, ExpressionFilter, Explode, Extend, Filter, FunctionSource, Group, Join, Limit, Partition, Pivot, RelationalTableSource, Rename, Restrict, ServiceSource, Slice, Sort, UnknownNode, } from '@finos/legend-cube';
17
17
  // The node editor's help text, verbatim from the original (spec §17.9), but
18
18
  // Slice's, which counts rows from 0 and leaves the stop row out (D5, PLAN
19
19
  // §11.4), and Concat's, which matches columns by position (PLAN §11.5, Q8).
20
20
  // A new node type adds its entry here.
21
21
  export const CUBE_NODE_HELP_TEXT = {
22
22
  [RelationalTableSource.TYPE]: 'Sources data from relational database table.',
23
+ /** Added by Cube: the original's PURE Native Function source (PLAN §6.5) */
24
+ [FunctionSource.TYPE]: 'Sources data from a function of the model that returns a relation, called with a value for each parameter.',
23
25
  /** Added by Cube: the original has no data product source (PLAN §6.8) */
24
26
  [DataProductAccessPointSource.TYPE]: 'Sources data from an access point of a deployed data product.',
25
27
  /** Added by Cube: the original has no ingest data set source (PLAN §6.7) */
26
28
  [IngestDatasetSource.TYPE]: 'Sources data from a data set of a deployed ingest definition.',
29
+ /** Added by Cube: the original's service source is read another way, still to come (PLAN §6.4) */
30
+ [ServiceSource.TYPE]: "Sources data from a deployed service. In progress: Cube can't read services yet.",
27
31
  [Concat.TYPE]: 'Combines the rows of the two previous data sets, keeping duplicates, in no particular order. Both must have the same columns: the same names, in the same order, with the same types.',
28
32
  [Difference.TYPE]: 'Compares numeric values of specified columns from two previous data sets.',
29
33
  [Distinct.TYPE]: 'Removes duplicate rows from the previous data set.',
30
34
  [Drop.TYPE]: 'Reduces the number of rows in the previous data set, removing the specified number of rows from the beginning of the data set.',
31
35
  [Extend.TYPE]: 'Extends outgoing data set with new columns produced by expressions.',
36
+ /** Added by Cube: the original has no JSON operations (PLAN §11.20) */
37
+ [Explode.TYPE]: 'Makes a row for each element of an array in a JSON (Variant) column of the previous data set, keeping its columns and adding the element as a new column. A row whose array is empty, or missing, is kept once, with an empty element.',
32
38
  [Filter.TYPE]: 'Reduces the number of rows in the previous data set, keeping only rows matching the specified criteria.',
39
+ /** Added by Cube: the original has no filter by expression (PLAN §11.11) */
40
+ [ExpressionFilter.TYPE]: 'Reduces the number of rows in the previous data set, keeping only rows for which the expression is true.',
33
41
  [Group.TYPE]: 'Aggregates the data from the previous data set using the specified columns and aggregation functions.',
42
+ /** Added by Cube: the original has pivot only in the grid (PLAN §11.12) */
43
+ [Pivot.TYPE]: 'Turns the values of a column of the previous data set into columns: a row for each combination of the row columns that has a picked value, and a column for each picked value, holding its aggregate.',
34
44
  [Join.TYPE]: 'Joins two previous data sets using specified columns as join keys.',
35
45
  [Partition.TYPE]: 'Adds new columns with outputs of window functions for optional window partition and order.',
36
46
  [Limit.TYPE]: 'Reduces the number of rows in the previous data set, keeping the specified number of rows from the beginning of the data set.',
@@ -41,5 +51,9 @@ export const CUBE_NODE_HELP_TEXT = {
41
51
  [UnknownNode.TYPE]: 'Source or transformation unknown to the application.',
42
52
  };
43
53
  /** The tooltip of the editor's Select link (spec §17.9) */
44
- export const SELECT_NODE_TOOLTIP = 'Selects this node as active and its output will be shown in the grid once query is executed.';
54
+ export const SELECT_NODE_TOOLTIP = 'Make this the step that runs: Execute shows its rows in the grid.';
55
+ /** The marker on the step that runs, on the canvas and in its editor */
56
+ export const RUNNING_NODE_LABEL = 'Runs';
57
+ /** What a node's menu and editor call making it the step that runs */
58
+ export const RUN_THIS_STEP_LABEL = 'Run this step';
45
59
  //# sourceMappingURL=LegendCubeHelpText.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LegendCubeHelpText.js","sourceRoot":"","sources":["../../src/__lib__/LegendCubeHelpText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,MAAM,EACN,4BAA4B,EAC5B,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,SAAS,EACT,qBAAqB,EACrB,MAAM,EACN,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAE5B,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,uCAAuC;AAEvC,MAAM,CAAC,MAAM,mBAAmB,GAAqC;IACnE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,8CAA8C;IAC5E,yEAAyE;IACzE,CAAC,4BAA4B,CAAC,IAAI,CAAC,EACjC,+DAA+D;IACjE,4EAA4E;IAC5E,CAAC,mBAAmB,CAAC,IAAI,CAAC,EACxB,+DAA+D;IACjE,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,uLAAuL;IACzL,CAAC,UAAU,CAAC,IAAI,CAAC,EACf,2EAA2E;IAC7E,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,oDAAoD;IACrE,CAAC,IAAI,CAAC,IAAI,CAAC,EACT,gIAAgI;IAClI,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,qEAAqE;IACvE,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,yGAAyG;IAC3G,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,uGAAuG;IACzG,CAAC,IAAI,CAAC,IAAI,CAAC,EACT,oEAAoE;IACtE,CAAC,SAAS,CAAC,IAAI,CAAC,EACd,4FAA4F;IAC9F,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,+HAA+H;IACjI,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,kEAAkE;IACpE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,4DAA4D;IAC7E,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,8JAA8J;IAChK,CAAC,IAAI,CAAC,IAAI,CAAC,EACT,oHAAoH;IACtH,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,sDAAsD;CAC3E,CAAC;AAEF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAC9B,8FAA8F,CAAC"}
1
+ {"version":3,"file":"LegendCubeHelpText.js","sourceRoot":"","sources":["../../src/__lib__/LegendCubeHelpText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,MAAM,EACN,4BAA4B,EAC5B,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,IAAI,EACJ,gBAAgB,EAChB,OAAO,EACP,MAAM,EACN,MAAM,EACN,cAAc,EACd,KAAK,EACL,IAAI,EACJ,KAAK,EACL,SAAS,EACT,KAAK,EACL,qBAAqB,EACrB,MAAM,EACN,QAAQ,EACR,aAAa,EACb,KAAK,EACL,IAAI,EACJ,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAE5B,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,uCAAuC;AAEvC,MAAM,CAAC,MAAM,mBAAmB,GAAqC;IACnE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,8CAA8C;IAC5E,4EAA4E;IAC5E,CAAC,cAAc,CAAC,IAAI,CAAC,EACnB,4GAA4G;IAC9G,yEAAyE;IACzE,CAAC,4BAA4B,CAAC,IAAI,CAAC,EACjC,+DAA+D;IACjE,4EAA4E;IAC5E,CAAC,mBAAmB,CAAC,IAAI,CAAC,EACxB,+DAA+D;IACjE,kGAAkG;IAClG,CAAC,aAAa,CAAC,IAAI,CAAC,EAClB,kFAAkF;IACpF,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,uLAAuL;IACzL,CAAC,UAAU,CAAC,IAAI,CAAC,EACf,2EAA2E;IAC7E,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,oDAAoD;IACrE,CAAC,IAAI,CAAC,IAAI,CAAC,EACT,gIAAgI;IAClI,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,qEAAqE;IACvE,uEAAuE;IACvE,CAAC,OAAO,CAAC,IAAI,CAAC,EACZ,wOAAwO;IAC1O,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,yGAAyG;IAC3G,4EAA4E;IAC5E,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACrB,0GAA0G;IAC5G,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,uGAAuG;IACzG,2EAA2E;IAC3E,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,uMAAuM;IACzM,CAAC,IAAI,CAAC,IAAI,CAAC,EACT,oEAAoE;IACtE,CAAC,SAAS,CAAC,IAAI,CAAC,EACd,4FAA4F;IAC9F,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,+HAA+H;IACjI,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,kEAAkE;IACpE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,4DAA4D;IAC7E,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,8JAA8J;IAChK,CAAC,IAAI,CAAC,IAAI,CAAC,EACT,oHAAoH;IACtH,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,sDAAsD;CAC3E,CAAC;AAEF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAC9B,mEAAmE,CAAC;AAEtE,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAEzC,sEAAsE;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC"}
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import type { SchemaColumn, SchemaDiff } from '@finos/legend-cube';
16
+ import { type SchemaColumn, type SchemaDiff } from '@finos/legend-cube';
17
17
  import { CubeTableFlag } from '../graph-manager/CubeEngine.js';
18
18
  /** The rows a run returns by default (PLAN §9, Settled before M1.8) */
19
19
  export declare const DEFAULT_ROW_LIMIT = 1000;
@@ -25,7 +25,11 @@ export declare enum LEGEND_CUBE_USER_DATA_KEY {
25
25
  ROW_LIMIT = "legend-cube.row-limit",
26
26
  PALETTE_COLLAPSED = "legend-cube.palette-collapsed",
27
27
  /** The warehouse the viewer last picked for a data product cube (PLAN §6.8) */
28
- DATA_PRODUCT_WAREHOUSE = "legend-cube.data-product-warehouse"
28
+ DATA_PRODUCT_WAREHOUSE = "legend-cube.data-product-warehouse",
29
+ /** Server-side or local (PLAN §11.10) */
30
+ GRID_MODE = "legend-cube.grid-mode",
31
+ /** Engine requests sent uncompressed, for the browser's Network tab (PLAN §11.16) */
32
+ UNCOMPRESSED_REQUESTS = "legend-cube.uncompressed-requests"
29
33
  }
30
34
  export declare const UNSAVED_CUBE_NAME = "Unsaved Query";
31
35
  /** Why a source is disabled on a cube: it reads database tables or data products, never both (PLAN §6.8) */
@@ -36,23 +40,50 @@ export declare const UNSERVED_SOURCE_KIND_TITLE = "This Legend deployment doesn'
36
40
  export declare const READ_ONLY_CUBE_TITLE = "This cube was saved by a newer version of Legend Cube, so it can't be changed or exported";
37
41
  /** How a SQL NULL shows in the grid, distinct from an empty string */
38
42
  export declare const NULL_CELL_TEXT = "(null)";
43
+ /** What the Runs panel calls a run (PLAN §11.10, §11.16); a fetch of the grid's rows is described by its level */
44
+ export declare const CUBE_RUN_LABEL: {
45
+ EXECUTE: string;
46
+ EXPORT_CSV: string;
47
+ pivotValues: (column: string) => string;
48
+ };
49
+ /**
50
+ * Above a run's Pure (PLAN §11.16): unlike Show Pure, it shows the limit a
51
+ * grid run adds, one more than the row limit, to tell whether there are more
52
+ */
53
+ export declare const CUBE_RUN_PURE_NOTE = "As it ran, with any row limit Cube added to it.";
39
54
  /** Pending labels: lower-case gerunds, shown as they are (spec §17.13) */
40
55
  export declare enum CUBE_PENDING_LABEL {
41
56
  LOADING_MODEL = "loading model",
42
57
  RESOLVING_SOURCE = "resolving source",
43
58
  EXECUTING_QUERY = "executing query",
59
+ FETCHING_ROWS = "fetching rows",
60
+ EXPORTING_CSV = "exporting CSV",
44
61
  RENDERING_QUERY = "rendering query",
45
62
  REFRESHING_SOURCE = "refreshing source",
46
- TYPING_COLUMNS = "typing new columns"
63
+ CHECKING_EXPRESSIONS = "checking expressions"
47
64
  }
48
- export declare const getRowLimitError: (text: string) => string | undefined;
65
+ /**
66
+ * Why a row limit can't be taken: the number its text holds
67
+ * (`parseWholeNumberText`, so `0x10`, `1e3` and `1.0` hold none, PLAN
68
+ * §11.14) isn't a safe whole number of at least 1
69
+ */
70
+ export declare const getRowLimitError: (value: number | undefined) => string | undefined;
49
71
  export declare const getTruncationMessage: (rowLimit: number) => string;
72
+ /** In server-side mode, when a drill-down level or a sorted level was cut at the row limit (PLAN §11.10) */
73
+ export declare const getLevelTruncationMessage: (rowLimit: number) => string;
50
74
  /** How the picker shows a table's problem, and why (PLAN §6.2.6) */
51
75
  export declare const CUBE_TABLE_FLAG_LABELS: Readonly<Record<CubeTableFlag, {
52
76
  label: string;
53
77
  description: string;
54
78
  }>>;
55
- /** A column's type as the editors show it: its display name, `?` when it takes NULL, e.g. `Varchar(5)?` */
79
+ /** A column's exact type: its display name, `?` when it takes NULL, e.g. `Varchar(5)?`; for hover and type messages */
80
+ export declare const getExactColumnTypeLabel: (column: SchemaColumn) => string;
81
+ /**
82
+ * A column's type as the editors show it: the kind of value, and whether it
83
+ * is optional (can be empty), e.g. `Text, optional`; an enumeration, or a
84
+ * type Cube doesn't know, by its name. The exact type
85
+ * (`getExactColumnTypeLabel`) is on hover.
86
+ */
56
87
  export declare const getColumnTypeLabel: (column: SchemaColumn) => string;
57
88
  /** Why Execute (and Show Pure) can't run, one reason a line, for a tooltip */
58
89
  export declare const formatDisabledReasons: (reasons: readonly string[]) => string;
@@ -66,15 +97,31 @@ export declare const CUBE_SORT_COLUMN_DISABLED_REASON: {
66
97
  TAKEN: string;
67
98
  };
68
99
  /** Why the grid's quick actions (spec §12.4) can't be used */
100
+ /** Why a Variant cell's Open JSON can't be used (PLAN §11.20) */
101
+ export declare const CUBE_JSON_DISABLED_REASON: {
102
+ NOT_A_ROW: string;
103
+ EMPTY: string;
104
+ };
69
105
  export declare const CUBE_QUICK_ACTION_DISABLED_REASON: {
70
106
  STALE_ROWS: string;
71
107
  RUNNING: string;
72
108
  EDITING: string;
73
109
  UNREADABLE_VALUE: string;
110
+ /** On a group row's cell that holds its aggregation (PLAN §11.10) */
111
+ AGGREGATE_VALUE: string;
112
+ /** On a group row's cell that shows nothing */
113
+ NO_VALUE: string;
74
114
  notSortable: (typeName: string) => string;
75
115
  notGroupable: (typeName: string) => string;
76
116
  notComparable: (typeName: string) => string;
77
117
  };
118
+ /** Why 'Format Column' can't be used on a column (spec §13.1) */
119
+ export declare const CUBE_FORMAT_NOT_A_NUMBER = "Only number columns can be formatted.";
120
+ /** Why 'Drilldown by' can't be used on a column (PLAN §11.10) */
121
+ export declare const CUBE_DRILLDOWN_BLOCKER: {
122
+ ALREADY_A_LEVEL: string;
123
+ notGroupable: (typeName: string) => string;
124
+ };
78
125
  /** Beside a condition comparing a floating-point column for equality (R133) */
79
126
  export declare const FILTER_FLOAT_COMPARISON_HINT = "exact comparison on floating-point columns may not match";
80
127
  /** The Filter and Join editors' warning on a column that can hold both dates and timestamps (PLAN §11.5) */
@@ -117,6 +164,55 @@ export declare const getConcatUntypedWarning: (columns: readonly string[]) => st
117
164
  export declare const CUBE_GROUP_COLUMN_DISABLED_REASON = "can't be grouped";
118
165
  /** What the Group editor says about its aggregations (PLAN §11.5; Count counts non-empty values, D4) */
119
166
  export declare const GROUP_EDITOR_NOTES: string[];
167
+ /** Why the Pivot editor won't take a column (PLAN §11.12), shown after the column's type */
168
+ export declare const PIVOT_COLUMN_DISABLED_REASON: {
169
+ /** a row column that can't be compared */
170
+ readonly NOT_GROUPABLE: "can't be grouped";
171
+ /** a pivot column of another type than a String, an integer, a StrictDate or a Boolean */
172
+ readonly NOT_PIVOTABLE: "can't be pivoted";
173
+ /** a column the pivot uses for another part */
174
+ readonly PIVOT_COLUMN: "the pivot column";
175
+ readonly ROW_COLUMN: "a row column";
176
+ readonly AGGREGATED: "the aggregated column";
177
+ };
178
+ /** Why the Pivot editor won't tick a value (PLAN §11.12) */
179
+ export declare const PIVOT_VALUE_DISABLED_REASON: {
180
+ readonly NOT_A_COLUMN_NAME: "can't name a column";
181
+ /** another value ticked has the same text in another case */
182
+ readonly DIFFERS_ONLY_IN_CASE: "only its case differs from a ticked value";
183
+ /** as many values are ticked as a Pivot takes */
184
+ readonly TOO_MANY: "as many values as a Pivot takes are ticked";
185
+ };
186
+ /** What the Pivot editor says (PLAN §11.12) */
187
+ export declare const PIVOT_EDITOR_NOTES: readonly ["Each picked value becomes a column, named by the value, holding the aggregation of its rows; each combination of the row columns with a picked value becomes a row. Values not picked, and combinations holding only them, are left out.", "Load values lists the pivot column's values, each once, up to 100. An empty value can't be pivoted, nor one that can't name a column; of two values that differ only in case, one can be ticked, as some databases would mix up their columns.", "Pivot runs on Snowflake, Databricks, SingleStore and DuckDB; other databases, such as H2 and Postgres, can't run it."];
188
+ /** Why the Explode Array editor won't pick a column (PLAN §11.20) */
189
+ export declare const EXPLODE_COLUMN_DISABLED_REASON: {
190
+ /** a column of another type than Variant */
191
+ readonly NOT_JSON: "not JSON";
192
+ };
193
+ /** Under the Explode Array editor (PLAN §11.20) */
194
+ export declare const EXPLODE_EDITOR_NOTES: readonly ["One row per element of the array, the other columns repeated on each. A row whose array is empty, or that has none, is kept once, with an empty element.", "Find arrays reads the column's first values, as Explore JSON does, and lists the arrays they hold. Keys can be typed too: none when the column is the array.", "The element is JSON: Explore JSON, in its column menu, makes columns of its fields. Explode Array runs on Snowflake, Databricks, Postgres and DuckDB."];
195
+ /** Explore JSON's one row per element offer, as its tooltip explains it (PLAN §11.20) */
196
+ export declare const CUBE_JSON_EXPLODE_OFFER_TITLE = "Adds an Explode Array node: a row for each element, the element as a new JSON column. One array at a time.";
197
+ /** The tooltips of a Variant column's fields in an expression editor (PLAN §11.20, V.9) */
198
+ export declare const CUBE_JSON_FIELDS_TITLE: {
199
+ readonly OPEN: "Show its fields, read from its first values just before this step: listed in Runs; a field clicked is written into the expression";
200
+ readonly FORMS: "Other forms of the field: counts, lists, the first element, totals, as JSON";
201
+ readonly EXPLODE: "One row per element is a step of its own: add Explode Array from the palette, or from Explore JSON in the grid";
202
+ readonly READ_AGAIN: "Read the column again";
203
+ readonly EVERY_ROW: "Read every value of the column, for the shape of the whole column: listed in Runs, and it can be stopped";
204
+ };
205
+ /** What a Variant column's fields were read from, in an expression editor (PLAN §11.20, V.9) */
206
+ export declare const getCubeJsonFieldsStatus: (sample: {
207
+ readonly rows: number;
208
+ readonly complete: boolean;
209
+ }) => string;
210
+ /** Says that Find arrays found none in the values read (PLAN §11.20) */
211
+ export declare const EXPLODE_NO_ARRAYS_NOTICE = "No array in the values read: type the keys to one.";
212
+ /** Says that Load values found no value to list (PLAN §11.12) */
213
+ export declare const PIVOT_NO_VALUES_NOTICE = "The pivot column has no value to list: its rows are all empty, or there are none.";
214
+ /** Says that the engine has more values than the Pivot editor lists (PLAN §11.12) */
215
+ export declare const getPivotValuesCutNotice: (shown: number) => string;
120
216
  /** Why the Partition editor won't tick a column that can't be compared (PLAN §11.6) */
121
217
  export declare const CUBE_PARTITION_COLUMN_DISABLED_REASON = "can't be partitioned by";
122
218
  /** What a Partition row shows in the column's place for a function that takes none (PLAN §11.6) */
@@ -141,20 +237,45 @@ export declare const EXTEND_APPLY_DISABLED_REASON: Readonly<{
141
237
  }>;
142
238
  /** The warning on an Extend whose saved types the engine couldn't check again, e.g. offline (PLAN §11.7) */
143
239
  export declare const getExtendRetypeWarning: (firstLine: string) => string;
240
+ /** The warning on a Filter by Expression whose condition the engine couldn't check again, e.g. offline (PLAN §11.11) */
241
+ export declare const getConditionRecheckWarning: (firstLine: string) => string;
144
242
  /** The notice of a node editor kept open, since its changes can't be applied yet, e.g. an Extend's expressions not validated */
145
243
  export declare const getEditorKeptOpenNotice: (nodeId: string, waiting: string) => string;
244
+ /** Why the Filter by Expression editor's Apply waits (PLAN §11.11) */
245
+ export declare const EXPRESSION_FILTER_APPLY_DISABLED_REASON: Readonly<{
246
+ NOT_VALIDATED: "Validate the condition first (F10)";
247
+ VALIDATING: "Validating the condition";
248
+ }>;
249
+ /**
250
+ * The hint after an engine error on `and`, `or` or `not` given something
251
+ * other than a Boolean, which Pure's precedence usually causes: comparisons
252
+ * bind no tighter than `&&`, `||` and `!` (PLAN §11.11)
253
+ */
254
+ export declare const EXPRESSION_FILTER_PARENTHESES_HINT = "Put each comparison in parentheses: ($x.A > 1) && ($x.B > 3).";
255
+ /** What the Filter by Expression editor says about conditions (PLAN §11.11) */
256
+ export declare const EXPRESSION_FILTER_EDITOR_NOTES: readonly ["A condition of one row, written as in Query's text mode: x | $x.SHIPPED_DATE > $x.REQUIRED_DATE. The rows for which it is true are kept, in their order.", "Put each comparison in parentheses when you combine them: ($x.A > 1) && ($x.B > 3). In Pure, &&, || and ! bind as tightly as >, <, >= and <=; == binds tighter.", "An optional column, compared directly ($x.A > 6), fails the condition when it is empty and passes its negation. After ->toOne(), an empty value fails both.", "Validate (F10) checks the condition with the engine and plans it for the cube's database.", "startsWith, endsWith and contains can't take a value with a backslash (\\) yet, nor, on DuckDB, one with % or _.", "A JSON (Variant) column’s {} opens its fields, read from its first values just before this step: a field clicked is written into the condition."];
146
257
  /** The hint after an engine error on a column that can be empty, in arithmetic (PLAN §11.7) */
147
- export declare const EXTEND_TO_ONE_HINT = "A column that can be empty needs ->toOne() first, such as $x.QTY->toOne() + 1.";
148
- /** The problem a database refusing an Extend's plan gives (PLAN §11.7) */
258
+ export declare const EXTEND_TO_ONE_HINT = "An optional column needs ->toOne() first, such as $x.QTY->toOne() + 1.";
259
+ /** The problem a database refusing an Extend's or a Filter by Expression's plan gives (PLAN §11.7, §11.11) */
149
260
  export declare const getExtendPlanProblem: (databaseType: string | undefined, detail: string) => string;
150
261
  /** Under the Rename editor's rows: the rule for new column names (PLAN §11.4) */
151
262
  export declare const COLUMN_NAME_RULES_HINT = "Names can't start or end with a space, or contain \" or \\ or control characters, and have at most 128 characters.";
152
263
  /**
153
264
  * A node type's label as the node editor's title shows it, each word
154
- * capitalised (QUESTIONS.md U1(a)), e.g. 'Take First <x> Rows'; the registry
155
- * keeps its own wording
265
+ * capitalised but `a`, `an` and `of` (QUESTIONS.md U1(a)), e.g. 'Take a Range
266
+ * of Rows'; the registry keeps its own wording
156
267
  */
157
268
  export declare const toEditorTitle: (label: string) => string;
158
269
  /** The source dialog's body until a tab is chosen, opened from the empty canvas (spec §17.8, U4(b)) */
159
270
  export declare const SELECT_SOURCE_TYPE_PROMPT = "Select source type above";
271
+ /** Why the source dialog's Add is disabled: nothing picked yet, or not ready */
272
+ export declare const CUBE_PICK_TO_ADD_TITLE = "Pick what to add first";
273
+ /**
274
+ * The badge a node type shows beside its name: WIP for one that doesn't
275
+ * work yet (a service, PLAN §6.4), else BETA for one in beta, else none
276
+ */
277
+ export declare const getCubeNodeBadge: (definition: {
278
+ readonly beta: boolean;
279
+ readonly wip?: boolean | undefined;
280
+ }) => "WIP" | "BETA" | undefined;
160
281
  //# sourceMappingURL=LegendCubeLabels.d.ts.map