@finos/legend-cube-builder 0.0.3 → 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 (971) hide show
  1. package/README.md +59 -20
  2. package/docs/adding-an-operation.md +112 -13
  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 +132 -7
  12. package/docs/testing.md +146 -9
  13. package/lib/__lib__/LegendCubeCommand.d.ts +4 -1
  14. package/lib/__lib__/LegendCubeCommand.d.ts.map +1 -1
  15. package/lib/__lib__/LegendCubeCommand.js +12 -0
  16. package/lib/__lib__/LegendCubeCommand.js.map +1 -1
  17. package/lib/__lib__/LegendCubeDataProductLabels.d.ts +45 -0
  18. package/lib/__lib__/LegendCubeDataProductLabels.d.ts.map +1 -0
  19. package/lib/__lib__/LegendCubeDataProductLabels.js +60 -0
  20. package/lib/__lib__/LegendCubeDataProductLabels.js.map +1 -0
  21. package/lib/__lib__/LegendCubeDirectConnectionLabels.d.ts +56 -0
  22. package/lib/__lib__/LegendCubeDirectConnectionLabels.d.ts.map +1 -0
  23. package/lib/__lib__/LegendCubeDirectConnectionLabels.js +76 -0
  24. package/lib/__lib__/LegendCubeDirectConnectionLabels.js.map +1 -0
  25. package/lib/__lib__/LegendCubeFunctionLabels.d.ts +29 -0
  26. package/lib/__lib__/LegendCubeFunctionLabels.d.ts.map +1 -0
  27. package/lib/__lib__/LegendCubeFunctionLabels.js +31 -0
  28. package/lib/__lib__/LegendCubeFunctionLabels.js.map +1 -0
  29. package/lib/__lib__/LegendCubeHelpText.d.ts +5 -1
  30. package/lib/__lib__/LegendCubeHelpText.d.ts.map +1 -1
  31. package/lib/__lib__/LegendCubeHelpText.js +25 -3
  32. package/lib/__lib__/LegendCubeHelpText.js.map +1 -1
  33. package/lib/__lib__/LegendCubeIngestLabels.d.ts +25 -0
  34. package/lib/__lib__/LegendCubeIngestLabels.d.ts.map +1 -0
  35. package/lib/__lib__/LegendCubeIngestLabels.js +29 -0
  36. package/lib/__lib__/LegendCubeIngestLabels.js.map +1 -0
  37. package/lib/__lib__/LegendCubeLabels.d.ts +171 -6
  38. package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -1
  39. package/lib/__lib__/LegendCubeLabels.js +226 -13
  40. package/lib/__lib__/LegendCubeLabels.js.map +1 -1
  41. package/lib/__lib__/LegendCubeProjectLabels.d.ts +22 -0
  42. package/lib/__lib__/LegendCubeProjectLabels.d.ts.map +1 -0
  43. package/lib/__lib__/LegendCubeProjectLabels.js +23 -0
  44. package/lib/__lib__/LegendCubeProjectLabels.js.map +1 -0
  45. package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts +26 -0
  46. package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts.map +1 -0
  47. package/lib/__lib__/LegendCubeProjectSourceLabels.js +26 -0
  48. package/lib/__lib__/LegendCubeProjectSourceLabels.js.map +1 -0
  49. package/lib/__lib__/LegendCubeServiceLabels.d.ts +27 -0
  50. package/lib/__lib__/LegendCubeServiceLabels.d.ts.map +1 -0
  51. package/lib/__lib__/LegendCubeServiceLabels.js +32 -0
  52. package/lib/__lib__/LegendCubeServiceLabels.js.map +1 -0
  53. package/lib/__lib__/LegendCubeTesting.d.ts +8 -0
  54. package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -1
  55. package/lib/__lib__/LegendCubeTesting.js +8 -0
  56. package/lib/__lib__/LegendCubeTesting.js.map +1 -1
  57. package/lib/__test-utils__/CubeCanvasTestUtils.d.ts.map +1 -1
  58. package/lib/__test-utils__/CubeCanvasTestUtils.js +1 -1
  59. package/lib/__test-utils__/CubeCanvasTestUtils.js.map +1 -1
  60. package/lib/__test-utils__/CubeConnectionTestSupport.d.ts +22 -0
  61. package/lib/__test-utils__/CubeConnectionTestSupport.d.ts.map +1 -0
  62. package/lib/__test-utils__/CubeConnectionTestSupport.js +30 -0
  63. package/lib/__test-utils__/CubeConnectionTestSupport.js.map +1 -0
  64. package/lib/__test-utils__/CubeDirectConnectionFixtures.d.ts +31 -0
  65. package/lib/__test-utils__/CubeDirectConnectionFixtures.d.ts.map +1 -0
  66. package/lib/__test-utils__/CubeDirectConnectionFixtures.js +63 -0
  67. package/lib/__test-utils__/CubeDirectConnectionFixtures.js.map +1 -0
  68. package/lib/__test-utils__/CubeEngineTestSupport.d.ts +13 -1
  69. package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -1
  70. package/lib/__test-utils__/CubeEngineTestSupport.js +23 -2
  71. package/lib/__test-utils__/CubeEngineTestSupport.js.map +1 -1
  72. package/lib/__test-utils__/CubeExpressionTestUtils.d.ts +44 -0
  73. package/lib/__test-utils__/CubeExpressionTestUtils.d.ts.map +1 -0
  74. package/lib/__test-utils__/CubeExpressionTestUtils.js +100 -0
  75. package/lib/__test-utils__/CubeExpressionTestUtils.js.map +1 -0
  76. package/lib/__test-utils__/CubeFunctionTestOutline.d.ts +26 -0
  77. package/lib/__test-utils__/CubeFunctionTestOutline.d.ts.map +1 -0
  78. package/lib/__test-utils__/CubeFunctionTestOutline.js +56 -0
  79. package/lib/__test-utils__/CubeFunctionTestOutline.js.map +1 -0
  80. package/lib/__test-utils__/CubeLambdaCorpus.d.ts +36 -0
  81. package/lib/__test-utils__/CubeLambdaCorpus.d.ts.map +1 -0
  82. package/lib/__test-utils__/CubeLambdaCorpus.js +83 -0
  83. package/lib/__test-utils__/CubeLambdaCorpus.js.map +1 -0
  84. package/lib/__test-utils__/CubeOperationsTestUtils.d.ts +25 -0
  85. package/lib/__test-utils__/CubeOperationsTestUtils.d.ts.map +1 -1
  86. package/lib/__test-utils__/CubeOperationsTestUtils.js +56 -10
  87. package/lib/__test-utils__/CubeOperationsTestUtils.js.map +1 -1
  88. package/lib/__test-utils__/CubePageTestUtils.d.ts +18 -0
  89. package/lib/__test-utils__/CubePageTestUtils.d.ts.map +1 -1
  90. package/lib/__test-utils__/CubePageTestUtils.js +46 -1
  91. package/lib/__test-utils__/CubePageTestUtils.js.map +1 -1
  92. package/lib/__test-utils__/CubeTestApplication.d.ts +14 -1
  93. package/lib/__test-utils__/CubeTestApplication.d.ts.map +1 -1
  94. package/lib/__test-utils__/CubeTestApplication.js +25 -1
  95. package/lib/__test-utils__/CubeTestApplication.js.map +1 -1
  96. package/lib/__test-utils__/FakeCubeConnectionExplorer.d.ts +33 -0
  97. package/lib/__test-utils__/FakeCubeConnectionExplorer.d.ts.map +1 -0
  98. package/lib/__test-utils__/FakeCubeConnectionExplorer.js +67 -0
  99. package/lib/__test-utils__/FakeCubeConnectionExplorer.js.map +1 -0
  100. package/lib/__test-utils__/FakeCubeDataProductCatalog.d.ts +45 -0
  101. package/lib/__test-utils__/FakeCubeDataProductCatalog.d.ts.map +1 -0
  102. package/lib/__test-utils__/FakeCubeDataProductCatalog.js +137 -0
  103. package/lib/__test-utils__/FakeCubeDataProductCatalog.js.map +1 -0
  104. package/lib/__test-utils__/FakeCubeEngine.d.ts +7 -0
  105. package/lib/__test-utils__/FakeCubeEngine.d.ts.map +1 -1
  106. package/lib/__test-utils__/FakeCubeEngine.js +31 -1
  107. package/lib/__test-utils__/FakeCubeEngine.js.map +1 -1
  108. package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts +41 -0
  109. package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts.map +1 -0
  110. package/lib/__test-utils__/FakeCubeIngestCatalog.js +123 -0
  111. package/lib/__test-utils__/FakeCubeIngestCatalog.js.map +1 -0
  112. package/lib/__test-utils__/FakeCubeProjectCatalog.d.ts +30 -0
  113. package/lib/__test-utils__/FakeCubeProjectCatalog.d.ts.map +1 -0
  114. package/lib/__test-utils__/FakeCubeProjectCatalog.js +64 -0
  115. package/lib/__test-utils__/FakeCubeProjectCatalog.js.map +1 -0
  116. package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts +26 -0
  117. package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts.map +1 -0
  118. package/lib/__test-utils__/FakeCubeServiceCatalog.js +40 -0
  119. package/lib/__test-utils__/FakeCubeServiceCatalog.js.map +1 -0
  120. package/lib/components/CubeAddItems.d.ts +35 -0
  121. package/lib/components/CubeAddItems.d.ts.map +1 -0
  122. package/lib/components/CubeAddItems.js +85 -0
  123. package/lib/components/CubeAddItems.js.map +1 -0
  124. package/lib/components/CubeDialogTheme.d.ts +25 -0
  125. package/lib/components/CubeDialogTheme.d.ts.map +1 -0
  126. package/lib/components/CubeDialogTheme.js +25 -0
  127. package/lib/components/CubeDialogTheme.js.map +1 -0
  128. package/lib/components/CubeEditor.d.ts +17 -2
  129. package/lib/components/CubeEditor.d.ts.map +1 -1
  130. package/lib/components/CubeEditor.js +39 -17
  131. package/lib/components/CubeEditor.js.map +1 -1
  132. package/lib/components/CubeEntrySourceBanner.d.ts +23 -0
  133. package/lib/components/CubeEntrySourceBanner.d.ts.map +1 -0
  134. package/lib/components/CubeEntrySourceBanner.js +32 -0
  135. package/lib/components/CubeEntrySourceBanner.js.map +1 -0
  136. package/lib/components/CubeFileMenu.d.ts +28 -0
  137. package/lib/components/CubeFileMenu.d.ts.map +1 -0
  138. package/lib/components/CubeFileMenu.js +77 -0
  139. package/lib/components/CubeFileMenu.js.map +1 -0
  140. package/lib/components/CubeLambdaImportBanner.d.ts +26 -0
  141. package/lib/components/CubeLambdaImportBanner.d.ts.map +1 -0
  142. package/lib/components/CubeLambdaImportBanner.js +47 -0
  143. package/lib/components/CubeLambdaImportBanner.js.map +1 -0
  144. package/lib/components/CubeNodeIcon.d.ts.map +1 -1
  145. package/lib/components/CubeNodeIcon.js +12 -1
  146. package/lib/components/CubeNodeIcon.js.map +1 -1
  147. package/lib/components/CubeSchemaColumnsTable.d.ts +21 -0
  148. package/lib/components/CubeSchemaColumnsTable.d.ts.map +1 -0
  149. package/lib/components/CubeSchemaColumnsTable.js +6 -0
  150. package/lib/components/CubeSchemaColumnsTable.js.map +1 -0
  151. package/lib/components/canvas/CubeCanvas.d.ts +4 -3
  152. package/lib/components/canvas/CubeCanvas.d.ts.map +1 -1
  153. package/lib/components/canvas/CubeCanvas.js +68 -16
  154. package/lib/components/canvas/CubeCanvas.js.map +1 -1
  155. package/lib/components/canvas/CubeCanvasContextMenu.d.ts +8 -4
  156. package/lib/components/canvas/CubeCanvasContextMenu.d.ts.map +1 -1
  157. package/lib/components/canvas/CubeCanvasContextMenu.js +20 -9
  158. package/lib/components/canvas/CubeCanvasContextMenu.js.map +1 -1
  159. package/lib/components/canvas/CubeCanvasDnd.d.ts +7 -5
  160. package/lib/components/canvas/CubeCanvasDnd.d.ts.map +1 -1
  161. package/lib/components/canvas/CubeCanvasDnd.js +14 -9
  162. package/lib/components/canvas/CubeCanvasDnd.js.map +1 -1
  163. package/lib/components/canvas/CubeCanvasElements.d.ts +18 -1
  164. package/lib/components/canvas/CubeCanvasElements.d.ts.map +1 -1
  165. package/lib/components/canvas/CubeCanvasElements.js +63 -5
  166. package/lib/components/canvas/CubeCanvasElements.js.map +1 -1
  167. package/lib/components/canvas/CubeCanvasLayout.js +1 -1
  168. package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -1
  169. package/lib/components/canvas/CubeCanvasNode.js +35 -21
  170. package/lib/components/canvas/CubeCanvasNode.js.map +1 -1
  171. package/lib/components/canvas/CubeCanvasNodeFocus.d.ts +22 -0
  172. package/lib/components/canvas/CubeCanvasNodeFocus.d.ts.map +1 -0
  173. package/lib/components/canvas/CubeCanvasNodeFocus.js +31 -0
  174. package/lib/components/canvas/CubeCanvasNodeFocus.js.map +1 -0
  175. package/lib/components/canvas/CubeNodeEditorAnchor.d.ts +44 -0
  176. package/lib/components/canvas/CubeNodeEditorAnchor.d.ts.map +1 -0
  177. package/lib/components/canvas/CubeNodeEditorAnchor.js +51 -0
  178. package/lib/components/canvas/CubeNodeEditorAnchor.js.map +1 -0
  179. package/lib/components/dev-settings/CubeDevSettings.d.ts +35 -0
  180. package/lib/components/dev-settings/CubeDevSettings.d.ts.map +1 -0
  181. package/lib/components/dev-settings/CubeDevSettings.js +50 -0
  182. package/lib/components/dev-settings/CubeDevSettings.js.map +1 -0
  183. package/lib/components/editors/CubeAggregationRowEditor.d.ts +48 -0
  184. package/lib/components/editors/CubeAggregationRowEditor.d.ts.map +1 -0
  185. package/lib/components/editors/CubeAggregationRowEditor.js +72 -0
  186. package/lib/components/editors/CubeAggregationRowEditor.js.map +1 -0
  187. package/lib/components/editors/CubeColumnChecklist.d.ts +42 -0
  188. package/lib/components/editors/CubeColumnChecklist.d.ts.map +1 -0
  189. package/lib/components/editors/CubeColumnChecklist.js +41 -0
  190. package/lib/components/editors/CubeColumnChecklist.js.map +1 -0
  191. package/lib/components/editors/CubeColumnPicker.d.ts.map +1 -1
  192. package/lib/components/editors/CubeColumnPicker.js +3 -3
  193. package/lib/components/editors/CubeColumnPicker.js.map +1 -1
  194. package/lib/components/editors/CubeConcatEditor.d.ts +33 -0
  195. package/lib/components/editors/CubeConcatEditor.d.ts.map +1 -0
  196. package/lib/components/editors/CubeConcatEditor.js +147 -0
  197. package/lib/components/editors/CubeConcatEditor.js.map +1 -0
  198. package/lib/components/editors/CubeDataProductSourceEditor.d.ts +25 -0
  199. package/lib/components/editors/CubeDataProductSourceEditor.d.ts.map +1 -0
  200. package/lib/components/editors/CubeDataProductSourceEditor.js +53 -0
  201. package/lib/components/editors/CubeDataProductSourceEditor.js.map +1 -0
  202. package/lib/components/editors/CubeDifferenceEditor.d.ts +25 -0
  203. package/lib/components/editors/CubeDifferenceEditor.d.ts.map +1 -0
  204. package/lib/components/editors/CubeDifferenceEditor.js +29 -0
  205. package/lib/components/editors/CubeDifferenceEditor.js.map +1 -0
  206. package/lib/components/editors/CubeExpressionFilterEditor.d.ts +25 -0
  207. package/lib/components/editors/CubeExpressionFilterEditor.d.ts.map +1 -0
  208. package/lib/components/editors/CubeExpressionFilterEditor.js +83 -0
  209. package/lib/components/editors/CubeExpressionFilterEditor.js.map +1 -0
  210. package/lib/components/editors/CubeExtendEditor.d.ts +27 -0
  211. package/lib/components/editors/CubeExtendEditor.d.ts.map +1 -0
  212. package/lib/components/editors/CubeExtendEditor.js +86 -0
  213. package/lib/components/editors/CubeExtendEditor.js.map +1 -0
  214. package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -1
  215. package/lib/components/editors/CubeFilterEditor.js +15 -4
  216. package/lib/components/editors/CubeFilterEditor.js.map +1 -1
  217. package/lib/components/editors/CubeFunctionSourceEditor.d.ts +25 -0
  218. package/lib/components/editors/CubeFunctionSourceEditor.d.ts.map +1 -0
  219. package/lib/components/editors/CubeFunctionSourceEditor.js +55 -0
  220. package/lib/components/editors/CubeFunctionSourceEditor.js.map +1 -0
  221. package/lib/components/editors/CubeGroupEditor.d.ts +28 -0
  222. package/lib/components/editors/CubeGroupEditor.d.ts.map +1 -0
  223. package/lib/components/editors/CubeGroupEditor.js +70 -0
  224. package/lib/components/editors/CubeGroupEditor.js.map +1 -0
  225. package/lib/components/editors/CubeIngestSourceEditor.d.ts +26 -0
  226. package/lib/components/editors/CubeIngestSourceEditor.d.ts.map +1 -0
  227. package/lib/components/editors/CubeIngestSourceEditor.js +47 -0
  228. package/lib/components/editors/CubeIngestSourceEditor.js.map +1 -0
  229. package/lib/components/editors/CubeJoinEditor.d.ts +2 -4
  230. package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -1
  231. package/lib/components/editors/CubeJoinEditor.js +21 -39
  232. package/lib/components/editors/CubeJoinEditor.js.map +1 -1
  233. package/lib/components/editors/CubeJoinKeyRows.d.ts +34 -0
  234. package/lib/components/editors/CubeJoinKeyRows.d.ts.map +1 -0
  235. package/lib/components/editors/CubeJoinKeyRows.js +65 -0
  236. package/lib/components/editors/CubeJoinKeyRows.js.map +1 -0
  237. package/lib/components/editors/CubeNodeEditorPanel.d.ts +7 -5
  238. package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -1
  239. package/lib/components/editors/CubeNodeEditorPanel.js +64 -16
  240. package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -1
  241. package/lib/components/editors/CubeNodeEditorPopper.d.ts +44 -0
  242. package/lib/components/editors/CubeNodeEditorPopper.d.ts.map +1 -0
  243. package/lib/components/editors/CubeNodeEditorPopper.js +133 -0
  244. package/lib/components/editors/CubeNodeEditorPopper.js.map +1 -0
  245. package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -1
  246. package/lib/components/editors/CubeNodeEditorRegistry.js +23 -1
  247. package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -1
  248. package/lib/components/editors/CubePartitionEditor.d.ts +30 -0
  249. package/lib/components/editors/CubePartitionEditor.d.ts.map +1 -0
  250. package/lib/components/editors/CubePartitionEditor.js +93 -0
  251. package/lib/components/editors/CubePartitionEditor.js.map +1 -0
  252. package/lib/components/editors/CubePivotEditor.d.ts +26 -0
  253. package/lib/components/editors/CubePivotEditor.d.ts.map +1 -0
  254. package/lib/components/editors/CubePivotEditor.js +93 -0
  255. package/lib/components/editors/CubePivotEditor.js.map +1 -0
  256. package/lib/components/editors/CubeRenameEditor.d.ts.map +1 -1
  257. package/lib/components/editors/CubeRenameEditor.js +6 -4
  258. package/lib/components/editors/CubeRenameEditor.js.map +1 -1
  259. package/lib/components/editors/CubeRestrictEditor.d.ts.map +1 -1
  260. package/lib/components/editors/CubeRestrictEditor.js +2 -2
  261. package/lib/components/editors/CubeRestrictEditor.js.map +1 -1
  262. package/lib/components/editors/CubeServiceSourceEditor.d.ts +25 -0
  263. package/lib/components/editors/CubeServiceSourceEditor.d.ts.map +1 -0
  264. package/lib/components/editors/CubeServiceSourceEditor.js +41 -0
  265. package/lib/components/editors/CubeServiceSourceEditor.js.map +1 -0
  266. package/lib/components/editors/CubeSortEditor.d.ts.map +1 -1
  267. package/lib/components/editors/CubeSortEditor.js +10 -37
  268. package/lib/components/editors/CubeSortEditor.js.map +1 -1
  269. package/lib/components/editors/CubeSortRowEditor.d.ts +47 -0
  270. package/lib/components/editors/CubeSortRowEditor.d.ts.map +1 -0
  271. package/lib/components/editors/CubeSortRowEditor.js +62 -0
  272. package/lib/components/editors/CubeSortRowEditor.js.map +1 -0
  273. package/lib/components/editors/CubeSourceEditor.d.ts.map +1 -1
  274. package/lib/components/editors/CubeSourceEditor.js +18 -5
  275. package/lib/components/editors/CubeSourceEditor.js.map +1 -1
  276. package/lib/components/editors/CubeWarehouseControl.d.ts +30 -0
  277. package/lib/components/editors/CubeWarehouseControl.d.ts.map +1 -0
  278. package/lib/components/editors/CubeWarehouseControl.js +44 -0
  279. package/lib/components/editors/CubeWarehouseControl.js.map +1 -0
  280. package/lib/components/editors/useCubeNodeEditorDismiss.d.ts +31 -0
  281. package/lib/components/editors/useCubeNodeEditorDismiss.d.ts.map +1 -0
  282. package/lib/components/editors/useCubeNodeEditorDismiss.js +83 -0
  283. package/lib/components/editors/useCubeNodeEditorDismiss.js.map +1 -0
  284. package/lib/components/examples/CubeExamplesDialog.d.ts +26 -0
  285. package/lib/components/examples/CubeExamplesDialog.d.ts.map +1 -0
  286. package/lib/components/examples/CubeExamplesDialog.js +68 -0
  287. package/lib/components/examples/CubeExamplesDialog.js.map +1 -0
  288. package/lib/components/grid/CubeColumnFormatDialog.d.ts +28 -0
  289. package/lib/components/grid/CubeColumnFormatDialog.d.ts.map +1 -0
  290. package/lib/components/grid/CubeColumnFormatDialog.js +94 -0
  291. package/lib/components/grid/CubeColumnFormatDialog.js.map +1 -0
  292. package/lib/components/grid/CubeDrilldownBar.d.ts +37 -0
  293. package/lib/components/grid/CubeDrilldownBar.d.ts.map +1 -0
  294. package/lib/components/grid/CubeDrilldownBar.js +77 -0
  295. package/lib/components/grid/CubeDrilldownBar.js.map +1 -0
  296. package/lib/components/grid/CubeGridRegion.d.ts.map +1 -1
  297. package/lib/components/grid/CubeGridRegion.js +56 -31
  298. package/lib/components/grid/CubeGridRegion.js.map +1 -1
  299. package/lib/components/grid/CubeGridValues.d.ts +47 -1
  300. package/lib/components/grid/CubeGridValues.d.ts.map +1 -1
  301. package/lib/components/grid/CubeGridValues.js +152 -1
  302. package/lib/components/grid/CubeGridValues.js.map +1 -1
  303. package/lib/components/grid/CubeResultGrid.d.ts +68 -5
  304. package/lib/components/grid/CubeResultGrid.d.ts.map +1 -1
  305. package/lib/components/grid/CubeResultGrid.js +316 -31
  306. package/lib/components/grid/CubeResultGrid.js.map +1 -1
  307. package/lib/components/grid/CubeRunStatsPanel.d.ts +28 -0
  308. package/lib/components/grid/CubeRunStatsPanel.d.ts.map +1 -0
  309. package/lib/components/grid/CubeRunStatsPanel.js +61 -0
  310. package/lib/components/grid/CubeRunStatsPanel.js.map +1 -0
  311. package/lib/components/grid/CubeServerSideGrid.d.ts +36 -0
  312. package/lib/components/grid/CubeServerSideGrid.d.ts.map +1 -0
  313. package/lib/components/grid/CubeServerSideGrid.js +114 -0
  314. package/lib/components/grid/CubeServerSideGrid.js.map +1 -0
  315. package/lib/components/grid/CubeSqlDialog.d.ts +24 -0
  316. package/lib/components/grid/CubeSqlDialog.d.ts.map +1 -0
  317. package/lib/components/grid/CubeSqlDialog.js +39 -0
  318. package/lib/components/grid/CubeSqlDialog.js.map +1 -0
  319. package/lib/components/grid/CubeSqlFormat.d.ts +20 -0
  320. package/lib/components/grid/CubeSqlFormat.d.ts.map +1 -0
  321. package/lib/components/grid/CubeSqlFormat.js +32 -0
  322. package/lib/components/grid/CubeSqlFormat.js.map +1 -0
  323. package/lib/components/palette/CubePalette.d.ts.map +1 -1
  324. package/lib/components/palette/CubePalette.js +44 -14
  325. package/lib/components/palette/CubePalette.js.map +1 -1
  326. package/lib/components/show-pure/CubeShowPureDialog.d.ts +4 -1
  327. package/lib/components/show-pure/CubeShowPureDialog.d.ts.map +1 -1
  328. package/lib/components/show-pure/CubeShowPureDialog.js +8 -4
  329. package/lib/components/show-pure/CubeShowPureDialog.js.map +1 -1
  330. package/lib/components/source-picker/CubeDataProductTab.d.ts +27 -0
  331. package/lib/components/source-picker/CubeDataProductTab.d.ts.map +1 -0
  332. package/lib/components/source-picker/CubeDataProductTab.js +123 -0
  333. package/lib/components/source-picker/CubeDataProductTab.js.map +1 -0
  334. package/lib/components/source-picker/CubeDirectConnectionTab.d.ts +27 -0
  335. package/lib/components/source-picker/CubeDirectConnectionTab.d.ts.map +1 -0
  336. package/lib/components/source-picker/CubeDirectConnectionTab.js +89 -0
  337. package/lib/components/source-picker/CubeDirectConnectionTab.js.map +1 -0
  338. package/lib/components/source-picker/CubeFunctionSteps.d.ts +36 -0
  339. package/lib/components/source-picker/CubeFunctionSteps.d.ts.map +1 -0
  340. package/lib/components/source-picker/CubeFunctionSteps.js +76 -0
  341. package/lib/components/source-picker/CubeFunctionSteps.js.map +1 -0
  342. package/lib/components/source-picker/CubeIngestTab.d.ts +28 -0
  343. package/lib/components/source-picker/CubeIngestTab.d.ts.map +1 -0
  344. package/lib/components/source-picker/CubeIngestTab.js +89 -0
  345. package/lib/components/source-picker/CubeIngestTab.js.map +1 -0
  346. package/lib/components/source-picker/CubeInlineModelTab.d.ts +38 -0
  347. package/lib/components/source-picker/CubeInlineModelTab.d.ts.map +1 -0
  348. package/lib/components/source-picker/CubeInlineModelTab.js +81 -0
  349. package/lib/components/source-picker/CubeInlineModelTab.js.map +1 -0
  350. package/lib/components/source-picker/CubePickerListItem.d.ts +47 -0
  351. package/lib/components/source-picker/CubePickerListItem.d.ts.map +1 -0
  352. package/lib/components/source-picker/CubePickerListItem.js +62 -0
  353. package/lib/components/source-picker/CubePickerListItem.js.map +1 -0
  354. package/lib/components/source-picker/CubePickerStep.d.ts +27 -0
  355. package/lib/components/source-picker/CubePickerStep.d.ts.map +1 -0
  356. package/lib/components/source-picker/CubePickerStep.js +23 -0
  357. package/lib/components/source-picker/CubePickerStep.js.map +1 -0
  358. package/lib/components/source-picker/CubeProjectTab.d.ts +28 -0
  359. package/lib/components/source-picker/CubeProjectTab.d.ts.map +1 -0
  360. package/lib/components/source-picker/CubeProjectTab.js +53 -0
  361. package/lib/components/source-picker/CubeProjectTab.js.map +1 -0
  362. package/lib/components/source-picker/CubeServiceTab.d.ts +27 -0
  363. package/lib/components/source-picker/CubeServiceTab.d.ts.map +1 -0
  364. package/lib/components/source-picker/CubeServiceTab.js +36 -0
  365. package/lib/components/source-picker/CubeServiceTab.js.map +1 -0
  366. package/lib/components/source-picker/CubeSourcePicker.d.ts +6 -0
  367. package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -1
  368. package/lib/components/source-picker/CubeSourcePicker.js +33 -58
  369. package/lib/components/source-picker/CubeSourcePicker.js.map +1 -1
  370. package/lib/components/source-picker/CubeTablePreview.d.ts +29 -0
  371. package/lib/components/source-picker/CubeTablePreview.d.ts.map +1 -0
  372. package/lib/components/source-picker/CubeTablePreview.js +10 -0
  373. package/lib/components/source-picker/CubeTablePreview.js.map +1 -0
  374. package/lib/components/spec-transfer/CubeImportPureDialog.d.ts +27 -0
  375. package/lib/components/spec-transfer/CubeImportPureDialog.d.ts.map +1 -0
  376. package/lib/components/spec-transfer/CubeImportPureDialog.js +38 -0
  377. package/lib/components/spec-transfer/CubeImportPureDialog.js.map +1 -0
  378. package/lib/components/spec-transfer/CubeSpecTransferDialog.d.ts.map +1 -1
  379. package/lib/components/spec-transfer/CubeSpecTransferDialog.js +9 -3
  380. package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -1
  381. package/lib/graph-manager/CubeConnectionExplorer.d.ts +90 -0
  382. package/lib/graph-manager/CubeConnectionExplorer.d.ts.map +1 -0
  383. package/lib/graph-manager/CubeConnectionExplorer.js +34 -0
  384. package/lib/graph-manager/CubeConnectionExplorer.js.map +1 -0
  385. package/lib/graph-manager/CubeDataProduct.d.ts +66 -0
  386. package/lib/graph-manager/CubeDataProduct.d.ts.map +1 -0
  387. package/lib/graph-manager/CubeDataProduct.js +102 -0
  388. package/lib/graph-manager/CubeDataProduct.js.map +1 -0
  389. package/lib/graph-manager/CubeDataProductCatalog.d.ts +177 -0
  390. package/lib/graph-manager/CubeDataProductCatalog.d.ts.map +1 -0
  391. package/lib/graph-manager/CubeDataProductCatalog.js +116 -0
  392. package/lib/graph-manager/CubeDataProductCatalog.js.map +1 -0
  393. package/lib/graph-manager/CubeDirectConnection.d.ts +38 -0
  394. package/lib/graph-manager/CubeDirectConnection.d.ts.map +1 -0
  395. package/lib/graph-manager/CubeDirectConnection.js +48 -0
  396. package/lib/graph-manager/CubeDirectConnection.js.map +1 -0
  397. package/lib/graph-manager/CubeEngine.d.ts +83 -3
  398. package/lib/graph-manager/CubeEngine.d.ts.map +1 -1
  399. package/lib/graph-manager/CubeEngine.js +4 -1
  400. package/lib/graph-manager/CubeEngine.js.map +1 -1
  401. package/lib/graph-manager/CubeEngineClientSettings.d.ts +43 -0
  402. package/lib/graph-manager/CubeEngineClientSettings.d.ts.map +1 -0
  403. package/lib/graph-manager/CubeEngineClientSettings.js +51 -0
  404. package/lib/graph-manager/CubeEngineClientSettings.js.map +1 -0
  405. package/lib/graph-manager/CubeIngest.d.ts +55 -0
  406. package/lib/graph-manager/CubeIngest.d.ts.map +1 -0
  407. package/lib/graph-manager/CubeIngest.js +98 -0
  408. package/lib/graph-manager/CubeIngest.js.map +1 -0
  409. package/lib/graph-manager/CubeIngestCatalog.d.ts +142 -0
  410. package/lib/graph-manager/CubeIngestCatalog.d.ts.map +1 -0
  411. package/lib/graph-manager/CubeIngestCatalog.js +86 -0
  412. package/lib/graph-manager/CubeIngestCatalog.js.map +1 -0
  413. package/lib/graph-manager/CubeLakehouseEnvironment.d.ts +26 -0
  414. package/lib/graph-manager/CubeLakehouseEnvironment.d.ts.map +1 -0
  415. package/lib/graph-manager/CubeLakehouseEnvironment.js +17 -0
  416. package/lib/graph-manager/CubeLakehouseEnvironment.js.map +1 -0
  417. package/lib/graph-manager/CubeLakehouseRuntime.d.ts +29 -0
  418. package/lib/graph-manager/CubeLakehouseRuntime.d.ts.map +1 -0
  419. package/lib/graph-manager/CubeLakehouseRuntime.js +40 -0
  420. package/lib/graph-manager/CubeLakehouseRuntime.js.map +1 -0
  421. package/lib/graph-manager/CubeProject.d.ts +41 -0
  422. package/lib/graph-manager/CubeProject.d.ts.map +1 -0
  423. package/lib/graph-manager/CubeProject.js +84 -0
  424. package/lib/graph-manager/CubeProject.js.map +1 -0
  425. package/lib/graph-manager/CubeProjectCatalog.d.ts +35 -0
  426. package/lib/graph-manager/CubeProjectCatalog.d.ts.map +1 -0
  427. package/lib/graph-manager/CubeProjectCatalog.js +17 -0
  428. package/lib/graph-manager/CubeProjectCatalog.js.map +1 -0
  429. package/lib/graph-manager/CubeService.d.ts +20 -0
  430. package/lib/graph-manager/CubeService.d.ts.map +1 -0
  431. package/lib/graph-manager/CubeService.js +22 -0
  432. package/lib/graph-manager/CubeService.js.map +1 -0
  433. package/lib/graph-manager/CubeServiceCatalog.d.ts +31 -0
  434. package/lib/graph-manager/CubeServiceCatalog.d.ts.map +1 -0
  435. package/lib/graph-manager/CubeServiceCatalog.js +17 -0
  436. package/lib/graph-manager/CubeServiceCatalog.js.map +1 -0
  437. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +111 -2
  438. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -1
  439. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +108 -1
  440. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -1
  441. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.d.ts +44 -0
  442. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.d.ts.map +1 -0
  443. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.js +192 -0
  444. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.js.map +1 -0
  445. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts +32 -0
  446. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts.map +1 -0
  447. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js +88 -0
  448. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js.map +1 -0
  449. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.d.ts +41 -0
  450. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.d.ts.map +1 -0
  451. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.js +246 -0
  452. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.js.map +1 -0
  453. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.d.ts +43 -0
  454. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.d.ts.map +1 -0
  455. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.js +112 -0
  456. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.js.map +1 -0
  457. package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.d.ts.map +1 -1
  458. package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js +30 -4
  459. package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js.map +1 -1
  460. package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.d.ts +23 -0
  461. package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.d.ts.map +1 -0
  462. package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.js +68 -0
  463. package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.js.map +1 -0
  464. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts +30 -0
  465. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts.map +1 -0
  466. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js +229 -0
  467. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js.map +1 -0
  468. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts +30 -0
  469. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts.map +1 -0
  470. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js +149 -0
  471. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js.map +1 -0
  472. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts +57 -0
  473. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts.map +1 -0
  474. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js +120 -0
  475. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js.map +1 -0
  476. package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.d.ts +33 -0
  477. package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.d.ts.map +1 -0
  478. package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.js +94 -0
  479. package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.js.map +1 -0
  480. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts +34 -0
  481. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts.map +1 -0
  482. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js +332 -0
  483. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js.map +1 -0
  484. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts.map +1 -1
  485. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js +111 -13
  486. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +1 -1
  487. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts +1 -1
  488. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts.map +1 -1
  489. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js +3 -1
  490. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js.map +1 -1
  491. package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.d.ts +67 -0
  492. package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.d.ts.map +1 -0
  493. package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.js +238 -0
  494. package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.js.map +1 -0
  495. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts +35 -0
  496. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts.map +1 -0
  497. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js +65 -0
  498. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js.map +1 -0
  499. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.d.ts +104 -0
  500. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.d.ts.map +1 -0
  501. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.js +484 -0
  502. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.js.map +1 -0
  503. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +115 -3
  504. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -1
  505. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +654 -21
  506. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -1
  507. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.d.ts +69 -0
  508. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.d.ts.map +1 -0
  509. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.js +270 -0
  510. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.js.map +1 -0
  511. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts +35 -0
  512. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts.map +1 -0
  513. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js +94 -0
  514. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js.map +1 -0
  515. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts +31 -0
  516. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts.map +1 -0
  517. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js +69 -0
  518. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js.map +1 -0
  519. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.d.ts +25 -0
  520. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.d.ts.map +1 -0
  521. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.js +47 -0
  522. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.js.map +1 -0
  523. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.d.ts +28 -0
  524. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.d.ts.map +1 -0
  525. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.js +310 -0
  526. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.js.map +1 -0
  527. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.d.ts +33 -0
  528. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.d.ts.map +1 -0
  529. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.js +188 -0
  530. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.js.map +1 -0
  531. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts +1 -1
  532. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts.map +1 -1
  533. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js +33 -3
  534. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js.map +1 -1
  535. package/lib/index.css +2 -2
  536. package/lib/index.css.map +1 -1
  537. package/lib/index.d.ts +22 -3
  538. package/lib/index.d.ts.map +1 -1
  539. package/lib/index.js +19 -1
  540. package/lib/index.js.map +1 -1
  541. package/lib/stores/CubeAddPlacement.d.ts +39 -0
  542. package/lib/stores/CubeAddPlacement.d.ts.map +1 -0
  543. package/lib/stores/CubeAddPlacement.js +51 -0
  544. package/lib/stores/CubeAddPlacement.js.map +1 -0
  545. package/lib/stores/CubeDataProductRecheck.d.ts +27 -0
  546. package/lib/stores/CubeDataProductRecheck.d.ts.map +1 -0
  547. package/lib/stores/CubeDataProductRecheck.js +54 -0
  548. package/lib/stores/CubeDataProductRecheck.js.map +1 -0
  549. package/lib/stores/CubeDataProductRuntimeState.d.ts +88 -0
  550. package/lib/stores/CubeDataProductRuntimeState.d.ts.map +1 -0
  551. package/lib/stores/CubeDataProductRuntimeState.js +190 -0
  552. package/lib/stores/CubeDataProductRuntimeState.js.map +1 -0
  553. package/lib/stores/CubeDataProductWarehouse.d.ts +19 -0
  554. package/lib/stores/CubeDataProductWarehouse.d.ts.map +1 -0
  555. package/lib/stores/CubeDataProductWarehouse.js +25 -0
  556. package/lib/stores/CubeDataProductWarehouse.js.map +1 -0
  557. package/lib/stores/CubeDevSettingsState.d.ts +47 -0
  558. package/lib/stores/CubeDevSettingsState.d.ts.map +1 -0
  559. package/lib/stores/CubeDevSettingsState.js +99 -0
  560. package/lib/stores/CubeDevSettingsState.js.map +1 -0
  561. package/lib/stores/CubeEditorState.d.ts +242 -28
  562. package/lib/stores/CubeEditorState.d.ts.map +1 -1
  563. package/lib/stores/CubeEditorState.js +751 -66
  564. package/lib/stores/CubeEditorState.js.map +1 -1
  565. package/lib/stores/CubeEngineChecks.d.ts +59 -0
  566. package/lib/stores/CubeEngineChecks.d.ts.map +1 -0
  567. package/lib/stores/CubeEngineChecks.js +100 -0
  568. package/lib/stores/CubeEngineChecks.js.map +1 -0
  569. package/lib/stores/CubeEntrySource.d.ts +78 -0
  570. package/lib/stores/CubeEntrySource.d.ts.map +1 -0
  571. package/lib/stores/CubeEntrySource.js +200 -0
  572. package/lib/stores/CubeEntrySource.js.map +1 -0
  573. package/lib/stores/CubeExamples.d.ts +43 -0
  574. package/lib/stores/CubeExamples.d.ts.map +1 -0
  575. package/lib/stores/CubeExamples.js +333 -0
  576. package/lib/stores/CubeExamples.js.map +1 -0
  577. package/lib/stores/CubeExamplesState.d.ts +45 -0
  578. package/lib/stores/CubeExamplesState.d.ts.map +1 -0
  579. package/lib/stores/CubeExamplesState.js +81 -0
  580. package/lib/stores/CubeExamplesState.js.map +1 -0
  581. package/lib/stores/CubeExecutionState.d.ts +6 -2
  582. package/lib/stores/CubeExecutionState.d.ts.map +1 -1
  583. package/lib/stores/CubeExecutionState.js +39 -38
  584. package/lib/stores/CubeExecutionState.js.map +1 -1
  585. package/lib/stores/CubeExportState.d.ts +41 -0
  586. package/lib/stores/CubeExportState.d.ts.map +1 -0
  587. package/lib/stores/CubeExportState.js +134 -0
  588. package/lib/stores/CubeExportState.js.map +1 -0
  589. package/lib/stores/CubeExpressionFilterCheck.d.ts +51 -0
  590. package/lib/stores/CubeExpressionFilterCheck.d.ts.map +1 -0
  591. package/lib/stores/CubeExpressionFilterCheck.js +134 -0
  592. package/lib/stores/CubeExpressionFilterCheck.js.map +1 -0
  593. package/lib/stores/CubeExtendTyping.d.ts +64 -0
  594. package/lib/stores/CubeExtendTyping.d.ts.map +1 -0
  595. package/lib/stores/CubeExtendTyping.js +149 -0
  596. package/lib/stores/CubeExtendTyping.js.map +1 -0
  597. package/lib/stores/CubeFunctionRecheck.d.ts +30 -0
  598. package/lib/stores/CubeFunctionRecheck.d.ts.map +1 -0
  599. package/lib/stores/CubeFunctionRecheck.js +67 -0
  600. package/lib/stores/CubeFunctionRecheck.js.map +1 -0
  601. package/lib/stores/CubeGridFetcher.d.ts +75 -0
  602. package/lib/stores/CubeGridFetcher.d.ts.map +1 -0
  603. package/lib/stores/CubeGridFetcher.js +197 -0
  604. package/lib/stores/CubeGridFetcher.js.map +1 -0
  605. package/lib/stores/CubeGridQuickActions.d.ts +27 -7
  606. package/lib/stores/CubeGridQuickActions.d.ts.map +1 -1
  607. package/lib/stores/CubeGridQuickActions.js +79 -21
  608. package/lib/stores/CubeGridQuickActions.js.map +1 -1
  609. package/lib/stores/CubeGridState.d.ts +136 -0
  610. package/lib/stores/CubeGridState.d.ts.map +1 -0
  611. package/lib/stores/CubeGridState.js +317 -0
  612. package/lib/stores/CubeGridState.js.map +1 -0
  613. package/lib/stores/CubeHost.d.ts +74 -1
  614. package/lib/stores/CubeHost.d.ts.map +1 -1
  615. package/lib/stores/CubeHost.js +25 -1
  616. package/lib/stores/CubeHost.js.map +1 -1
  617. package/lib/stores/CubeIngestRecheck.d.ts +26 -0
  618. package/lib/stores/CubeIngestRecheck.d.ts.map +1 -0
  619. package/lib/stores/CubeIngestRecheck.js +53 -0
  620. package/lib/stores/CubeIngestRecheck.js.map +1 -0
  621. package/lib/stores/CubeLambdaImportState.d.ts +118 -0
  622. package/lib/stores/CubeLambdaImportState.d.ts.map +1 -0
  623. package/lib/stores/CubeLambdaImportState.js +302 -0
  624. package/lib/stores/CubeLambdaImportState.js.map +1 -0
  625. package/lib/stores/CubeLambdaSources.d.ts +45 -0
  626. package/lib/stores/CubeLambdaSources.d.ts.map +1 -0
  627. package/lib/stores/CubeLambdaSources.js +261 -0
  628. package/lib/stores/CubeLambdaSources.js.map +1 -0
  629. package/lib/stores/CubeNodeEditorState.d.ts +101 -5
  630. package/lib/stores/CubeNodeEditorState.d.ts.map +1 -1
  631. package/lib/stores/CubeNodeEditorState.js +221 -10
  632. package/lib/stores/CubeNodeEditorState.js.map +1 -1
  633. package/lib/stores/CubeQueryRun.d.ts +59 -0
  634. package/lib/stores/CubeQueryRun.d.ts.map +1 -0
  635. package/lib/stores/CubeQueryRun.js +101 -0
  636. package/lib/stores/CubeQueryRun.js.map +1 -0
  637. package/lib/stores/CubeRunStatsState.d.ts +61 -0
  638. package/lib/stores/CubeRunStatsState.d.ts.map +1 -0
  639. package/lib/stores/CubeRunStatsState.js +54 -0
  640. package/lib/stores/CubeRunStatsState.js.map +1 -0
  641. package/lib/stores/CubeRunningStepLambda.d.ts +25 -0
  642. package/lib/stores/CubeRunningStepLambda.d.ts.map +1 -0
  643. package/lib/stores/CubeRunningStepLambda.js +45 -0
  644. package/lib/stores/CubeRunningStepLambda.js.map +1 -0
  645. package/lib/stores/CubeServiceRecheck.d.ts +29 -0
  646. package/lib/stores/CubeServiceRecheck.d.ts.map +1 -0
  647. package/lib/stores/CubeServiceRecheck.js +33 -0
  648. package/lib/stores/CubeServiceRecheck.js.map +1 -0
  649. package/lib/stores/CubeShowPureState.d.ts +18 -2
  650. package/lib/stores/CubeShowPureState.d.ts.map +1 -1
  651. package/lib/stores/CubeShowPureState.js +46 -13
  652. package/lib/stores/CubeShowPureState.js.map +1 -1
  653. package/lib/stores/CubeSourcePickerState.d.ts +70 -65
  654. package/lib/stores/CubeSourcePickerState.d.ts.map +1 -1
  655. package/lib/stores/CubeSourcePickerState.js +207 -267
  656. package/lib/stores/CubeSourcePickerState.js.map +1 -1
  657. package/lib/stores/CubeSpecTransferState.d.ts +2 -2
  658. package/lib/stores/CubeSpecTransferState.js +2 -2
  659. package/lib/stores/LocalModelCatalog.d.ts +2 -0
  660. package/lib/stores/LocalModelCatalog.d.ts.map +1 -1
  661. package/lib/stores/LocalModelCatalog.js +19 -3
  662. package/lib/stores/LocalModelCatalog.js.map +1 -1
  663. package/lib/stores/editors/CubeAggregationRows.d.ts +80 -0
  664. package/lib/stores/editors/CubeAggregationRows.d.ts.map +1 -0
  665. package/lib/stores/editors/CubeAggregationRows.js +164 -0
  666. package/lib/stores/editors/CubeAggregationRows.js.map +1 -0
  667. package/lib/stores/editors/CubeConcatDraft.d.ts +30 -0
  668. package/lib/stores/editors/CubeConcatDraft.d.ts.map +1 -0
  669. package/lib/stores/editors/CubeConcatDraft.js +44 -0
  670. package/lib/stores/editors/CubeConcatDraft.js.map +1 -0
  671. package/lib/stores/editors/CubeDifferenceDraft.d.ts +49 -0
  672. package/lib/stores/editors/CubeDifferenceDraft.d.ts.map +1 -0
  673. package/lib/stores/editors/CubeDifferenceDraft.js +111 -0
  674. package/lib/stores/editors/CubeDifferenceDraft.js.map +1 -0
  675. package/lib/stores/editors/CubeExpressionFilterDraft.d.ts +91 -0
  676. package/lib/stores/editors/CubeExpressionFilterDraft.d.ts.map +1 -0
  677. package/lib/stores/editors/CubeExpressionFilterDraft.js +254 -0
  678. package/lib/stores/editors/CubeExpressionFilterDraft.js.map +1 -0
  679. package/lib/stores/editors/CubeExtendDraft.d.ts +110 -0
  680. package/lib/stores/editors/CubeExtendDraft.d.ts.map +1 -0
  681. package/lib/stores/editors/CubeExtendDraft.js +359 -0
  682. package/lib/stores/editors/CubeExtendDraft.js.map +1 -0
  683. package/lib/stores/editors/CubeFunctionDraft.d.ts +34 -0
  684. package/lib/stores/editors/CubeFunctionDraft.d.ts.map +1 -0
  685. package/lib/stores/editors/CubeFunctionDraft.js +69 -0
  686. package/lib/stores/editors/CubeFunctionDraft.js.map +1 -0
  687. package/lib/stores/editors/CubeGroupDraft.d.ts +61 -0
  688. package/lib/stores/editors/CubeGroupDraft.d.ts.map +1 -0
  689. package/lib/stores/editors/CubeGroupDraft.js +106 -0
  690. package/lib/stores/editors/CubeGroupDraft.js.map +1 -0
  691. package/lib/stores/editors/CubeJoinDraft.d.ts +9 -10
  692. package/lib/stores/editors/CubeJoinDraft.d.ts.map +1 -1
  693. package/lib/stores/editors/CubeJoinDraft.js +92 -21
  694. package/lib/stores/editors/CubeJoinDraft.js.map +1 -1
  695. package/lib/stores/editors/CubeJoinKeyPairs.d.ts +38 -0
  696. package/lib/stores/editors/CubeJoinKeyPairs.d.ts.map +1 -0
  697. package/lib/stores/editors/CubeJoinKeyPairs.js +33 -0
  698. package/lib/stores/editors/CubeJoinKeyPairs.js.map +1 -0
  699. package/lib/stores/editors/CubeNodeDraft.d.ts +20 -6
  700. package/lib/stores/editors/CubeNodeDraft.d.ts.map +1 -1
  701. package/lib/stores/editors/CubeNodeDraft.js +23 -5
  702. package/lib/stores/editors/CubeNodeDraft.js.map +1 -1
  703. package/lib/stores/editors/CubeNodeDraftRegistry.d.ts +4 -2
  704. package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -1
  705. package/lib/stores/editors/CubeNodeDraftRegistry.js +39 -3
  706. package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -1
  707. package/lib/stores/editors/CubePartitionDraft.d.ts +70 -0
  708. package/lib/stores/editors/CubePartitionDraft.d.ts.map +1 -0
  709. package/lib/stores/editors/CubePartitionDraft.js +154 -0
  710. package/lib/stores/editors/CubePartitionDraft.js.map +1 -0
  711. package/lib/stores/editors/CubePivotDraft.d.ts +93 -0
  712. package/lib/stores/editors/CubePivotDraft.d.ts.map +1 -0
  713. package/lib/stores/editors/CubePivotDraft.js +267 -0
  714. package/lib/stores/editors/CubePivotDraft.js.map +1 -0
  715. package/lib/stores/editors/CubeSortDraft.d.ts +2 -10
  716. package/lib/stores/editors/CubeSortDraft.d.ts.map +1 -1
  717. package/lib/stores/editors/CubeSortDraft.js +9 -35
  718. package/lib/stores/editors/CubeSortDraft.js.map +1 -1
  719. package/lib/stores/editors/CubeSortRows.d.ts +34 -0
  720. package/lib/stores/editors/CubeSortRows.d.ts.map +1 -0
  721. package/lib/stores/editors/CubeSortRows.js +50 -0
  722. package/lib/stores/editors/CubeSortRows.js.map +1 -0
  723. package/lib/stores/fixtures/CubeNorthwindModel.d.ts +7 -0
  724. package/lib/stores/fixtures/CubeNorthwindModel.d.ts.map +1 -1
  725. package/lib/stores/fixtures/CubeNorthwindModel.js +99 -87
  726. package/lib/stores/fixtures/CubeNorthwindModel.js.map +1 -1
  727. package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts +26 -0
  728. package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts.map +1 -0
  729. package/lib/stores/fixtures/CubeSalesDuckDbModel.js +46 -0
  730. package/lib/stores/fixtures/CubeSalesDuckDbModel.js.map +1 -0
  731. package/lib/stores/fixtures/CubeSampleSql.d.ts +34 -0
  732. package/lib/stores/fixtures/CubeSampleSql.d.ts.map +1 -0
  733. package/lib/stores/fixtures/CubeSampleSql.js +64 -0
  734. package/lib/stores/fixtures/CubeSampleSql.js.map +1 -0
  735. package/lib/stores/fixtures/CubeSportsModel.d.ts +27 -0
  736. package/lib/stores/fixtures/CubeSportsModel.d.ts.map +1 -0
  737. package/lib/stores/fixtures/CubeSportsModel.js +158 -0
  738. package/lib/stores/fixtures/CubeSportsModel.js.map +1 -0
  739. package/lib/stores/fixtures/CubeTradesModel.d.ts +33 -0
  740. package/lib/stores/fixtures/CubeTradesModel.d.ts.map +1 -0
  741. package/lib/stores/fixtures/CubeTradesModel.js +227 -0
  742. package/lib/stores/fixtures/CubeTradesModel.js.map +1 -0
  743. package/lib/stores/source-picker/CubeCsvSetupSql.d.ts +71 -0
  744. package/lib/stores/source-picker/CubeCsvSetupSql.d.ts.map +1 -0
  745. package/lib/stores/source-picker/CubeCsvSetupSql.js +392 -0
  746. package/lib/stores/source-picker/CubeCsvSetupSql.js.map +1 -0
  747. package/lib/stores/source-picker/CubeDataProductTabState.d.ts +215 -0
  748. package/lib/stores/source-picker/CubeDataProductTabState.d.ts.map +1 -0
  749. package/lib/stores/source-picker/CubeDataProductTabState.js +766 -0
  750. package/lib/stores/source-picker/CubeDataProductTabState.js.map +1 -0
  751. package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts +163 -0
  752. package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts.map +1 -0
  753. package/lib/stores/source-picker/CubeDirectConnectionTabState.js +668 -0
  754. package/lib/stores/source-picker/CubeDirectConnectionTabState.js.map +1 -0
  755. package/lib/stores/source-picker/CubeIngestTabState.d.ts +127 -0
  756. package/lib/stores/source-picker/CubeIngestTabState.d.ts.map +1 -0
  757. package/lib/stores/source-picker/CubeIngestTabState.js +510 -0
  758. package/lib/stores/source-picker/CubeIngestTabState.js.map +1 -0
  759. package/lib/stores/source-picker/CubeInlineModelTabState.d.ts +203 -0
  760. package/lib/stores/source-picker/CubeInlineModelTabState.d.ts.map +1 -0
  761. package/lib/stores/source-picker/CubeInlineModelTabState.js +734 -0
  762. package/lib/stores/source-picker/CubeInlineModelTabState.js.map +1 -0
  763. package/lib/stores/source-picker/CubeProjectTabState.d.ts +77 -0
  764. package/lib/stores/source-picker/CubeProjectTabState.d.ts.map +1 -0
  765. package/lib/stores/source-picker/CubeProjectTabState.js +206 -0
  766. package/lib/stores/source-picker/CubeProjectTabState.js.map +1 -0
  767. package/lib/stores/source-picker/CubeServiceTabState.d.ts +74 -0
  768. package/lib/stores/source-picker/CubeServiceTabState.d.ts.map +1 -0
  769. package/lib/stores/source-picker/CubeServiceTabState.js +216 -0
  770. package/lib/stores/source-picker/CubeServiceTabState.js.map +1 -0
  771. package/lib/stores/source-picker/CubeSourcePickerTab.d.ts +60 -0
  772. package/lib/stores/source-picker/CubeSourcePickerTab.d.ts.map +1 -0
  773. package/lib/stores/source-picker/CubeSourcePickerTab.js +45 -0
  774. package/lib/stores/source-picker/CubeSourcePickerTab.js.map +1 -0
  775. package/package.json +12 -7
  776. package/src/__lib__/LegendCubeCommand.ts +12 -0
  777. package/src/__lib__/LegendCubeDataProductLabels.ts +91 -0
  778. package/src/__lib__/LegendCubeDirectConnectionLabels.ts +111 -0
  779. package/src/__lib__/LegendCubeFunctionLabels.ts +41 -0
  780. package/src/__lib__/LegendCubeHelpText.ts +48 -2
  781. package/src/__lib__/LegendCubeIngestLabels.ts +40 -0
  782. package/src/__lib__/LegendCubeLabels.ts +327 -12
  783. package/src/__lib__/LegendCubeProjectLabels.ts +25 -0
  784. package/src/__lib__/LegendCubeProjectSourceLabels.ts +26 -0
  785. package/src/__lib__/LegendCubeServiceLabels.ts +41 -0
  786. package/src/__lib__/LegendCubeTesting.ts +8 -0
  787. package/src/__test-utils__/CubeCanvasTestUtils.ts +1 -1
  788. package/src/__test-utils__/CubeConnectionTestSupport.ts +45 -0
  789. package/src/__test-utils__/CubeDirectConnectionFixtures.ts +70 -0
  790. package/src/__test-utils__/CubeEngineTestSupport.ts +40 -1
  791. package/src/__test-utils__/CubeExpressionTestUtils.ts +146 -0
  792. package/src/__test-utils__/CubeFunctionTestOutline.ts +78 -0
  793. package/src/__test-utils__/CubeLambdaCorpus.ts +137 -0
  794. package/src/__test-utils__/CubeOperationsTestUtils.ts +93 -18
  795. package/src/__test-utils__/CubePageTestUtils.tsx +69 -0
  796. package/src/__test-utils__/CubeTestApplication.ts +46 -2
  797. package/src/__test-utils__/FakeCubeConnectionExplorer.ts +111 -0
  798. package/src/__test-utils__/FakeCubeDataProductCatalog.ts +227 -0
  799. package/src/__test-utils__/FakeCubeEngine.ts +52 -1
  800. package/src/__test-utils__/FakeCubeIngestCatalog.ts +198 -0
  801. package/src/__test-utils__/FakeCubeProjectCatalog.ts +89 -0
  802. package/src/__test-utils__/FakeCubeServiceCatalog.ts +57 -0
  803. package/src/components/CubeAddItems.tsx +186 -0
  804. package/src/components/CubeDialogTheme.ts +25 -0
  805. package/src/components/CubeEditor.tsx +195 -140
  806. package/src/components/CubeEntrySourceBanner.tsx +64 -0
  807. package/src/components/CubeFileMenu.tsx +127 -0
  808. package/src/components/CubeLambdaImportBanner.tsx +97 -0
  809. package/src/components/CubeNodeIcon.tsx +20 -0
  810. package/src/components/CubeSchemaColumnsTable.tsx +54 -0
  811. package/src/components/canvas/CubeCanvas.tsx +94 -20
  812. package/src/components/canvas/CubeCanvasContextMenu.tsx +64 -32
  813. package/src/components/canvas/CubeCanvasDnd.ts +16 -9
  814. package/src/components/canvas/CubeCanvasElements.ts +84 -5
  815. package/src/components/canvas/CubeCanvasLayout.ts +1 -1
  816. package/src/components/canvas/CubeCanvasNode.tsx +88 -43
  817. package/src/components/canvas/CubeCanvasNodeFocus.ts +37 -0
  818. package/src/components/canvas/CubeNodeEditorAnchor.ts +82 -0
  819. package/src/components/dev-settings/CubeDevSettings.tsx +154 -0
  820. package/src/components/editors/CubeAggregationRowEditor.tsx +224 -0
  821. package/src/components/editors/CubeColumnChecklist.tsx +136 -0
  822. package/src/components/editors/CubeColumnPicker.tsx +6 -3
  823. package/src/components/editors/CubeConcatEditor.tsx +374 -0
  824. package/src/components/editors/CubeDataProductSourceEditor.tsx +134 -0
  825. package/src/components/editors/CubeDifferenceEditor.tsx +87 -0
  826. package/src/components/editors/CubeExpressionFilterEditor.tsx +193 -0
  827. package/src/components/editors/CubeExtendEditor.tsx +271 -0
  828. package/src/components/editors/CubeFilterEditor.tsx +20 -1
  829. package/src/components/editors/CubeFunctionSourceEditor.tsx +140 -0
  830. package/src/components/editors/CubeGroupEditor.tsx +135 -0
  831. package/src/components/editors/CubeIngestSourceEditor.tsx +104 -0
  832. package/src/components/editors/CubeJoinEditor.tsx +34 -135
  833. package/src/components/editors/CubeJoinKeyRows.tsx +183 -0
  834. package/src/components/editors/CubeNodeEditorPanel.tsx +111 -36
  835. package/src/components/editors/CubeNodeEditorPopper.tsx +191 -0
  836. package/src/components/editors/CubeNodeEditorRegistry.ts +33 -0
  837. package/src/components/editors/CubePartitionEditor.tsx +208 -0
  838. package/src/components/editors/CubePivotEditor.tsx +277 -0
  839. package/src/components/editors/CubeRenameEditor.tsx +10 -5
  840. package/src/components/editors/CubeRestrictEditor.tsx +9 -3
  841. package/src/components/editors/CubeServiceSourceEditor.tsx +77 -0
  842. package/src/components/editors/CubeSortEditor.tsx +20 -142
  843. package/src/components/editors/CubeSortRowEditor.tsx +176 -0
  844. package/src/components/editors/CubeSourceEditor.tsx +42 -30
  845. package/src/components/editors/CubeWarehouseControl.tsx +113 -0
  846. package/src/components/editors/useCubeNodeEditorDismiss.ts +103 -0
  847. package/src/components/examples/CubeExamplesDialog.tsx +199 -0
  848. package/src/components/grid/CubeColumnFormatDialog.tsx +289 -0
  849. package/src/components/grid/CubeDrilldownBar.tsx +219 -0
  850. package/src/components/grid/CubeGridRegion.tsx +214 -60
  851. package/src/components/grid/CubeGridValues.ts +201 -1
  852. package/src/components/grid/CubeResultGrid.tsx +461 -43
  853. package/src/components/grid/CubeRunStatsPanel.tsx +156 -0
  854. package/src/components/grid/CubeServerSideGrid.tsx +200 -0
  855. package/src/components/grid/CubeSqlDialog.tsx +90 -0
  856. package/src/components/grid/CubeSqlFormat.ts +37 -0
  857. package/src/components/palette/CubePalette.tsx +70 -19
  858. package/src/components/show-pure/CubeShowPureDialog.tsx +19 -5
  859. package/src/components/source-picker/CubeDataProductTab.tsx +486 -0
  860. package/src/components/source-picker/CubeDirectConnectionTab.tsx +352 -0
  861. package/src/components/source-picker/CubeFunctionSteps.tsx +244 -0
  862. package/src/components/source-picker/CubeIngestTab.tsx +312 -0
  863. package/src/components/source-picker/CubeInlineModelTab.tsx +220 -0
  864. package/src/components/source-picker/CubePickerListItem.tsx +118 -0
  865. package/src/components/source-picker/CubePickerStep.tsx +49 -0
  866. package/src/components/source-picker/CubeProjectTab.tsx +117 -0
  867. package/src/components/source-picker/CubeServiceTab.tsx +151 -0
  868. package/src/components/source-picker/CubeSourcePicker.tsx +99 -228
  869. package/src/components/source-picker/CubeTablePreview.tsx +49 -0
  870. package/src/components/spec-transfer/CubeImportPureDialog.tsx +122 -0
  871. package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +22 -9
  872. package/src/graph-manager/CubeConnectionExplorer.ts +106 -0
  873. package/src/graph-manager/CubeDataProduct.ts +150 -0
  874. package/src/graph-manager/CubeDataProductCatalog.ts +256 -0
  875. package/src/graph-manager/CubeDirectConnection.ts +67 -0
  876. package/src/graph-manager/CubeEngine.ts +94 -2
  877. package/src/graph-manager/CubeEngineClientSettings.ts +64 -0
  878. package/src/graph-manager/CubeIngest.ts +159 -0
  879. package/src/graph-manager/CubeIngestCatalog.ts +202 -0
  880. package/src/graph-manager/CubeLakehouseEnvironment.ts +27 -0
  881. package/src/graph-manager/CubeLakehouseRuntime.ts +43 -0
  882. package/src/graph-manager/CubeProject.ts +117 -0
  883. package/src/graph-manager/CubeProjectCatalog.ts +40 -0
  884. package/src/graph-manager/CubeService.ts +29 -0
  885. package/src/graph-manager/CubeServiceCatalog.ts +35 -0
  886. package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +256 -2
  887. package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.ts +251 -0
  888. package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.ts +107 -0
  889. package/src/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.ts +339 -0
  890. package/src/graph-manager/protocol/pure/v1/V1_CubeDirectModel.ts +151 -0
  891. package/src/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.ts +45 -4
  892. package/src/graph-manager/protocol/pure/v1/V1_CubeExpression.ts +89 -0
  893. package/src/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.ts +312 -0
  894. package/src/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.ts +227 -0
  895. package/src/graph-manager/protocol/pure/v1/V1_CubeIngestModel.ts +174 -0
  896. package/src/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.ts +141 -0
  897. package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.ts +471 -0
  898. package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +153 -18
  899. package/src/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.ts +3 -1
  900. package/src/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.ts +361 -0
  901. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.ts +122 -0
  902. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.ts +744 -0
  903. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +1083 -25
  904. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.ts +459 -0
  905. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.ts +152 -0
  906. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.ts +92 -0
  907. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.ts +61 -0
  908. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.ts +337 -0
  909. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.ts +206 -0
  910. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +48 -2
  911. package/src/index.ts +52 -2
  912. package/src/stores/CubeAddPlacement.ts +87 -0
  913. package/src/stores/CubeDataProductRecheck.ts +93 -0
  914. package/src/stores/CubeDataProductRuntimeState.ts +256 -0
  915. package/src/stores/CubeDataProductWarehouse.ts +40 -0
  916. package/src/stores/CubeDevSettingsState.ts +117 -0
  917. package/src/stores/CubeEditorState.ts +1030 -92
  918. package/src/stores/CubeEngineChecks.ts +240 -0
  919. package/src/stores/CubeEntrySource.ts +278 -0
  920. package/src/stores/CubeExamples.ts +526 -0
  921. package/src/stores/CubeExamplesState.ts +110 -0
  922. package/src/stores/CubeExecutionState.ts +50 -62
  923. package/src/stores/CubeExportState.ts +196 -0
  924. package/src/stores/CubeExpressionFilterCheck.ts +218 -0
  925. package/src/stores/CubeExtendTyping.ts +251 -0
  926. package/src/stores/CubeFunctionRecheck.ts +97 -0
  927. package/src/stores/CubeGridFetcher.ts +302 -0
  928. package/src/stores/CubeGridQuickActions.ts +97 -20
  929. package/src/stores/CubeGridState.ts +450 -0
  930. package/src/stores/CubeHost.ts +119 -1
  931. package/src/stores/CubeIngestRecheck.ts +92 -0
  932. package/src/stores/CubeLambdaImportState.ts +434 -0
  933. package/src/stores/CubeLambdaSources.ts +390 -0
  934. package/src/stores/CubeNodeEditorState.ts +278 -9
  935. package/src/stores/CubeQueryRun.ts +169 -0
  936. package/src/stores/CubeRunStatsState.ts +91 -0
  937. package/src/stores/CubeRunningStepLambda.ts +62 -0
  938. package/src/stores/CubeServiceRecheck.ts +53 -0
  939. package/src/stores/CubeShowPureState.ts +57 -15
  940. package/src/stores/CubeSourcePickerState.ts +231 -325
  941. package/src/stores/CubeSpecTransferState.ts +2 -2
  942. package/src/stores/LocalModelCatalog.ts +27 -3
  943. package/src/stores/editors/CubeAggregationRows.ts +299 -0
  944. package/src/stores/editors/CubeConcatDraft.ts +49 -0
  945. package/src/stores/editors/CubeDifferenceDraft.ts +147 -0
  946. package/src/stores/editors/CubeExpressionFilterDraft.ts +385 -0
  947. package/src/stores/editors/CubeExtendDraft.ts +532 -0
  948. package/src/stores/editors/CubeFunctionDraft.ts +92 -0
  949. package/src/stores/editors/CubeGroupDraft.ts +145 -0
  950. package/src/stores/editors/CubeJoinDraft.ts +130 -41
  951. package/src/stores/editors/CubeJoinKeyPairs.ts +68 -0
  952. package/src/stores/editors/CubeNodeDraft.ts +26 -6
  953. package/src/stores/editors/CubeNodeDraftRegistry.ts +52 -2
  954. package/src/stores/editors/CubePartitionDraft.ts +214 -0
  955. package/src/stores/editors/CubePivotDraft.ts +355 -0
  956. package/src/stores/editors/CubeSortDraft.ts +17 -54
  957. package/src/stores/editors/CubeSortRows.ts +84 -0
  958. package/src/stores/fixtures/CubeNorthwindModel.ts +103 -88
  959. package/src/stores/fixtures/CubeSalesDuckDbModel.ts +54 -0
  960. package/src/stores/fixtures/CubeSampleSql.ts +85 -0
  961. package/src/stores/fixtures/CubeSportsModel.ts +182 -0
  962. package/src/stores/fixtures/CubeTradesModel.ts +276 -0
  963. package/src/stores/source-picker/CubeCsvSetupSql.ts +444 -0
  964. package/src/stores/source-picker/CubeDataProductTabState.ts +966 -0
  965. package/src/stores/source-picker/CubeDirectConnectionTabState.ts +846 -0
  966. package/src/stores/source-picker/CubeIngestTabState.ts +625 -0
  967. package/src/stores/source-picker/CubeInlineModelTabState.ts +928 -0
  968. package/src/stores/source-picker/CubeProjectTabState.ts +250 -0
  969. package/src/stores/source-picker/CubeServiceTabState.ts +288 -0
  970. package/src/stores/source-picker/CubeSourcePickerTab.ts +79 -0
  971. package/tsconfig.json +139 -0
