@finos/legend-cube-builder 0.0.2 → 0.0.4

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 (761) hide show
  1. package/README.md +93 -1
  2. package/docs/adding-an-operation.md +181 -0
  3. package/docs/hosting.md +157 -0
  4. package/docs/testing.md +188 -0
  5. package/lib/__lib__/LegendCubeCommand.d.ts +2 -1
  6. package/lib/__lib__/LegendCubeCommand.d.ts.map +1 -1
  7. package/lib/__lib__/LegendCubeCommand.js +5 -0
  8. package/lib/__lib__/LegendCubeCommand.js.map +1 -1
  9. package/lib/__lib__/LegendCubeDataProductLabels.d.ts +45 -0
  10. package/lib/__lib__/LegendCubeDataProductLabels.d.ts.map +1 -0
  11. package/lib/__lib__/LegendCubeDataProductLabels.js +60 -0
  12. package/lib/__lib__/LegendCubeDataProductLabels.js.map +1 -0
  13. package/lib/__lib__/LegendCubeDirectConnectionLabels.d.ts +56 -0
  14. package/lib/__lib__/LegendCubeDirectConnectionLabels.d.ts.map +1 -0
  15. package/lib/__lib__/LegendCubeDirectConnectionLabels.js +76 -0
  16. package/lib/__lib__/LegendCubeDirectConnectionLabels.js.map +1 -0
  17. package/lib/__lib__/LegendCubeHelpText.d.ts.map +1 -1
  18. package/lib/__lib__/LegendCubeHelpText.js +21 -3
  19. package/lib/__lib__/LegendCubeHelpText.js.map +1 -1
  20. package/lib/__lib__/LegendCubeIngestLabels.d.ts +25 -0
  21. package/lib/__lib__/LegendCubeIngestLabels.d.ts.map +1 -0
  22. package/lib/__lib__/LegendCubeIngestLabels.js +29 -0
  23. package/lib/__lib__/LegendCubeIngestLabels.js.map +1 -0
  24. package/lib/__lib__/LegendCubeLabels.d.ts +95 -3
  25. package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -1
  26. package/lib/__lib__/LegendCubeLabels.js +121 -4
  27. package/lib/__lib__/LegendCubeLabels.js.map +1 -1
  28. package/lib/__lib__/LegendCubeProjectLabels.d.ts +22 -0
  29. package/lib/__lib__/LegendCubeProjectLabels.d.ts.map +1 -0
  30. package/lib/__lib__/LegendCubeProjectLabels.js +23 -0
  31. package/lib/__lib__/LegendCubeProjectLabels.js.map +1 -0
  32. package/lib/__lib__/LegendCubeTesting.d.ts +1 -0
  33. package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -1
  34. package/lib/__lib__/LegendCubeTesting.js +1 -0
  35. package/lib/__lib__/LegendCubeTesting.js.map +1 -1
  36. package/lib/__test-utils__/CubeCanvasTestUtils.d.ts.map +1 -1
  37. package/lib/__test-utils__/CubeCanvasTestUtils.js +1 -1
  38. package/lib/__test-utils__/CubeCanvasTestUtils.js.map +1 -1
  39. package/lib/__test-utils__/CubeConnectionTestSupport.d.ts +22 -0
  40. package/lib/__test-utils__/CubeConnectionTestSupport.d.ts.map +1 -0
  41. package/lib/__test-utils__/CubeConnectionTestSupport.js +30 -0
  42. package/lib/__test-utils__/CubeConnectionTestSupport.js.map +1 -0
  43. package/lib/__test-utils__/CubeDirectConnectionFixtures.d.ts +31 -0
  44. package/lib/__test-utils__/CubeDirectConnectionFixtures.d.ts.map +1 -0
  45. package/lib/__test-utils__/CubeDirectConnectionFixtures.js +63 -0
  46. package/lib/__test-utils__/CubeDirectConnectionFixtures.js.map +1 -0
  47. package/lib/__test-utils__/CubeEngineTestSupport.d.ts +18 -0
  48. package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -1
  49. package/lib/__test-utils__/CubeEngineTestSupport.js +51 -0
  50. package/lib/__test-utils__/CubeEngineTestSupport.js.map +1 -1
  51. package/lib/__test-utils__/CubeExpressionTestUtils.d.ts +37 -0
  52. package/lib/__test-utils__/CubeExpressionTestUtils.d.ts.map +1 -0
  53. package/lib/__test-utils__/CubeExpressionTestUtils.js +83 -0
  54. package/lib/__test-utils__/CubeExpressionTestUtils.js.map +1 -0
  55. package/lib/__test-utils__/CubeOperationsTestUtils.d.ts +67 -0
  56. package/lib/__test-utils__/CubeOperationsTestUtils.d.ts.map +1 -0
  57. package/lib/__test-utils__/CubeOperationsTestUtils.js +138 -0
  58. package/lib/__test-utils__/CubeOperationsTestUtils.js.map +1 -0
  59. package/lib/__test-utils__/CubePageTestUtils.d.ts +12 -0
  60. package/lib/__test-utils__/CubePageTestUtils.d.ts.map +1 -1
  61. package/lib/__test-utils__/CubePageTestUtils.js +25 -1
  62. package/lib/__test-utils__/CubePageTestUtils.js.map +1 -1
  63. package/lib/__test-utils__/CubeTestApplication.d.ts +5 -1
  64. package/lib/__test-utils__/CubeTestApplication.d.ts.map +1 -1
  65. package/lib/__test-utils__/CubeTestApplication.js +9 -1
  66. package/lib/__test-utils__/CubeTestApplication.js.map +1 -1
  67. package/lib/__test-utils__/FakeCubeConnectionExplorer.d.ts +33 -0
  68. package/lib/__test-utils__/FakeCubeConnectionExplorer.d.ts.map +1 -0
  69. package/lib/__test-utils__/FakeCubeConnectionExplorer.js +67 -0
  70. package/lib/__test-utils__/FakeCubeConnectionExplorer.js.map +1 -0
  71. package/lib/__test-utils__/FakeCubeDataProductCatalog.d.ts +45 -0
  72. package/lib/__test-utils__/FakeCubeDataProductCatalog.d.ts.map +1 -0
  73. package/lib/__test-utils__/FakeCubeDataProductCatalog.js +137 -0
  74. package/lib/__test-utils__/FakeCubeDataProductCatalog.js.map +1 -0
  75. package/lib/__test-utils__/FakeCubeEngine.d.ts +2 -0
  76. package/lib/__test-utils__/FakeCubeEngine.d.ts.map +1 -1
  77. package/lib/__test-utils__/FakeCubeEngine.js +21 -2
  78. package/lib/__test-utils__/FakeCubeEngine.js.map +1 -1
  79. package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts +35 -0
  80. package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts.map +1 -0
  81. package/lib/__test-utils__/FakeCubeIngestCatalog.js +107 -0
  82. package/lib/__test-utils__/FakeCubeIngestCatalog.js.map +1 -0
  83. package/lib/__test-utils__/FakeCubeProjectCatalog.d.ts +30 -0
  84. package/lib/__test-utils__/FakeCubeProjectCatalog.d.ts.map +1 -0
  85. package/lib/__test-utils__/FakeCubeProjectCatalog.js +64 -0
  86. package/lib/__test-utils__/FakeCubeProjectCatalog.js.map +1 -0
  87. package/lib/components/CubeAddItems.d.ts +35 -0
  88. package/lib/components/CubeAddItems.d.ts.map +1 -0
  89. package/lib/components/CubeAddItems.js +82 -0
  90. package/lib/components/CubeAddItems.js.map +1 -0
  91. package/lib/components/CubeEditor.d.ts +5 -1
  92. package/lib/components/CubeEditor.d.ts.map +1 -1
  93. package/lib/components/CubeEditor.js +33 -13
  94. package/lib/components/CubeEditor.js.map +1 -1
  95. package/lib/components/CubeEntrySourceBanner.d.ts +23 -0
  96. package/lib/components/CubeEntrySourceBanner.d.ts.map +1 -0
  97. package/lib/components/CubeEntrySourceBanner.js +32 -0
  98. package/lib/components/CubeEntrySourceBanner.js.map +1 -0
  99. package/lib/components/CubeNodeIcon.d.ts.map +1 -1
  100. package/lib/components/CubeNodeIcon.js +19 -2
  101. package/lib/components/CubeNodeIcon.js.map +1 -1
  102. package/lib/components/CubeSchemaColumnsTable.d.ts +21 -0
  103. package/lib/components/CubeSchemaColumnsTable.d.ts.map +1 -0
  104. package/lib/components/CubeSchemaColumnsTable.js +6 -0
  105. package/lib/components/CubeSchemaColumnsTable.js.map +1 -0
  106. package/lib/components/canvas/CubeCanvas.d.ts +4 -3
  107. package/lib/components/canvas/CubeCanvas.d.ts.map +1 -1
  108. package/lib/components/canvas/CubeCanvas.js +33 -12
  109. package/lib/components/canvas/CubeCanvas.js.map +1 -1
  110. package/lib/components/canvas/CubeCanvasContextMenu.d.ts +8 -4
  111. package/lib/components/canvas/CubeCanvasContextMenu.d.ts.map +1 -1
  112. package/lib/components/canvas/CubeCanvasContextMenu.js +19 -9
  113. package/lib/components/canvas/CubeCanvasContextMenu.js.map +1 -1
  114. package/lib/components/canvas/CubeCanvasDnd.d.ts +7 -5
  115. package/lib/components/canvas/CubeCanvasDnd.d.ts.map +1 -1
  116. package/lib/components/canvas/CubeCanvasDnd.js +14 -9
  117. package/lib/components/canvas/CubeCanvasDnd.js.map +1 -1
  118. package/lib/components/canvas/CubeCanvasElements.d.ts +2 -0
  119. package/lib/components/canvas/CubeCanvasElements.d.ts.map +1 -1
  120. package/lib/components/canvas/CubeCanvasElements.js +8 -4
  121. package/lib/components/canvas/CubeCanvasElements.js.map +1 -1
  122. package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -1
  123. package/lib/components/canvas/CubeCanvasNode.js +30 -17
  124. package/lib/components/canvas/CubeCanvasNode.js.map +1 -1
  125. package/lib/components/canvas/CubeCanvasNodeFocus.d.ts +22 -0
  126. package/lib/components/canvas/CubeCanvasNodeFocus.d.ts.map +1 -0
  127. package/lib/components/canvas/CubeCanvasNodeFocus.js +31 -0
  128. package/lib/components/canvas/CubeCanvasNodeFocus.js.map +1 -0
  129. package/lib/components/canvas/CubeNodeEditorAnchor.d.ts +44 -0
  130. package/lib/components/canvas/CubeNodeEditorAnchor.d.ts.map +1 -0
  131. package/lib/components/canvas/CubeNodeEditorAnchor.js +51 -0
  132. package/lib/components/canvas/CubeNodeEditorAnchor.js.map +1 -0
  133. package/lib/components/editors/CubeAggregationRowEditor.d.ts +48 -0
  134. package/lib/components/editors/CubeAggregationRowEditor.d.ts.map +1 -0
  135. package/lib/components/editors/CubeAggregationRowEditor.js +72 -0
  136. package/lib/components/editors/CubeAggregationRowEditor.js.map +1 -0
  137. package/lib/components/editors/CubeColumnChecklist.d.ts +42 -0
  138. package/lib/components/editors/CubeColumnChecklist.d.ts.map +1 -0
  139. package/lib/components/editors/CubeColumnChecklist.js +41 -0
  140. package/lib/components/editors/CubeColumnChecklist.js.map +1 -0
  141. package/lib/components/editors/CubeColumnPicker.d.ts +9 -2
  142. package/lib/components/editors/CubeColumnPicker.d.ts.map +1 -1
  143. package/lib/components/editors/CubeColumnPicker.js +9 -4
  144. package/lib/components/editors/CubeColumnPicker.js.map +1 -1
  145. package/lib/components/editors/CubeConcatEditor.d.ts +33 -0
  146. package/lib/components/editors/CubeConcatEditor.d.ts.map +1 -0
  147. package/lib/components/editors/CubeConcatEditor.js +147 -0
  148. package/lib/components/editors/CubeConcatEditor.js.map +1 -0
  149. package/lib/components/editors/CubeDataProductSourceEditor.d.ts +25 -0
  150. package/lib/components/editors/CubeDataProductSourceEditor.d.ts.map +1 -0
  151. package/lib/components/editors/CubeDataProductSourceEditor.js +53 -0
  152. package/lib/components/editors/CubeDataProductSourceEditor.js.map +1 -0
  153. package/lib/components/editors/CubeDifferenceEditor.d.ts +25 -0
  154. package/lib/components/editors/CubeDifferenceEditor.d.ts.map +1 -0
  155. package/lib/components/editors/CubeDifferenceEditor.js +29 -0
  156. package/lib/components/editors/CubeDifferenceEditor.js.map +1 -0
  157. package/lib/components/editors/CubeDistinctEditor.d.ts +23 -0
  158. package/lib/components/editors/CubeDistinctEditor.d.ts.map +1 -0
  159. package/lib/components/editors/CubeDistinctEditor.js +24 -0
  160. package/lib/components/editors/CubeDistinctEditor.js.map +1 -0
  161. package/lib/components/editors/CubeExtendEditor.d.ts +25 -0
  162. package/lib/components/editors/CubeExtendEditor.d.ts.map +1 -0
  163. package/lib/components/editors/CubeExtendEditor.js +86 -0
  164. package/lib/components/editors/CubeExtendEditor.js.map +1 -0
  165. package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -1
  166. package/lib/components/editors/CubeFilterEditor.js +3 -3
  167. package/lib/components/editors/CubeFilterEditor.js.map +1 -1
  168. package/lib/components/editors/CubeGroupEditor.d.ts +28 -0
  169. package/lib/components/editors/CubeGroupEditor.d.ts.map +1 -0
  170. package/lib/components/editors/CubeGroupEditor.js +70 -0
  171. package/lib/components/editors/CubeGroupEditor.js.map +1 -0
  172. package/lib/components/editors/CubeIngestSourceEditor.d.ts +26 -0
  173. package/lib/components/editors/CubeIngestSourceEditor.d.ts.map +1 -0
  174. package/lib/components/editors/CubeIngestSourceEditor.js +47 -0
  175. package/lib/components/editors/CubeIngestSourceEditor.js.map +1 -0
  176. package/lib/components/editors/CubeIntegerField.d.ts +29 -0
  177. package/lib/components/editors/CubeIntegerField.d.ts.map +1 -0
  178. package/lib/components/editors/CubeIntegerField.js +30 -0
  179. package/lib/components/editors/CubeIntegerField.js.map +1 -0
  180. package/lib/components/editors/CubeJoinEditor.d.ts +2 -4
  181. package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -1
  182. package/lib/components/editors/CubeJoinEditor.js +15 -37
  183. package/lib/components/editors/CubeJoinEditor.js.map +1 -1
  184. package/lib/components/editors/CubeJoinKeyRows.d.ts +34 -0
  185. package/lib/components/editors/CubeJoinKeyRows.d.ts.map +1 -0
  186. package/lib/components/editors/CubeJoinKeyRows.js +65 -0
  187. package/lib/components/editors/CubeJoinKeyRows.js.map +1 -0
  188. package/lib/components/editors/CubeNodeEditorPanel.d.ts +7 -5
  189. package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -1
  190. package/lib/components/editors/CubeNodeEditorPanel.js +53 -14
  191. package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -1
  192. package/lib/components/editors/CubeNodeEditorPopper.d.ts +40 -0
  193. package/lib/components/editors/CubeNodeEditorPopper.d.ts.map +1 -0
  194. package/lib/components/editors/CubeNodeEditorPopper.js +125 -0
  195. package/lib/components/editors/CubeNodeEditorPopper.js.map +1 -0
  196. package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -1
  197. package/lib/components/editors/CubeNodeEditorRegistry.js +28 -1
  198. package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -1
  199. package/lib/components/editors/CubePartitionEditor.d.ts +30 -0
  200. package/lib/components/editors/CubePartitionEditor.d.ts.map +1 -0
  201. package/lib/components/editors/CubePartitionEditor.js +93 -0
  202. package/lib/components/editors/CubePartitionEditor.js.map +1 -0
  203. package/lib/components/editors/CubeRenameEditor.d.ts +26 -0
  204. package/lib/components/editors/CubeRenameEditor.d.ts.map +1 -0
  205. package/lib/components/editors/CubeRenameEditor.js +60 -0
  206. package/lib/components/editors/CubeRenameEditor.js.map +1 -0
  207. package/lib/components/editors/CubeRestrictEditor.d.ts +26 -0
  208. package/lib/components/editors/CubeRestrictEditor.d.ts.map +1 -0
  209. package/lib/components/editors/CubeRestrictEditor.js +23 -0
  210. package/lib/components/editors/CubeRestrictEditor.js.map +1 -0
  211. package/lib/components/editors/CubeRowCountEditor.d.ts +25 -0
  212. package/lib/components/editors/CubeRowCountEditor.d.ts.map +1 -0
  213. package/lib/components/editors/CubeRowCountEditor.js +38 -0
  214. package/lib/components/editors/CubeRowCountEditor.js.map +1 -0
  215. package/lib/components/editors/CubeSliceEditor.d.ts +25 -0
  216. package/lib/components/editors/CubeSliceEditor.d.ts.map +1 -0
  217. package/lib/components/editors/CubeSliceEditor.js +40 -0
  218. package/lib/components/editors/CubeSliceEditor.js.map +1 -0
  219. package/lib/components/editors/CubeSortEditor.d.ts +27 -0
  220. package/lib/components/editors/CubeSortEditor.d.ts.map +1 -0
  221. package/lib/components/editors/CubeSortEditor.js +45 -0
  222. package/lib/components/editors/CubeSortEditor.js.map +1 -0
  223. package/lib/components/editors/CubeSortRowEditor.d.ts +47 -0
  224. package/lib/components/editors/CubeSortRowEditor.d.ts.map +1 -0
  225. package/lib/components/editors/CubeSortRowEditor.js +62 -0
  226. package/lib/components/editors/CubeSortRowEditor.js.map +1 -0
  227. package/lib/components/editors/CubeSourceEditor.d.ts.map +1 -1
  228. package/lib/components/editors/CubeSourceEditor.js +18 -6
  229. package/lib/components/editors/CubeSourceEditor.js.map +1 -1
  230. package/lib/components/editors/CubeValueEditor.d.ts.map +1 -1
  231. package/lib/components/editors/CubeValueEditor.js +2 -1
  232. package/lib/components/editors/CubeValueEditor.js.map +1 -1
  233. package/lib/components/editors/CubeWarehouseControl.d.ts +30 -0
  234. package/lib/components/editors/CubeWarehouseControl.d.ts.map +1 -0
  235. package/lib/components/editors/CubeWarehouseControl.js +44 -0
  236. package/lib/components/editors/CubeWarehouseControl.js.map +1 -0
  237. package/lib/components/editors/useCubeNodeEditorDismiss.d.ts +31 -0
  238. package/lib/components/editors/useCubeNodeEditorDismiss.d.ts.map +1 -0
  239. package/lib/components/editors/useCubeNodeEditorDismiss.js +83 -0
  240. package/lib/components/editors/useCubeNodeEditorDismiss.js.map +1 -0
  241. package/lib/components/examples/CubeExamplesDialog.d.ts +26 -0
  242. package/lib/components/examples/CubeExamplesDialog.d.ts.map +1 -0
  243. package/lib/components/examples/CubeExamplesDialog.js +68 -0
  244. package/lib/components/examples/CubeExamplesDialog.js.map +1 -0
  245. package/lib/components/grid/CubeGridRegion.d.ts.map +1 -1
  246. package/lib/components/grid/CubeGridRegion.js +20 -9
  247. package/lib/components/grid/CubeGridRegion.js.map +1 -1
  248. package/lib/components/grid/CubeGridValues.d.ts +16 -0
  249. package/lib/components/grid/CubeGridValues.d.ts.map +1 -1
  250. package/lib/components/grid/CubeGridValues.js +44 -0
  251. package/lib/components/grid/CubeGridValues.js.map +1 -1
  252. package/lib/components/grid/CubeResultGrid.d.ts +14 -1
  253. package/lib/components/grid/CubeResultGrid.d.ts.map +1 -1
  254. package/lib/components/grid/CubeResultGrid.js +55 -7
  255. package/lib/components/grid/CubeResultGrid.js.map +1 -1
  256. package/lib/components/palette/CubePalette.d.ts.map +1 -1
  257. package/lib/components/palette/CubePalette.js +23 -12
  258. package/lib/components/palette/CubePalette.js.map +1 -1
  259. package/lib/components/source-picker/CubeDataProductTab.d.ts +27 -0
  260. package/lib/components/source-picker/CubeDataProductTab.d.ts.map +1 -0
  261. package/lib/components/source-picker/CubeDataProductTab.js +102 -0
  262. package/lib/components/source-picker/CubeDataProductTab.js.map +1 -0
  263. package/lib/components/source-picker/CubeDirectConnectionTab.d.ts +27 -0
  264. package/lib/components/source-picker/CubeDirectConnectionTab.d.ts.map +1 -0
  265. package/lib/components/source-picker/CubeDirectConnectionTab.js +87 -0
  266. package/lib/components/source-picker/CubeDirectConnectionTab.js.map +1 -0
  267. package/lib/components/source-picker/CubeIngestTab.d.ts +28 -0
  268. package/lib/components/source-picker/CubeIngestTab.d.ts.map +1 -0
  269. package/lib/components/source-picker/CubeIngestTab.js +66 -0
  270. package/lib/components/source-picker/CubeIngestTab.js.map +1 -0
  271. package/lib/components/source-picker/CubeInlineModelTab.d.ts +37 -0
  272. package/lib/components/source-picker/CubeInlineModelTab.d.ts.map +1 -0
  273. package/lib/components/source-picker/CubeInlineModelTab.js +71 -0
  274. package/lib/components/source-picker/CubeInlineModelTab.js.map +1 -0
  275. package/lib/components/source-picker/CubePickerStep.d.ts +27 -0
  276. package/lib/components/source-picker/CubePickerStep.d.ts.map +1 -0
  277. package/lib/components/source-picker/CubePickerStep.js +23 -0
  278. package/lib/components/source-picker/CubePickerStep.js.map +1 -0
  279. package/lib/components/source-picker/CubeProjectTab.d.ts +27 -0
  280. package/lib/components/source-picker/CubeProjectTab.d.ts.map +1 -0
  281. package/lib/components/source-picker/CubeProjectTab.js +50 -0
  282. package/lib/components/source-picker/CubeProjectTab.js.map +1 -0
  283. package/lib/components/source-picker/CubeSourcePicker.d.ts +6 -0
  284. package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -1
  285. package/lib/components/source-picker/CubeSourcePicker.js +20 -58
  286. package/lib/components/source-picker/CubeSourcePicker.js.map +1 -1
  287. package/lib/components/spec-transfer/CubeSpecTransferDialog.js +1 -1
  288. package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -1
  289. package/lib/graph-manager/CubeConnectionExplorer.d.ts +90 -0
  290. package/lib/graph-manager/CubeConnectionExplorer.d.ts.map +1 -0
  291. package/lib/graph-manager/CubeConnectionExplorer.js +34 -0
  292. package/lib/graph-manager/CubeConnectionExplorer.js.map +1 -0
  293. package/lib/graph-manager/CubeDataProduct.d.ts +66 -0
  294. package/lib/graph-manager/CubeDataProduct.d.ts.map +1 -0
  295. package/lib/graph-manager/CubeDataProduct.js +102 -0
  296. package/lib/graph-manager/CubeDataProduct.js.map +1 -0
  297. package/lib/graph-manager/CubeDataProductCatalog.d.ts +167 -0
  298. package/lib/graph-manager/CubeDataProductCatalog.d.ts.map +1 -0
  299. package/lib/graph-manager/CubeDataProductCatalog.js +116 -0
  300. package/lib/graph-manager/CubeDataProductCatalog.js.map +1 -0
  301. package/lib/graph-manager/CubeDirectConnection.d.ts +38 -0
  302. package/lib/graph-manager/CubeDirectConnection.d.ts.map +1 -0
  303. package/lib/graph-manager/CubeDirectConnection.js +48 -0
  304. package/lib/graph-manager/CubeDirectConnection.js.map +1 -0
  305. package/lib/graph-manager/CubeEngine.d.ts +50 -2
  306. package/lib/graph-manager/CubeEngine.d.ts.map +1 -1
  307. package/lib/graph-manager/CubeEngine.js +4 -1
  308. package/lib/graph-manager/CubeEngine.js.map +1 -1
  309. package/lib/graph-manager/CubeIngest.d.ts +50 -0
  310. package/lib/graph-manager/CubeIngest.d.ts.map +1 -0
  311. package/lib/graph-manager/CubeIngest.js +88 -0
  312. package/lib/graph-manager/CubeIngest.js.map +1 -0
  313. package/lib/graph-manager/CubeIngestCatalog.d.ts +116 -0
  314. package/lib/graph-manager/CubeIngestCatalog.d.ts.map +1 -0
  315. package/lib/graph-manager/CubeIngestCatalog.js +80 -0
  316. package/lib/graph-manager/CubeIngestCatalog.js.map +1 -0
  317. package/lib/graph-manager/CubeLakehouseEnvironment.d.ts +26 -0
  318. package/lib/graph-manager/CubeLakehouseEnvironment.d.ts.map +1 -0
  319. package/lib/graph-manager/CubeLakehouseEnvironment.js +17 -0
  320. package/lib/graph-manager/CubeLakehouseEnvironment.js.map +1 -0
  321. package/lib/graph-manager/CubeModelOutlineHelper.d.ts +8 -0
  322. package/lib/graph-manager/CubeModelOutlineHelper.d.ts.map +1 -1
  323. package/lib/graph-manager/CubeModelOutlineHelper.js +21 -0
  324. package/lib/graph-manager/CubeModelOutlineHelper.js.map +1 -1
  325. package/lib/graph-manager/CubeProject.d.ts +41 -0
  326. package/lib/graph-manager/CubeProject.d.ts.map +1 -0
  327. package/lib/graph-manager/CubeProject.js +84 -0
  328. package/lib/graph-manager/CubeProject.js.map +1 -0
  329. package/lib/graph-manager/CubeProjectCatalog.d.ts +35 -0
  330. package/lib/graph-manager/CubeProjectCatalog.d.ts.map +1 -0
  331. package/lib/graph-manager/CubeProjectCatalog.js +17 -0
  332. package/lib/graph-manager/CubeProjectCatalog.js.map +1 -0
  333. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +63 -1
  334. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -1
  335. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +50 -1
  336. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -1
  337. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.d.ts +44 -0
  338. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.d.ts.map +1 -0
  339. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.js +192 -0
  340. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.js.map +1 -0
  341. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts +29 -0
  342. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts.map +1 -0
  343. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js +84 -0
  344. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js.map +1 -0
  345. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.d.ts +41 -0
  346. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.d.ts.map +1 -0
  347. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.js +246 -0
  348. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.js.map +1 -0
  349. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.d.ts +43 -0
  350. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.d.ts.map +1 -0
  351. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.js +112 -0
  352. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.js.map +1 -0
  353. package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.d.ts.map +1 -1
  354. package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js +30 -4
  355. package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js.map +1 -1
  356. package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.d.ts +23 -0
  357. package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.d.ts.map +1 -0
  358. package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.js +68 -0
  359. package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.js.map +1 -0
  360. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts +30 -0
  361. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts.map +1 -0
  362. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js +140 -0
  363. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js.map +1 -0
  364. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts +62 -0
  365. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts.map +1 -0
  366. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js +119 -0
  367. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js.map +1 -0
  368. package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.d.ts +33 -0
  369. package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.d.ts.map +1 -0
  370. package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.js +94 -0
  371. package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.js.map +1 -0
  372. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts.map +1 -1
  373. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js +63 -4
  374. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +1 -1
  375. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts.map +1 -1
  376. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js +56 -3
  377. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js.map +1 -1
  378. package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.d.ts +67 -0
  379. package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.d.ts.map +1 -0
  380. package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.js +238 -0
  381. package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.js.map +1 -0
  382. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts +34 -0
  383. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts.map +1 -0
  384. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js +64 -0
  385. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js.map +1 -0
  386. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.d.ts +104 -0
  387. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.d.ts.map +1 -0
  388. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.js +484 -0
  389. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.js.map +1 -0
  390. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +97 -3
  391. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -1
  392. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +585 -20
  393. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -1
  394. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.d.ts +69 -0
  395. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.d.ts.map +1 -0
  396. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.js +270 -0
  397. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.js.map +1 -0
  398. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts +35 -0
  399. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts.map +1 -0
  400. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js +91 -0
  401. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js.map +1 -0
  402. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.d.ts +25 -0
  403. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.d.ts.map +1 -0
  404. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.js +47 -0
  405. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.js.map +1 -0
  406. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.d.ts +28 -0
  407. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.d.ts.map +1 -0
  408. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.js +310 -0
  409. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.js.map +1 -0
  410. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.d.ts +33 -0
  411. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.d.ts.map +1 -0
  412. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.js +188 -0
  413. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.js.map +1 -0
  414. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts +1 -1
  415. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts.map +1 -1
  416. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js +30 -4
  417. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js.map +1 -1
  418. package/lib/index.css +2 -2
  419. package/lib/index.css.map +1 -1
  420. package/lib/index.d.ts +11 -1
  421. package/lib/index.d.ts.map +1 -1
  422. package/lib/index.js +10 -1
  423. package/lib/index.js.map +1 -1
  424. package/lib/stores/CubeAddPlacement.d.ts +32 -0
  425. package/lib/stores/CubeAddPlacement.d.ts.map +1 -0
  426. package/lib/stores/CubeAddPlacement.js +40 -0
  427. package/lib/stores/CubeAddPlacement.js.map +1 -0
  428. package/lib/stores/CubeDataProductRecheck.d.ts +27 -0
  429. package/lib/stores/CubeDataProductRecheck.d.ts.map +1 -0
  430. package/lib/stores/CubeDataProductRecheck.js +54 -0
  431. package/lib/stores/CubeDataProductRecheck.js.map +1 -0
  432. package/lib/stores/CubeDataProductRuntimeState.d.ts +88 -0
  433. package/lib/stores/CubeDataProductRuntimeState.d.ts.map +1 -0
  434. package/lib/stores/CubeDataProductRuntimeState.js +190 -0
  435. package/lib/stores/CubeDataProductRuntimeState.js.map +1 -0
  436. package/lib/stores/CubeDataProductWarehouse.d.ts +19 -0
  437. package/lib/stores/CubeDataProductWarehouse.d.ts.map +1 -0
  438. package/lib/stores/CubeDataProductWarehouse.js +25 -0
  439. package/lib/stores/CubeDataProductWarehouse.js.map +1 -0
  440. package/lib/stores/CubeEditorState.d.ts +133 -19
  441. package/lib/stores/CubeEditorState.d.ts.map +1 -1
  442. package/lib/stores/CubeEditorState.js +433 -52
  443. package/lib/stores/CubeEditorState.js.map +1 -1
  444. package/lib/stores/CubeEntrySource.d.ts +78 -0
  445. package/lib/stores/CubeEntrySource.d.ts.map +1 -0
  446. package/lib/stores/CubeEntrySource.js +200 -0
  447. package/lib/stores/CubeEntrySource.js.map +1 -0
  448. package/lib/stores/CubeExamples.d.ts +43 -0
  449. package/lib/stores/CubeExamples.d.ts.map +1 -0
  450. package/lib/stores/CubeExamples.js +296 -0
  451. package/lib/stores/CubeExamples.js.map +1 -0
  452. package/lib/stores/CubeExamplesState.d.ts +45 -0
  453. package/lib/stores/CubeExamplesState.d.ts.map +1 -0
  454. package/lib/stores/CubeExamplesState.js +81 -0
  455. package/lib/stores/CubeExamplesState.js.map +1 -0
  456. package/lib/stores/CubeExecutionState.d.ts +6 -2
  457. package/lib/stores/CubeExecutionState.d.ts.map +1 -1
  458. package/lib/stores/CubeExecutionState.js +34 -8
  459. package/lib/stores/CubeExecutionState.js.map +1 -1
  460. package/lib/stores/CubeExtendTyping.d.ts +72 -0
  461. package/lib/stores/CubeExtendTyping.d.ts.map +1 -0
  462. package/lib/stores/CubeExtendTyping.js +176 -0
  463. package/lib/stores/CubeExtendTyping.js.map +1 -0
  464. package/lib/stores/CubeGridQuickActions.d.ts +48 -0
  465. package/lib/stores/CubeGridQuickActions.d.ts.map +1 -0
  466. package/lib/stores/CubeGridQuickActions.js +124 -0
  467. package/lib/stores/CubeGridQuickActions.js.map +1 -0
  468. package/lib/stores/CubeHost.d.ts +32 -1
  469. package/lib/stores/CubeHost.d.ts.map +1 -1
  470. package/lib/stores/CubeHost.js +21 -1
  471. package/lib/stores/CubeHost.js.map +1 -1
  472. package/lib/stores/CubeIngestRecheck.d.ts +26 -0
  473. package/lib/stores/CubeIngestRecheck.d.ts.map +1 -0
  474. package/lib/stores/CubeIngestRecheck.js +53 -0
  475. package/lib/stores/CubeIngestRecheck.js.map +1 -0
  476. package/lib/stores/CubeNodeEditorState.d.ts +120 -6
  477. package/lib/stores/CubeNodeEditorState.d.ts.map +1 -1
  478. package/lib/stores/CubeNodeEditorState.js +275 -9
  479. package/lib/stores/CubeNodeEditorState.js.map +1 -1
  480. package/lib/stores/CubeShowPureState.d.ts +9 -3
  481. package/lib/stores/CubeShowPureState.d.ts.map +1 -1
  482. package/lib/stores/CubeShowPureState.js +28 -8
  483. package/lib/stores/CubeShowPureState.js.map +1 -1
  484. package/lib/stores/CubeSourcePickerState.d.ts +54 -65
  485. package/lib/stores/CubeSourcePickerState.d.ts.map +1 -1
  486. package/lib/stores/CubeSourcePickerState.js +155 -276
  487. package/lib/stores/CubeSourcePickerState.js.map +1 -1
  488. package/lib/stores/CubeSpecTransferState.d.ts +2 -2
  489. package/lib/stores/CubeSpecTransferState.js +2 -2
  490. package/lib/stores/LocalModelCatalog.d.ts +2 -0
  491. package/lib/stores/LocalModelCatalog.d.ts.map +1 -1
  492. package/lib/stores/LocalModelCatalog.js +17 -3
  493. package/lib/stores/LocalModelCatalog.js.map +1 -1
  494. package/lib/stores/editors/CubeAggregationRows.d.ts +80 -0
  495. package/lib/stores/editors/CubeAggregationRows.d.ts.map +1 -0
  496. package/lib/stores/editors/CubeAggregationRows.js +164 -0
  497. package/lib/stores/editors/CubeAggregationRows.js.map +1 -0
  498. package/lib/stores/editors/CubeConcatDraft.d.ts +30 -0
  499. package/lib/stores/editors/CubeConcatDraft.d.ts.map +1 -0
  500. package/lib/stores/editors/CubeConcatDraft.js +44 -0
  501. package/lib/stores/editors/CubeConcatDraft.js.map +1 -0
  502. package/lib/stores/editors/CubeDifferenceDraft.d.ts +49 -0
  503. package/lib/stores/editors/CubeDifferenceDraft.d.ts.map +1 -0
  504. package/lib/stores/editors/CubeDifferenceDraft.js +111 -0
  505. package/lib/stores/editors/CubeDifferenceDraft.js.map +1 -0
  506. package/lib/stores/editors/CubeExtendDraft.d.ts +110 -0
  507. package/lib/stores/editors/CubeExtendDraft.d.ts.map +1 -0
  508. package/lib/stores/editors/CubeExtendDraft.js +359 -0
  509. package/lib/stores/editors/CubeExtendDraft.js.map +1 -0
  510. package/lib/stores/editors/CubeGroupDraft.d.ts +61 -0
  511. package/lib/stores/editors/CubeGroupDraft.d.ts.map +1 -0
  512. package/lib/stores/editors/CubeGroupDraft.js +106 -0
  513. package/lib/stores/editors/CubeGroupDraft.js.map +1 -0
  514. package/lib/stores/editors/CubeIntegerText.d.ts +24 -0
  515. package/lib/stores/editors/CubeIntegerText.d.ts.map +1 -0
  516. package/lib/stores/editors/CubeIntegerText.js +33 -0
  517. package/lib/stores/editors/CubeIntegerText.js.map +1 -0
  518. package/lib/stores/editors/CubeJoinDraft.d.ts +20 -13
  519. package/lib/stores/editors/CubeJoinDraft.d.ts.map +1 -1
  520. package/lib/stores/editors/CubeJoinDraft.js +109 -29
  521. package/lib/stores/editors/CubeJoinDraft.js.map +1 -1
  522. package/lib/stores/editors/CubeJoinKeyPairs.d.ts +38 -0
  523. package/lib/stores/editors/CubeJoinKeyPairs.d.ts.map +1 -0
  524. package/lib/stores/editors/CubeJoinKeyPairs.js +33 -0
  525. package/lib/stores/editors/CubeJoinKeyPairs.js.map +1 -0
  526. package/lib/stores/editors/CubeNodeDraft.d.ts +20 -6
  527. package/lib/stores/editors/CubeNodeDraft.d.ts.map +1 -1
  528. package/lib/stores/editors/CubeNodeDraft.js +23 -5
  529. package/lib/stores/editors/CubeNodeDraft.js.map +1 -1
  530. package/lib/stores/editors/CubeNodeDraftRegistry.d.ts +6 -0
  531. package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -1
  532. package/lib/stores/editors/CubeNodeDraftRegistry.js +42 -1
  533. package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -1
  534. package/lib/stores/editors/CubePartitionDraft.d.ts +70 -0
  535. package/lib/stores/editors/CubePartitionDraft.d.ts.map +1 -0
  536. package/lib/stores/editors/CubePartitionDraft.js +154 -0
  537. package/lib/stores/editors/CubePartitionDraft.js.map +1 -0
  538. package/lib/stores/editors/CubeRenameDraft.d.ts +44 -0
  539. package/lib/stores/editors/CubeRenameDraft.d.ts.map +1 -0
  540. package/lib/stores/editors/CubeRenameDraft.js +79 -0
  541. package/lib/stores/editors/CubeRenameDraft.js.map +1 -0
  542. package/lib/stores/editors/CubeRestrictDraft.d.ts +37 -0
  543. package/lib/stores/editors/CubeRestrictDraft.d.ts.map +1 -0
  544. package/lib/stores/editors/CubeRestrictDraft.js +73 -0
  545. package/lib/stores/editors/CubeRestrictDraft.js.map +1 -0
  546. package/lib/stores/editors/CubeRowCountDraft.d.ts +42 -0
  547. package/lib/stores/editors/CubeRowCountDraft.d.ts.map +1 -0
  548. package/lib/stores/editors/CubeRowCountDraft.js +55 -0
  549. package/lib/stores/editors/CubeRowCountDraft.js.map +1 -0
  550. package/lib/stores/editors/CubeSliceDraft.d.ts +42 -0
  551. package/lib/stores/editors/CubeSliceDraft.d.ts.map +1 -0
  552. package/lib/stores/editors/CubeSliceDraft.js +72 -0
  553. package/lib/stores/editors/CubeSliceDraft.js.map +1 -0
  554. package/lib/stores/editors/CubeSortDraft.d.ts +41 -0
  555. package/lib/stores/editors/CubeSortDraft.d.ts.map +1 -0
  556. package/lib/stores/editors/CubeSortDraft.js +73 -0
  557. package/lib/stores/editors/CubeSortDraft.js.map +1 -0
  558. package/lib/stores/editors/CubeSortRows.d.ts +34 -0
  559. package/lib/stores/editors/CubeSortRows.d.ts.map +1 -0
  560. package/lib/stores/editors/CubeSortRows.js +50 -0
  561. package/lib/stores/editors/CubeSortRows.js.map +1 -0
  562. package/lib/stores/fixtures/CubeNorthwindModel.d.ts +7 -0
  563. package/lib/stores/fixtures/CubeNorthwindModel.d.ts.map +1 -1
  564. package/lib/stores/fixtures/CubeNorthwindModel.js +99 -87
  565. package/lib/stores/fixtures/CubeNorthwindModel.js.map +1 -1
  566. package/lib/stores/fixtures/CubeSampleSql.d.ts +34 -0
  567. package/lib/stores/fixtures/CubeSampleSql.d.ts.map +1 -0
  568. package/lib/stores/fixtures/CubeSampleSql.js +64 -0
  569. package/lib/stores/fixtures/CubeSampleSql.js.map +1 -0
  570. package/lib/stores/fixtures/CubeSportsModel.d.ts +27 -0
  571. package/lib/stores/fixtures/CubeSportsModel.d.ts.map +1 -0
  572. package/lib/stores/fixtures/CubeSportsModel.js +158 -0
  573. package/lib/stores/fixtures/CubeSportsModel.js.map +1 -0
  574. package/lib/stores/fixtures/CubeTradesModel.d.ts +29 -0
  575. package/lib/stores/fixtures/CubeTradesModel.d.ts.map +1 -0
  576. package/lib/stores/fixtures/CubeTradesModel.js +197 -0
  577. package/lib/stores/fixtures/CubeTradesModel.js.map +1 -0
  578. package/lib/stores/source-picker/CubeCsvSetupSql.d.ts +71 -0
  579. package/lib/stores/source-picker/CubeCsvSetupSql.d.ts.map +1 -0
  580. package/lib/stores/source-picker/CubeCsvSetupSql.js +392 -0
  581. package/lib/stores/source-picker/CubeCsvSetupSql.js.map +1 -0
  582. package/lib/stores/source-picker/CubeDataProductTabState.d.ts +186 -0
  583. package/lib/stores/source-picker/CubeDataProductTabState.d.ts.map +1 -0
  584. package/lib/stores/source-picker/CubeDataProductTabState.js +681 -0
  585. package/lib/stores/source-picker/CubeDataProductTabState.js.map +1 -0
  586. package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts +140 -0
  587. package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts.map +1 -0
  588. package/lib/stores/source-picker/CubeDirectConnectionTabState.js +516 -0
  589. package/lib/stores/source-picker/CubeDirectConnectionTabState.js.map +1 -0
  590. package/lib/stores/source-picker/CubeIngestTabState.d.ts +114 -0
  591. package/lib/stores/source-picker/CubeIngestTabState.d.ts.map +1 -0
  592. package/lib/stores/source-picker/CubeIngestTabState.js +455 -0
  593. package/lib/stores/source-picker/CubeIngestTabState.js.map +1 -0
  594. package/lib/stores/source-picker/CubeInlineModelTabState.d.ts +107 -0
  595. package/lib/stores/source-picker/CubeInlineModelTabState.d.ts.map +1 -0
  596. package/lib/stores/source-picker/CubeInlineModelTabState.js +347 -0
  597. package/lib/stores/source-picker/CubeInlineModelTabState.js.map +1 -0
  598. package/lib/stores/source-picker/CubeProjectTabState.d.ts +62 -0
  599. package/lib/stores/source-picker/CubeProjectTabState.d.ts.map +1 -0
  600. package/lib/stores/source-picker/CubeProjectTabState.js +181 -0
  601. package/lib/stores/source-picker/CubeProjectTabState.js.map +1 -0
  602. package/lib/stores/source-picker/CubeSourcePickerTab.d.ts +48 -0
  603. package/lib/stores/source-picker/CubeSourcePickerTab.d.ts.map +1 -0
  604. package/lib/stores/source-picker/CubeSourcePickerTab.js +24 -0
  605. package/lib/stores/source-picker/CubeSourcePickerTab.js.map +1 -0
  606. package/package.json +12 -8
  607. package/src/__lib__/LegendCubeCommand.ts +5 -0
  608. package/src/__lib__/LegendCubeDataProductLabels.ts +91 -0
  609. package/src/__lib__/LegendCubeDirectConnectionLabels.ts +111 -0
  610. package/src/__lib__/LegendCubeHelpText.ts +46 -2
  611. package/src/__lib__/LegendCubeIngestLabels.ts +40 -0
  612. package/src/__lib__/LegendCubeLabels.ts +192 -4
  613. package/src/__lib__/LegendCubeProjectLabels.ts +25 -0
  614. package/src/__lib__/LegendCubeTesting.ts +1 -0
  615. package/src/__test-utils__/CubeCanvasTestUtils.ts +1 -1
  616. package/src/__test-utils__/CubeConnectionTestSupport.ts +45 -0
  617. package/src/__test-utils__/CubeDirectConnectionFixtures.ts +70 -0
  618. package/src/__test-utils__/CubeEngineTestSupport.ts +73 -0
  619. package/src/__test-utils__/CubeExpressionTestUtils.ts +119 -0
  620. package/src/__test-utils__/CubeOperationsTestUtils.ts +252 -0
  621. package/src/__test-utils__/CubePageTestUtils.tsx +35 -0
  622. package/src/__test-utils__/CubeTestApplication.ts +21 -2
  623. package/src/__test-utils__/FakeCubeConnectionExplorer.ts +111 -0
  624. package/src/__test-utils__/FakeCubeDataProductCatalog.ts +227 -0
  625. package/src/__test-utils__/FakeCubeEngine.ts +32 -2
  626. package/src/__test-utils__/FakeCubeIngestCatalog.ts +180 -0
  627. package/src/__test-utils__/FakeCubeProjectCatalog.ts +89 -0
  628. package/src/components/CubeAddItems.tsx +179 -0
  629. package/src/components/CubeEditor.tsx +73 -44
  630. package/src/components/CubeEntrySourceBanner.tsx +64 -0
  631. package/src/components/CubeNodeIcon.tsx +31 -1
  632. package/src/components/CubeSchemaColumnsTable.tsx +49 -0
  633. package/src/components/canvas/CubeCanvas.tsx +51 -14
  634. package/src/components/canvas/CubeCanvasContextMenu.tsx +31 -30
  635. package/src/components/canvas/CubeCanvasDnd.ts +16 -9
  636. package/src/components/canvas/CubeCanvasElements.ts +12 -3
  637. package/src/components/canvas/CubeCanvasNode.tsx +62 -36
  638. package/src/components/canvas/CubeCanvasNodeFocus.ts +37 -0
  639. package/src/components/canvas/CubeNodeEditorAnchor.ts +82 -0
  640. package/src/components/editors/CubeAggregationRowEditor.tsx +224 -0
  641. package/src/components/editors/CubeColumnChecklist.tsx +130 -0
  642. package/src/components/editors/CubeColumnPicker.tsx +36 -12
  643. package/src/components/editors/CubeConcatEditor.tsx +374 -0
  644. package/src/components/editors/CubeDataProductSourceEditor.tsx +134 -0
  645. package/src/components/editors/CubeDifferenceEditor.tsx +87 -0
  646. package/src/components/editors/CubeDistinctEditor.tsx +28 -0
  647. package/src/components/editors/CubeExtendEditor.tsx +271 -0
  648. package/src/components/editors/CubeFilterEditor.tsx +7 -0
  649. package/src/components/editors/CubeGroupEditor.tsx +135 -0
  650. package/src/components/editors/CubeIngestSourceEditor.tsx +104 -0
  651. package/src/components/editors/CubeIntegerField.tsx +51 -0
  652. package/src/components/editors/CubeJoinEditor.tsx +34 -131
  653. package/src/components/editors/CubeJoinKeyRows.tsx +183 -0
  654. package/src/components/editors/CubeNodeEditorPanel.tsx +103 -29
  655. package/src/components/editors/CubeNodeEditorPopper.tsx +183 -0
  656. package/src/components/editors/CubeNodeEditorRegistry.ts +41 -0
  657. package/src/components/editors/CubePartitionEditor.tsx +208 -0
  658. package/src/components/editors/CubeRenameEditor.tsx +148 -0
  659. package/src/components/editors/CubeRestrictEditor.tsx +103 -0
  660. package/src/components/editors/CubeRowCountEditor.tsx +53 -0
  661. package/src/components/editors/CubeSliceEditor.tsx +69 -0
  662. package/src/components/editors/CubeSortEditor.tsx +84 -0
  663. package/src/components/editors/CubeSortRowEditor.tsx +176 -0
  664. package/src/components/editors/CubeSourceEditor.tsx +42 -40
  665. package/src/components/editors/CubeValueEditor.tsx +2 -1
  666. package/src/components/editors/CubeWarehouseControl.tsx +113 -0
  667. package/src/components/editors/useCubeNodeEditorDismiss.ts +103 -0
  668. package/src/components/examples/CubeExamplesDialog.tsx +199 -0
  669. package/src/components/grid/CubeGridRegion.tsx +49 -10
  670. package/src/components/grid/CubeGridValues.ts +55 -0
  671. package/src/components/grid/CubeResultGrid.tsx +83 -13
  672. package/src/components/palette/CubePalette.tsx +33 -15
  673. package/src/components/source-picker/CubeDataProductTab.tsx +392 -0
  674. package/src/components/source-picker/CubeDirectConnectionTab.tsx +340 -0
  675. package/src/components/source-picker/CubeIngestTab.tsx +232 -0
  676. package/src/components/source-picker/CubeInlineModelTab.tsx +191 -0
  677. package/src/components/source-picker/CubePickerStep.tsx +49 -0
  678. package/src/components/source-picker/CubeProjectTab.tsx +114 -0
  679. package/src/components/source-picker/CubeSourcePicker.tsx +62 -227
  680. package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +1 -1
  681. package/src/graph-manager/CubeConnectionExplorer.ts +106 -0
  682. package/src/graph-manager/CubeDataProduct.ts +150 -0
  683. package/src/graph-manager/CubeDataProductCatalog.ts +245 -0
  684. package/src/graph-manager/CubeDirectConnection.ts +67 -0
  685. package/src/graph-manager/CubeEngine.ts +57 -1
  686. package/src/graph-manager/CubeIngest.ts +144 -0
  687. package/src/graph-manager/CubeIngestCatalog.ts +169 -0
  688. package/src/graph-manager/CubeLakehouseEnvironment.ts +27 -0
  689. package/src/graph-manager/CubeModelOutlineHelper.ts +26 -0
  690. package/src/graph-manager/CubeProject.ts +117 -0
  691. package/src/graph-manager/CubeProjectCatalog.ts +40 -0
  692. package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +145 -1
  693. package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.ts +251 -0
  694. package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.ts +101 -0
  695. package/src/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.ts +339 -0
  696. package/src/graph-manager/protocol/pure/v1/V1_CubeDirectModel.ts +151 -0
  697. package/src/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.ts +45 -4
  698. package/src/graph-manager/protocol/pure/v1/V1_CubeExpression.ts +89 -0
  699. package/src/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.ts +201 -0
  700. package/src/graph-manager/protocol/pure/v1/V1_CubeIngestModel.ts +183 -0
  701. package/src/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.ts +141 -0
  702. package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +84 -4
  703. package/src/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.ts +89 -3
  704. package/src/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.ts +361 -0
  705. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.ts +116 -0
  706. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.ts +744 -0
  707. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +967 -24
  708. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.ts +459 -0
  709. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.ts +147 -0
  710. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.ts +61 -0
  711. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.ts +337 -0
  712. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.ts +206 -0
  713. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +48 -4
  714. package/src/index.ts +20 -0
  715. package/src/stores/CubeAddPlacement.ts +67 -0
  716. package/src/stores/CubeDataProductRecheck.ts +93 -0
  717. package/src/stores/CubeDataProductRuntimeState.ts +256 -0
  718. package/src/stores/CubeDataProductWarehouse.ts +40 -0
  719. package/src/stores/CubeEditorState.ts +621 -68
  720. package/src/stores/CubeEntrySource.ts +278 -0
  721. package/src/stores/CubeExamples.ts +457 -0
  722. package/src/stores/CubeExamplesState.ts +108 -0
  723. package/src/stores/CubeExecutionState.ts +60 -8
  724. package/src/stores/CubeExtendTyping.ts +291 -0
  725. package/src/stores/CubeGridQuickActions.ts +184 -0
  726. package/src/stores/CubeHost.ts +71 -1
  727. package/src/stores/CubeIngestRecheck.ts +92 -0
  728. package/src/stores/CubeNodeEditorState.ts +348 -10
  729. package/src/stores/CubeShowPureState.ts +33 -8
  730. package/src/stores/CubeSourcePickerState.ts +160 -330
  731. package/src/stores/CubeSpecTransferState.ts +2 -2
  732. package/src/stores/LocalModelCatalog.ts +22 -3
  733. package/src/stores/editors/CubeAggregationRows.ts +299 -0
  734. package/src/stores/editors/CubeConcatDraft.ts +49 -0
  735. package/src/stores/editors/CubeDifferenceDraft.ts +147 -0
  736. package/src/stores/editors/CubeExtendDraft.ts +532 -0
  737. package/src/stores/editors/CubeGroupDraft.ts +145 -0
  738. package/src/stores/editors/CubeIntegerText.ts +34 -0
  739. package/src/stores/editors/CubeJoinDraft.ts +170 -54
  740. package/src/stores/editors/CubeJoinKeyPairs.ts +68 -0
  741. package/src/stores/editors/CubeNodeDraft.ts +26 -6
  742. package/src/stores/editors/CubeNodeDraftRegistry.ts +60 -1
  743. package/src/stores/editors/CubePartitionDraft.ts +214 -0
  744. package/src/stores/editors/CubeRenameDraft.ts +110 -0
  745. package/src/stores/editors/CubeRestrictDraft.ts +83 -0
  746. package/src/stores/editors/CubeRowCountDraft.ts +69 -0
  747. package/src/stores/editors/CubeSliceDraft.ts +87 -0
  748. package/src/stores/editors/CubeSortDraft.ts +98 -0
  749. package/src/stores/editors/CubeSortRows.ts +84 -0
  750. package/src/stores/fixtures/CubeNorthwindModel.ts +103 -88
  751. package/src/stores/fixtures/CubeSampleSql.ts +85 -0
  752. package/src/stores/fixtures/CubeSportsModel.ts +182 -0
  753. package/src/stores/fixtures/CubeTradesModel.ts +241 -0
  754. package/src/stores/source-picker/CubeCsvSetupSql.ts +444 -0
  755. package/src/stores/source-picker/CubeDataProductTabState.ts +839 -0
  756. package/src/stores/source-picker/CubeDirectConnectionTabState.ts +647 -0
  757. package/src/stores/source-picker/CubeIngestTabState.ts +551 -0
  758. package/src/stores/source-picker/CubeInlineModelTabState.ts +448 -0
  759. package/src/stores/source-picker/CubeProjectTabState.ts +218 -0
  760. package/src/stores/source-picker/CubeSourcePickerTab.ts +50 -0
  761. package/tsconfig.json +104 -0
