@finos/legend-cube-builder 0.0.4 → 0.0.5

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 (609) hide show
  1. package/README.md +9 -3
  2. package/docs/adding-an-operation.md +22 -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 +50 -3
  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 +14 -2
  24. package/lib/__lib__/LegendCubeHelpText.js.map +1 -1
  25. package/lib/__lib__/LegendCubeLabels.d.ts +100 -8
  26. package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -1
  27. package/lib/__lib__/LegendCubeLabels.js +129 -14
  28. package/lib/__lib__/LegendCubeLabels.js.map +1 -1
  29. package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts +26 -0
  30. package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts.map +1 -0
  31. package/lib/__lib__/LegendCubeProjectSourceLabels.js +26 -0
  32. package/lib/__lib__/LegendCubeProjectSourceLabels.js.map +1 -0
  33. package/lib/__lib__/LegendCubeServiceLabels.d.ts +27 -0
  34. package/lib/__lib__/LegendCubeServiceLabels.d.ts.map +1 -0
  35. package/lib/__lib__/LegendCubeServiceLabels.js +32 -0
  36. package/lib/__lib__/LegendCubeServiceLabels.js.map +1 -0
  37. package/lib/__lib__/LegendCubeTesting.d.ts +7 -0
  38. package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -1
  39. package/lib/__lib__/LegendCubeTesting.js +7 -0
  40. package/lib/__lib__/LegendCubeTesting.js.map +1 -1
  41. package/lib/__test-utils__/CubeEngineTestSupport.d.ts +1 -1
  42. package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -1
  43. package/lib/__test-utils__/CubeEngineTestSupport.js +2 -2
  44. package/lib/__test-utils__/CubeEngineTestSupport.js.map +1 -1
  45. package/lib/__test-utils__/CubeExpressionTestUtils.d.ts +8 -1
  46. package/lib/__test-utils__/CubeExpressionTestUtils.d.ts.map +1 -1
  47. package/lib/__test-utils__/CubeExpressionTestUtils.js +20 -3
  48. package/lib/__test-utils__/CubeExpressionTestUtils.js.map +1 -1
  49. package/lib/__test-utils__/CubeFunctionTestOutline.d.ts +26 -0
  50. package/lib/__test-utils__/CubeFunctionTestOutline.d.ts.map +1 -0
  51. package/lib/__test-utils__/CubeFunctionTestOutline.js +56 -0
  52. package/lib/__test-utils__/CubeFunctionTestOutline.js.map +1 -0
  53. package/lib/__test-utils__/CubeLambdaCorpus.d.ts +36 -0
  54. package/lib/__test-utils__/CubeLambdaCorpus.d.ts.map +1 -0
  55. package/lib/__test-utils__/CubeLambdaCorpus.js +83 -0
  56. package/lib/__test-utils__/CubeLambdaCorpus.js.map +1 -0
  57. package/lib/__test-utils__/CubePageTestUtils.d.ts +6 -0
  58. package/lib/__test-utils__/CubePageTestUtils.d.ts.map +1 -1
  59. package/lib/__test-utils__/CubePageTestUtils.js +21 -0
  60. package/lib/__test-utils__/CubePageTestUtils.js.map +1 -1
  61. package/lib/__test-utils__/CubeTestApplication.d.ts +9 -0
  62. package/lib/__test-utils__/CubeTestApplication.d.ts.map +1 -1
  63. package/lib/__test-utils__/CubeTestApplication.js +16 -0
  64. package/lib/__test-utils__/CubeTestApplication.js.map +1 -1
  65. package/lib/__test-utils__/FakeCubeEngine.d.ts +5 -0
  66. package/lib/__test-utils__/FakeCubeEngine.d.ts.map +1 -1
  67. package/lib/__test-utils__/FakeCubeEngine.js +17 -0
  68. package/lib/__test-utils__/FakeCubeEngine.js.map +1 -1
  69. package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts +7 -1
  70. package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts.map +1 -1
  71. package/lib/__test-utils__/FakeCubeIngestCatalog.js +16 -0
  72. package/lib/__test-utils__/FakeCubeIngestCatalog.js.map +1 -1
  73. package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts +26 -0
  74. package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts.map +1 -0
  75. package/lib/__test-utils__/FakeCubeServiceCatalog.js +40 -0
  76. package/lib/__test-utils__/FakeCubeServiceCatalog.js.map +1 -0
  77. package/lib/components/CubeAddItems.d.ts.map +1 -1
  78. package/lib/components/CubeAddItems.js +9 -6
  79. package/lib/components/CubeAddItems.js.map +1 -1
  80. package/lib/components/CubeDialogTheme.d.ts +25 -0
  81. package/lib/components/CubeDialogTheme.d.ts.map +1 -0
  82. package/lib/components/CubeDialogTheme.js +25 -0
  83. package/lib/components/CubeDialogTheme.js.map +1 -0
  84. package/lib/components/CubeEditor.d.ts +12 -1
  85. package/lib/components/CubeEditor.d.ts.map +1 -1
  86. package/lib/components/CubeEditor.js +16 -14
  87. package/lib/components/CubeEditor.js.map +1 -1
  88. package/lib/components/CubeFileMenu.d.ts +28 -0
  89. package/lib/components/CubeFileMenu.d.ts.map +1 -0
  90. package/lib/components/CubeFileMenu.js +77 -0
  91. package/lib/components/CubeFileMenu.js.map +1 -0
  92. package/lib/components/CubeLambdaImportBanner.d.ts +26 -0
  93. package/lib/components/CubeLambdaImportBanner.d.ts.map +1 -0
  94. package/lib/components/CubeLambdaImportBanner.js +47 -0
  95. package/lib/components/CubeLambdaImportBanner.js.map +1 -0
  96. package/lib/components/CubeNodeIcon.d.ts.map +1 -1
  97. package/lib/components/CubeNodeIcon.js +5 -1
  98. package/lib/components/CubeNodeIcon.js.map +1 -1
  99. package/lib/components/CubeSchemaColumnsTable.d.ts.map +1 -1
  100. package/lib/components/CubeSchemaColumnsTable.js +2 -2
  101. package/lib/components/CubeSchemaColumnsTable.js.map +1 -1
  102. package/lib/components/canvas/CubeCanvas.d.ts.map +1 -1
  103. package/lib/components/canvas/CubeCanvas.js +38 -5
  104. package/lib/components/canvas/CubeCanvas.js.map +1 -1
  105. package/lib/components/canvas/CubeCanvasContextMenu.d.ts.map +1 -1
  106. package/lib/components/canvas/CubeCanvasContextMenu.js +2 -1
  107. package/lib/components/canvas/CubeCanvasContextMenu.js.map +1 -1
  108. package/lib/components/canvas/CubeCanvasElements.d.ts +18 -1
  109. package/lib/components/canvas/CubeCanvasElements.d.ts.map +1 -1
  110. package/lib/components/canvas/CubeCanvasElements.js +58 -3
  111. package/lib/components/canvas/CubeCanvasElements.js.map +1 -1
  112. package/lib/components/canvas/CubeCanvasLayout.js +1 -1
  113. package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -1
  114. package/lib/components/canvas/CubeCanvasNode.js +8 -4
  115. package/lib/components/canvas/CubeCanvasNode.js.map +1 -1
  116. package/lib/components/dev-settings/CubeDevSettings.d.ts +35 -0
  117. package/lib/components/dev-settings/CubeDevSettings.d.ts.map +1 -0
  118. package/lib/components/dev-settings/CubeDevSettings.js +50 -0
  119. package/lib/components/dev-settings/CubeDevSettings.js.map +1 -0
  120. package/lib/components/editors/CubeColumnChecklist.d.ts.map +1 -1
  121. package/lib/components/editors/CubeColumnChecklist.js +2 -2
  122. package/lib/components/editors/CubeColumnChecklist.js.map +1 -1
  123. package/lib/components/editors/CubeColumnPicker.d.ts.map +1 -1
  124. package/lib/components/editors/CubeColumnPicker.js +3 -3
  125. package/lib/components/editors/CubeColumnPicker.js.map +1 -1
  126. package/lib/components/editors/CubeConcatEditor.js +2 -2
  127. package/lib/components/editors/CubeConcatEditor.js.map +1 -1
  128. package/lib/components/editors/CubeExpressionFilterEditor.d.ts +25 -0
  129. package/lib/components/editors/CubeExpressionFilterEditor.d.ts.map +1 -0
  130. package/lib/components/editors/CubeExpressionFilterEditor.js +83 -0
  131. package/lib/components/editors/CubeExpressionFilterEditor.js.map +1 -0
  132. package/lib/components/editors/CubeExtendEditor.d.ts +2 -0
  133. package/lib/components/editors/CubeExtendEditor.d.ts.map +1 -1
  134. package/lib/components/editors/CubeExtendEditor.js +3 -3
  135. package/lib/components/editors/CubeExtendEditor.js.map +1 -1
  136. package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -1
  137. package/lib/components/editors/CubeFilterEditor.js +13 -2
  138. package/lib/components/editors/CubeFilterEditor.js.map +1 -1
  139. package/lib/components/editors/CubeFunctionSourceEditor.d.ts +25 -0
  140. package/lib/components/editors/CubeFunctionSourceEditor.d.ts.map +1 -0
  141. package/lib/components/editors/CubeFunctionSourceEditor.js +55 -0
  142. package/lib/components/editors/CubeFunctionSourceEditor.js.map +1 -0
  143. package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -1
  144. package/lib/components/editors/CubeJoinEditor.js +16 -4
  145. package/lib/components/editors/CubeJoinEditor.js.map +1 -1
  146. package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -1
  147. package/lib/components/editors/CubeNodeEditorPanel.js +18 -8
  148. package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -1
  149. package/lib/components/editors/CubeNodeEditorPopper.d.ts +5 -1
  150. package/lib/components/editors/CubeNodeEditorPopper.d.ts.map +1 -1
  151. package/lib/components/editors/CubeNodeEditorPopper.js +10 -2
  152. package/lib/components/editors/CubeNodeEditorPopper.js.map +1 -1
  153. package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -1
  154. package/lib/components/editors/CubeNodeEditorRegistry.js +9 -1
  155. package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -1
  156. package/lib/components/editors/CubePivotEditor.d.ts +26 -0
  157. package/lib/components/editors/CubePivotEditor.d.ts.map +1 -0
  158. package/lib/components/editors/CubePivotEditor.js +93 -0
  159. package/lib/components/editors/CubePivotEditor.js.map +1 -0
  160. package/lib/components/editors/CubeRestrictEditor.d.ts.map +1 -1
  161. package/lib/components/editors/CubeRestrictEditor.js +2 -2
  162. package/lib/components/editors/CubeRestrictEditor.js.map +1 -1
  163. package/lib/components/editors/CubeServiceSourceEditor.d.ts +25 -0
  164. package/lib/components/editors/CubeServiceSourceEditor.d.ts.map +1 -0
  165. package/lib/components/editors/CubeServiceSourceEditor.js +41 -0
  166. package/lib/components/editors/CubeServiceSourceEditor.js.map +1 -0
  167. package/lib/components/grid/CubeColumnFormatDialog.d.ts +28 -0
  168. package/lib/components/grid/CubeColumnFormatDialog.d.ts.map +1 -0
  169. package/lib/components/grid/CubeColumnFormatDialog.js +94 -0
  170. package/lib/components/grid/CubeColumnFormatDialog.js.map +1 -0
  171. package/lib/components/grid/CubeDrilldownBar.d.ts +37 -0
  172. package/lib/components/grid/CubeDrilldownBar.d.ts.map +1 -0
  173. package/lib/components/grid/CubeDrilldownBar.js +77 -0
  174. package/lib/components/grid/CubeDrilldownBar.js.map +1 -0
  175. package/lib/components/grid/CubeGridRegion.d.ts.map +1 -1
  176. package/lib/components/grid/CubeGridRegion.js +40 -26
  177. package/lib/components/grid/CubeGridRegion.js.map +1 -1
  178. package/lib/components/grid/CubeGridValues.d.ts +31 -1
  179. package/lib/components/grid/CubeGridValues.d.ts.map +1 -1
  180. package/lib/components/grid/CubeGridValues.js +108 -1
  181. package/lib/components/grid/CubeGridValues.js.map +1 -1
  182. package/lib/components/grid/CubeResultGrid.d.ts +68 -5
  183. package/lib/components/grid/CubeResultGrid.d.ts.map +1 -1
  184. package/lib/components/grid/CubeResultGrid.js +308 -35
  185. package/lib/components/grid/CubeResultGrid.js.map +1 -1
  186. package/lib/components/grid/CubeRunStatsPanel.d.ts +28 -0
  187. package/lib/components/grid/CubeRunStatsPanel.d.ts.map +1 -0
  188. package/lib/components/grid/CubeRunStatsPanel.js +61 -0
  189. package/lib/components/grid/CubeRunStatsPanel.js.map +1 -0
  190. package/lib/components/grid/CubeServerSideGrid.d.ts +36 -0
  191. package/lib/components/grid/CubeServerSideGrid.d.ts.map +1 -0
  192. package/lib/components/grid/CubeServerSideGrid.js +114 -0
  193. package/lib/components/grid/CubeServerSideGrid.js.map +1 -0
  194. package/lib/components/grid/CubeSqlDialog.d.ts +24 -0
  195. package/lib/components/grid/CubeSqlDialog.d.ts.map +1 -0
  196. package/lib/components/grid/CubeSqlDialog.js +39 -0
  197. package/lib/components/grid/CubeSqlDialog.js.map +1 -0
  198. package/lib/components/grid/CubeSqlFormat.d.ts +20 -0
  199. package/lib/components/grid/CubeSqlFormat.d.ts.map +1 -0
  200. package/lib/components/grid/CubeSqlFormat.js +32 -0
  201. package/lib/components/grid/CubeSqlFormat.js.map +1 -0
  202. package/lib/components/palette/CubePalette.d.ts.map +1 -1
  203. package/lib/components/palette/CubePalette.js +32 -13
  204. package/lib/components/palette/CubePalette.js.map +1 -1
  205. package/lib/components/show-pure/CubeShowPureDialog.d.ts +4 -1
  206. package/lib/components/show-pure/CubeShowPureDialog.d.ts.map +1 -1
  207. package/lib/components/show-pure/CubeShowPureDialog.js +8 -4
  208. package/lib/components/show-pure/CubeShowPureDialog.js.map +1 -1
  209. package/lib/components/source-picker/CubeDataProductTab.d.ts.map +1 -1
  210. package/lib/components/source-picker/CubeDataProductTab.js +37 -16
  211. package/lib/components/source-picker/CubeDataProductTab.js.map +1 -1
  212. package/lib/components/source-picker/CubeDirectConnectionTab.d.ts.map +1 -1
  213. package/lib/components/source-picker/CubeDirectConnectionTab.js +6 -4
  214. package/lib/components/source-picker/CubeDirectConnectionTab.js.map +1 -1
  215. package/lib/components/source-picker/CubeFunctionSteps.d.ts +36 -0
  216. package/lib/components/source-picker/CubeFunctionSteps.d.ts.map +1 -0
  217. package/lib/components/source-picker/CubeFunctionSteps.js +76 -0
  218. package/lib/components/source-picker/CubeFunctionSteps.js.map +1 -0
  219. package/lib/components/source-picker/CubeIngestTab.d.ts.map +1 -1
  220. package/lib/components/source-picker/CubeIngestTab.js +39 -16
  221. package/lib/components/source-picker/CubeIngestTab.js.map +1 -1
  222. package/lib/components/source-picker/CubeInlineModelTab.d.ts +3 -2
  223. package/lib/components/source-picker/CubeInlineModelTab.d.ts.map +1 -1
  224. package/lib/components/source-picker/CubeInlineModelTab.js +23 -13
  225. package/lib/components/source-picker/CubeInlineModelTab.js.map +1 -1
  226. package/lib/components/source-picker/CubePickerListItem.d.ts +47 -0
  227. package/lib/components/source-picker/CubePickerListItem.d.ts.map +1 -0
  228. package/lib/components/source-picker/CubePickerListItem.js +62 -0
  229. package/lib/components/source-picker/CubePickerListItem.js.map +1 -0
  230. package/lib/components/source-picker/CubeProjectTab.d.ts +4 -3
  231. package/lib/components/source-picker/CubeProjectTab.d.ts.map +1 -1
  232. package/lib/components/source-picker/CubeProjectTab.js +7 -4
  233. package/lib/components/source-picker/CubeProjectTab.js.map +1 -1
  234. package/lib/components/source-picker/CubeServiceTab.d.ts +27 -0
  235. package/lib/components/source-picker/CubeServiceTab.d.ts.map +1 -0
  236. package/lib/components/source-picker/CubeServiceTab.js +36 -0
  237. package/lib/components/source-picker/CubeServiceTab.js.map +1 -0
  238. package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -1
  239. package/lib/components/source-picker/CubeSourcePicker.js +16 -3
  240. package/lib/components/source-picker/CubeSourcePicker.js.map +1 -1
  241. package/lib/components/source-picker/CubeTablePreview.d.ts +29 -0
  242. package/lib/components/source-picker/CubeTablePreview.d.ts.map +1 -0
  243. package/lib/components/source-picker/CubeTablePreview.js +10 -0
  244. package/lib/components/source-picker/CubeTablePreview.js.map +1 -0
  245. package/lib/components/spec-transfer/CubeImportPureDialog.d.ts +27 -0
  246. package/lib/components/spec-transfer/CubeImportPureDialog.d.ts.map +1 -0
  247. package/lib/components/spec-transfer/CubeImportPureDialog.js +38 -0
  248. package/lib/components/spec-transfer/CubeImportPureDialog.js.map +1 -0
  249. package/lib/components/spec-transfer/CubeSpecTransferDialog.d.ts.map +1 -1
  250. package/lib/components/spec-transfer/CubeSpecTransferDialog.js +9 -3
  251. package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -1
  252. package/lib/graph-manager/CubeDataProductCatalog.d.ts +10 -0
  253. package/lib/graph-manager/CubeDataProductCatalog.d.ts.map +1 -1
  254. package/lib/graph-manager/CubeDataProductCatalog.js.map +1 -1
  255. package/lib/graph-manager/CubeEngine.d.ts +46 -1
  256. package/lib/graph-manager/CubeEngine.d.ts.map +1 -1
  257. package/lib/graph-manager/CubeEngine.js.map +1 -1
  258. package/lib/graph-manager/CubeEngineClientSettings.d.ts +43 -0
  259. package/lib/graph-manager/CubeEngineClientSettings.d.ts.map +1 -0
  260. package/lib/graph-manager/CubeEngineClientSettings.js +51 -0
  261. package/lib/graph-manager/CubeEngineClientSettings.js.map +1 -0
  262. package/lib/graph-manager/CubeIngest.d.ts +5 -0
  263. package/lib/graph-manager/CubeIngest.d.ts.map +1 -1
  264. package/lib/graph-manager/CubeIngest.js +10 -0
  265. package/lib/graph-manager/CubeIngest.js.map +1 -1
  266. package/lib/graph-manager/CubeIngestCatalog.d.ts +26 -0
  267. package/lib/graph-manager/CubeIngestCatalog.d.ts.map +1 -1
  268. package/lib/graph-manager/CubeIngestCatalog.js +6 -0
  269. package/lib/graph-manager/CubeIngestCatalog.js.map +1 -1
  270. package/lib/graph-manager/CubeLakehouseRuntime.d.ts +29 -0
  271. package/lib/graph-manager/CubeLakehouseRuntime.d.ts.map +1 -0
  272. package/lib/graph-manager/CubeLakehouseRuntime.js +40 -0
  273. package/lib/graph-manager/CubeLakehouseRuntime.js.map +1 -0
  274. package/lib/graph-manager/CubeProjectCatalog.d.ts +3 -3
  275. package/lib/graph-manager/CubeService.d.ts +20 -0
  276. package/lib/graph-manager/CubeService.d.ts.map +1 -0
  277. package/lib/graph-manager/CubeService.js +22 -0
  278. package/lib/graph-manager/CubeService.js.map +1 -0
  279. package/lib/graph-manager/CubeServiceCatalog.d.ts +31 -0
  280. package/lib/graph-manager/CubeServiceCatalog.d.ts.map +1 -0
  281. package/lib/graph-manager/CubeServiceCatalog.js +17 -0
  282. package/lib/graph-manager/CubeServiceCatalog.js.map +1 -0
  283. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +52 -5
  284. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -1
  285. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +63 -5
  286. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -1
  287. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts +9 -6
  288. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts.map +1 -1
  289. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js +12 -8
  290. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js.map +1 -1
  291. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts +30 -0
  292. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts.map +1 -0
  293. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js +229 -0
  294. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js.map +1 -0
  295. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts.map +1 -1
  296. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js +18 -9
  297. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js.map +1 -1
  298. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts +4 -9
  299. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts.map +1 -1
  300. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js +2 -1
  301. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js.map +1 -1
  302. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts +34 -0
  303. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts.map +1 -0
  304. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js +332 -0
  305. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js.map +1 -0
  306. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts.map +1 -1
  307. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js +49 -10
  308. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +1 -1
  309. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts +1 -1
  310. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts.map +1 -1
  311. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js +3 -1
  312. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js.map +1 -1
  313. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts +2 -1
  314. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts.map +1 -1
  315. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js +2 -1
  316. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js.map +1 -1
  317. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +18 -0
  318. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -1
  319. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +74 -6
  320. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -1
  321. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts.map +1 -1
  322. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js +7 -4
  323. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js.map +1 -1
  324. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts +31 -0
  325. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts.map +1 -0
  326. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js +69 -0
  327. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js.map +1 -0
  328. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts.map +1 -1
  329. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js +6 -2
  330. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js.map +1 -1
  331. package/lib/index.css +2 -2
  332. package/lib/index.css.map +1 -1
  333. package/lib/index.d.ts +12 -3
  334. package/lib/index.d.ts.map +1 -1
  335. package/lib/index.js +10 -1
  336. package/lib/index.js.map +1 -1
  337. package/lib/stores/CubeAddPlacement.d.ts +10 -3
  338. package/lib/stores/CubeAddPlacement.d.ts.map +1 -1
  339. package/lib/stores/CubeAddPlacement.js +16 -5
  340. package/lib/stores/CubeAddPlacement.js.map +1 -1
  341. package/lib/stores/CubeDevSettingsState.d.ts +47 -0
  342. package/lib/stores/CubeDevSettingsState.d.ts.map +1 -0
  343. package/lib/stores/CubeDevSettingsState.js +99 -0
  344. package/lib/stores/CubeDevSettingsState.js.map +1 -0
  345. package/lib/stores/CubeEditorState.d.ts +173 -43
  346. package/lib/stores/CubeEditorState.d.ts.map +1 -1
  347. package/lib/stores/CubeEditorState.js +498 -113
  348. package/lib/stores/CubeEditorState.js.map +1 -1
  349. package/lib/stores/CubeEngineChecks.d.ts +59 -0
  350. package/lib/stores/CubeEngineChecks.d.ts.map +1 -0
  351. package/lib/stores/CubeEngineChecks.js +100 -0
  352. package/lib/stores/CubeEngineChecks.js.map +1 -0
  353. package/lib/stores/CubeExamples.d.ts.map +1 -1
  354. package/lib/stores/CubeExamples.js +39 -2
  355. package/lib/stores/CubeExamples.js.map +1 -1
  356. package/lib/stores/CubeExamplesState.d.ts +1 -1
  357. package/lib/stores/CubeExamplesState.d.ts.map +1 -1
  358. package/lib/stores/CubeExamplesState.js +2 -2
  359. package/lib/stores/CubeExamplesState.js.map +1 -1
  360. package/lib/stores/CubeExecutionState.d.ts.map +1 -1
  361. package/lib/stores/CubeExecutionState.js +24 -33
  362. package/lib/stores/CubeExecutionState.js.map +1 -1
  363. package/lib/stores/CubeExportState.d.ts +41 -0
  364. package/lib/stores/CubeExportState.d.ts.map +1 -0
  365. package/lib/stores/CubeExportState.js +134 -0
  366. package/lib/stores/CubeExportState.js.map +1 -0
  367. package/lib/stores/CubeExpressionFilterCheck.d.ts +51 -0
  368. package/lib/stores/CubeExpressionFilterCheck.d.ts.map +1 -0
  369. package/lib/stores/CubeExpressionFilterCheck.js +134 -0
  370. package/lib/stores/CubeExpressionFilterCheck.js.map +1 -0
  371. package/lib/stores/CubeExtendTyping.d.ts +6 -14
  372. package/lib/stores/CubeExtendTyping.d.ts.map +1 -1
  373. package/lib/stores/CubeExtendTyping.js +6 -33
  374. package/lib/stores/CubeExtendTyping.js.map +1 -1
  375. package/lib/stores/CubeFunctionRecheck.d.ts +30 -0
  376. package/lib/stores/CubeFunctionRecheck.d.ts.map +1 -0
  377. package/lib/stores/CubeFunctionRecheck.js +67 -0
  378. package/lib/stores/CubeFunctionRecheck.js.map +1 -0
  379. package/lib/stores/CubeGridFetcher.d.ts +75 -0
  380. package/lib/stores/CubeGridFetcher.d.ts.map +1 -0
  381. package/lib/stores/CubeGridFetcher.js +197 -0
  382. package/lib/stores/CubeGridFetcher.js.map +1 -0
  383. package/lib/stores/CubeGridQuickActions.d.ts +18 -6
  384. package/lib/stores/CubeGridQuickActions.d.ts.map +1 -1
  385. package/lib/stores/CubeGridQuickActions.js +32 -12
  386. package/lib/stores/CubeGridQuickActions.js.map +1 -1
  387. package/lib/stores/CubeGridState.d.ts +136 -0
  388. package/lib/stores/CubeGridState.d.ts.map +1 -0
  389. package/lib/stores/CubeGridState.js +317 -0
  390. package/lib/stores/CubeGridState.js.map +1 -0
  391. package/lib/stores/CubeHost.d.ts +42 -0
  392. package/lib/stores/CubeHost.d.ts.map +1 -1
  393. package/lib/stores/CubeHost.js +4 -0
  394. package/lib/stores/CubeHost.js.map +1 -1
  395. package/lib/stores/CubeLambdaImportState.d.ts +118 -0
  396. package/lib/stores/CubeLambdaImportState.d.ts.map +1 -0
  397. package/lib/stores/CubeLambdaImportState.js +302 -0
  398. package/lib/stores/CubeLambdaImportState.js.map +1 -0
  399. package/lib/stores/CubeLambdaSources.d.ts +45 -0
  400. package/lib/stores/CubeLambdaSources.d.ts.map +1 -0
  401. package/lib/stores/CubeLambdaSources.js +261 -0
  402. package/lib/stores/CubeLambdaSources.js.map +1 -0
  403. package/lib/stores/CubeQueryRun.d.ts +59 -0
  404. package/lib/stores/CubeQueryRun.d.ts.map +1 -0
  405. package/lib/stores/CubeQueryRun.js +101 -0
  406. package/lib/stores/CubeQueryRun.js.map +1 -0
  407. package/lib/stores/CubeRunStatsState.d.ts +61 -0
  408. package/lib/stores/CubeRunStatsState.d.ts.map +1 -0
  409. package/lib/stores/CubeRunStatsState.js +54 -0
  410. package/lib/stores/CubeRunStatsState.js.map +1 -0
  411. package/lib/stores/CubeRunningStepLambda.d.ts +25 -0
  412. package/lib/stores/CubeRunningStepLambda.d.ts.map +1 -0
  413. package/lib/stores/CubeRunningStepLambda.js +45 -0
  414. package/lib/stores/CubeRunningStepLambda.js.map +1 -0
  415. package/lib/stores/CubeServiceRecheck.d.ts +29 -0
  416. package/lib/stores/CubeServiceRecheck.d.ts.map +1 -0
  417. package/lib/stores/CubeServiceRecheck.js +33 -0
  418. package/lib/stores/CubeServiceRecheck.js.map +1 -0
  419. package/lib/stores/CubeShowPureState.d.ts +14 -1
  420. package/lib/stores/CubeShowPureState.d.ts.map +1 -1
  421. package/lib/stores/CubeShowPureState.js +41 -11
  422. package/lib/stores/CubeShowPureState.js.map +1 -1
  423. package/lib/stores/CubeSourcePickerState.d.ts +20 -4
  424. package/lib/stores/CubeSourcePickerState.d.ts.map +1 -1
  425. package/lib/stores/CubeSourcePickerState.js +75 -14
  426. package/lib/stores/CubeSourcePickerState.js.map +1 -1
  427. package/lib/stores/LocalModelCatalog.d.ts.map +1 -1
  428. package/lib/stores/LocalModelCatalog.js +3 -1
  429. package/lib/stores/LocalModelCatalog.js.map +1 -1
  430. package/lib/stores/editors/CubeExpressionFilterDraft.d.ts +91 -0
  431. package/lib/stores/editors/CubeExpressionFilterDraft.d.ts.map +1 -0
  432. package/lib/stores/editors/CubeExpressionFilterDraft.js +254 -0
  433. package/lib/stores/editors/CubeExpressionFilterDraft.js.map +1 -0
  434. package/lib/stores/editors/CubeFunctionDraft.d.ts +34 -0
  435. package/lib/stores/editors/CubeFunctionDraft.d.ts.map +1 -0
  436. package/lib/stores/editors/CubeFunctionDraft.js +69 -0
  437. package/lib/stores/editors/CubeFunctionDraft.js.map +1 -0
  438. package/lib/stores/editors/CubeNodeDraftRegistry.d.ts +4 -2
  439. package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -1
  440. package/lib/stores/editors/CubeNodeDraftRegistry.js +20 -3
  441. package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -1
  442. package/lib/stores/editors/CubePivotDraft.d.ts +93 -0
  443. package/lib/stores/editors/CubePivotDraft.d.ts.map +1 -0
  444. package/lib/stores/editors/CubePivotDraft.js +267 -0
  445. package/lib/stores/editors/CubePivotDraft.js.map +1 -0
  446. package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts +26 -0
  447. package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts.map +1 -0
  448. package/lib/stores/fixtures/CubeSalesDuckDbModel.js +46 -0
  449. package/lib/stores/fixtures/CubeSalesDuckDbModel.js.map +1 -0
  450. package/lib/stores/fixtures/CubeTradesModel.d.ts +4 -0
  451. package/lib/stores/fixtures/CubeTradesModel.d.ts.map +1 -1
  452. package/lib/stores/fixtures/CubeTradesModel.js +31 -1
  453. package/lib/stores/fixtures/CubeTradesModel.js.map +1 -1
  454. package/lib/stores/source-picker/CubeDataProductTabState.d.ts +34 -5
  455. package/lib/stores/source-picker/CubeDataProductTabState.d.ts.map +1 -1
  456. package/lib/stores/source-picker/CubeDataProductTabState.js +111 -26
  457. package/lib/stores/source-picker/CubeDataProductTabState.js.map +1 -1
  458. package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts +25 -2
  459. package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts.map +1 -1
  460. package/lib/stores/source-picker/CubeDirectConnectionTabState.js +183 -31
  461. package/lib/stores/source-picker/CubeDirectConnectionTabState.js.map +1 -1
  462. package/lib/stores/source-picker/CubeIngestTabState.d.ts +22 -9
  463. package/lib/stores/source-picker/CubeIngestTabState.d.ts.map +1 -1
  464. package/lib/stores/source-picker/CubeIngestTabState.js +84 -29
  465. package/lib/stores/source-picker/CubeIngestTabState.js.map +1 -1
  466. package/lib/stores/source-picker/CubeInlineModelTabState.d.ts +100 -4
  467. package/lib/stores/source-picker/CubeInlineModelTabState.d.ts.map +1 -1
  468. package/lib/stores/source-picker/CubeInlineModelTabState.js +415 -28
  469. package/lib/stores/source-picker/CubeInlineModelTabState.js.map +1 -1
  470. package/lib/stores/source-picker/CubeProjectTabState.d.ts +18 -3
  471. package/lib/stores/source-picker/CubeProjectTabState.d.ts.map +1 -1
  472. package/lib/stores/source-picker/CubeProjectTabState.js +26 -1
  473. package/lib/stores/source-picker/CubeProjectTabState.js.map +1 -1
  474. package/lib/stores/source-picker/CubeServiceTabState.d.ts +74 -0
  475. package/lib/stores/source-picker/CubeServiceTabState.d.ts.map +1 -0
  476. package/lib/stores/source-picker/CubeServiceTabState.js +216 -0
  477. package/lib/stores/source-picker/CubeServiceTabState.js.map +1 -0
  478. package/lib/stores/source-picker/CubeSourcePickerTab.d.ts +15 -3
  479. package/lib/stores/source-picker/CubeSourcePickerTab.d.ts.map +1 -1
  480. package/lib/stores/source-picker/CubeSourcePickerTab.js +21 -0
  481. package/lib/stores/source-picker/CubeSourcePickerTab.js.map +1 -1
  482. package/package.json +10 -9
  483. package/src/__lib__/LegendCubeCommand.ts +7 -0
  484. package/src/__lib__/LegendCubeFunctionLabels.ts +41 -0
  485. package/src/__lib__/LegendCubeHelpText.ts +23 -1
  486. package/src/__lib__/LegendCubeLabels.ts +170 -13
  487. package/src/__lib__/LegendCubeProjectSourceLabels.ts +26 -0
  488. package/src/__lib__/LegendCubeServiceLabels.ts +41 -0
  489. package/src/__lib__/LegendCubeTesting.ts +7 -0
  490. package/src/__test-utils__/CubeEngineTestSupport.ts +2 -1
  491. package/src/__test-utils__/CubeExpressionTestUtils.ts +29 -2
  492. package/src/__test-utils__/CubeFunctionTestOutline.ts +78 -0
  493. package/src/__test-utils__/CubeLambdaCorpus.ts +137 -0
  494. package/src/__test-utils__/CubePageTestUtils.tsx +34 -0
  495. package/src/__test-utils__/CubeTestApplication.ts +25 -0
  496. package/src/__test-utils__/FakeCubeEngine.ts +27 -0
  497. package/src/__test-utils__/FakeCubeIngestCatalog.ts +18 -0
  498. package/src/__test-utils__/FakeCubeServiceCatalog.ts +57 -0
  499. package/src/components/CubeAddItems.tsx +13 -6
  500. package/src/components/CubeDialogTheme.ts +25 -0
  501. package/src/components/CubeEditor.tsx +155 -129
  502. package/src/components/CubeFileMenu.tsx +127 -0
  503. package/src/components/CubeLambdaImportBanner.tsx +97 -0
  504. package/src/components/CubeNodeIcon.tsx +7 -0
  505. package/src/components/CubeSchemaColumnsTable.tsx +7 -2
  506. package/src/components/canvas/CubeCanvas.tsx +52 -13
  507. package/src/components/canvas/CubeCanvasContextMenu.tsx +33 -2
  508. package/src/components/canvas/CubeCanvasElements.ts +76 -3
  509. package/src/components/canvas/CubeCanvasLayout.ts +1 -1
  510. package/src/components/canvas/CubeCanvasNode.tsx +30 -3
  511. package/src/components/dev-settings/CubeDevSettings.tsx +154 -0
  512. package/src/components/editors/CubeColumnChecklist.tsx +8 -2
  513. package/src/components/editors/CubeColumnPicker.tsx +6 -3
  514. package/src/components/editors/CubeConcatEditor.tsx +2 -2
  515. package/src/components/editors/CubeExpressionFilterEditor.tsx +193 -0
  516. package/src/components/editors/CubeExtendEditor.tsx +3 -3
  517. package/src/components/editors/CubeFilterEditor.tsx +13 -1
  518. package/src/components/editors/CubeFunctionSourceEditor.tsx +140 -0
  519. package/src/components/editors/CubeJoinEditor.tsx +23 -4
  520. package/src/components/editors/CubeNodeEditorPanel.tsx +22 -10
  521. package/src/components/editors/CubeNodeEditorPopper.tsx +9 -1
  522. package/src/components/editors/CubeNodeEditorRegistry.ts +12 -0
  523. package/src/components/editors/CubePivotEditor.tsx +277 -0
  524. package/src/components/editors/CubeRestrictEditor.tsx +8 -2
  525. package/src/components/editors/CubeServiceSourceEditor.tsx +77 -0
  526. package/src/components/grid/CubeColumnFormatDialog.tsx +289 -0
  527. package/src/components/grid/CubeDrilldownBar.tsx +219 -0
  528. package/src/components/grid/CubeGridRegion.tsx +170 -54
  529. package/src/components/grid/CubeGridValues.ts +146 -1
  530. package/src/components/grid/CubeResultGrid.tsx +443 -41
  531. package/src/components/grid/CubeRunStatsPanel.tsx +156 -0
  532. package/src/components/grid/CubeServerSideGrid.tsx +200 -0
  533. package/src/components/grid/CubeSqlDialog.tsx +90 -0
  534. package/src/components/grid/CubeSqlFormat.ts +37 -0
  535. package/src/components/palette/CubePalette.tsx +45 -12
  536. package/src/components/show-pure/CubeShowPureDialog.tsx +19 -5
  537. package/src/components/source-picker/CubeDataProductTab.tsx +169 -75
  538. package/src/components/source-picker/CubeDirectConnectionTab.tsx +42 -30
  539. package/src/components/source-picker/CubeFunctionSteps.tsx +244 -0
  540. package/src/components/source-picker/CubeIngestTab.tsx +159 -79
  541. package/src/components/source-picker/CubeInlineModelTab.tsx +110 -81
  542. package/src/components/source-picker/CubePickerListItem.tsx +118 -0
  543. package/src/components/source-picker/CubeProjectTab.tsx +6 -3
  544. package/src/components/source-picker/CubeServiceTab.tsx +151 -0
  545. package/src/components/source-picker/CubeSourcePicker.tsx +54 -18
  546. package/src/components/source-picker/CubeTablePreview.tsx +49 -0
  547. package/src/components/spec-transfer/CubeImportPureDialog.tsx +122 -0
  548. package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +21 -8
  549. package/src/graph-manager/CubeDataProductCatalog.ts +11 -0
  550. package/src/graph-manager/CubeEngine.ts +51 -1
  551. package/src/graph-manager/CubeEngineClientSettings.ts +64 -0
  552. package/src/graph-manager/CubeIngest.ts +15 -0
  553. package/src/graph-manager/CubeIngestCatalog.ts +33 -0
  554. package/src/graph-manager/CubeLakehouseRuntime.ts +43 -0
  555. package/src/graph-manager/CubeProjectCatalog.ts +3 -3
  556. package/src/graph-manager/CubeService.ts +29 -0
  557. package/src/graph-manager/CubeServiceCatalog.ts +35 -0
  558. package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +115 -5
  559. package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.ts +13 -7
  560. package/src/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.ts +312 -0
  561. package/src/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.ts +35 -9
  562. package/src/graph-manager/protocol/pure/v1/V1_CubeIngestModel.ts +6 -15
  563. package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.ts +471 -0
  564. package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +70 -15
  565. package/src/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.ts +3 -1
  566. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.ts +7 -1
  567. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +122 -7
  568. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.ts +9 -4
  569. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.ts +92 -0
  570. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +6 -1
  571. package/src/index.ts +32 -2
  572. package/src/stores/CubeAddPlacement.ts +25 -5
  573. package/src/stores/CubeDevSettingsState.ts +117 -0
  574. package/src/stores/CubeEditorState.ts +687 -197
  575. package/src/stores/CubeEngineChecks.ts +240 -0
  576. package/src/stores/CubeExamples.ts +70 -1
  577. package/src/stores/CubeExamplesState.ts +4 -2
  578. package/src/stores/CubeExecutionState.ts +26 -57
  579. package/src/stores/CubeExportState.ts +196 -0
  580. package/src/stores/CubeExpressionFilterCheck.ts +218 -0
  581. package/src/stores/CubeExtendTyping.ts +6 -46
  582. package/src/stores/CubeFunctionRecheck.ts +97 -0
  583. package/src/stores/CubeGridFetcher.ts +302 -0
  584. package/src/stores/CubeGridQuickActions.ts +33 -11
  585. package/src/stores/CubeGridState.ts +450 -0
  586. package/src/stores/CubeHost.ts +48 -0
  587. package/src/stores/CubeLambdaImportState.ts +434 -0
  588. package/src/stores/CubeLambdaSources.ts +390 -0
  589. package/src/stores/CubeQueryRun.ts +169 -0
  590. package/src/stores/CubeRunStatsState.ts +91 -0
  591. package/src/stores/CubeRunningStepLambda.ts +62 -0
  592. package/src/stores/CubeServiceRecheck.ts +53 -0
  593. package/src/stores/CubeShowPureState.ts +51 -12
  594. package/src/stores/CubeSourcePickerState.ts +89 -13
  595. package/src/stores/LocalModelCatalog.ts +6 -1
  596. package/src/stores/editors/CubeExpressionFilterDraft.ts +385 -0
  597. package/src/stores/editors/CubeFunctionDraft.ts +92 -0
  598. package/src/stores/editors/CubeNodeDraftRegistry.ts +27 -2
  599. package/src/stores/editors/CubePivotDraft.ts +355 -0
  600. package/src/stores/fixtures/CubeSalesDuckDbModel.ts +54 -0
  601. package/src/stores/fixtures/CubeTradesModel.ts +36 -1
  602. package/src/stores/source-picker/CubeDataProductTabState.ts +162 -35
  603. package/src/stores/source-picker/CubeDirectConnectionTabState.ts +246 -47
  604. package/src/stores/source-picker/CubeIngestTabState.ts +112 -38
  605. package/src/stores/source-picker/CubeInlineModelTabState.ts +514 -34
  606. package/src/stores/source-picker/CubeProjectTabState.ts +35 -3
  607. package/src/stores/source-picker/CubeServiceTabState.ts +288 -0
  608. package/src/stores/source-picker/CubeSourcePickerTab.ts +31 -2
  609. package/tsconfig.json +50 -0