package/README.md CHANGED
@@ -7,23 +7,30 @@ It holds the page (the canvas, the palette, the side-panel editors, the source p
7
7
  stores, the engine port with its `v1/` adapter, and the bundled model catalog. Legend Query hosts the page at
8
8
  `/query/cube`.
9
9
 
10
- **Status:** work in progress, version 0.0.x. This version has relational tables, Join, Sort, Filter, Restrict, Rename, Distinct, Drop, Limit and Slice, with one model, one
11
- runtime and one database per query. A cube is kept only through Export and Import of its spec, marked "(dev)", until
12
- the Cube store exists. A pasted model is kept in the cube. Nothing links to the page yet, there is no redo, and Cube sends no telemetry.
10
+ **Status:** work in progress, version 0.0.x. This version has relational tables (from a model or a direct connection to H2
11
+ or DuckDB), the access points of deployed data products and the data sets of deployed ingest definitions (both beta),
12
+ Join, Sort, Group, Pivot (on the databases that run it), Filter, Restrict, Rename, Distinct, Drop, Limit, Slice, Concat, Compare Column Values (Difference),
13
+ window functions (Apply Window Functions), computed columns (Extend Columns, whose expressions the engine checks) and
14
+ rows kept by a Pure condition (Filter by Expression, which the engine checks too), with one model, one runtime and one database, data product project or producer deployment per query. A cube is kept only through Export and Import of its spec, marked "(dev)", until
15
+ the Cube store exists. A pasted model is kept in the cube. The results grid works server-side by default: a header's
16
+ sort and each drill-down level run on the engine, from the run on screen; local mode groups, pivots and filters the
17
+ run's rows in the browser. The grid exports the whole query as CSV through the engine and the rows shown as Excel, lists
18
+ the latest runs with their SQL, and formats number columns (a number, an ISO currency or a percent). Nothing links to the page yet, there is no redo, and Cube sends no telemetry.
13
19
 
14
20
  ## Layout
15
21
 
16
- | Folder | Holds |
17
- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
18
- | `src/components/` | the page, `CubeEditor`, and its parts: `canvas/`, `palette/`, `editors/`, `source-picker/`, `grid/`, `show-pure/`, `spec-transfer/` |
19
- | `src/stores/` | the MobX state of the page, its parts and the side panel; `editors/` (node drafts); `LocalModelCatalog` and `fixtures/` (the bundled model); `CubeHost` |
20
- | `src/graph-manager/` | the engine port (`CubeEngine.ts`) and `buildCubeEngine` |
21
- | `src/graph-manager/protocol/pure/v1/` | the engine adapter, `V1_LegendCubeEngine`: the lambda serializer, the result and relation-type readers, the error mapping |
22
- | `src/__lib__/` | labels, help text, the command config and test ids |
23
- | `src/__test-utils__/` | the fake engine and the helpers of the tests |
24
- | `style/` | the stylesheet, built to `lib/index.css` |
25
-
26
- It depends on `@finos/legend-cube`, legend-graph, legend-application, legend-art, legend-lego and legend-shared, never
22
+ | Folder | Holds |
23
+ | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
24
+ | `src/components/` | the page, `CubeEditor`, and its parts: `canvas/`, `palette/`, `editors/`, `source-picker/`, `grid/`, `show-pure/`, `spec-transfer/` |
25
+ | `src/stores/` | the MobX state of the page, its parts and the node editor; `editors/` (node drafts); `LocalModelCatalog` and `fixtures/` (the bundled model); `CubeHost` |
26
+ | `src/graph-manager/` | the engine port (`CubeEngine.ts`), the connection explorer, data product catalog and ingest catalog ports, and their builders |
27
+ | `src/graph-manager/protocol/pure/v1/` | the engine adapter, `V1_LegendCubeEngine`: the lambda serializer, the result and relation-type readers, the error mapping |
28
+ | `src/__lib__/` | labels, help text, the command config and test ids |
29
+ | `src/__test-utils__/` | the fake engine and the helpers of the tests |
30
+ | `style/` | the stylesheet, built to `lib/index.css` |
31
+
32
+ It depends on `@finos/legend-cube`, legend-graph, legend-application, legend-art, legend-lego, legend-shared, and the
33
+ depot, lakehouse and storage clients, never
27
34
  on an application package (`legend-application-*`) or on legend-query-builder.
28
35
 
29
36
  **The V1 rule:** `V1_*` protocol code lives under `src/graph-manager/protocol/pure/v1/`. The one product file outside
@@ -36,9 +43,20 @@ The engine-backed tests in `src/__tests__/` are an exception: they need both the
36
43
 
37
44
  `src/index.ts` exports:
38
45
 
39
- - `CubeEditor`, the page, and `CubeHost`, what a host gives it;
46
+ - `CubeEditor`, the page, and `CubeHost`, what a host gives it; `CubeEntrySource`, a source a link asks the page to
47
+ start with (`initialSource`), and `formatCubeAccessPointEntryId` with its `CubeAccessPointEntry`, which write a
48
+ data product access point's link id ([hosting.md](./docs/hosting.md));
40
49
  - the engine port, everything in `CubeEngine.ts` (`CubeEngine`, `CubeEngineError`, `CubeEngineErrorKind`,
41
50
  `CubeResult`, `CubeModelOutline`, …), with `buildCubeEngine` and `CubeEngineConfig`;
51
+ - the connection explorer port, everything in `CubeConnectionExplorer.ts`, with `buildCubeConnectionExplorer`;
52
+ - data products: everything in `CubeDataProduct.ts` (the model kind, its runtime path, the environment types, the
53
+ warehouse rule) and `CubeDataProductCatalog.ts` (the catalog port and its classes), with
54
+ `buildCubeDataProductCatalog`, `buildCubeLakehouseEnvironment`, `CubeLakehouseServices`, `CubeLakehouseEnvironment`
55
+ and `getCubeRememberedWarehouse`;
56
+ - ingest data sets: everything in `CubeIngest.ts` (the model kind, its runtime path, the saved settings) and
57
+ `CubeIngestCatalog.ts` (the catalog port and its classes), with `buildCubeIngestCatalog`;
58
+ - published projects: everything in `CubeProject.ts` (the pointer model and its checks) and `CubeProjectCatalog.ts`
59
+ (the catalog port), with `buildCubeProjectCatalog`;
42
60
  - `LocalModelCatalog` and `BUNDLED_MODELS`;
43
61
  - `LEGEND_CUBE_COMMAND_CONFIG` and `LEGEND_CUBE_COMMAND_KEY`, the page's shortcuts;
44
62
  - `LEGEND_CUBE_TEST_ID`;
@@ -49,17 +67,38 @@ The engine-backed tests in `src/__tests__/` are an exception: they need both the
49
67
  The node-type registries (drafts, editors, help text and icons) are internal: there is no plugin API for node types
50
68
  yet.
51
69
 
52
- ## New source kinds
70
+ ## Sources
71
+
72
+ A cube reads one kind of source: relational tables (from a model, or from a database through a direct connection), the
73
+ access points of deployed data products, or the data sets of deployed ingest definitions (both beta; PLAN §6.7, §6.8).
74
+ The "Add a source" dialog has a tab per way to find a source, each implementing `CubeSourcePickerTab`
75
+ (`src/stores/source-picker/`): Model, Database connection, Data product and Ingest. A host offers the last three by
76
+ giving the page a `connectionExplorer`, a `dataProductCatalog` and an `ingestCatalog` (see [hosting](./docs/hosting.md)).
77
+
78
+ A new kind of source needs, in the core, a `SourceDefinition` (node, codec, emitter and its query rules) and, in the
79
+ builder, a tab, a Source panel editor, help text and an icon, and its branch in the engine's implementation, which
80
+ builds the model each call runs on from the cube's saved model kind (`src/graph-manager/CubeDirectConnection.ts`,
81
+ `CubeDataProduct.ts` and `CubeIngest.ts` are the examples).
82
+
83
+ Tables of a published project's Databases come through the Project Database tab (PLAN §6.3), which extends the Sample Data tab: the
84
+ cube saves the engine's pointer to the project at a released version, and the host's `projectCatalog` lists projects,
85
+ versions and outlines from its depot.
86
+
87
+ ## Samples and examples
53
88
 
