@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
package/docs/hosting.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # Hosting the Cube page
2
2
 
3
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`.
4
+ main host: `LegendQueryCubeHost` (`src/stores/cube/`), and the lazy route and page (`src/components/cube/`) of
5
+ `@finos/legend-application-query`. Legend Studio hosts it too, from an ingest definition's editor (see
6
+ [Legend Studio](#legend-studio-create-matview)).
6
7
 
7
8
  ## The host
8
9
 
@@ -15,6 +16,9 @@ interface CubeHost {
15
16
  readonly dataProductCatalog?: CubeDataProductCatalog | undefined;
16
17
  readonly ingestCatalog?: CubeIngestCatalog | undefined;
17
18
  readonly projectCatalog?: CubeProjectCatalog | undefined;
19
+ readonly serviceCatalog?: CubeServiceCatalog | undefined;
20
+ /** False to leave out the Sample Data tab and the Examples, as Studio does */
21
+ readonly offersSampleData?: boolean | undefined;
18
22
  }
19
23
  ```
20
24
 
@@ -25,7 +29,10 @@ interface CubeHost {
25
29
  and options, so Cube talks to the engine its query editor uses.
26
30
  - **The models:** `new LocalModelCatalog(engine)`. It offers `BUNDLED_MODELS` (the Northwind, Sports and Trades datasets of the Sample Data tab)
27
31
  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
32
+ database types, which Drop, Slice, Limit and Distinct need on some databases (PLAN §11.4), and which tell DuckDB's
33
+ refusal of `%` and `_` in filter patterns (PLAN §8.2) and where Pivot can run (PLAN §11.12). A data product or
34
+ ingest cube's database is the one its lakehouse runtime routes to, from one table in `CubeLakehouseRuntime.ts`
35
+ (Snowflake for now). Users can also paste a Pure
29
36
  model.
30
37
  - **Direct database connections (optional):** `buildCubeConnectionExplorer(config, tracerService)` builds the explorer
31
38
  that reads the database behind a connection through the engine's schema exploration
@@ -108,6 +115,46 @@ lives as long as the page; Legend Query makes a new host on each visit.
108
115
  in-memory H2 database through its connection's `testDataSetupSqls`. On an engine that forbids LocalH2, its queries don't
109
116
  run.
110
117
 
118
+ ## Legend Studio: Create MatView
119
+
120
+ An ingest definition's editor in Studio offers **Create MatView** where `NonProductionFeatureFlag` is on
121
+ (`EmbeddedCubeState`, `src/stores/editor/embedded-cube/` of `@finos/legend-application-studio`). The page opens full
122
+ screen over the editor, as the embedded query builder does, with `LegendStudioCubeHost`:
123
+
124
+ - **The project:** `CubeHost.project` (`LegendStudioCubeWorkspace`) says the page reads one project's own sources. The
125
+ source dialog's Ingest and Data Product tabs then list that project's definitions and products by name, each path
126
+ muted beside it, with no class, producer deployment, search or warehouse to pick, and name the lakehouse runtime
127
+ its runs use: the project's first, the one Studio's own queries of an ingest definition or a data product pick.
128
+ Without one, the tabs say to add one. No sample data or examples (`offersSampleData: false`), databases or
129
+ services; one kind of source per cube, as in Legend Query.
130
+ - **Ingest data sets:** `LegendStudioCubeIngestCatalog` lists the workspace's definitions under one producer that
131
+ stands for the project, names each by the URN it would have if the project deployed it (`formatCubeIngestUrn`),
132
+ and types their data sets from their content (`readCubeIngestDataSets`), with no engine call.
133
+ - **Data products:** `LegendStudioCubeDataProductCatalog` lists the workspace's products, as version `workspace`, and
134
+ types their lakehouse access points with the engine (`#P{product.accessPoint}#`), a product's in one call.
135
+ - **The model typing and runs read:** the workspace, as Studio's own queries send it: the ingest catalog's
136
+ `getModelElements` (`ingestDefinitionSource` on `buildCubeEngine`) and the workspace's `getProjectModel`
137
+ (`dataProductModelSource`), in place of the deployed definitions and the project's deployed version. A run adds
138
+ Cube's lakehouse runtime, in the project runtime's environment (`lakehouseEnvironment`), on the cube's warehouse,
139
+ which starts as the runtime's.
140
+ - **Add MatView:** a button the host adds to the header (`headerActions` on `CubeEditor`) takes the step that runs
141
+ as a lambda with no runtime and no row limit (`buildCubeRunningStepLambda`), asks for a name, a classification of
142
+ its data and a primary key among the step's columns (`analysis.schemas` of the selected step), and appends a
143
+ `FunctionSource` data set to the definition. Studio sees it as a local change; Lineage and View SQL work on it.
144
+ - **Edit MatView:** the button's menu lists the definition's materialized views. Cube opens on one, read back into
145
+ its steps (`initialLambda` on `CubeEditor`, Import Pure, PLAN §11.18): the host binds its sources as the source
146
+ dialog would add them, and a banner says when Cube writes the view another way. The header button is then
147
+ **Save MatView**, which replaces that view's lambda in place, keeping its name, place and other keys, and adding
148
+ the empty lists the engine reads that it lacks. When the view has no classification of its data, or its primary
149
+ key has a column the step no longer has, Save MatView first asks for them again in Add MatView's dialog.
150
+ - **Loading:** Studio loads Cube with the dialog, on its first opening (`React.lazy`), so Cube's code stays out of
151
+ Studio's main bundle.
152
+
153
+ While the page is open, Studio's own shortcuts are off (its F9 compiles), and Cube's are on: Studio's core plugin
154
+ contributes `LEGEND_CUBE_COMMAND_CONFIG`. The floating step editor is placed in the dialog that hosts the page, so the
155
+ dialog doesn't hide it. In a light theme, Cube's dialogs draw their primary button as an accent button
156
+ (`CubeDialogTheme.ts`): legend-art's light variant draws it grey.
157
+
111
158
  ## Shortcuts
112
159
 
113
160
  A Legend application binds keys only through its plugins. The host returns the page's commands from one of its
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;AAgCH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA+ChE,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,32 @@
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, 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.',
32
36
  [Filter.TYPE]: 'Reduces the number of rows in the previous data set, keeping only rows matching the specified criteria.',
37
+ /** Added by Cube: the original has no filter by expression (PLAN §11.11) */
38
+ [ExpressionFilter.TYPE]: 'Reduces the number of rows in the previous data set, keeping only rows for which the expression is true.',
33
39
  [Group.TYPE]: 'Aggregates the data from the previous data set using the specified columns and aggregation functions.',
40
+ /** Added by Cube: the original has pivot only in the grid (PLAN §11.12) */
41
+ [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
42
  [Join.TYPE]: 'Joins two previous data sets using specified columns as join keys.',
35
43
  [Partition.TYPE]: 'Adds new columns with outputs of window functions for optional window partition and order.',
36
44
  [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 +49,9 @@ export const CUBE_NODE_HELP_TEXT = {
41
49
  [UnknownNode.TYPE]: 'Source or transformation unknown to the application.',
42
50
  };
43
51
  /** 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.';
52
+ export const SELECT_NODE_TOOLTIP = 'Make this the step that runs: Execute shows its rows in the grid.';
53
+ /** The marker on the step that runs, on the canvas and in its editor */
54
+ export const RUNNING_NODE_LABEL = 'Runs';
55
+ /** What a node's menu and editor call making it the step that runs */
56
+ export const RUN_THIS_STEP_LABEL = 'Run this step';
45
57
  //# 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,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,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
+ * can be empty, e.g. `Text, can be empty`; an enumeration, or a type Cube
84
+ * doesn't know, by its name. The exact type (`getExactColumnTypeLabel`) is
85
+ * 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;
@@ -71,10 +102,21 @@ export declare const CUBE_QUICK_ACTION_DISABLED_REASON: {
71
102
  RUNNING: string;
72
103
  EDITING: string;
73
104
  UNREADABLE_VALUE: string;
105
+ /** On a group row's cell that holds its aggregation (PLAN §11.10) */
106
+ AGGREGATE_VALUE: string;
107
+ /** On a group row's cell that shows nothing */
108
+ NO_VALUE: string;
74
109
  notSortable: (typeName: string) => string;
75
110
  notGroupable: (typeName: string) => string;
76
111
  notComparable: (typeName: string) => string;
77
112
  };
113
+ /** Why 'Format Column' can't be used on a column (spec §13.1) */
114
+ export declare const CUBE_FORMAT_NOT_A_NUMBER = "Only number columns can be formatted.";
115
+ /** Why 'Drilldown by' can't be used on a column (PLAN §11.10) */
116
+ export declare const CUBE_DRILLDOWN_BLOCKER: {
117
+ ALREADY_A_LEVEL: string;
118
+ notGroupable: (typeName: string) => string;
119
+ };
78
120
  /** Beside a condition comparing a floating-point column for equality (R133) */
79
121
  export declare const FILTER_FLOAT_COMPARISON_HINT = "exact comparison on floating-point columns may not match";
80
122
  /** The Filter and Join editors' warning on a column that can hold both dates and timestamps (PLAN §11.5) */
@@ -117,6 +159,31 @@ export declare const getConcatUntypedWarning: (columns: readonly string[]) => st
117
159
  export declare const CUBE_GROUP_COLUMN_DISABLED_REASON = "can't be grouped";
118
160
  /** What the Group editor says about its aggregations (PLAN §11.5; Count counts non-empty values, D4) */
119
161
  export declare const GROUP_EDITOR_NOTES: string[];
162
+ /** Why the Pivot editor won't take a column (PLAN §11.12), shown after the column's type */
163
+ export declare const PIVOT_COLUMN_DISABLED_REASON: {
164
+ /** a row column that can't be compared */
165
+ readonly NOT_GROUPABLE: "can't be grouped";
166
+ /** a pivot column of another type than a String, an integer, a StrictDate or a Boolean */
167
+ readonly NOT_PIVOTABLE: "can't be pivoted";
168
+ /** a column the pivot uses for another part */
169
+ readonly PIVOT_COLUMN: "the pivot column";
170
+ readonly ROW_COLUMN: "a row column";
171
+ readonly AGGREGATED: "the aggregated column";
172
+ };
173
+ /** Why the Pivot editor won't tick a value (PLAN §11.12) */
174
+ export declare const PIVOT_VALUE_DISABLED_REASON: {
175
+ readonly NOT_A_COLUMN_NAME: "can't name a column";
176
+ /** another value ticked has the same text in another case */
177
+ readonly DIFFERS_ONLY_IN_CASE: "only its case differs from a ticked value";
178
+ /** as many values are ticked as a Pivot takes */
179
+ readonly TOO_MANY: "as many values as a Pivot takes are ticked";
180
+ };
181
+ /** What the Pivot editor says (PLAN §11.12) */
182
+ 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."];
183
+ /** Says that Load values found no value to list (PLAN §11.12) */
184
+ export declare const PIVOT_NO_VALUES_NOTICE = "The pivot column has no value to list: its rows are all empty, or there are none.";
185
+ /** Says that the engine has more values than the Pivot editor lists (PLAN §11.12) */
186
+ export declare const getPivotValuesCutNotice: (shown: number) => string;
120
187
  /** Why the Partition editor won't tick a column that can't be compared (PLAN §11.6) */
121
188
  export declare const CUBE_PARTITION_COLUMN_DISABLED_REASON = "can't be partitioned by";
122
189
  /** What a Partition row shows in the column's place for a function that takes none (PLAN §11.6) */
@@ -141,20 +208,45 @@ export declare const EXTEND_APPLY_DISABLED_REASON: Readonly<{
141
208
  }>;
142
209
  /** The warning on an Extend whose saved types the engine couldn't check again, e.g. offline (PLAN §11.7) */
143
210
  export declare const getExtendRetypeWarning: (firstLine: string) => string;
211
+ /** The warning on a Filter by Expression whose condition the engine couldn't check again, e.g. offline (PLAN §11.11) */
212
+ export declare const getConditionRecheckWarning: (firstLine: string) => string;
144
213
  /** 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
214
  export declare const getEditorKeptOpenNotice: (nodeId: string, waiting: string) => string;
215
+ /** Why the Filter by Expression editor's Apply waits (PLAN §11.11) */
216
+ export declare const EXPRESSION_FILTER_APPLY_DISABLED_REASON: Readonly<{
217
+ NOT_VALIDATED: "Validate the condition first (F10)";
218
+ VALIDATING: "Validating the condition";
219
+ }>;
220
+ /**
221
+ * The hint after an engine error on `and`, `or` or `not` given something
222
+ * other than a Boolean, which Pure's precedence usually causes: comparisons
223
+ * bind no tighter than `&&`, `||` and `!` (PLAN §11.11)
224
+ */
225
+ export declare const EXPRESSION_FILTER_PARENTHESES_HINT = "Put each comparison in parentheses: ($x.A > 1) && ($x.B > 3).";
226
+ /** What the Filter by Expression editor says about conditions (PLAN §11.11) */
227
+ 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.", "A column that can be empty, 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 _."];
146
228
  /** The hint after an engine error on a column that can be empty, in arithmetic (PLAN §11.7) */
147
229
  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) */
230
+ /** The problem a database refusing an Extend's or a Filter by Expression's plan gives (PLAN §11.7, §11.11) */
149
231
  export declare const getExtendPlanProblem: (databaseType: string | undefined, detail: string) => string;
150
232
  /** Under the Rename editor's rows: the rule for new column names (PLAN §11.4) */
151
233
  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
234
  /**
153
235
  * 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
236
+ * capitalised but `a`, `an` and `of` (QUESTIONS.md U1(a)), e.g. 'Take a Range
237
+ * of Rows'; the registry keeps its own wording
156
238
  */
157
239
  export declare const toEditorTitle: (label: string) => string;
158
240
  /** The source dialog's body until a tab is chosen, opened from the empty canvas (spec §17.8, U4(b)) */
159
241
  export declare const SELECT_SOURCE_TYPE_PROMPT = "Select source type above";
242
+ /** Why the source dialog's Add is disabled: nothing picked yet, or not ready */
243
+ export declare const CUBE_PICK_TO_ADD_TITLE = "Pick what to add first";
244
+ /**
245
+ * The badge a node type shows beside its name: WIP for one that doesn't
246
+ * work yet (a service, PLAN §6.4), else BETA for one in beta, else none
247
+ */
248
+ export declare const getCubeNodeBadge: (definition: {
249
+ readonly beta: boolean;
250
+ readonly wip?: boolean | undefined;
251
+ }) => "WIP" | "BETA" | undefined;
160
252
  //# sourceMappingURL=LegendCubeLabels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LegendCubeLabels.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeLabels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LegendCubeLabels.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeLabels.ts"],"names":[],"mappings":"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"}