@@ -16,7 +16,7 @@
16
16
 
17
17
  import {
18
18
  AggregationFunction,
19
- buildQuickFilterRule,
19
+ buildDrilldownKeyRule,
20
20
  FilterOperator,
21
21
  Filter,
22
22
  foldColumnName,
@@ -66,12 +66,25 @@ export interface CubeGridQuickAction {
66
66
  readonly apply: () => void;
67
67
  }
68
68
 
69
+ /** What a cell of the grid holds */
70
+ export enum CubeGridCellKind {
71
+ /** A run row's value, or a group row's key */
72
+ VALUE = 'value',
73
+ /** A group row's aggregation of its rows' values (PLAN §11.10) */
74
+ AGGREGATE = 'aggregate',
75
+ /** A group row's column with no aggregation: nothing */
76
+ EMPTY = 'empty',
77
+ }
78
+
69
79
  /**
70
- * The quick actions on a cell of the shown rows (spec §12.4, PLAN §11.4 and
71
- * §11.5): "Sort by" adds an ascending Sort on the cell's column, "Group by" a
72
- * Group by it with Count rows, and "Filter by" an Equal on its value (Is
73
- * Empty on a null), after the node that runs, which they replace as the node
74
- * that runs. All need the rows to be from the current query, no run in
80
+ * The quick actions on a cell of the shown rows (spec §12.4, PLAN §11.4,
81
+ * §11.5 and §11.10): "Sort by" adds an ascending Sort on the cell's column,
82
+ * "Group by" a Group by it with Count rows, and "Filter by" an Equal on its
83
+ * value (Is Empty on a null; on a float, In the value and its 32-bit value
84
+ * when they differ, so a `REAL` value is found, as a drill-down's key is,
85
+ * PLAN §11.14), after the node that runs, which they replace as
86
+ * the node that runs; a group row's cell other than its key has no value of a
87
+ * row, so "Filter by" is disabled there. All need the rows to be from the current query, no run in
75
88
  * flight, and a cube that can change; "Sort by" and "Group by" a type that
76
89
  * compares, and "Filter by" a value its column's type can compare.
77
90
  * Read when the menu opens; `[]` when the position is not a column of the
@@ -81,6 +94,7 @@ export const getCubeGridQuickActions = (
81
94
  editorState: CubeEditorState,
82
95
  position: number,
83
96
  cell: CubeResultValue,
97
+ cellKind = CubeGridCellKind.VALUE,
84
98
  ): CubeGridQuickAction[] => {
85
99
  const { execution, document } = editorState;
86
100
  const { result } = execution;
@@ -91,7 +105,10 @@ export const getCubeGridQuickActions = (
91
105
  const { query } = document;
92
106
  const afterId = query.selected;
93
107
  const typeName = column.type.displayName;
94
- const rule = buildQuickFilterRule(column.name, column.type, cell);
108
+ const rule =
109
+ cellKind === CubeGridCellKind.VALUE
110
+ ? buildDrilldownKeyRule(column.name, column.type, cell)
111
+ : undefined;
95
112
  // what keeps both from being used, in order
96
113
  const blocked =
97
114
  result.query !== query || execution.isStale
@@ -118,9 +135,13 @@ export const getCubeGridQuickActions = (
118
135
  blocked ??
119
136
  (rule
120
137
  ? undefined
121
- : isOperatorAvailable(FilterOperator.EQUAL, column.type)
122
- ? CUBE_QUICK_ACTION_DISABLED_REASON.UNREADABLE_VALUE
123
- : CUBE_QUICK_ACTION_DISABLED_REASON.notComparable(typeName));
138
+ : cellKind === CubeGridCellKind.AGGREGATE
139
+ ? CUBE_QUICK_ACTION_DISABLED_REASON.AGGREGATE_VALUE
140
+ : cellKind === CubeGridCellKind.EMPTY
141
+ ? CUBE_QUICK_ACTION_DISABLED_REASON.NO_VALUE
142
+ : isOperatorAvailable(FilterOperator.EQUAL, column.type)
143
+ ? CUBE_QUICK_ACTION_DISABLED_REASON.UNREADABLE_VALUE
144
+ : CUBE_QUICK_ACTION_DISABLED_REASON.notComparable(typeName));
124
145
  return [
125
146
  {
126
147
  label: `Sort by "${column.name}"`,
@@ -163,7 +184,8 @@ export const getCubeGridQuickActions = (
163
184
  label: `Filter by "${column.name}"`,
164
185
  disabledReason: filterReason,
165
186
  hint:
166
- rule?.operator === FilterOperator.EQUAL &&
187
+ (rule?.operator === FilterOperator.EQUAL ||
188
+ rule?.operator === FilterOperator.IN) &&
167
189
  column.type.family === TypeFamily.FLOAT
168
190
  ? FILTER_FLOAT_COMPARISON_HINT
169
191
  : undefined,
@@ -0,0 +1,450 @@
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
+
17
+ import {
18
+ addDrilldownLevel,
19
+ type AggregationFunction,
20
+ type CheckedDrilldown,
21
+ checkDrilldown,
22
+ type ColumnFormat,
23
+ type ColumnDirection,
24
+ type Drilldown,
25
+ type DrilldownCell,
26
+ foldColumnName,
27
+ isDrilldownLevelType,
28
+ isEmptyDrilldown,
29
+ removeDrilldownLevel,
30
+ setColumnFormat,
31
+ setDrilldownAggregation,
32
+ SortDirection,
33
+ } from '@finos/legend-cube';
34
+ import {
35
+ action,
36
+ computed,
37
+ makeObservable,
38
+ observable,
39
+ runInAction,
40
+ } from 'mobx';
41
+ import {
42
+ CUBE_DRILLDOWN_BLOCKER,
43
+ LEGEND_CUBE_USER_DATA_KEY,
44
+ READ_ONLY_CUBE_TITLE,
45
+ } from '../__lib__/LegendCubeLabels.js';
46
+ import {
47
+ CubeEngineError,
48
+ CubeEngineErrorKind,
49
+ type CubeResultValue,
50
+ } from '../graph-manager/CubeEngine.js';
51
+ import type { CubeEditorState } from './CubeEditorState.js';
52
+ import type { CubeExecutionResult } from './CubeExecutionState.js';
53
+ import { CubeGridFetchDropped } from './CubeGridFetcher.js';
54
+
55
+ /** How the grid shows a run (spec §12.1, PLAN §11.10) */
56
+ export enum CubeGridMode {
57
+ /** Each sort and drill-down level runs on the engine (the default) */
58
+ SERVER_SIDE = 'serverSide',
59
+ /** The run's rows, grouped, pivoted and filtered in the browser */
60
+ LOCAL = 'local',
61
+ }
62
+
63
+ /** The id ag-grid gives the column of the drill-down's groups */
64
+ export const CUBE_GRID_GROUP_COLUMN_ID = 'ag-Grid-AutoColumn';
65
+
66
+ /** A column's id in the grid: its position, as `c<position>` */
67
+ export const CUBE_GRID_COLUMN_ID_PREFIX = 'c';
68
+
69
+ /** A row of the server-side grid: a group of the drill-down, or a row of the run */
70
+ export interface CubeGridRowData {
71
+ /** Unique among the grid's rows: its group's keys, typed, or its group's and its position */
72
+ readonly id: string;
73
+ /** The keys of its group and the groups around it, outermost first, as the engine returned them */
74
+ readonly keys: readonly DrilldownCell[];
75
+ readonly isGroup: boolean;
76
+ /** Each run column's value, `undefined` where a group row shows none */
77
+ readonly cells: readonly (CubeResultValue | undefined)[];
78
+ /** On a group row, how many of the run's rows it holds */
79
+ readonly count?: number | undefined;
80
+ }
81
+
82
+ /** A sort ag-grid asks for: a column's id and its direction */
83
+ export interface CubeGridSortRequest {
84
+ readonly colId: string;
85
+ readonly sort: 'asc' | 'desc';
86
+ }
87
+
88
+ const NO_DRILLDOWN = Object.freeze({ columns: [], aggregations: [] });
89
+
90
+ /**
91
+ * The grid's state beyond the run (PLAN §11.10): its mode, remembered for the
92
+ * user, and in server-side mode the rows of each level ag-grid asks for, from
93
+ * the run on screen (`CubeGridFetcher`), with what the levels say: an error,
94
+ * and whether a level was cut at the row limit.
95
+ */
96
+ export class CubeGridState {
97
+ readonly editorState: CubeEditorState;
98
+ mode: CubeGridMode;
99
+ /** The last fetch's error, until the next fetch or a new run */
100
+ fetchError: CubeEngineError | undefined;
101
+ /** Some level shown was cut at the run's row limit */
102
+ hasLimitedLevel = false;
103
+ /** Fetches in flight */
104
+ fetching = 0;
105
+ /** The grid on screen: answers for an earlier one are left alone */
106
+ private gridToken = 0;
107
+ /** The drill-down's settings dialog is open */
108
+ isSettingsOpen = false;
109
+ /** The column whose format the Format Column dialog edits, while it is open */
110
+ formatColumn: string | undefined;
111
+
112
+ constructor(editorState: CubeEditorState) {
113
+ makeObservable(this, {
114
+ mode: observable,
115
+ fetchError: observable.ref,
116
+ hasLimitedLevel: observable,
117
+ fetching: observable,
118
+ drilldown: computed,
119
+ setMode: action,
120
+ addLevel: action,
121
+ removeLevel: action,
122
+ setAggregation: action,
123
+ clearDrilldown: action,
124
+ openSettings: action,
125
+ closeSettings: action,
126
+ isSettingsOpen: observable,
127
+ isSettingsShown: computed,
128
+ formatColumn: observable,
129
+ openFormat: action,
130
+ closeFormat: action,
131
+ setColumnFormat: action,
132
+ clearFetchError: action,
133
+ resetLevels: action,
134
+ });
135
+ this.editorState = editorState;
136
+ const stored =
137
+ editorState.host.applicationStore.userDataService.getStringValue(
138
+ LEGEND_CUBE_USER_DATA_KEY.GRID_MODE,
139
+ );
140
+ this.mode =
141
+ stored === CubeGridMode.LOCAL
142
+ ? CubeGridMode.LOCAL
143
+ : CubeGridMode.SERVER_SIDE;
144
+ }
145
+
146
+ get isServerSide(): boolean {
147
+ return this.mode === CubeGridMode.SERVER_SIDE;
148
+ }
149
+
150
+ /** The cube's drill-down, checked against the run on screen; none without a run */
151
+ get drilldown(): CheckedDrilldown | undefined {
152
+ const { result } = this.editorState.execution;
153
+ return result
154
+ ? checkDrilldown(
155
+ this.editorState.document.meta.drilldown ?? NO_DRILLDOWN,
156
+ result.schema,
157
+ )
158
+ : undefined;
159
+ }
160
+
161
+ /**
162
+ * Shows the run another way. Both modes show the same run, so nothing runs
163
+ * again: local mode shows its rows, server-side mode fetches what it needs
164
+ */
165
+ setMode(mode: CubeGridMode): void {
166
+ this.mode = mode;
167
+ this.editorState.host.applicationStore.userDataService.persistValue(
168
+ LEGEND_CUBE_USER_DATA_KEY.GRID_MODE,
169
+ mode,
170
+ );
171
+ }
172
+
173
+ /**
174
+ * Why 'Drilldown by' can't be used on the run's column, if it can't: a
175
+ * type that can't be grouped, a column that is a level already, a cube
176
+ * saved by a newer version
177
+ */
178
+ getAddLevelBlocker(column: string): string | undefined {
179
+ const { editorState } = this;
180
+ const type = editorState.execution.result?.schema.type(column);
181
+ if (editorState.readOnly) {
182
+ return READ_ONLY_CUBE_TITLE;
183
+ }
184
+ if (!type || !isDrilldownLevelType(type)) {
185
+ return CUBE_DRILLDOWN_BLOCKER.notGroupable(type?.displayName ?? '');
186
+ }
187
+ return (editorState.document.meta.drilldown?.columns ?? []).some(
188
+ (level) => foldColumnName(level) === foldColumnName(column),
189
+ )
190
+ ? CUBE_DRILLDOWN_BLOCKER.ALREADY_A_LEVEL
191
+ : undefined;
192
+ }
193
+
194
+ private setDrilldown(drilldown: Drilldown | undefined): void {
195
+ const { editorState } = this;
196
+ const { meta } = editorState.document;
197
+ const { drilldown: _, ...others } = meta;
198
+ editorState.applyDocument(
199
+ editorState.document.withMeta(
200
+ isEmptyDrilldown(drilldown) ? others : { ...meta, drilldown },
201
+ ),
202
+ );
203
+ }
204
+
205
+ /**
206
+ * Adds the column as the drill-down's innermost level, an undo step that
207
+ * leaves the rows current (spec §12.4); the grid shows it server-side,
208
+ * the only mode with levels (spec §12.1)
209
+ */
210
+ addLevel(column: string): void {
211
+ if (this.getAddLevelBlocker(column) !== undefined) {
212
+ return;
213
+ }
214
+ this.setDrilldown(
215
+ addDrilldownLevel(this.editorState.document.meta.drilldown, column),
216
+ );
217
+ if (!this.isServerSide) {
218
+ this.setMode(CubeGridMode.SERVER_SIDE);
219
+ }
220
+ }
221
+
222
+ /** Removes the level at the position: the ones inside it move out */
223
+ removeLevel(index: number): void {
224
+ const { drilldown } = this.editorState.document.meta;
225
+ if (drilldown && !this.editorState.readOnly) {
226
+ this.setDrilldown(removeDrilldownLevel(drilldown, index));
227
+ }
228
+ }
229
+
230
+ /** Sets how a group row shows the run's column: a function, or nothing */
231
+ setAggregation(column: string, fn: AggregationFunction | null): void {
232
+ const type = this.editorState.execution.result?.schema.type(column);
233
+ if (type && !this.editorState.readOnly) {
234
+ this.setDrilldown(
235
+ setDrilldownAggregation(
236
+ this.editorState.document.meta.drilldown,
237
+ column,
238
+ type,
239
+ fn,
240
+ ),
241
+ );
242
+ }
243
+ }
244
+
245
+ /** Removes the drill-down: its levels and its aggregations */
246
+ clearDrilldown(): void {
247
+ if (!this.editorState.readOnly) {
248
+ this.closeSettings();
249
+ this.setDrilldown(undefined);
250
+ }
251
+ }
252
+
253
+ openSettings(): void {
254
+ this.isSettingsOpen = true;
255
+ }
256
+
257
+ closeSettings(): void {
258
+ this.isSettingsOpen = false;
259
+ }
260
+
261
+ openFormat(column: string): void {
262
+ this.formatColumn = column;
263
+ }
264
+
265
+ closeFormat(): void {
266
+ this.formatColumn = undefined;
267
+ }
268
+
269
+ /**
270
+ * Sets a number column's format, or removes it with `undefined`; with no
271
+ * column, the format of every number column (spec §13.1). An undo step
272
+ * that leaves the rows current.
273
+ */
274
+ setColumnFormat(
275
+ column: string | undefined,
276
+ format: ColumnFormat | undefined,
277
+ ): void {
278
+ const { editorState } = this;
279
+ if (editorState.readOnly) {
280
+ return;
281
+ }
282
+ const { meta } = editorState.document;
283
+ editorState.applyDocument(
284
+ editorState.document.withMeta({
285
+ ...meta,
286
+ presentation: {
287
+ ...meta.presentation,
288
+ columnHints: setColumnFormat(
289
+ meta.presentation.columnHints ?? [],
290
+ column,
291
+ format,
292
+ ),
293
+ },
294
+ }),
295
+ );
296
+ }
297
+
298
+ clearFetchError(): void {
299
+ this.fetchError = undefined;
300
+ }
301
+
302
+ /** A new grid on screen: what earlier levels said is forgotten */
303
+ resetLevels(): void {
304
+ this.fetchError = undefined;
305
+ this.hasLimitedLevel = false;
306
+ }
307
+
308
+ /**
309
+ * A new grid, for a new run or drill-down, taking its token for
310
+ * `loadRows`: the earlier grid's answers, still on their way, are then left
311
+ * alone, saying nothing (PLAN §11.10). Not observable, so a grid takes it
312
+ * as it renders, before its first request.
313
+ */
314
+ beginGrid(): number {
315
+ this.gridToken += 1;
316
+ return this.gridToken;
317
+ }
318
+
319
+ /** The drill-down's settings dialog shows: asked for, on a run with a drill-down */
320
+ get isSettingsShown(): boolean {
321
+ return (
322
+ this.isSettingsOpen &&
323
+ this.drilldown !== undefined &&
324
+ !isEmptyDrilldown(this.editorState.document.meta.drilldown)
325
+ );
326
+ }
327
+
328
+ /**
329
+ * The sort ag-grid asks for, by the run's column names: a column by its
330
+ * position; the groups' column by the level's own column at a group level,
331
+ * and not at all at the leaf
332
+ */
333
+ toSorts(
334
+ result: CubeExecutionResult,
335
+ sortModel: readonly CubeGridSortRequest[],
336
+ depth: number,
337
+ ): ColumnDirection[] {
338
+ const levels = this.drilldown?.columns ?? [];
339
+ return sortModel.flatMap(({ colId, sort }): ColumnDirection[] => {
340
+ const direction =
341
+ sort === 'desc' ? SortDirection.DESC : SortDirection.ASC;
342
+ if (colId === CUBE_GRID_GROUP_COLUMN_ID) {
343
+ const column = levels[depth];
344
+ return column === undefined ? [] : [{ column, direction }];
345
+ }
346
+ const column = colId.startsWith(CUBE_GRID_COLUMN_ID_PREFIX)
347
+ ? result.schema.columns[
348
+ Number(colId.slice(CUBE_GRID_COLUMN_ID_PREFIX.length))
349
+ ]
350
+ : undefined;
351
+ return column ? [{ column: column.name, direction }] : [];
352
+ });
353
+ }
354
+
355
+ /**
356
+ * The rows under a group, by its keys (none for the top level), sorted as
357
+ * ag-grid asks. The run's own rows when nothing is derived (no drill-down
358
+ * level, no sort), else a fetched level. Resolves to `undefined` for rows
359
+ * the grid no longer shows, which are then left alone.
360
+ */
361
+ async loadRows(
362
+ result: CubeExecutionResult,
363
+ keys: readonly DrilldownCell[],
364
+ sortModel: readonly CubeGridSortRequest[],
365
+ token = this.gridToken,
366
+ ): Promise<CubeGridRowData[] | undefined> {
367
+ const parentId = JSON.stringify(keys);
368
+ const sorts = this.toSorts(result, sortModel, keys.length);
369
+ if (!keys.length && !this.drilldown?.columns.length && !sorts.length) {
370
+ return result.rows.map((row, index) => ({
371
+ id: `${parentId}#${index}`,
372
+ keys,
373
+ isGroup: false,
374
+ cells: row,
375
+ }));
376
+ }
377
+ this.track(1);
378
+ try {
379
+ const level = await this.editorState.gridFetcher.fetchLevel(
380
+ result,
381
+ keys,
382
+ sorts,
383
+ );
384
+ if (token !== this.gridToken) {
385
+ return undefined;
386
+ }
387
+ this.noteLevel(level.limited);
388
+ const levels = this.drilldown?.columns ?? [];
389
+ const keyAt = level.level.isLeaf
390
+ ? -1
391
+ : result.schema.names().indexOf(levels[keys.length] as string);
392
+ return level.rows.map((row, index) => {
393
+ if (level.level.isLeaf) {
394
+ return {
395
+ id: `${parentId}#${index}`,
396
+ keys,
397
+ isGroup: false,
398
+ cells: row.cells,
399
+ };
400
+ }
401
+ const groupKeys = [...keys, row.cells[keyAt] ?? null];
402
+ return {
403
+ id: JSON.stringify(groupKeys),
404
+ keys: groupKeys,
405
+ isGroup: true,
406
+ cells: row.cells,
407
+ count: row.count,
408
+ };
409
+ });
410
+ } catch (error) {
411
+ if (error instanceof CubeGridFetchDropped || token !== this.gridToken) {
412
+ return undefined;
413
+ }
414
+ this.noteError(
415
+ error instanceof CubeEngineError
416
+ ? error
417
+ : new CubeEngineError(
418
+ CubeEngineErrorKind.EXECUTION,
419
+ error instanceof Error ? error.message : String(error),
420
+ ),
421
+ );
422
+ throw error;
423
+ } finally {
424
+ this.track(-1);
425
+ }
426
+ }
427
+
428
+ private track(change: number): void {
429
+ runInAction(() => {
430
+ this.fetching += change;
431
+ if (change > 0) {
432
+ this.fetchError = undefined;
433
+ }
434
+ });
435
+ }
436
+
437
+ private noteLevel(limited: boolean): void {
438
+ if (limited) {
439
+ runInAction(() => {
440
+ this.hasLimitedLevel = true;
441
+ });
442
+ }
443
+ }
444
+
445
+ private noteError(error: CubeEngineError): void {
446
+ runInAction(() => {
447
+ this.fetchError = error;
448
+ });
449
+ }
450
+ }
@@ -18,6 +18,7 @@ import type { GenericLegendApplicationStore } from '@finos/legend-application';
18
18
  import type { ModelContext } from '@finos/legend-cube';
19
19
  import type { CubeConnectionExplorer } from '../graph-manager/CubeConnectionExplorer.js';
20
20
  import type { CubeDataProductCatalog } from '../graph-manager/CubeDataProductCatalog.js';
21
+ import type { CubeEngineClientSettings } from '../graph-manager/CubeEngineClientSettings.js';
21
22
  import type { CubeIngestCatalog } from '../graph-manager/CubeIngestCatalog.js';
22
23
  import {
23
24
  CubeEngineError,
@@ -31,6 +32,7 @@ import {
31
32
  isCubeProjectModel,
32
33
  } from '../graph-manager/CubeProject.js';
33
34
  import type { CubeProjectCatalog } from '../graph-manager/CubeProjectCatalog.js';
35
+ import type { CubeServiceCatalog } from '../graph-manager/CubeServiceCatalog.js';
34
36
  import type { LocalModelCatalog } from './LocalModelCatalog.js';
35
37
 
36
38
  /**
@@ -64,8 +66,54 @@ export interface CubeHost {
64
66
  * source dialog offers no projects
65
67
  */
66
68
  readonly projectCatalog?: CubeProjectCatalog | undefined;
69
+ /**
70
+ * The deployed services (PLAN §6.4), in progress; without one, the source
71
+ * dialog offers no services
72
+ */
73
+ readonly serviceCatalog?: CubeServiceCatalog | undefined;
74
+ /**
75
+ * The engine URL and request compression its engine clients share, which
76
+ * Dev Settings changes (PLAN §11.16); without them, Dev Settings can't
77
+ * change either
78
+ */
79
+ readonly engineClientSettings?: CubeEngineClientSettings | undefined;
80
+ /**
81
+ * Whether the page offers Cube's sample data: the source dialog's Sample
82
+ * Data tab and the Examples. Offered unless the host says no, as Studio
83
+ * does, where a cube reads only the project's ingest definitions
84
+ */
85
+ readonly offersSampleData?: boolean | undefined;
86
+ /**
87
+ * The one project whose own sources the page reads, e.g. the one Studio
88
+ * edits: the source dialog lists its ingest definitions and data products
89
+ * by name and path, with no class, deployment or search across the
90
+ * platform, and says which lakehouse runtime its runs use
91
+ */
92
+ readonly project?: CubeHostProject | undefined;
93
+ }
94
+
95
+ /** The lakehouse runtime a project's runs use, as the source dialog shows it */
96
+ export interface CubeHostProjectRuntime {
97
+ /** e.g. `demo-dev, from demo::ingest::LakehouseRuntime` */
98
+ readonly label: string;
99
+ /** The warehouse a new cube starts on, when the runtime names one */
100
+ readonly warehouse?: string | undefined;
67
101
  }
68
102
 
103
+ /** The one project a host's page reads the sources of (`CubeHost.project`) */
104
+ export interface CubeHostProject {
105
+ /** Its lakehouse runtime; fails with a `CubeEngineError` saying why when it has none */
106
+ resolveRuntime(): Promise<CubeHostProjectRuntime>;
107
+ }
108
+
109
+ /** Whether the host's page reads one project's own sources, as Studio's does */
110
+ export const isCubeProjectHost = (host: CubeHost): boolean =>
111
+ host.project !== undefined;
112
+
113
+ /** Whether the host offers Cube's sample data and examples */
114
+ export const isCubeSampleDataOffered = (host: CubeHost): boolean =>
115
+ host.offersSampleData !== false;
116
+
69
117
  /** Why the host can't list a project model's Databases */
70
118
  const NO_PROJECT_CATALOG =
71
119
  "This page can't read published projects: its host has no depot";