54
- Adding a kind of source (beyond relational tables) is not a registration yet. The builder is wired to relational
55
- tables in `CubeEditorState` (re-checking tables, opening the picker), `CubeSourcePickerState`, `CubeJoinDraft`,
56
- `CubeSourceEditor`, and the port's `resolveSchemas` and `CubeModelOutline`. New sources wait on the design of the
57
- sources dialog.
89
+ The Sample Data tab bundles three datasets: Northwind (without Cube's test tables) and two made-up, seeded samples, Sports and Trades
90
+ (`src/stores/fixtures/`), each an in-memory H2 database filled by its setup SQL. The Examples dialog (the header's
91
+ Examples button) opens one of seven example cubes over them (`src/stores/CubeExamples.ts`) in place of the cube, then
92
+ runs it, or starts a new cube on a dataset (PLAN §6.9). An
93
+ example is built in code, so a new one needs no saved spec; add it to `CUBE_EXAMPLES`, and the engine test
94
+ `CubeExamples.engine-roundtrip-test.ts` opens, types and runs it.
58
95
 
59
96
  ## Documentation
60
97
 
61
98
  - [Hosting the page](./docs/hosting.md): what a host gives the page, the shortcuts, the stylesheet, and the dev loop.
62
99
  - [Testing](./docs/testing.md): the test groups, the fake engine, and the tests against a real engine.
100
+ - [Demo](./docs/demo/README.md): a walkthrough on the sample data, its [fast notes](./docs/demo/DEMO-FAST-NOTES.md), and
101
+ specs to import at each step.
63
102
  - [Adding an operation](./docs/adding-an-operation.md): the builder half of a new transform. The core half is in
64
103
  [`@finos/legend-cube`](../legend-cube/docs/adding-an-operation.md).
65
104
  - [The plan](../../docs/wip/legend-cube/PLAN.md) and [the known issues](../../docs/wip/legend-cube/ISSUES.md).
@@ -5,21 +5,43 @@ node, its messages, emitter and codec, and its entry in the node registry. The p
5
5
  canvas read that registry, so the new type shows there with no change here.
6
6
 
7
7
  The builder adds four pieces: a draft, an editor and help text, in registries keyed by node type, and an icon, keyed by
8
- the icon name the node's definition gives. Join and Filter are the examples to follow.
8
+ the icon name the node's definition gives. Join and Filter are the examples to follow; Group for an editor of rows
9
+ (`CubeGroupEditor`, `CubeGroupDraft`), Concat for a two-input editor with fixes and one setting
10
+ (`CubeConcatEditor`, `CubeConcatDraft`), Partition for an editor made of the shared rows
11
+ (`CubePartitionEditor`, `CubePartitionDraft`), Difference for a two-input editor sharing Join's key rows
12
+ (`CubeDifferenceEditor`, `CubeDifferenceDraft`), Extend for an editor that asks the engine before Apply
13
+ (`CubeExtendEditor`, `CubeExtendDraft`), Filter by Expression for one condition the engine checks
14
+ (`CubeExpressionFilterEditor`, `CubeExpressionFilterDraft`), and Pivot for an editor that loads values from the engine
15
+ through `runCubeQuery` (`CubePivotEditor`, `CubePivotDraft`). A node type a database can't run is greyed, with the
16
+ reason, in the palette and the Add menus (`getCubeAddDatabaseProblem` in `CubeAddPlacement.ts`): nothing to add for a
17
+ new type but the core's rule.
9
18
 
10
19
  ## 1. A draft
11
20
 
12
- The side panel never edits the document: an editor edits a draft, and the panel's **Apply** stores the draft's node
13
- as one undo step (**Cancel** drops it).
21
+ The node editor floats below its node (PLAN §11.8) and never edits the document: an editor edits a draft, and the
22
+ editor's **Apply**, or closing it any way but **Cancel**, stores the draft's node as one undo step (**Cancel** drops
23
+ it).
14
24
 
15
25
  - In `src/stores/editors/Cube<Type>Draft.ts`, extend `CubeNodeDraft<Type>`: observable fields for the settings being
16
26
  edited, actions that change them, and `build()`. `build()` returns `original` itself while nothing was edited, and
17
27
  otherwise a new node with the same id and `rest`. The panel also treats a node that saves the same as `original`
18
28
  as no change.
19
- - Register a factory in `CUBE_NODE_DRAFT_FACTORIES` (`src/stores/editors/CubeNodeDraftRegistry.ts`).
29
+ - Register a factory in `CUBE_NODE_DRAFT_FACTORIES` (`src/stores/editors/CubeNodeDraftRegistry.ts`); it gets the
30
+ editor state too, for a draft that needs the engine.
31
+ - A draft that must ask the engine before its node can be stored, as Extend's Validate does, says why in
32
+ `applyDisabledReason`: the panel then disables Apply with that reason as its title, and shows it in place of the
33
+ Problems list until it is `undefined`. Its engine work is a MobX `flow` on the draft; the node it builds then holds
34
+ the engine's answer (Extend's lambdas and typing), so it needs no more engine work once applied. While the reason
35
+ is set, Apply refuses the draft, and closing the panel or opening another node keeps it open with a notice
36
+ (`getEditorKeptOpenNotice`) rather than storing or dropping the edits.
37
+ - A draft whose node the cube may replace underneath it with one that differs in nothing it edits, such as an Extend
38
+ typed in the background, overrides `follow(node)` to go on from the new node, keeping its rows; by default the panel
39
+ drops the edits with a notice (`CubeNodeEditorState.sync`).
20
40
  - A transform with nothing to set, such as Distinct, has no draft: it registers an editor that only describes it