@@ -0,0 +1,839 @@
1
+ /**
2
+ * Copyright (c) 2026-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import {
18
+ type CubeContext,
19
+ DATA_PRODUCT_ACCESS_POINT_SOURCE_DEFINITION,
20
+ DataProductAccessPointSource,
21
+ } from '@finos/legend-cube';
22
+ import {
23
+ assertErrorThrown,
24
+ debounce,
25
+ type GeneratorFn,
26
+ } from '@finos/legend-shared';
27
+ import {
28
+ action,
29
+ computed,
30
+ flow,
31
+ flowResult,
32
+ makeObservable,
33
+ observable,
34
+ } from 'mobx';
35
+ import {
36
+ createCubeDataProductModel,
37
+ getEffectiveCubeWarehouse,
38
+ isCubeSnapshotVersion,
39
+ CUBE_DATA_PRODUCT_RUNTIME_PATH,
40
+ CUBE_DEFAULT_CONSUMER_WAREHOUSE,
41
+ type CubeDataProductProject,
42
+ CubeDataProductEnvironmentType,
43
+ getCubeDataProductProject,
44
+ isCubeDataProductModel,
45
+ } from '../../graph-manager/CubeDataProduct.js';
46
+ import {
47
+ type CubeAccessPoint,
48
+ type CubeAccessPointGroupAccess,
49
+ CubeDataProductCandidate,
50
+ type CubeDataProductCatalog,
51
+ type CubeDataProductDescription,
52
+ } from '../../graph-manager/CubeDataProductCatalog.js';
53
+ import { CubeEngineError } from '../../graph-manager/CubeEngine.js';
54
+ import type { CubeEditorState } from '../CubeEditorState.js';
55
+ import {
56
+ type CubeSourcePickerTab,
57
+ CubeSourcePickerTabKey,
58
+ } from './CubeSourcePickerTab.js';
59
+
60
+ /** An error as the tab shows it: its first line, with the rest on demand */
61
+ export interface CubeDataProductTabError {
62
+ readonly message: string;
63
+ readonly detail?: string | undefined;
64
+ }
65
+
66
+ const toError = (error: unknown): CubeDataProductTabError => {
67
+ assertErrorThrown(error);
68
+ return error instanceof CubeEngineError
69
+ ? {
70
+ message: error.firstLine,
71
+ detail: error.detail !== error.firstLine ? error.detail : undefined,
72
+ }
73
+ : { message: error.message };
74
+ };
75
+
76
+ export const CUBE_DATA_PRODUCT_TAB_MESSAGE = {
77
+ CUBE_CHANGED:
78
+ 'The cube changed while the access point was being added; pick it again.',
79
+ TRUNCATED: 'Too many matching items; list truncated.',
80
+ OTHER_PROJECT: (groupId: string, artifactId: string) =>
81
+ `Belongs to project ${groupId}:${artifactId}`,
82
+ OTHER_VERSION: (versionId: string) => `Deployed from version ${versionId}`,
83
+ OTHER_ENVIRONMENT: 'Deployed to another environment',
84
+ NONE_IN_PROJECT:
85
+ "No data product of the cube's project matches; Search all shows the others.",
86
+ } as const;
87
+
88
+ /** How long typing pauses before the text is searched on a server */
89
+ const SEARCH_DELAY_MS = 300;
90
+
91
+ /** Whether a product is deployed from the project and version given, in its class */
92
+ const isFromProject = (
93
+ candidate: CubeDataProductCandidate,
94
+ project: CubeDataProductProject,
95
+ ): boolean =>
96
+ candidate.groupId === project.groupId &&
97
+ candidate.artifactId === project.artifactId &&
98
+ candidate.versionId === project.versionId &&
99
+ candidate.environmentType === project.environmentType;
100
+
101
+ /** Whether two candidates are the same deployed product, at the same version and class */
102
+ const isSameProduct = (
103
+ candidate: CubeDataProductCandidate,
104
+ other: CubeDataProductCandidate,
105
+ ): boolean =>
106
+ candidate.id === other.id &&
107
+ candidate.deploymentId === other.deploymentId &&
108
+ candidate.dataProductPath === other.dataProductPath &&
109
+ candidate.groupId === other.groupId &&
110
+ candidate.artifactId === other.artifactId &&
111
+ candidate.versionId === other.versionId &&
112
+ candidate.environmentType === other.environmentType;
113
+
114
+ /**
115
+ * The source dialog's Data product tab (PLAN §6.8), as Data Cube's selection
116
+ * goes: a deployment class, then a deployed data product, then one of its
117
+ * access points, then the warehouse, filled in with the default. The access
118
+ * point's columns come from the product's deployed artifact, so Add calls no
119
+ * engine. The first access point saves the product's project, its version,
120
+ * the class and the warehouse as the cube's model; after that the tab offers
121
+ * only that project's products, at that version, and reopens on the cube's
122
+ * data product, already expanded. A catalog that searches on a server is
123
+ * searched as the viewer types, and a cube with no search shows its own
124
+ * products, which a page of the server's matches may miss.
125
+ */
126
+ export class CubeDataProductTabState implements CubeSourcePickerTab {
127
+ readonly key = CubeSourcePickerTabKey.DATA_PRODUCT;
128
+ readonly label = 'Data Product';
129
+ readonly editorState: CubeEditorState;
130
+
131
+ environmentType = CubeDataProductEnvironmentType.PRODUCTION;
132
+ search = '';
133
+ /** On a cube with a project, whether the list shows other projects' products too, greyed */
134
+ showAllProjects = false;
135
+ /** The class's deployed products; none until listed */
136
+ candidates: readonly CubeDataProductCandidate[] | undefined;
137
+ /** The class the products were listed for */
138
+ private listedEnvironmentType: CubeDataProductEnvironmentType | undefined;
139
+ /** The text the products were searched for on a server; '' for a whole list */
140
+ private listedText: string | undefined;
141
+ /** What the cube's own products listed were built from; none for a catalog's list */
142
+ private listedOwnKey: string | undefined;
143
+ /** Whether the server's matches listed leave out some */
144
+ private listedCutShort = false;
145
+ candidate: CubeDataProductCandidate | undefined;
146
+ description: CubeDataProductDescription | undefined;
147
+ /** The viewer's access to each group of the picked product; none until read, or when it can't be */
148
+ access: ReadonlyMap<string, CubeAccessPointGroupAccess> | undefined;
149
+ /** The picked access point, by group and id */
150
+ accessPointKey: { readonly group: string; readonly id: string } | undefined;
151
+ warehouse = CUBE_DEFAULT_CONSUMER_WAREHOUSE;
152
+ isListing = false;
153
+ isDescribing = false;
154
+ isAdding = false;
155
+ /** Why the products couldn't be listed, with its own retry */
156
+ listError: CubeDataProductTabError | undefined;
157
+ /** Why a product couldn't be read or its access point added */
158
+ error: CubeDataProductTabError | undefined;
159
+
160
+ /** The warehouse field shows a cube's own, not one the viewer typed */
161
+ private warehouseFromProject = false;
162
+ /** Stops the listing under way: a new listing or closing the dialog drops it */
163
+ private listAbort: AbortController | undefined;
164
+ /** Each counts its calls: a new call or closing the dialog drops a late answer */
165
+ private listRequest = 0;
166
+ private describeRequest = 0;
167
+ private accessRequest = 0;
168
+ private confirmRequest = 0;
169
+ /** Searches the typed text on the server once typing pauses */
170
+ private readonly searchSoon = debounce((): void => {
171
+ flowResult(this.listCandidates()).catch(
172
+ this.editorState.host.applicationStore.alertUnhandledError,
173
+ );
174
+ }, SEARCH_DELAY_MS);
175
+
176
+ constructor(editorState: CubeEditorState) {
177
+ makeObservable<
178
+ CubeDataProductTabState,
179
+ 'listedEnvironmentType' | 'listedText' | 'listedOwnKey' | 'listedCutShort'
180
+ >(this, {
181
+ environmentType: observable,
182
+ search: observable,
183
+ showAllProjects: observable,
184
+ shownCandidates: computed,
185
+ setShowAllProjects: action,
186
+ candidates: observable.ref,
187
+ listedEnvironmentType: observable,
188
+ listedText: observable,
189
+ listedOwnKey: observable,
190
+ listedCutShort: observable,
191
+ candidate: observable.ref,
192
+ description: observable.ref,
193
+ access: observable.ref,
194
+ accessPointKey: observable.ref,
195
+ warehouse: observable,
196
+ isListing: observable,
197
+ isDescribing: observable,
198
+ isAdding: observable,
199
+ listError: observable.ref,
200
+ error: observable.ref,
201
+ isAvailable: computed,
202
+ searchesOnServer: computed,
203
+ fixedProject: computed,
204
+ isSnapshot: computed,
205
+ marketplaceLink: computed,
206
+ visibleCandidates: computed,
207
+ isTruncated: computed,
208
+ accessPoint: computed,
209
+ isBusy: computed,
210
+ canConfirm: computed,
211
+ setEnvironmentType: action,
212
+ setSearch: action,
213
+ selectCandidate: action,
214
+ selectAccessPoint: action,
215
+ setWarehouse: action,
216
+ open: action,
217
+ close: action,
218
+ retryListing: action,
219
+ listCandidates: flow,
220
+ describeCandidate: flow,
221
+ readAccess: flow,
222
+ confirm: flow,
223
+ });
224
+ this.editorState = editorState;
225
+ }
226
+
227
+ get catalog(): CubeDataProductCatalog | undefined {
228
+ return this.editorState.host.dataProductCatalog;
229
+ }
230
+
231
+ /** Hosts without a data product catalog have no data products */
232
+ get isAvailable(): boolean {
233
+ return this.catalog !== undefined;
234
+ }
235
+
236
+ /** Whether the catalog searches the text on a server, rather than the tab filtering its list */
237
+ get searchesOnServer(): boolean {
238
+ return this.catalog?.searchesOnServer === true;
239
+ }
240
+
241
+ ownsContext(context: CubeContext): boolean {
242
+ return isCubeDataProductModel(context.model);
243
+ }
244
+
245
+ /** The cube's project, once its first access point is added: every other comes from it */
246
+ get fixedProject(): CubeDataProductProject | undefined {
247
+ const model = this.editorState.document.context?.model;
248
+ return model ? getCubeDataProductProject(model) : undefined;
249
+ }
250
+
251
+ /** Whether the cube's project, or else the picked product, is at a moving SNAPSHOT version */
252
+ get isSnapshot(): boolean {
253
+ const project = this.fixedProject;
254
+ return project
255
+ ? isCubeSnapshotVersion(project.versionId)
256
+ : this.candidate?.isSnapshot === true;
257
+ }
258
+
259
+ /**
260
+ * The picked product's page in the host's marketplace, on the picked
261
+ * access point's group once there is one; built from the listed product,
262
+ * whose id and deployment the marketplace knows
263
+ */
264
+ get marketplaceLink(): string | undefined {
265
+ const { candidate } = this;
266
+ return candidate
267
+ ? this.catalog?.getMarketplaceLink({
268
+ dataProductId: candidate.id,
269
+ deploymentId: candidate.deploymentId,
270
+ environmentType: candidate.environmentType,
271
+ accessPointGroup: this.accessPointKey?.group,
272
+ })
273
+ : undefined;
274
+ }
275
+
276
+ /** The cube's first data product, which the tab reopens on */
277
+ get fixedDataProductPath(): string | undefined {
278
+ return this.editorState.document.query.nodes.find(
279
+ (node): node is DataProductAccessPointSource =>
280
+ node instanceof DataProductAccessPointSource,
281
+ )?.dataProduct;
282
+ }
283
+
284
+ /**
285
+ * The listed products matching the search, from the cube's project once it
286
+ * has one; a server's matches as it gave them
287
+ */
288
+ get visibleCandidates(): readonly CubeDataProductCandidate[] {
289
+ const search = this.search.trim().toLowerCase();
290
+ const project = this.fixedProject;
291
+ const { searchesOnServer } = this;
292
+ return (this.candidates ?? []).filter(
293
+ (candidate) =>
294
+ (!project || isFromProject(candidate, project)) &&
295
+ (searchesOnServer ||
296
+ [candidate.title, candidate.id, candidate.description ?? '']
297
+ .join('\n')
298
+ .toLowerCase()
299
+ .includes(search)),
300
+ );
301
+ }
302
+
303
+ /**
304
+ * The products the list shows: on a cube with a project, its project's
305
+ * only, unless Search all shows every listed product of the class, those
306
+ * of other projects or versions greyed
307
+ */
308
+ get shownCandidates(): readonly CubeDataProductCandidate[] {
309
+ if (!this.fixedProject || !this.showAllProjects) {
310
+ return this.visibleCandidates;
311
+ }
312
+ const search = this.search.trim().toLowerCase();
313
+ const { searchesOnServer } = this;
314
+ return (this.candidates ?? []).filter(
315
+ (candidate) =>
316
+ candidate.environmentType === this.environmentType &&
317
+ (searchesOnServer ||
318
+ [candidate.title, candidate.id, candidate.description ?? '']
319
+ .join('\n')
320
+ .toLowerCase()
321
+ .includes(search)),
322
+ );
323
+ }
324
+
325
+ /** Why a listed product can't be picked on this cube: it isn't of the cube's project, version or class */
326
+ getCandidateDisabledReason(
327
+ candidate: CubeDataProductCandidate,
328
+ ): string | undefined {
329
+ const project = this.fixedProject;
330
+ if (!project || isFromProject(candidate, project)) {
331
+ return undefined;
332
+ }
333
+ if (
334
+ candidate.groupId !== project.groupId ||
335
+ candidate.artifactId !== project.artifactId
336
+ ) {
337
+ return CUBE_DATA_PRODUCT_TAB_MESSAGE.OTHER_PROJECT(
338
+ candidate.groupId,
339
+ candidate.artifactId,
340
+ );
341
+ }
342
+ return candidate.versionId !== project.versionId
343
+ ? CUBE_DATA_PRODUCT_TAB_MESSAGE.OTHER_VERSION(candidate.versionId)
344
+ : CUBE_DATA_PRODUCT_TAB_MESSAGE.OTHER_ENVIRONMENT;
345
+ }
346
+
347
+ setShowAllProjects(showAllProjects: boolean): void {
348
+ this.showAllProjects = showAllProjects;
349
+ // searching on a server, Search all with no text lists the server's
350
+ // matches, and leaving it lists the cube's own products again
351
+ if (
352
+ this.searchesOnServer &&
353
+ this.candidates !== undefined &&
354
+ this.listedOwnKey !== this.getOwnProductsKey()
355
+ ) {
356
+ flowResult(this.listCandidates()).catch(
357
+ this.editorState.host.applicationStore.alertUnhandledError,
358
+ );
359
+ }
360
+ }
361
+
362
+ /** Whether a server's matches listed may be cut short */
363
+ get isTruncated(): boolean {
364
+ return this.listedCutShort;
365
+ }
366
+
367
+ get accessPoint(): CubeAccessPoint | undefined {
368
+ const key = this.accessPointKey;
369
+ return key
370
+ ? this.description?.groups
371
+ .find((group) => group.id === key.group)
372
+ ?.accessPoints.find((point) => point.id === key.id)
373
+ : undefined;
374
+ }
375
+
376
+ get isBusy(): boolean {
377
+ return this.isListing || this.isDescribing || this.isAdding;
378
+ }
379
+
380
+ get canConfirm(): boolean {
381
+ const { context } = this.editorState.document;
382
+ return (
383
+ this.isAvailable &&
384
+ !this.editorState.readOnly &&
385
+ // a search under way doesn't change the access point picked
386
+ !this.isDescribing &&
387
+ !this.isAdding &&
388
+ (context === undefined || this.fixedProject !== undefined) &&
389
+ this.candidate !== undefined &&
390
+ this.accessPoint?.isPickable === true &&
391
+ this.warehouse.trim().length > 0
392
+ );
393
+ }
394
+
395
+ setEnvironmentType(environmentType: CubeDataProductEnvironmentType): void {
396
+ if (this.fixedProject || environmentType === this.environmentType) {
397
+ return;
398
+ }
399
+ this.environmentType = environmentType;
400
+ this.resetCandidate();
401
+ this.error = undefined;
402
+ this.candidates = undefined;
403
+ this.listedCutShort = false;
404
+ flowResult(this.listCandidates()).catch(
405
+ this.editorState.host.applicationStore.alertUnhandledError,
406
+ );
407
+ }
408
+
409
+ /** Filters the listed products; searching on a server, searches again once typing pauses */
410
+ setSearch(search: string): void {
411
+ this.search = search;
412
+ if (this.searchesOnServer) {
413
+ this.searchSoon();
414
+ }
415
+ }
416
+
417
+ /** Picks a product and reads its access points; picking it again reads them again after a failure */
418
+ selectCandidate(candidate: CubeDataProductCandidate | undefined): void {
419
+ if (candidate && this.getCandidateDisabledReason(candidate) !== undefined) {
420
+ return;
421
+ }
422
+ if (
423
+ candidate === this.candidate &&
424
+ (candidate === undefined || this.description || this.isDescribing)
425
+ ) {
426
+ return;
427
+ }
428
+ this.resetCandidate();
429
+ this.candidate = candidate;
430
+ if (candidate) {
431
+ flowResult(this.describeCandidate(candidate)).catch(
432
+ this.editorState.host.applicationStore.alertUnhandledError,
433
+ );
434
+ }
435
+ }
436
+
437
+ selectAccessPoint(group: string, id: string): void {
438
+ this.accessPointKey = { group, id };
439
+ this.error = undefined;
440
+ }
441
+
442
+ /** The warehouse of a cube without one yet; a saved cube's is kept */
443
+ setWarehouse(warehouse: string): void {
444
+ if (!this.fixedProject) {
445
+ this.warehouse = warehouse;
446
+ }
447
+ }
448
+
449
+ /**
450
+ * When the dialog opens on the tab: on a cube with a project, on its class
451
+ * and warehouse, and then on its data product, expanded; otherwise on the
452
+ * warehouse the viewer last picked, else the default
453
+ */
454
+ open(): void {
455
+ const project = this.fixedProject;
456
+ const runtime = this.editorState.dataProductRuntime;
457
+ this.error = undefined;
458
+ // a cube reopens on its own project's products
459
+ this.showAllProjects = false;
460
+ if (project) {
461
+ if (this.environmentType !== project.environmentType) {
462
+ this.environmentType = project.environmentType;
463
+ this.resetCandidate();
464
+ }
465
+ this.warehouse = getEffectiveCubeWarehouse(
466
+ project,
467
+ runtime.rememberedWarehouse,
468
+ );
469
+ this.warehouseFromProject = true;
470
+ if (this.candidate && !isFromProject(this.candidate, project)) {
471
+ this.resetCandidate();
472
+ }
473
+ } else if (this.warehouseFromProject || !this.candidate) {
474
+ // a new cube starts on the viewer's warehouse, not a previous cube's
475
+ this.warehouse =
476
+ runtime.rememberedWarehouse ?? CUBE_DEFAULT_CONSUMER_WAREHOUSE;
477
+ this.warehouseFromProject = false;
478
+ }
479
+ if (
480
+ this.candidates === undefined ||
481
+ this.listedEnvironmentType !== this.environmentType ||
482
+ (this.searchesOnServer &&
483
+ (this.listedText !== this.search.trim() ||
484
+ this.listedOwnKey !== this.getOwnProductsKey()))
485
+ ) {
486
+ flowResult(this.listCandidates()).catch(
487
+ this.editorState.host.applicationStore.alertUnhandledError,
488
+ );
489
+ } else {
490
+ this.expandCubeDataProduct();
491
+ }
492
+ }
493
+
494
+ close(): void {
495
+ this.searchSoon.cancel();
496
+ this.listAbort?.abort();
497
+ this.listAbort = undefined;
498
+ this.listRequest++;
499
+ this.confirmRequest++;
500
+ this.isListing = false;
501
+ this.isAdding = false;
502
+ // a product whose access points haven't arrived would show none
503
+ if (this.candidate && !this.description) {
504
+ this.resetCandidate();
505
+ }
506
+ this.describeRequest++;
507
+ this.isDescribing = false;
508
+ }
509
+
510
+ /** Lists the products again after a failed listing */
511
+ retryListing(): void {
512
+ flowResult(this.listCandidates()).catch(
513
+ this.editorState.host.applicationStore.alertUnhandledError,
514
+ );
515
+ }
516
+
517
+ /**
518
+ * Lists the class's deployed products; searching on a server, the ones
519
+ * matching the search, or a cube's own when there is no search
520
+ */
521
+ *listCandidates(): GeneratorFn<void> {
522
+ const { catalog } = this;
523
+ if (!catalog) {
524
+ return;
525
+ }
526
+ // this listing replaces one the typing would start
527
+ this.searchSoon.cancel();
528
+ const environmentType = this.environmentType;
529
+ const text = this.searchesOnServer ? this.search.trim() : '';
530
+ const request = ++this.listRequest;
531
+ this.listAbort?.abort();
532
+ this.listAbort = undefined;
533
+ this.listError = undefined;
534
+ const ownKey = this.getOwnProductsKey();
535
+ if (ownKey !== undefined) {
536
+ this.isListing = false;
537
+ this.candidates = this.getOwnProducts();
538
+ this.listedEnvironmentType = environmentType;
539
+ this.listedText = text;
540
+ this.listedOwnKey = ownKey;
541
+ this.listedCutShort = false;
542
+ this.expandCubeDataProduct();
543
+ return;
544
+ }
545
+ const abort = new AbortController();
546
+ this.listAbort = abort;
547
+ this.isListing = true;
548
+ try {
549
+ const candidates = (yield catalog.search(
550
+ { text, environmentType },
551
+ abort.signal,
552
+ )) as readonly CubeDataProductCandidate[];
553
+ if (request !== this.listRequest) {
554
+ return;
555
+ }
556
+ // a server's answer is read anew each time: the picked product stays
557
+ // picked as the answer's row, with the title the server gives it
558
+ const picked = this.candidate;
559
+ const listedPicked = picked
560
+ ? candidates.find((each) => isSameProduct(each, picked))
561
+ : undefined;
562
+ this.candidates = candidates;
563
+ if (listedPicked) {
564
+ this.candidate = listedPicked;
565
+ }
566
+ this.listedEnvironmentType = environmentType;
567
+ this.listedText = text;
568
+ this.listedOwnKey = undefined;
569
+ this.listedCutShort =
570
+ this.searchesOnServer && this.isCutShort(candidates);
571
+ this.expandCubeDataProduct();
572
+ } catch (error) {
573
+ if (request === this.listRequest) {
574
+ this.listError = toError(error);
575
+ // the rows of an earlier listing don't answer this one
576
+ this.candidates = undefined;
577
+ this.listedCutShort = false;
578
+ }
579
+ } finally {
580
+ if (request === this.listRequest) {
581
+ this.isListing = false;
582
+ this.listAbort = undefined;
583
+ }
584
+ }
585
+ }
586
+
587
+ /** Reads a product's access points */
588
+ *describeCandidate(candidate: CubeDataProductCandidate): GeneratorFn<void> {
589
+ const { catalog } = this;
590
+ if (!catalog) {
591
+ return;
592
+ }
593
+ const request = ++this.describeRequest;
594
+ this.isDescribing = true;
595
+ this.error = undefined;
596
+ try {
597
+ const description = (yield catalog.describe(
598
+ candidate,
599
+ )) as CubeDataProductDescription;
600
+ if (
601
+ request !== this.describeRequest ||
602
+ !this.candidate ||
603
+ !isSameProduct(candidate, this.candidate)
604
+ ) {
605
+ return;
606
+ }
607
+ this.description = description;
608
+ flowResult(this.readAccess(candidate)).catch(
609
+ this.editorState.host.applicationStore.alertUnhandledError,
610
+ );
611
+ } catch (error) {
612
+ if (request === this.describeRequest) {
613
+ this.error = toError(error);
614
+ }
615
+ } finally {
616
+ if (request === this.describeRequest) {
617
+ this.isDescribing = false;
618
+ }
619
+ }
620
+ }
621
+
622
+ /**
623
+ * Reads the viewer's access to the picked product's groups, once its
624
+ * access points are shown. A failure shows no access and never stops an
625
+ * Add; an answer for a product no longer picked is dropped
626
+ */
627
+ *readAccess(candidate: CubeDataProductCandidate): GeneratorFn<void> {
628
+ const { catalog } = this;
629
+ if (!catalog?.getAccess) {
630
+ return;
631
+ }
632
+ const request = ++this.accessRequest;
633
+ try {
634
+ const access = (yield catalog.getAccess(candidate)) as ReadonlyMap<
635
+ string,
636
+ CubeAccessPointGroupAccess
637
+ >;
638
+ if (
639
+ request === this.accessRequest &&
640
+ this.candidate &&
641
+ isSameProduct(candidate, this.candidate)
642
+ ) {
643
+ this.access = access;
644
+ }
645
+ } catch {
646
+ // no access shown
647
+ }
648
+ }
649
+
650
+ /** A group of the picked product in the host's marketplace, where access is asked for */
651
+ getAccessPointGroupLink(groupId: string): string | undefined {
652
+ const { candidate } = this;
653
+ return candidate
654
+ ? this.catalog?.getMarketplaceLink({
655
+ dataProductId: candidate.id,
656
+ deploymentId: candidate.deploymentId,
657
+ environmentType: candidate.environmentType,
658
+ accessPointGroup: groupId,
659
+ })
660
+ : undefined;
661
+ }
662
+
663
+ /**
664
+ * Adds the picked access point, typed by the product's deployed artifact.
665
+ * The first saves the product's project, version and class and the
666
+ * warehouse as the cube's model, in the same undo step, and remembers the
667
+ * warehouse for the viewer's next cubes. Gives whether it was added
668
+ */
669
+ *confirm(): GeneratorFn<boolean> {
670
+ if (!this.canConfirm) {
671
+ return false;
672
+ }
673
+ const { editorState } = this;
674
+ const candidate = this.candidate as CubeDataProductCandidate;
675
+ const accessPoint = this.accessPoint as CubeAccessPoint;
676
+ const group = this.accessPointKey?.group as string;
677
+ const warehouse = this.warehouse.trim();
678
+ const request = ++this.confirmRequest;
679
+ this.isAdding = true;
680
+ this.error = undefined;
681
+ try {
682
+ // no engine call: yields once, so a dialog closed meanwhile adds nothing
683
+ yield Promise.resolve();
684
+ if (request !== this.confirmRequest) {
685
+ return false;
686
+ }
687
+ const { document } = editorState;
688
+ const id = document.query.generateId(DataProductAccessPointSource.TYPE);
689
+ const node = DATA_PRODUCT_ACCESS_POINT_SOURCE_DEFINITION.resolve(
690
+ DATA_PRODUCT_ACCESS_POINT_SOURCE_DEFINITION.fromCoordinates(id, {
691
+ dataProduct: candidate.dataProductPath,
692
+ accessPointGroup: group,
693
+ accessPoint: accessPoint.id,
694
+ dataProductId: candidate.id,
695
+ deploymentId: candidate.deploymentId,
696
+ }),
697
+ {
698
+ kind: 'resolved',
699
+ schema: accessPoint.schema as NonNullable<CubeAccessPoint['schema']>,
700
+ },
701
+ );
702
+ const project = this.fixedProject;
703
+ if (
704
+ (document.context !== undefined &&
705
+ (!project || !isFromProject(candidate, project))) ||
706
+ !document.query.canAdd(node)
707
+ ) {
708
+ throw new Error(CUBE_DATA_PRODUCT_TAB_MESSAGE.CUBE_CHANGED);
709
+ }
710
+ const query = document.query.add(node);
711
+ editorState.applyDocument(
712
+ document.context
713
+ ? document.withQuery(query)
714
+ : document
715
+ .withContext({
716
+ model: createCubeDataProductModel({
717
+ groupId: candidate.groupId,
718
+ artifactId: candidate.artifactId,
719
+ versionId: candidate.versionId,
720
+ environmentType: candidate.environmentType,
721
+ warehouse,
722
+ }),
723
+ runtime: CUBE_DATA_PRODUCT_RUNTIME_PATH,
724
+ })
725
+ .withQuery(query),
726
+ );
727
+ if (!project) {
728
+ editorState.dataProductRuntime.remember(warehouse);
729
+ }
730
+ // the product stays expanded, to add another of its access points
731
+ this.accessPointKey = undefined;
732
+ return true;
733
+ } catch (error) {
734
+ if (request === this.confirmRequest) {
735
+ this.error = toError(error);
736
+ }
737
+ return false;
738
+ } finally {
739
+ if (request === this.confirmRequest) {
740
+ this.isAdding = false;
741
+ }
742
+ }
743
+ }
744
+
745
+ /**
746
+ * The cube's own products, from its sources, at the cube's project; none
747
+ * on a cube without one. The picked product stays the one picked
748
+ */
749
+ private getOwnProducts(): CubeDataProductCandidate[] {
750
+ const project = this.fixedProject;
751
+ if (!project) {
752
+ return [];
753
+ }
754
+ const picked = this.candidate;
755
+ const products = new Map<string, CubeDataProductCandidate>();
756
+ this.editorState.document.query.nodes.forEach((node) => {
757
+ if (
758
+ node instanceof DataProductAccessPointSource &&
759
+ !products.has(node.dataProduct)
760
+ ) {
761
+ products.set(
762
+ node.dataProduct,
763
+ picked?.dataProductPath === node.dataProduct &&
764
+ isFromProject(picked, project)
765
+ ? picked
766
+ : new CubeDataProductCandidate({
767
+ id: node.dataProductId,
768
+ deploymentId: node.deploymentId,
769
+ dataProductPath: node.dataProduct,
770
+ title: node.dataProductId,
771
+ groupId: project.groupId,
772
+ artifactId: project.artifactId,
773
+ versionId: project.versionId,
774
+ environmentType: project.environmentType,
775
+ }),
776
+ );
777
+ }
778
+ });
779
+ return [...products.values()];
780
+ }
781
+
782
+ /**
783
+ * What the tab lists the cube's own products from, when it does: searching
784
+ * on a server, on a cube with sources and no search. None otherwise
785
+ */
786
+ private getOwnProductsKey(): string | undefined {
787
+ // Search all lists the server's matches, not just the cube's own
788
+ if (!this.searchesOnServer || this.search.trim() || this.showAllProjects) {
789
+ return undefined;
790
+ }
791
+ const products = this.getOwnProducts();
792
+ return products.length
793
+ ? JSON.stringify(
794
+ products.map((product) => [
795
+ product.groupId,
796
+ product.artifactId,
797
+ product.versionId,
798
+ product.environmentType,
799
+ product.dataProductPath,
800
+ ]),
801
+ )
802
+ : undefined;
803
+ }
804
+
805
+ /** Whether the catalog's answer leaves out matches, as it says, else as long as one search gives */
806
+ private isCutShort(answer: readonly CubeDataProductCandidate[]): boolean {
807
+ const { catalog } = this;
808
+ if (catalog?.isCutShort) {
809
+ return catalog.isCutShort(answer);
810
+ }
811
+ const limit = catalog?.searchLimit;
812
+ return limit !== undefined && answer.length >= limit;
813
+ }
814
+
815
+ /** On a cube with a data product, picks that product from the list, expanded */
816
+ private expandCubeDataProduct(): void {
817
+ const project = this.fixedProject;
818
+ const path = this.fixedDataProductPath;
819
+ if (!project || !path || this.candidate) {
820
+ return;
821
+ }
822
+ const candidate = this.visibleCandidates.find(
823
+ (each) => each.dataProductPath === path,
824
+ );
825
+ if (candidate) {
826
+ this.selectCandidate(candidate);
827
+ }
828
+ }
829
+
830
+ private resetCandidate(): void {
831
+ this.describeRequest++;
832
+ this.accessRequest++;
833
+ this.isDescribing = false;
834
+ this.candidate = undefined;
835
+ this.description = undefined;
836
+ this.access = undefined;
837
+ this.accessPointKey = undefined;
838
+ }
839
+ }