21
41
  (`CubeDistinctEditor`) and is listed in `CUBE_NODE_TYPES_WITHOUT_SETTINGS`, which the registry test skips when it
22
- asks for a factory. The panel then shows no Apply or Cancel (PLAN §7.4 item 2).
42
+ asks for a factory. The panel then shows no Apply or Cancel, and no Problems list (PLAN §7.4 item 2): every
43
+ transform that can be invalid has a draft. When such a transform gains a setting, as Concat did with Convert types,
44
+ give it a draft and take it off the list.
23
45
 
24
46
  ## 2. An editor
25
47
 
@@ -27,8 +49,28 @@ as one undo step (**Cancel** drops it).
27
49
  `editorState`, `draft`, `inputSchemas` (the inputs' schemas in port order; the panel shows the editor only once all
28
50
  are there) and `readOnly` (a cube saved by a newer version: show, don't edit).
29
51
  - It changes only the draft. An action on the document, such as Join's Swap Inputs, goes through
30
- `editorState.nodeEditor`, which applies the draft first.
52
+ `editorState.nodeEditor`, which applies the draft first. A fix that adds nodes, as Join's "Rename them" and Concat's
53
+ "Rename them" and "Drop them" do, is a `can…` getter and an action there, made from the core's fix on the query with
54
+ the draft applied (`queryWithEdits`), as one undo step, the panel staying on the node. The editor shows the fix's
55
+ changes from the core's plan, given the draft's settings, so the editor and the store agree on what it offers.
31
56
  - `CubeColumnPicker` picks a column from a schema, and `CubeValueEditor` takes a value as a column's type wants it.
57
+ - Join's key-pair rows are shared with Difference (`CubeJoinKeyRows`, over a `CubeJoinKeysDraft` from
58
+ `CubeJoinKeyPairs.ts`); `CubeColumnChecklist` takes a reason per column (`unpickableReason`), as Difference's
59
+ difference columns do.
60
+ - A code editor is legend-lego's `CodeEditor` (language `pure`), with the error it should underline built from the
61
+ engine's location (`CubeEngineError.location`, as a legend-graph `CompilationError` with its `SourceInformation`),
62
+ as `CubeExtendEditor` does. Parse a text under a source id that names the row, so a parse error, and a typing error
63
+ on the text just parsed, point back to it. A stored lambda has no locations, and a plan has none either: the
64
+ Extend draft finds the row of a plan error by planning the columns' prefixes.
65
+ - Rows that Group, Sort and Partition share: `CubeAggregationRowEditor` (column, function and output name, given its
66
+ function list, the `AggregationUse` and what a function that takes no column shows in the column's place, and a
67
+ field for a function's setting, Lag's and Lead's offset or NTile's bucket count, when the editor gives
68
+ `onSetting`; the row keeps a setting as typed text, parsed as Limit's size is),
69
+ `CubeSortRowEditor` (column, direction, move and remove; `getSortRowProblems`, `getTakenSortColumns`) and
70
+ `CubeColumnChecklist` (the input's columns, ticked, those that can't be compared shown but not tickable), with their
71
+ drafts' helpers in `CubeAggregationRows.ts` and `CubeSortRows.ts`. They are driven by callbacks, so a new editor
72
+ wires them to its own draft. Judge a row with the node Apply would store (`draft.build()`), as the Partition editor
73
+ does, so the row and the panel's Problems list agree.
32
74
  `isColumnDisabled` gives the reason a column can't be picked, shown after its type, as Sort does for a type that can't
33
75
  be sorted (`isSortableType`) and a column another row has; the column stays shown.
34
76
  - A whole-number setting (a size, a row index) is a `CubeIntegerField` over text the draft keeps as typed, read with
@@ -38,10 +80,14 @@ as one undo step (**Cancel** drops it).
38
80
  example.
39
81
  - Give each control a stable `aria-label` (numbered per row in a list, e.g. `Sort column 2`): the tests and the
40
82
  browser rehearsal find controls by it.
41
- - An editor must work in either host: today's side panel, or a floating editor anchored under the node, which M3
42
- decides on (PLAN §11.4, §12.2 question 1). Don't rely on the panel's height: a list scrolls on its own (a
43
- `max-height` with `overflow: auto`), column and direction pickers stay native `<select>` elements, as
44
- `CubeColumnPicker` is, and no editor measures the panel or reads its size.
83
+ - The editor shows in the floating node editor (PLAN §11.8): 432px wide, its body between 80px and a third of the
84
+ window, which scrolls. Fit that width (wrap long names with `break-words` or `break-all`), and give no list a
85
+ height cap or a scroller of its own: the body is the one scroller. Column and direction pickers stay native
86
+ `<select>` elements, as `CubeColumnPicker` is, and no editor measures the editor or reads its size.
87
+ - Text a field stores on blur is kept when the editor closes: the editor's blur runs first. Text an editor keeps in
88
+ React state can register with `nodeEditor.addFlusher` to be applied on close, as the data product warehouse does.
89
+ - A dropdown, picker or dialog opened from an editor and shown elsewhere (a portal) must be one of MUI's layers, or
90
+ hold the editor open with `nodeEditor.holdOpen()` while it is open: otherwise a press in it closes the editor.
45
91
  - A Tailwind class no other file uses yet, such as an arbitrary `grid-cols-[…]`, does nothing in the dev server until
46
92
  the deployment's Tailwind build runs again ([hosting.md](./hosting.md)); jsdom tests don't see it either way, so
47
93
  check a new layout in the browser.
@@ -56,6 +102,35 @@ text (§17.9) where it has one.
56
102
 
57
103
  Map the icon name of the node's definition to a legend-art icon in `NODE_ICONS` (`src/components/CubeNodeIcon.tsx`).
58
104
 
105
+ ## A node the engine types or checks
106
+
107
+ Extend's types come from the engine (the core guide), and so does the word that a Filter by Expression's condition is
108
+ one Boolean of a row (PLAN §11.11). `CubeEditorState` checks every such node that waits on `ERR_TYPING` or
109
+ `ERR_CHECKING` through a reaction (`nodesToCheck`, `checkExpressions`), in one `typeLambdas` call, outside the undo
110
+ history, through one path for both kinds (`src/stores/CubeEngineChecks.ts`): each kind gives a request, its lambdas
111
+ and how to read the engine's answers into the node to store. The
112
+ answer replaces the very nodes sent, in the cube shown and in the undo snapshots that give the engine the same input
113
+ (`replaceOutsideHistory` takes a predicate per snapshot), and an answer for a node changed meanwhile is dropped. Each
114
+ node is typed as a chain after its input's relation, one chain per first k columns (`src/stores/CubeExtendTyping.ts`),
115
+ so a failure names its column. A condition is checked as its input's relation filtered with it, and typed alone as an
116
+ extend column under a name no input column has, which names its type when it isn't one Boolean
117
+ (`src/stores/CubeExpressionFilterCheck.ts`).
118
+
119
+ A chain's types depend on what the engine sees of the input, which Cube's schema doesn't fully show (an Extend's
120
+ columns are nullable to Cube, `[1]` to the engine after `toOne()`). So each typing records `upstream`, a digest of the
121
+ input's emitted relation and the model (`getCubeExtendUpstream`), and the editor adds its own query rule to
122
+ `analysis` (`createStaleCubeEngineCheckRule`): a node whose digest differs waits on `ERR_TYPING` or `ERR_CHECKING`
123
+ and is checked again. Execute reads that validity as well as the emitter's `canEmit`, since the emitter doesn't know the rule. The
124
+ digest covers the whole relation, filter values included, so any edit above an Extend has it typed again. A typing
125
+ without a digest, as one loaded, is used as it is; on import every Extend is typed once more, as sources are checked
126
+ again, which records one. When the engine can't be reached, a typing still current for its input is kept, with a
127
+ warning. Every way out of `checkExpressions` leaves the node not stale, or the reaction would loop.
128
+
129
+ The canvas shows a waiting node as resolving (`isTypingNode`), the header says so ("checking expressions"), and the
130
+ panel leaves the waiting marker out of its problems. A new node type the engine types or checks joins
131
+ `CubeEngineCheckedNode` and gives `buildCubeEngineCheckRequest` its request, so the reaction, the stale rule, the undo
132
+ snapshots, the kept check offline and the import serve it too; its draft joins F10 in `CubeEditorState`.
133
+
59
134
  ## Warnings
60
135
 
61
136
  A warning is never an error: it doesn't make the node invalid or keep Execute from running. A warning worked out from
@@ -65,14 +140,25 @@ changed, is stored in `CubeEditorState.warnings`, by node key. `getNodeWarnings(
65
140
  node (`legend-cube__node--warning`) and lists them in its tooltip after its errors, and the panel shows each one as a
66
141
  `role="status"` line above the editor. A derived warning waits until the nodes it names have no errors of their own.
67
142
 
143
+ Some warnings belong to one control, not to the node, and the editor shows them under it in the warning colour: Join's
144
+ 'type unknown' on a key whose column the model can't type, Concat's on any such column, and the Join and Filter
145
+ editors' warning on a Date that Convert types made from dates and timestamps (`isDateOrTimestampType`), whose dates
146
+ match timestamps only at midnight. An editor must not offer a change it warns about, as Concat's never offers Convert
147
+ types for a column whose real type Cube doesn't know.
148
+
68
149
  ## Columns that change name
69
150
 
70
151
  The Join editor warns when a join key's column has no type in the model, tracing the column back to its table and the
71
152
  table's own name for it with `findColumnOrigins` (`src/stores/editors/CubeJoinDraft.ts`). It requires each node's
72
153
  output to have the column, maps a Rename's new name back to its old one, and follows a Join's same-named keys to the
73
- side the join keeps. Every other node is taken to pass its input's columns through under the same name. If a new
74
- transform's output columns aren't its inputs' under the same name (a computed column, say), teach `findColumnOrigins`
75
- how they map back, or the warning goes missing or shows on the wrong column.
154
+ side the join keeps. A Group's keys and its Distinct Value, Min and Max outputs map back to their columns, and its
155
+ counts, sums and averages to none, as a Partition's window functions do, its input columns passing through; a
156
+ Concat's columns come from both inputs under the same name. Every other node is
157
+ taken to pass its input's columns through under the same name: an Extend's input columns do, and its new columns,
158
+ which the input lacks, come from none. A Difference's `x_1` and `x_2` come from `x` on their side, its difference
159
+ from none. If a new transform's output columns aren't its inputs'
160
+ under the same name (a computed column, say), teach `findColumnOrigins` how they map back, or the warning goes missing
161
+ or shows on the wrong column.
76
162
 
77
163
  ## Tests
78
164
 
@@ -86,6 +172,19 @@ how they map back, or the warning goes missing or shows on the wrong column.
86
172
  - An engine test of the operation in `src/__tests__/LegendCubeOperations.engine-roundtrip-test.ts` (see
87
173
  [Testing](./testing.md)): its lambda as the engine parses the printed Pure, its typing against Cube's inferred
88
174
  schema, and what it returns, not its text.
175
+ - A case of the new node type in `src/__tests__/CubeInferenceConformance.engine-roundtrip-test.ts`, whose coverage
176
+ test fails until there is one: the engine must type every node of the case as Cube infers it.
177
+ - If its SQL can differ by database, its shapes at the end of `SHAPES` in
178
+ `src/__tests__/LegendCubeDialects.engine-roundtrip-test.ts` (earlier tests index the first ones by position), so the
179
+ checks every shape gets cover it, and a test of the facts its plans must keep on every database type. A shape some
180
+ database types can't plan at all goes in a list of its own over the types that can: windows are in
181
+ `WINDOW_SHAPES`, over `WINDOW_DATABASE_TYPES` (Spanner, Presto and Composite refuse any window), with the refusal
182
+ pinned.
183
+
184
+ - A draft that waits for the engine is tested against the fake engine's mocks (`parseExpression`, `typeLambdas`,
185
+ `planLambda` in `FakeCubeEngine`), and an editor that changes a draft from the test wraps the change in `act`. An
186
+ editor with a code editor needs `MockedMonacoEditorInstance.getValue.mockReturnValue('')` before it renders: the
187
+ mocked editor holds no text of its own.
89
188
 
90
189
  The `v1/` adapter (`V1_CubeLambdaSerializer`) needs no change while the operation's emitter uses only IR and literal
91
190
  kinds it already writes. A new kind of IR node or literal needs its own case there, with a test in
@@ -0,0 +1,67 @@
1
+ # Demo fast notes
2
+
3
+ ## Live build (Trades)
4
+
5
+ 1. **Examples → Trades → Start a new cube**: tick **TRADES**, **DESKS** → **Add 2**
6
+ 2. **Drop Join Another Input** (lands after TRADES = Left); drag **DESKS → Right**
7
+ - Join columns: **DESK_ID** = **ID** → Apply
8
+ 3. **Drop Group by Column**
9
+ - Group by: **DESK**, **REGION**
10
+ - Agg 1: **NOTIONAL_USD** · Sum · `TOTAL_NOTIONAL_USD`
11
+ - Agg 2: Count Rows · `TRADE_COUNT`
12
+ - Apply · **F9** → 6 rows
13
+ 4. **Drop Apply Window Functions**
14
+ - Partition: **REGION**
15
+ - Sort: **TOTAL_NOTIONAL_USD** · Descending
16
+ - Function: Rank · `RANK_IN_REGION`
17
+ - Apply · **F9** → Commodities 1, Rates 2, Equities Cash 3 (Americas)
18
+ 5. **Drop Extend Columns**
19
+ - Name: `NOTIONAL_MM`
20
+ - Expression: `x | $x.TOTAL_NOTIONAL_USD / 1000000` → Validate
21
+ - Apply · **F9** → Commodities 31.10
22
+ 6. **Drop Filter by Expression**
23
+ - `x | $x.NOTIONAL_MM > 25` → Validate
24
+ - Apply · **F9** → 4 rows
25
+ 7. **Show SQL** → Close · **Export** (fold the JSON)
26
+
27
+ Duplicate-column error on a Join → open it → **Rename them**.
28
+
29
+ **End spec:** [specs/trades-desks-5-final.cube.json](specs/trades-desks-5-final.cube.json) (Import → F9 → 4 rows).
30
+ Steps in between: `specs/trades-desks-1-joined` … `-4-extended`.
31
+
32
+ ## Grid
33
+
34
+ 1. **Examples → Notional by desk and asset class**; right-click `join102` → **Select** → Execute (400 rows)
35
+ 2. Click **NOTIONAL_USD** header ×2
36
+ 3. Right-click REGION cell → **Drilldown by "REGION"**; DESK cell → **Drilldown by "DESK"**
37
+ 4. **Group rows…**: ids → Nothing, PRICE → Average
38
+ 5. Expand Americas → Commodities
39
+ 6. NOTIONAL_USD cell → **Format Column…**: Currency, 0 places
40
+ 7. **Runs** · Export ▸ **CSV (whole query)** · **Local**
41
+
42
+ ## Pivot (DuckDB)
43
+
44
+ 1. **Connect to a source → Direct Connection**: DuckDB, paste the setup SQL below
45
+ - Test connection → schema `demo` → **sales** → Add → **F9** (10 rows)
46
+ 2. **Drop Pivot by Column**
47
+ - Pivot column: **year** → Load values → All
48
+ - Rows: **country**
49
+ - Aggregation: Sum · **amount**
50
+ - Apply · **F9** → 4 rows (France 120 · 80 · 180)
51
+
52
+ Setup SQL:
53
+
54
+ ```sql
55
+ drop schema if exists demo cascade;
56
+ create schema demo;
57
+ create table demo.sales (id INTEGER PRIMARY KEY, country VARCHAR(10), product VARCHAR(10), year INTEGER, amount INTEGER, price DOUBLE);
58
+ insert into demo.sales values (1, 'France', 'Tea', 2022, 120, 2.5), (2, 'France', 'Coffee', 2023, 80, 3.1), (3, 'France', 'Tea', 2024, 150, 2.7), (4, 'Germany', 'Tea', 2022, 90, 2.4), (5, 'Germany', 'Coffee', 2022, 60, 3.0), (6, 'Germany', 'Coffee', 2024, 110, 3.3), (7, 'Japan', 'Tea', 2023, 200, 2.9), (8, 'Japan', 'Tea', 2024, 40, 2.9), (9, 'France', 'Coffee', 2024, 30, 3.2), (10, 'Spain', 'Coffee', 2022, 70, 3.0);
59
+ ```
60
+
61
+ Fallback: [specs/duckdb-sales-pivot.cube.json](specs/duckdb-sales-pivot.cube.json).
62
+
63
+ ## Function
64
+
65
+ 1. **Function** (palette) → Dataset Trades → **tradesAbove** · `1000000` → Add → **F9** → 44 rows
66
+
67
+ **New** (header) clears the cube; Undo brings it back.
@@ -0,0 +1,102 @@
1
+ # Legend Cube demo kit
2
+
3
+ A walkthrough of Legend Cube on its sample data, and the specs to fall back on. Every number below is what the
4
+ engine returned when these files were made (2026-10-13); the sample data is fixed, so they match on the day. The
5
+ short version is [DEMO-FAST-NOTES.md](./DEMO-FAST-NOTES.md).
6
+
7
+ | File | What it is |
8
+ | ----------------------------------------- | ---------------------------------------------------------------------------- |
9
+ | `specs/trades-desks-1-joined.cube.json` | Act 2 after the Join: TRADES and DESKS joined on `DESK_ID` = `ID` (400 rows) |
10
+ | `specs/trades-desks-2-grouped.cube.json` | … then the Group by DESK and REGION (6 rows) |
11
+ | `specs/trades-desks-3-ranked.cube.json` | … then the Rank within region (6 rows) |
12
+ | `specs/trades-desks-4-extended.cube.json` | … then the calculated column `NOTIONAL_MM` (6 rows) |
13
+ | `specs/trades-desks-5-final.cube.json` | … then Filter by Expression `NOTIONAL_MM > 25`: the finished cube (4 rows) |
14
+ | `specs/duckdb-sales-pivot.cube.json` | Act 4's DuckDB cube with the Pivot, its setup SQL inside (4 rows) |
15
+
16
+ **Fallback:** if a live step goes wrong, **Import** the spec of the step before or after it and press **F9**. An
17
+ imported cube opens without running.
18
+
19
+ ## Before the demo
20
+
21
+ - A local engine, and the Query dev server (`yarn dev:query`) with Cube enabled (see [hosting](../hosting.md)).
22
+ - Open each example once to warm the engine up.
23
+ - Browser at about 1440×900, 100% zoom, a fresh `/query/cube` page.
24
+
25
+ ## 1. An example (about 1 min)
26
+
27
+ 1. **Examples → Top customers by orders**: it opens and runs, 10 rows, **Save-a-lot Markets** first with 31 orders.
28
+ 2. Click the **Group** step: its editor opens under it. **Escape** closes it.
29
+
30
+ ## 2. A live build on Trades (about 3 min)
31
+
32
+ The question: which desk trades most, and how does each rank in its region?
33
+
34
+ 1. **Examples → Trades → Start a new cube**. Tick **TRADES** and **DESKS** (new: several tables at once), then
35
+ **Add 2**. TRADES, ticked first, is the step that runs.
36
+ - The source dialog's **← Examples** goes back to the examples.
37
+ 2. Drag **Join Another Input** onto the canvas: it lands after TRADES (Left). Drag DESKS' dot to the Join's lower
38
+ input (Right). The Join is red; its tooltip says _"Left join columns cannot be empty."_ Open it, **Add join
39
+ columns**: **DESK_ID** = **ID**, **Apply**. _(Fallback: `trades-desks-1-joined`.)_
40
+ 3. **Add Items ▾ → Group by Column**: tick **DESK** and **REGION**; aggregation 1 **NOTIONAL_USD**, **Sum**, named
41
+ **TOTAL_NOTIONAL_USD**; **Add aggregation**: **Count Rows** named **TRADE_COUNT**. **Apply**, **F9**: 6 desks.
42
+ _(`trades-desks-2-grouped`.)_
43
+ 4. **Add Items ▾ → Apply Window Functions**: partition by **REGION**; **Add sort column** **TOTAL_NOTIONAL_USD**
44
+ **Descending**; function **Rank** named **RANK_IN_REGION**. **Apply**, **F9**: Americas is Commodities 1, Rates 2,
45
+ Equities Cash 3; Europe is Equity Derivatives 1, Credit 2; Asia is FX 1. _(`trades-desks-3-ranked`.)_
46
+ 5. **Add Items ▾ → Extend Columns**: name **NOTIONAL_MM**, expression `x | $x.TOTAL_NOTIONAL_USD / 1000000`,
47
+ **Validate** (_"Float, can be empty"_), **Apply**, **F9**: Commodities 31,102,024.71 → **31.10**.
48
+ _(`trades-desks-4-extended`.)_
49
+ 6. **Add Items ▾ → Filter by Expression**: `x | $x.NOTIONAL_MM > 25`, **Validate**, **Apply**, **F9**: **4 desks**
50
+ (Commodities, Equity Derivatives, FX, Rates), their ranks unchanged. _(`trades-desks-5-final`.)_
51
+ 7. **Show SQL**: the formatted SQL in a dialog: the `rank() over (partition by …)` inside, the `> 25` filter outside.
52
+ **Copy SQL**, **Close**.
53
+ 8. **Export**: the spec as JSON, each object folding from the gutter.
54
+
55
+ If two inputs share a column name that isn't a join key, the Join says _"Duplicate column names between inputs are not
56
+ supported…"_: open it and click **Rename them**.
57
+
58
+ ## 3. The results grid (about 2 min)
59
+
60
+ 1. **Examples → Notional by desk and asset class**. Right-click the join step (`join102`) → **Select**, then
61
+ **Execute**: 400 trades. **Hide graph** for room.
62
+ 2. Click the **NOTIONAL_USD** header twice: sorted descending, on the engine (Runs goes up by 2).
63
+ 3. Right-click a REGION cell → **Drilldown by "REGION"**: Americas (189), Asia (68), Europe (143). Right-click a DESK
64
+ cell → **Drilldown by "DESK"**.
65
+ 4. **Group rows…**: set the id columns to **Nothing** and **PRICE** to **Average**; **Close**.
66
+ 5. Expand **Americas**, then **Commodities** (65): each level is its own query.
67
+ 6. Right-click a NOTIONAL_USD cell → **Format Column…**: **Currency**, decimal places **0**, **Apply**:
68
+ $81,410,352 for Americas.
69
+ 7. **Runs**: each run, sort and level fetched, with its SQL.
70
+ 8. Right-click → **Export ▸ CSV (whole query)**: `Notional_by_desk_and_asset_class.csv`, a header and 400 trades.
71
+ 9. **Local**: ag-grid's row groups, filters and the Columns panel with **Pivot Mode**. Back to **Server-side**.
72
+
73
+ ## 4. Pivot (about 1.5 min)
74
+
75
+ 1. On any sample cube (H2), point at **Pivot by Column** in the palette: greyed, _"Pivot is not supported on H2."_
76
+ 2. New page → **Connect to a source → Direct Connection**: Database **DuckDB**, paste the setup SQL below into
77
+ **Setup SQL**, **Test connection**, schema **demo**, pick **sales**, **Add**, **F9**: 10 sales.
78
+ 3. Palette **Pivot by Column**: pivot column **year**, **Load values** (2022, 2023, 2024), **All**, row column
79
+ **country**, aggregation **Sum** of **amount**. **Apply**, **F9**: a row per country, a column per year: France
80
+ 120, 80, 180; Germany 150, –, 110; Japan –, 200, 40; Spain 70, –, –.
81
+ 4. _(Fallback: Import `duckdb-sales-pivot.cube.json`, F9.)_
82
+
83
+ The DuckDB setup SQL:
84
+
85
+ ```sql
86
+ drop schema if exists demo cascade;
87
+ create schema demo;
88
+ create table demo.sales (id INTEGER PRIMARY KEY, country VARCHAR(10), product VARCHAR(10), year INTEGER, amount INTEGER, price DOUBLE);
89
+ insert into demo.sales values (1, 'France', 'Tea', 2022, 120, 2.5), (2, 'France', 'Coffee', 2023, 80, 3.1), (3, 'France', 'Tea', 2024, 150, 2.7), (4, 'Germany', 'Tea', 2022, 90, 2.4), (5, 'Germany', 'Coffee', 2022, 60, 3.0), (6, 'Germany', 'Coffee', 2024, 110, 3.3), (7, 'Japan', 'Tea', 2023, 200, 2.9), (8, 'Japan', 'Tea', 2024, 40, 2.9), (9, 'France', 'Coffee', 2024, 30, 3.2), (10, 'Spain', 'Coffee', 2022, 70, 3.0);
90
+ ```
91
+
92
+ ## 5. A function as a source (about 1 min)
93
+
94
+ 1. Palette **Function**: Dataset **Trades**, Read **Functions**: `tradesAbove(minNotionalUsd: Float)` and
95
+ `deskBook(desk, side?)`, which runs on its own runtime.
96
+ 2. Pick **tradesAbove**, value **1000000**, **Add**, **F9**: **44 trades** above a million dollars.
97
+
98
+ ## Not shown, and why
99
+
100
+ - **Data products:** the data product servers don't run locally. The Data Product tab now takes several access points
101
+ at once, like tables.
102
+ - **Services:** work in progress.
@@ -0,0 +1,110 @@
1
+ {
2
+ "formatVersion": 1,
3
+ "context": {
4
+ "model": {
5
+ "_type": "cubeDirectConnection",
6
+ "connection": {
7
+ "_type": "RelationalDatabaseConnection",
8
+ "type": "DuckDB",
9
+ "databaseType": "DuckDB",
10
+ "datasourceSpecification": {
11
+ "_type": "duckDB",
12
+ "path": "",
13
+ "testDataSetupSqls": [
14
+ "drop schema if exists demo cascade",
15
+ "create schema demo",
16
+ "create table demo.sales (id INTEGER PRIMARY KEY, country VARCHAR(10), product VARCHAR(10), year INTEGER, amount INTEGER, price DOUBLE)",
17
+ "insert into demo.sales values (1, 'France', 'Tea', 2022, 120, 2.5), (2, 'France', 'Coffee', 2023, 80, 3.1), (3, 'France', 'Tea', 2024, 150, 2.7), (4, 'Germany', 'Tea', 2022, 90, 2.4), (5, 'Germany', 'Coffee', 2022, 60, 3.0), (6, 'Germany', 'Coffee', 2024, 110, 3.3), (7, 'Japan', 'Tea', 2023, 200, 2.9), (8, 'Japan', 'Tea', 2024, 40, 2.9), (9, 'France', 'Coffee', 2024, 30, 3.2), (10, 'Spain', 'Coffee', 2022, 70, 3.0)"
18
+ ]
19
+ },
20
+ "authenticationStrategy": {
21
+ "_type": "test"
22
+ }
23
+ }
24
+ },
25
+ "runtime": "cube::direct::Runtime"
26
+ },
27
+ "query": {
28
+ "selected": "pivot101",
29
+ "nodes": [
30
+ {
31
+ "kind": "relational",
32
+ "id": "relational101",
33
+ "database": "cube::direct::Database",
34
+ "schema": "\"demo\"",
35
+ "table": "\"sales\"",
36
+ "schemaSnapshot": [
37
+ {
38
+ "name": "id",
39
+ "type": {
40
+ "path": "meta::pure::precisePrimitives::Int"
41
+ },
42
+ "nullable": false
43
+ },
44
+ {
45
+ "name": "country",
46
+ "type": {
47
+ "path": "meta::pure::precisePrimitives::Varchar",
48
+ "params": [0]
49
+ },
50
+ "nullable": true
51
+ },
52
+ {
53
+ "name": "product",
54
+ "type": {
55
+ "path": "meta::pure::precisePrimitives::Varchar",
56
+ "params": [0]
57
+ },
58
+ "nullable": true
59
+ },
60
+ {
61
+ "name": "year",
62
+ "type": {
63
+ "path": "meta::pure::precisePrimitives::Int"
64
+ },
65
+ "nullable": true
66
+ },
67
+ {
68
+ "name": "amount",
69
+ "type": {
70
+ "path": "meta::pure::precisePrimitives::Int"
71
+ },
72
+ "nullable": true
73
+ },
74
+ {
75
+ "name": "price",
76
+ "type": {
77
+ "path": "meta::pure::precisePrimitives::Double"
78
+ },
79
+ "nullable": true
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ "kind": "pivot",
85
+ "id": "pivot101",
86
+ "inputs": ["relational101"],
87
+ "rows": ["country"],
88
+ "column": "year",
89
+ "values": [
90
+ {
91
+ "kind": "integer",
92
+ "value": "2022"
93
+ },
94
+ {
95
+ "kind": "integer",
96
+ "value": "2023"
97
+ },
98
+ {
99
+ "kind": "integer",
100
+ "value": "2024"
101
+ }
102
+ ],
103
+ "aggregation": {
104
+ "column": "amount",
105
+ "function": "Sum"
106
+ }
107
+ }
108
+ ]
109
+ }
110
+ }