@finos/legend-cube-builder 0.0.3 → 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 (691) hide show
  1. package/README.md +52 -19
  2. package/docs/adding-an-operation.md +102 -13
  3. package/docs/hosting.md +82 -4
  4. package/docs/testing.md +114 -9
  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 +12 -2
  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 +76 -3
  25. package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -1
  26. package/lib/__lib__/LegendCubeLabels.js +102 -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 +12 -0
  48. package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -1
  49. package/lib/__test-utils__/CubeEngineTestSupport.js +21 -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 +25 -0
  56. package/lib/__test-utils__/CubeOperationsTestUtils.d.ts.map +1 -1
  57. package/lib/__test-utils__/CubeOperationsTestUtils.js +56 -10
  58. package/lib/__test-utils__/CubeOperationsTestUtils.js.map +1 -1
  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 +14 -1
  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 +8 -1
  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 +31 -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.map +1 -1
  119. package/lib/components/canvas/CubeCanvasElements.js +6 -3
  120. package/lib/components/canvas/CubeCanvasElements.js.map +1 -1
  121. package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -1
  122. package/lib/components/canvas/CubeCanvasNode.js +30 -20
  123. package/lib/components/canvas/CubeCanvasNode.js.map +1 -1
  124. package/lib/components/canvas/CubeCanvasNodeFocus.d.ts +22 -0
  125. package/lib/components/canvas/CubeCanvasNodeFocus.d.ts.map +1 -0
  126. package/lib/components/canvas/CubeCanvasNodeFocus.js +31 -0
  127. package/lib/components/canvas/CubeCanvasNodeFocus.js.map +1 -0
  128. package/lib/components/canvas/CubeNodeEditorAnchor.d.ts +44 -0
  129. package/lib/components/canvas/CubeNodeEditorAnchor.d.ts.map +1 -0
  130. package/lib/components/canvas/CubeNodeEditorAnchor.js +51 -0
  131. package/lib/components/canvas/CubeNodeEditorAnchor.js.map +1 -0
  132. package/lib/components/editors/CubeAggregationRowEditor.d.ts +48 -0
  133. package/lib/components/editors/CubeAggregationRowEditor.d.ts.map +1 -0
  134. package/lib/components/editors/CubeAggregationRowEditor.js +72 -0
  135. package/lib/components/editors/CubeAggregationRowEditor.js.map +1 -0
  136. package/lib/components/editors/CubeColumnChecklist.d.ts +42 -0
  137. package/lib/components/editors/CubeColumnChecklist.d.ts.map +1 -0
  138. package/lib/components/editors/CubeColumnChecklist.js +41 -0
  139. package/lib/components/editors/CubeColumnChecklist.js.map +1 -0
  140. package/lib/components/editors/CubeConcatEditor.d.ts +33 -0
  141. package/lib/components/editors/CubeConcatEditor.d.ts.map +1 -0
  142. package/lib/components/editors/CubeConcatEditor.js +147 -0
  143. package/lib/components/editors/CubeConcatEditor.js.map +1 -0
  144. package/lib/components/editors/CubeDataProductSourceEditor.d.ts +25 -0
  145. package/lib/components/editors/CubeDataProductSourceEditor.d.ts.map +1 -0
  146. package/lib/components/editors/CubeDataProductSourceEditor.js +53 -0
  147. package/lib/components/editors/CubeDataProductSourceEditor.js.map +1 -0
  148. package/lib/components/editors/CubeDifferenceEditor.d.ts +25 -0
  149. package/lib/components/editors/CubeDifferenceEditor.d.ts.map +1 -0
  150. package/lib/components/editors/CubeDifferenceEditor.js +29 -0
  151. package/lib/components/editors/CubeDifferenceEditor.js.map +1 -0
  152. package/lib/components/editors/CubeExtendEditor.d.ts +25 -0
  153. package/lib/components/editors/CubeExtendEditor.d.ts.map +1 -0
  154. package/lib/components/editors/CubeExtendEditor.js +86 -0
  155. package/lib/components/editors/CubeExtendEditor.js.map +1 -0
  156. package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -1
  157. package/lib/components/editors/CubeFilterEditor.js +3 -3
  158. package/lib/components/editors/CubeFilterEditor.js.map +1 -1
  159. package/lib/components/editors/CubeGroupEditor.d.ts +28 -0
  160. package/lib/components/editors/CubeGroupEditor.d.ts.map +1 -0
  161. package/lib/components/editors/CubeGroupEditor.js +70 -0
  162. package/lib/components/editors/CubeGroupEditor.js.map +1 -0
  163. package/lib/components/editors/CubeIngestSourceEditor.d.ts +26 -0
  164. package/lib/components/editors/CubeIngestSourceEditor.d.ts.map +1 -0
  165. package/lib/components/editors/CubeIngestSourceEditor.js +47 -0
  166. package/lib/components/editors/CubeIngestSourceEditor.js.map +1 -0
  167. package/lib/components/editors/CubeJoinEditor.d.ts +2 -4
  168. package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -1
  169. package/lib/components/editors/CubeJoinEditor.js +7 -37
  170. package/lib/components/editors/CubeJoinEditor.js.map +1 -1
  171. package/lib/components/editors/CubeJoinKeyRows.d.ts +34 -0
  172. package/lib/components/editors/CubeJoinKeyRows.d.ts.map +1 -0
  173. package/lib/components/editors/CubeJoinKeyRows.js +65 -0
  174. package/lib/components/editors/CubeJoinKeyRows.js.map +1 -0
  175. package/lib/components/editors/CubeNodeEditorPanel.d.ts +7 -5
  176. package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -1
  177. package/lib/components/editors/CubeNodeEditorPanel.js +51 -13
  178. package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -1
  179. package/lib/components/editors/CubeNodeEditorPopper.d.ts +40 -0
  180. package/lib/components/editors/CubeNodeEditorPopper.d.ts.map +1 -0
  181. package/lib/components/editors/CubeNodeEditorPopper.js +125 -0
  182. package/lib/components/editors/CubeNodeEditorPopper.js.map +1 -0
  183. package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -1
  184. package/lib/components/editors/CubeNodeEditorRegistry.js +15 -1
  185. package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -1
  186. package/lib/components/editors/CubePartitionEditor.d.ts +30 -0
  187. package/lib/components/editors/CubePartitionEditor.d.ts.map +1 -0
  188. package/lib/components/editors/CubePartitionEditor.js +93 -0
  189. package/lib/components/editors/CubePartitionEditor.js.map +1 -0
  190. package/lib/components/editors/CubeRenameEditor.d.ts.map +1 -1
  191. package/lib/components/editors/CubeRenameEditor.js +6 -4
  192. package/lib/components/editors/CubeRenameEditor.js.map +1 -1
  193. package/lib/components/editors/CubeRestrictEditor.js +1 -1
  194. package/lib/components/editors/CubeRestrictEditor.js.map +1 -1
  195. package/lib/components/editors/CubeSortEditor.d.ts.map +1 -1
  196. package/lib/components/editors/CubeSortEditor.js +10 -37
  197. package/lib/components/editors/CubeSortEditor.js.map +1 -1
  198. package/lib/components/editors/CubeSortRowEditor.d.ts +47 -0
  199. package/lib/components/editors/CubeSortRowEditor.d.ts.map +1 -0
  200. package/lib/components/editors/CubeSortRowEditor.js +62 -0
  201. package/lib/components/editors/CubeSortRowEditor.js.map +1 -0
  202. package/lib/components/editors/CubeSourceEditor.d.ts.map +1 -1
  203. package/lib/components/editors/CubeSourceEditor.js +18 -5
  204. package/lib/components/editors/CubeSourceEditor.js.map +1 -1
  205. package/lib/components/editors/CubeWarehouseControl.d.ts +30 -0
  206. package/lib/components/editors/CubeWarehouseControl.d.ts.map +1 -0
  207. package/lib/components/editors/CubeWarehouseControl.js +44 -0
  208. package/lib/components/editors/CubeWarehouseControl.js.map +1 -0
  209. package/lib/components/editors/useCubeNodeEditorDismiss.d.ts +31 -0
  210. package/lib/components/editors/useCubeNodeEditorDismiss.d.ts.map +1 -0
  211. package/lib/components/editors/useCubeNodeEditorDismiss.js +83 -0
  212. package/lib/components/editors/useCubeNodeEditorDismiss.js.map +1 -0
  213. package/lib/components/examples/CubeExamplesDialog.d.ts +26 -0
  214. package/lib/components/examples/CubeExamplesDialog.d.ts.map +1 -0
  215. package/lib/components/examples/CubeExamplesDialog.js +68 -0
  216. package/lib/components/examples/CubeExamplesDialog.js.map +1 -0
  217. package/lib/components/grid/CubeGridRegion.d.ts.map +1 -1
  218. package/lib/components/grid/CubeGridRegion.js +19 -8
  219. package/lib/components/grid/CubeGridRegion.js.map +1 -1
  220. package/lib/components/grid/CubeGridValues.d.ts +16 -0
  221. package/lib/components/grid/CubeGridValues.d.ts.map +1 -1
  222. package/lib/components/grid/CubeGridValues.js +44 -0
  223. package/lib/components/grid/CubeGridValues.js.map +1 -1
  224. package/lib/components/grid/CubeResultGrid.d.ts.map +1 -1
  225. package/lib/components/grid/CubeResultGrid.js +14 -2
  226. package/lib/components/grid/CubeResultGrid.js.map +1 -1
  227. package/lib/components/palette/CubePalette.d.ts.map +1 -1
  228. package/lib/components/palette/CubePalette.js +23 -12
  229. package/lib/components/palette/CubePalette.js.map +1 -1
  230. package/lib/components/source-picker/CubeDataProductTab.d.ts +27 -0
  231. package/lib/components/source-picker/CubeDataProductTab.d.ts.map +1 -0
  232. package/lib/components/source-picker/CubeDataProductTab.js +102 -0
  233. package/lib/components/source-picker/CubeDataProductTab.js.map +1 -0
  234. package/lib/components/source-picker/CubeDirectConnectionTab.d.ts +27 -0
  235. package/lib/components/source-picker/CubeDirectConnectionTab.d.ts.map +1 -0
  236. package/lib/components/source-picker/CubeDirectConnectionTab.js +87 -0
  237. package/lib/components/source-picker/CubeDirectConnectionTab.js.map +1 -0
  238. package/lib/components/source-picker/CubeIngestTab.d.ts +28 -0
  239. package/lib/components/source-picker/CubeIngestTab.d.ts.map +1 -0
  240. package/lib/components/source-picker/CubeIngestTab.js +66 -0
  241. package/lib/components/source-picker/CubeIngestTab.js.map +1 -0
  242. package/lib/components/source-picker/CubeInlineModelTab.d.ts +37 -0
  243. package/lib/components/source-picker/CubeInlineModelTab.d.ts.map +1 -0
  244. package/lib/components/source-picker/CubeInlineModelTab.js +71 -0
  245. package/lib/components/source-picker/CubeInlineModelTab.js.map +1 -0
  246. package/lib/components/source-picker/CubePickerStep.d.ts +27 -0
  247. package/lib/components/source-picker/CubePickerStep.d.ts.map +1 -0
  248. package/lib/components/source-picker/CubePickerStep.js +23 -0
  249. package/lib/components/source-picker/CubePickerStep.js.map +1 -0
  250. package/lib/components/source-picker/CubeProjectTab.d.ts +27 -0
  251. package/lib/components/source-picker/CubeProjectTab.d.ts.map +1 -0
  252. package/lib/components/source-picker/CubeProjectTab.js +50 -0
  253. package/lib/components/source-picker/CubeProjectTab.js.map +1 -0
  254. package/lib/components/source-picker/CubeSourcePicker.d.ts +6 -0
  255. package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -1
  256. package/lib/components/source-picker/CubeSourcePicker.js +20 -58
  257. package/lib/components/source-picker/CubeSourcePicker.js.map +1 -1
  258. package/lib/components/spec-transfer/CubeSpecTransferDialog.js +1 -1
  259. package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -1
  260. package/lib/graph-manager/CubeConnectionExplorer.d.ts +90 -0
  261. package/lib/graph-manager/CubeConnectionExplorer.d.ts.map +1 -0
  262. package/lib/graph-manager/CubeConnectionExplorer.js +34 -0
  263. package/lib/graph-manager/CubeConnectionExplorer.js.map +1 -0
  264. package/lib/graph-manager/CubeDataProduct.d.ts +66 -0
  265. package/lib/graph-manager/CubeDataProduct.d.ts.map +1 -0
  266. package/lib/graph-manager/CubeDataProduct.js +102 -0
  267. package/lib/graph-manager/CubeDataProduct.js.map +1 -0
  268. package/lib/graph-manager/CubeDataProductCatalog.d.ts +167 -0
  269. package/lib/graph-manager/CubeDataProductCatalog.d.ts.map +1 -0
  270. package/lib/graph-manager/CubeDataProductCatalog.js +116 -0
  271. package/lib/graph-manager/CubeDataProductCatalog.js.map +1 -0
  272. package/lib/graph-manager/CubeDirectConnection.d.ts +38 -0
  273. package/lib/graph-manager/CubeDirectConnection.d.ts.map +1 -0
  274. package/lib/graph-manager/CubeDirectConnection.js +48 -0
  275. package/lib/graph-manager/CubeDirectConnection.js.map +1 -0
  276. package/lib/graph-manager/CubeEngine.d.ts +37 -2
  277. package/lib/graph-manager/CubeEngine.d.ts.map +1 -1
  278. package/lib/graph-manager/CubeEngine.js +4 -1
  279. package/lib/graph-manager/CubeEngine.js.map +1 -1
  280. package/lib/graph-manager/CubeIngest.d.ts +50 -0
  281. package/lib/graph-manager/CubeIngest.d.ts.map +1 -0
  282. package/lib/graph-manager/CubeIngest.js +88 -0
  283. package/lib/graph-manager/CubeIngest.js.map +1 -0
  284. package/lib/graph-manager/CubeIngestCatalog.d.ts +116 -0
  285. package/lib/graph-manager/CubeIngestCatalog.d.ts.map +1 -0
  286. package/lib/graph-manager/CubeIngestCatalog.js +80 -0
  287. package/lib/graph-manager/CubeIngestCatalog.js.map +1 -0
  288. package/lib/graph-manager/CubeLakehouseEnvironment.d.ts +26 -0
  289. package/lib/graph-manager/CubeLakehouseEnvironment.d.ts.map +1 -0
  290. package/lib/graph-manager/CubeLakehouseEnvironment.js +17 -0
  291. package/lib/graph-manager/CubeLakehouseEnvironment.js.map +1 -0
  292. package/lib/graph-manager/CubeProject.d.ts +41 -0
  293. package/lib/graph-manager/CubeProject.d.ts.map +1 -0
  294. package/lib/graph-manager/CubeProject.js +84 -0
  295. package/lib/graph-manager/CubeProject.js.map +1 -0
  296. package/lib/graph-manager/CubeProjectCatalog.d.ts +35 -0
  297. package/lib/graph-manager/CubeProjectCatalog.d.ts.map +1 -0
  298. package/lib/graph-manager/CubeProjectCatalog.js +17 -0
  299. package/lib/graph-manager/CubeProjectCatalog.js.map +1 -0
  300. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +63 -1
  301. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -1
  302. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +50 -1
  303. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -1
  304. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.d.ts +44 -0
  305. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.d.ts.map +1 -0
  306. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.js +192 -0
  307. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.js.map +1 -0
  308. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts +29 -0
  309. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts.map +1 -0
  310. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js +84 -0
  311. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js.map +1 -0
  312. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.d.ts +41 -0
  313. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.d.ts.map +1 -0
  314. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.js +246 -0
  315. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.js.map +1 -0
  316. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.d.ts +43 -0
  317. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.d.ts.map +1 -0
  318. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.js +112 -0
  319. package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.js.map +1 -0
  320. package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.d.ts.map +1 -1
  321. package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js +30 -4
  322. package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js.map +1 -1
  323. package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.d.ts +23 -0
  324. package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.d.ts.map +1 -0
  325. package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.js +68 -0
  326. package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.js.map +1 -0
  327. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts +30 -0
  328. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts.map +1 -0
  329. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js +140 -0
  330. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js.map +1 -0
  331. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts +62 -0
  332. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts.map +1 -0
  333. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js +119 -0
  334. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js.map +1 -0
  335. package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.d.ts +33 -0
  336. package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.d.ts.map +1 -0
  337. package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.js +94 -0
  338. package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.js.map +1 -0
  339. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts.map +1 -1
  340. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js +63 -4
  341. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +1 -1
  342. package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.d.ts +67 -0
  343. package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.d.ts.map +1 -0
  344. package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.js +238 -0
  345. package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.js.map +1 -0
  346. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts +34 -0
  347. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts.map +1 -0
  348. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js +64 -0
  349. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js.map +1 -0
  350. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.d.ts +104 -0
  351. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.d.ts.map +1 -0
  352. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.js +484 -0
  353. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.js.map +1 -0
  354. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +97 -3
  355. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -1
  356. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +585 -20
  357. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -1
  358. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.d.ts +69 -0
  359. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.d.ts.map +1 -0
  360. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.js +270 -0
  361. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.js.map +1 -0
  362. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts +35 -0
  363. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts.map +1 -0
  364. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js +91 -0
  365. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js.map +1 -0
  366. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.d.ts +25 -0
  367. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.d.ts.map +1 -0
  368. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.js +47 -0
  369. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.js.map +1 -0
  370. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.d.ts +28 -0
  371. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.d.ts.map +1 -0
  372. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.js +310 -0
  373. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.js.map +1 -0
  374. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.d.ts +33 -0
  375. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.d.ts.map +1 -0
  376. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.js +188 -0
  377. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.js.map +1 -0
  378. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts +1 -1
  379. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts.map +1 -1
  380. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js +27 -1
  381. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js.map +1 -1
  382. package/lib/index.css +2 -2
  383. package/lib/index.css.map +1 -1
  384. package/lib/index.d.ts +11 -1
  385. package/lib/index.d.ts.map +1 -1
  386. package/lib/index.js +10 -1
  387. package/lib/index.js.map +1 -1
  388. package/lib/stores/CubeAddPlacement.d.ts +32 -0
  389. package/lib/stores/CubeAddPlacement.d.ts.map +1 -0
  390. package/lib/stores/CubeAddPlacement.js +40 -0
  391. package/lib/stores/CubeAddPlacement.js.map +1 -0
  392. package/lib/stores/CubeDataProductRecheck.d.ts +27 -0
  393. package/lib/stores/CubeDataProductRecheck.d.ts.map +1 -0
  394. package/lib/stores/CubeDataProductRecheck.js +54 -0
  395. package/lib/stores/CubeDataProductRecheck.js.map +1 -0
  396. package/lib/stores/CubeDataProductRuntimeState.d.ts +88 -0
  397. package/lib/stores/CubeDataProductRuntimeState.d.ts.map +1 -0
  398. package/lib/stores/CubeDataProductRuntimeState.js +190 -0
  399. package/lib/stores/CubeDataProductRuntimeState.js.map +1 -0
  400. package/lib/stores/CubeDataProductWarehouse.d.ts +19 -0
  401. package/lib/stores/CubeDataProductWarehouse.d.ts.map +1 -0
  402. package/lib/stores/CubeDataProductWarehouse.js +25 -0
  403. package/lib/stores/CubeDataProductWarehouse.js.map +1 -0
  404. package/lib/stores/CubeEditorState.d.ts +100 -16
  405. package/lib/stores/CubeEditorState.d.ts.map +1 -1
  406. package/lib/stores/CubeEditorState.js +347 -47
  407. package/lib/stores/CubeEditorState.js.map +1 -1
  408. package/lib/stores/CubeEntrySource.d.ts +78 -0
  409. package/lib/stores/CubeEntrySource.d.ts.map +1 -0
  410. package/lib/stores/CubeEntrySource.js +200 -0
  411. package/lib/stores/CubeEntrySource.js.map +1 -0
  412. package/lib/stores/CubeExamples.d.ts +43 -0
  413. package/lib/stores/CubeExamples.d.ts.map +1 -0
  414. package/lib/stores/CubeExamples.js +296 -0
  415. package/lib/stores/CubeExamples.js.map +1 -0
  416. package/lib/stores/CubeExamplesState.d.ts +45 -0
  417. package/lib/stores/CubeExamplesState.d.ts.map +1 -0
  418. package/lib/stores/CubeExamplesState.js +81 -0
  419. package/lib/stores/CubeExamplesState.js.map +1 -0
  420. package/lib/stores/CubeExecutionState.d.ts +6 -2
  421. package/lib/stores/CubeExecutionState.d.ts.map +1 -1
  422. package/lib/stores/CubeExecutionState.js +15 -5
  423. package/lib/stores/CubeExecutionState.js.map +1 -1
  424. package/lib/stores/CubeExtendTyping.d.ts +72 -0
  425. package/lib/stores/CubeExtendTyping.d.ts.map +1 -0
  426. package/lib/stores/CubeExtendTyping.js +176 -0
  427. package/lib/stores/CubeExtendTyping.js.map +1 -0
  428. package/lib/stores/CubeGridQuickActions.d.ts +14 -6
  429. package/lib/stores/CubeGridQuickActions.d.ts.map +1 -1
  430. package/lib/stores/CubeGridQuickActions.js +53 -15
  431. package/lib/stores/CubeGridQuickActions.js.map +1 -1
  432. package/lib/stores/CubeHost.d.ts +32 -1
  433. package/lib/stores/CubeHost.d.ts.map +1 -1
  434. package/lib/stores/CubeHost.js +21 -1
  435. package/lib/stores/CubeHost.js.map +1 -1
  436. package/lib/stores/CubeIngestRecheck.d.ts +26 -0
  437. package/lib/stores/CubeIngestRecheck.d.ts.map +1 -0
  438. package/lib/stores/CubeIngestRecheck.js +53 -0
  439. package/lib/stores/CubeIngestRecheck.js.map +1 -0
  440. package/lib/stores/CubeNodeEditorState.d.ts +101 -5
  441. package/lib/stores/CubeNodeEditorState.d.ts.map +1 -1
  442. package/lib/stores/CubeNodeEditorState.js +221 -10
  443. package/lib/stores/CubeNodeEditorState.js.map +1 -1
  444. package/lib/stores/CubeShowPureState.d.ts +5 -2
  445. package/lib/stores/CubeShowPureState.d.ts.map +1 -1
  446. package/lib/stores/CubeShowPureState.js +7 -4
  447. package/lib/stores/CubeShowPureState.js.map +1 -1
  448. package/lib/stores/CubeSourcePickerState.d.ts +54 -65
  449. package/lib/stores/CubeSourcePickerState.d.ts.map +1 -1
  450. package/lib/stores/CubeSourcePickerState.js +155 -276
  451. package/lib/stores/CubeSourcePickerState.js.map +1 -1
  452. package/lib/stores/CubeSpecTransferState.d.ts +2 -2
  453. package/lib/stores/CubeSpecTransferState.js +2 -2
  454. package/lib/stores/LocalModelCatalog.d.ts +2 -0
  455. package/lib/stores/LocalModelCatalog.d.ts.map +1 -1
  456. package/lib/stores/LocalModelCatalog.js +17 -3
  457. package/lib/stores/LocalModelCatalog.js.map +1 -1
  458. package/lib/stores/editors/CubeAggregationRows.d.ts +80 -0
  459. package/lib/stores/editors/CubeAggregationRows.d.ts.map +1 -0
  460. package/lib/stores/editors/CubeAggregationRows.js +164 -0
  461. package/lib/stores/editors/CubeAggregationRows.js.map +1 -0
  462. package/lib/stores/editors/CubeConcatDraft.d.ts +30 -0
  463. package/lib/stores/editors/CubeConcatDraft.d.ts.map +1 -0
  464. package/lib/stores/editors/CubeConcatDraft.js +44 -0
  465. package/lib/stores/editors/CubeConcatDraft.js.map +1 -0
  466. package/lib/stores/editors/CubeDifferenceDraft.d.ts +49 -0
  467. package/lib/stores/editors/CubeDifferenceDraft.d.ts.map +1 -0
  468. package/lib/stores/editors/CubeDifferenceDraft.js +111 -0
  469. package/lib/stores/editors/CubeDifferenceDraft.js.map +1 -0
  470. package/lib/stores/editors/CubeExtendDraft.d.ts +110 -0
  471. package/lib/stores/editors/CubeExtendDraft.d.ts.map +1 -0
  472. package/lib/stores/editors/CubeExtendDraft.js +359 -0
  473. package/lib/stores/editors/CubeExtendDraft.js.map +1 -0
  474. package/lib/stores/editors/CubeGroupDraft.d.ts +61 -0
  475. package/lib/stores/editors/CubeGroupDraft.d.ts.map +1 -0
  476. package/lib/stores/editors/CubeGroupDraft.js +106 -0
  477. package/lib/stores/editors/CubeGroupDraft.js.map +1 -0
  478. package/lib/stores/editors/CubeJoinDraft.d.ts +9 -10
  479. package/lib/stores/editors/CubeJoinDraft.d.ts.map +1 -1
  480. package/lib/stores/editors/CubeJoinDraft.js +92 -21
  481. package/lib/stores/editors/CubeJoinDraft.js.map +1 -1
  482. package/lib/stores/editors/CubeJoinKeyPairs.d.ts +38 -0
  483. package/lib/stores/editors/CubeJoinKeyPairs.d.ts.map +1 -0
  484. package/lib/stores/editors/CubeJoinKeyPairs.js +33 -0
  485. package/lib/stores/editors/CubeJoinKeyPairs.js.map +1 -0
  486. package/lib/stores/editors/CubeNodeDraft.d.ts +20 -6
  487. package/lib/stores/editors/CubeNodeDraft.d.ts.map +1 -1
  488. package/lib/stores/editors/CubeNodeDraft.js +23 -5
  489. package/lib/stores/editors/CubeNodeDraft.js.map +1 -1
  490. package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -1
  491. package/lib/stores/editors/CubeNodeDraftRegistry.js +20 -1
  492. package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -1
  493. package/lib/stores/editors/CubePartitionDraft.d.ts +70 -0
  494. package/lib/stores/editors/CubePartitionDraft.d.ts.map +1 -0
  495. package/lib/stores/editors/CubePartitionDraft.js +154 -0
  496. package/lib/stores/editors/CubePartitionDraft.js.map +1 -0
  497. package/lib/stores/editors/CubeSortDraft.d.ts +2 -10
  498. package/lib/stores/editors/CubeSortDraft.d.ts.map +1 -1
  499. package/lib/stores/editors/CubeSortDraft.js +9 -35
  500. package/lib/stores/editors/CubeSortDraft.js.map +1 -1
  501. package/lib/stores/editors/CubeSortRows.d.ts +34 -0
  502. package/lib/stores/editors/CubeSortRows.d.ts.map +1 -0
  503. package/lib/stores/editors/CubeSortRows.js +50 -0
  504. package/lib/stores/editors/CubeSortRows.js.map +1 -0
  505. package/lib/stores/fixtures/CubeNorthwindModel.d.ts +7 -0
  506. package/lib/stores/fixtures/CubeNorthwindModel.d.ts.map +1 -1
  507. package/lib/stores/fixtures/CubeNorthwindModel.js +99 -87
  508. package/lib/stores/fixtures/CubeNorthwindModel.js.map +1 -1
  509. package/lib/stores/fixtures/CubeSampleSql.d.ts +34 -0
  510. package/lib/stores/fixtures/CubeSampleSql.d.ts.map +1 -0
  511. package/lib/stores/fixtures/CubeSampleSql.js +64 -0
  512. package/lib/stores/fixtures/CubeSampleSql.js.map +1 -0
  513. package/lib/stores/fixtures/CubeSportsModel.d.ts +27 -0
  514. package/lib/stores/fixtures/CubeSportsModel.d.ts.map +1 -0
  515. package/lib/stores/fixtures/CubeSportsModel.js +158 -0
  516. package/lib/stores/fixtures/CubeSportsModel.js.map +1 -0
  517. package/lib/stores/fixtures/CubeTradesModel.d.ts +29 -0
  518. package/lib/stores/fixtures/CubeTradesModel.d.ts.map +1 -0
  519. package/lib/stores/fixtures/CubeTradesModel.js +197 -0
  520. package/lib/stores/fixtures/CubeTradesModel.js.map +1 -0
  521. package/lib/stores/source-picker/CubeCsvSetupSql.d.ts +71 -0
  522. package/lib/stores/source-picker/CubeCsvSetupSql.d.ts.map +1 -0
  523. package/lib/stores/source-picker/CubeCsvSetupSql.js +392 -0
  524. package/lib/stores/source-picker/CubeCsvSetupSql.js.map +1 -0
  525. package/lib/stores/source-picker/CubeDataProductTabState.d.ts +186 -0
  526. package/lib/stores/source-picker/CubeDataProductTabState.d.ts.map +1 -0
  527. package/lib/stores/source-picker/CubeDataProductTabState.js +681 -0
  528. package/lib/stores/source-picker/CubeDataProductTabState.js.map +1 -0
  529. package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts +140 -0
  530. package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts.map +1 -0
  531. package/lib/stores/source-picker/CubeDirectConnectionTabState.js +516 -0
  532. package/lib/stores/source-picker/CubeDirectConnectionTabState.js.map +1 -0
  533. package/lib/stores/source-picker/CubeIngestTabState.d.ts +114 -0
  534. package/lib/stores/source-picker/CubeIngestTabState.d.ts.map +1 -0
  535. package/lib/stores/source-picker/CubeIngestTabState.js +455 -0
  536. package/lib/stores/source-picker/CubeIngestTabState.js.map +1 -0
  537. package/lib/stores/source-picker/CubeInlineModelTabState.d.ts +107 -0
  538. package/lib/stores/source-picker/CubeInlineModelTabState.d.ts.map +1 -0
  539. package/lib/stores/source-picker/CubeInlineModelTabState.js +347 -0
  540. package/lib/stores/source-picker/CubeInlineModelTabState.js.map +1 -0
  541. package/lib/stores/source-picker/CubeProjectTabState.d.ts +62 -0
  542. package/lib/stores/source-picker/CubeProjectTabState.d.ts.map +1 -0
  543. package/lib/stores/source-picker/CubeProjectTabState.js +181 -0
  544. package/lib/stores/source-picker/CubeProjectTabState.js.map +1 -0
  545. package/lib/stores/source-picker/CubeSourcePickerTab.d.ts +48 -0
  546. package/lib/stores/source-picker/CubeSourcePickerTab.d.ts.map +1 -0
  547. package/lib/stores/source-picker/CubeSourcePickerTab.js +24 -0
  548. package/lib/stores/source-picker/CubeSourcePickerTab.js.map +1 -0
  549. package/package.json +10 -6
  550. package/src/__lib__/LegendCubeCommand.ts +5 -0
  551. package/src/__lib__/LegendCubeDataProductLabels.ts +91 -0
  552. package/src/__lib__/LegendCubeDirectConnectionLabels.ts +111 -0
  553. package/src/__lib__/LegendCubeHelpText.ts +25 -1
  554. package/src/__lib__/LegendCubeIngestLabels.ts +40 -0
  555. package/src/__lib__/LegendCubeLabels.ts +162 -4
  556. package/src/__lib__/LegendCubeProjectLabels.ts +25 -0
  557. package/src/__lib__/LegendCubeTesting.ts +1 -0
  558. package/src/__test-utils__/CubeCanvasTestUtils.ts +1 -1
  559. package/src/__test-utils__/CubeConnectionTestSupport.ts +45 -0
  560. package/src/__test-utils__/CubeDirectConnectionFixtures.ts +70 -0
  561. package/src/__test-utils__/CubeEngineTestSupport.ts +38 -0
  562. package/src/__test-utils__/CubeExpressionTestUtils.ts +119 -0
  563. package/src/__test-utils__/CubeOperationsTestUtils.ts +93 -18
  564. package/src/__test-utils__/CubePageTestUtils.tsx +35 -0
  565. package/src/__test-utils__/CubeTestApplication.ts +21 -2
  566. package/src/__test-utils__/FakeCubeConnectionExplorer.ts +111 -0
  567. package/src/__test-utils__/FakeCubeDataProductCatalog.ts +227 -0
  568. package/src/__test-utils__/FakeCubeEngine.ts +25 -1
  569. package/src/__test-utils__/FakeCubeIngestCatalog.ts +180 -0
  570. package/src/__test-utils__/FakeCubeProjectCatalog.ts +89 -0
  571. package/src/components/CubeAddItems.tsx +179 -0
  572. package/src/components/CubeEditor.tsx +73 -44
  573. package/src/components/CubeEntrySourceBanner.tsx +64 -0
  574. package/src/components/CubeNodeIcon.tsx +13 -0
  575. package/src/components/CubeSchemaColumnsTable.tsx +49 -0
  576. package/src/components/canvas/CubeCanvas.tsx +49 -14
  577. package/src/components/canvas/CubeCanvasContextMenu.tsx +31 -30
  578. package/src/components/canvas/CubeCanvasDnd.ts +16 -9
  579. package/src/components/canvas/CubeCanvasElements.ts +8 -2
  580. package/src/components/canvas/CubeCanvasNode.tsx +61 -43
  581. package/src/components/canvas/CubeCanvasNodeFocus.ts +37 -0
  582. package/src/components/canvas/CubeNodeEditorAnchor.ts +82 -0
  583. package/src/components/editors/CubeAggregationRowEditor.tsx +224 -0
  584. package/src/components/editors/CubeColumnChecklist.tsx +130 -0
  585. package/src/components/editors/CubeConcatEditor.tsx +374 -0
  586. package/src/components/editors/CubeDataProductSourceEditor.tsx +134 -0
  587. package/src/components/editors/CubeDifferenceEditor.tsx +87 -0
  588. package/src/components/editors/CubeExtendEditor.tsx +271 -0
  589. package/src/components/editors/CubeFilterEditor.tsx +7 -0
  590. package/src/components/editors/CubeGroupEditor.tsx +135 -0
  591. package/src/components/editors/CubeIngestSourceEditor.tsx +104 -0
  592. package/src/components/editors/CubeJoinEditor.tsx +12 -132
  593. package/src/components/editors/CubeJoinKeyRows.tsx +183 -0
  594. package/src/components/editors/CubeNodeEditorPanel.tsx +91 -28
  595. package/src/components/editors/CubeNodeEditorPopper.tsx +183 -0
  596. package/src/components/editors/CubeNodeEditorRegistry.ts +21 -0
  597. package/src/components/editors/CubePartitionEditor.tsx +208 -0
  598. package/src/components/editors/CubeRenameEditor.tsx +10 -5
  599. package/src/components/editors/CubeRestrictEditor.tsx +1 -1
  600. package/src/components/editors/CubeSortEditor.tsx +20 -142
  601. package/src/components/editors/CubeSortRowEditor.tsx +176 -0
  602. package/src/components/editors/CubeSourceEditor.tsx +42 -30
  603. package/src/components/editors/CubeWarehouseControl.tsx +113 -0
  604. package/src/components/editors/useCubeNodeEditorDismiss.ts +103 -0
  605. package/src/components/examples/CubeExamplesDialog.tsx +199 -0
  606. package/src/components/grid/CubeGridRegion.tsx +48 -10
  607. package/src/components/grid/CubeGridValues.ts +55 -0
  608. package/src/components/grid/CubeResultGrid.tsx +24 -8
  609. package/src/components/palette/CubePalette.tsx +33 -15
  610. package/src/components/source-picker/CubeDataProductTab.tsx +392 -0
  611. package/src/components/source-picker/CubeDirectConnectionTab.tsx +340 -0
  612. package/src/components/source-picker/CubeIngestTab.tsx +232 -0
  613. package/src/components/source-picker/CubeInlineModelTab.tsx +191 -0
  614. package/src/components/source-picker/CubePickerStep.tsx +49 -0
  615. package/src/components/source-picker/CubeProjectTab.tsx +114 -0
  616. package/src/components/source-picker/CubeSourcePicker.tsx +62 -227
  617. package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +1 -1
  618. package/src/graph-manager/CubeConnectionExplorer.ts +106 -0
  619. package/src/graph-manager/CubeDataProduct.ts +150 -0
  620. package/src/graph-manager/CubeDataProductCatalog.ts +245 -0
  621. package/src/graph-manager/CubeDirectConnection.ts +67 -0
  622. package/src/graph-manager/CubeEngine.ts +43 -1
  623. package/src/graph-manager/CubeIngest.ts +144 -0
  624. package/src/graph-manager/CubeIngestCatalog.ts +169 -0
  625. package/src/graph-manager/CubeLakehouseEnvironment.ts +27 -0
  626. package/src/graph-manager/CubeProject.ts +117 -0
  627. package/src/graph-manager/CubeProjectCatalog.ts +40 -0
  628. package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +145 -1
  629. package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.ts +251 -0
  630. package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.ts +101 -0
  631. package/src/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.ts +339 -0
  632. package/src/graph-manager/protocol/pure/v1/V1_CubeDirectModel.ts +151 -0
  633. package/src/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.ts +45 -4
  634. package/src/graph-manager/protocol/pure/v1/V1_CubeExpression.ts +89 -0
  635. package/src/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.ts +201 -0
  636. package/src/graph-manager/protocol/pure/v1/V1_CubeIngestModel.ts +183 -0
  637. package/src/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.ts +141 -0
  638. package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +84 -4
  639. package/src/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.ts +361 -0
  640. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.ts +116 -0
  641. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.ts +744 -0
  642. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +967 -24
  643. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.ts +459 -0
  644. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.ts +147 -0
  645. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.ts +61 -0
  646. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.ts +337 -0
  647. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.ts +206 -0
  648. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +42 -1
  649. package/src/index.ts +20 -0
  650. package/src/stores/CubeAddPlacement.ts +67 -0
  651. package/src/stores/CubeDataProductRecheck.ts +93 -0
  652. package/src/stores/CubeDataProductRuntimeState.ts +256 -0
  653. package/src/stores/CubeDataProductWarehouse.ts +40 -0
  654. package/src/stores/CubeEditorState.ts +511 -63
  655. package/src/stores/CubeEntrySource.ts +278 -0
  656. package/src/stores/CubeExamples.ts +457 -0
  657. package/src/stores/CubeExamplesState.ts +108 -0
  658. package/src/stores/CubeExecutionState.ts +24 -5
  659. package/src/stores/CubeExtendTyping.ts +291 -0
  660. package/src/stores/CubeGridQuickActions.ts +69 -14
  661. package/src/stores/CubeHost.ts +71 -1
  662. package/src/stores/CubeIngestRecheck.ts +92 -0
  663. package/src/stores/CubeNodeEditorState.ts +278 -9
  664. package/src/stores/CubeShowPureState.ts +7 -4
  665. package/src/stores/CubeSourcePickerState.ts +160 -330
  666. package/src/stores/CubeSpecTransferState.ts +2 -2
  667. package/src/stores/LocalModelCatalog.ts +22 -3
  668. package/src/stores/editors/CubeAggregationRows.ts +299 -0
  669. package/src/stores/editors/CubeConcatDraft.ts +49 -0
  670. package/src/stores/editors/CubeDifferenceDraft.ts +147 -0
  671. package/src/stores/editors/CubeExtendDraft.ts +532 -0
  672. package/src/stores/editors/CubeGroupDraft.ts +145 -0
  673. package/src/stores/editors/CubeJoinDraft.ts +130 -41
  674. package/src/stores/editors/CubeJoinKeyPairs.ts +68 -0
  675. package/src/stores/editors/CubeNodeDraft.ts +26 -6
  676. package/src/stores/editors/CubeNodeDraftRegistry.ts +25 -0
  677. package/src/stores/editors/CubePartitionDraft.ts +214 -0
  678. package/src/stores/editors/CubeSortDraft.ts +17 -54
  679. package/src/stores/editors/CubeSortRows.ts +84 -0
  680. package/src/stores/fixtures/CubeNorthwindModel.ts +103 -88
  681. package/src/stores/fixtures/CubeSampleSql.ts +85 -0
  682. package/src/stores/fixtures/CubeSportsModel.ts +182 -0
  683. package/src/stores/fixtures/CubeTradesModel.ts +241 -0
  684. package/src/stores/source-picker/CubeCsvSetupSql.ts +444 -0
  685. package/src/stores/source-picker/CubeDataProductTabState.ts +839 -0
  686. package/src/stores/source-picker/CubeDirectConnectionTabState.ts +647 -0
  687. package/src/stores/source-picker/CubeIngestTabState.ts +551 -0
  688. package/src/stores/source-picker/CubeInlineModelTabState.ts +448 -0
  689. package/src/stores/source-picker/CubeProjectTabState.ts +218 -0
  690. package/src/stores/source-picker/CubeSourcePickerTab.ts +50 -0
  691. package/tsconfig.json +89 -0
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Copyright (c) 2026-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { addSampleDays, createSampleRandom, pickSample, sampleInsert, toPureSetupSqls, } from './CubeSampleSql.js';
17
+ // The trades sample: made-up trades of the first half of 2026 by six desks in
18
+ // made-up instruments, in an in-memory H2 database the engine fills from the
19
+ // model's setup SQL
20
+ export const CUBE_TRADES_DATABASE = 'cube::samples::trades::TradesDatabase';
21
+ export const CUBE_TRADES_CONNECTION = 'cube::samples::trades::TradesConnection';
22
+ export const CUBE_TRADES_RUNTIME = 'cube::samples::trades::TradesRuntime';
23
+ export const CUBE_TRADES_SCHEMA = 'TRADES_SAMPLE';
24
+ export const CUBE_TRADES_TRADE_COUNT = 400;
25
+ /** Each desk, its region, and the asset classes it trades */
26
+ const DESKS = [
27
+ ['Equities Cash', 'Americas', ['Equity']],
28
+ ['Equity Derivatives', 'Europe', ['Equity', 'Commodity']],
29
+ ['Rates', 'Americas', ['Bond', 'FX']],
30
+ ['Credit', 'Europe', ['Bond']],
31
+ ['FX', 'Asia', ['FX']],
32
+ ['Commodities', 'Americas', ['Commodity', 'FX']],
33
+ ];
34
+ /** Each instrument: symbol, name, asset class, currency and a typical price */
35
+ const INSTRUMENTS = [
36
+ ['ACME', 'Acme Industries', 'Equity', 'USD', 182.5],
37
+ ['GLBX', 'Globex Corp', 'Equity', 'USD', 64.2],
38
+ ['INIT', 'Initech', 'Equity', 'USD', 23.75],
39
+ ['UMBR', 'Umbrella Holdings', 'Equity', 'EUR', 96.4],
40
+ ['STRK', 'Stark Works', 'Equity', 'EUR', 310.1],
41
+ ['UST10', 'Treasury 10Y', 'Bond', 'USD', 98.6],
42
+ ['UST2', 'Treasury 2Y', 'Bond', 'USD', 99.8],
43
+ ['BUND10', 'Bund 10Y', 'Bond', 'EUR', 101.3],
44
+ ['ACME28', 'Acme 4.5% 2028', 'Bond', 'USD', 97.2],
45
+ ['EURUSD', 'Euro / Dollar', 'FX', 'USD', 1.0875],
46
+ ['USDJPY', 'Dollar / Yen', 'FX', 'JPY', 148.35],
47
+ ['GBPUSD', 'Pound / Dollar', 'FX', 'USD', 1.265],
48
+ ['GOLD', 'Gold', 'Commodity', 'USD', 2350.0],
49
+ ['BRENT', 'Brent Crude', 'Commodity', 'USD', 82.4],
50
+ ['COPPER', 'Copper', 'Commodity', 'USD', 4.15],
51
+ ];
52
+ /** What a unit of each currency is worth in dollars, fixed for the sample */
53
+ export const CUBE_TRADES_USD_RATES = new Map([
54
+ ['USD', 1],
55
+ ['EUR', 1.08],
56
+ ['JPY', 0.0067],
57
+ ]);
58
+ /** How many units a trade of an asset class is for, at most */
59
+ const MAX_QUANTITY = new Map([
60
+ ['Equity', 5_000],
61
+ ['Bond', 2_000],
62
+ ['FX', 1_000_000],
63
+ ['Commodity', 1_000],
64
+ ]);
65
+ /** A whole number of ten-thousandths as a decimal text, e.g. 12345 is 1.2345 */
66
+ const fromTenThousandths = (value, scale) => {
67
+ const text = String(value).padStart(5, '0');
68
+ const whole = text.slice(0, -4);
69
+ const fraction = text.slice(-4).slice(0, scale);
70
+ return scale === 0 ? whole : `${whole}.${fraction}`;
71
+ };
72
+ const createTrades = () => {
73
+ const random = createSampleRandom(20260102);
74
+ const trades = [];
75
+ for (let id = 1; id <= CUBE_TRADES_TRADE_COUNT; id++) {
76
+ const deskIndex = Math.floor(random() * DESKS.length);
77
+ const [, , assetClasses] = pickSample(DESKS, deskIndex / DESKS.length);
78
+ const assetClass = pickSample(assetClasses, random());
79
+ const choices = INSTRUMENTS.flatMap((instrument, index) => instrument[2] === assetClass ? [index] : []);
80
+ const instrumentIndex = pickSample(choices, random());
81
+ const [, , , currency, price] = pickSample(INSTRUMENTS, instrumentIndex / INSTRUMENTS.length);
82
+ const quantity = Math.max(1, Math.round(random() * (MAX_QUANTITY.get(assetClass) ?? 1_000)));
83
+ // prices move up to 5% either way, kept to four decimals
84
+ const priceInTenThousandths = Math.round(price * (0.95 + random() * 0.1) * 10_000);
85
+ // the notional in dollars, at a fixed rate, kept to cents
86
+ const notionalInTenThousandths = Math.round((quantity *
87
+ priceInTenThousandths *
88
+ (CUBE_TRADES_USD_RATES.get(currency) ?? 1)) /
89
+ 100) * 100;
90
+ // trading days: Monday to Friday
91
+ let day = Math.floor(random() * 181);
92
+ while ([0, 6].includes(new Date(Date.UTC(2026, 0, 1 + day)).getUTCDay())) {
93
+ day = (day + 1) % 181;
94
+ }
95
+ trades.push([
96
+ id,
97
+ { date: addSampleDays('2026-01-01', day) },
98
+ deskIndex + 1,
99
+ instrumentIndex + 1,
100
+ random() < 0.5 ? 'BUY' : 'SELL',
101
+ quantity,
102
+ { decimal: fromTenThousandths(priceInTenThousandths, 4) },
103
+ { decimal: fromTenThousandths(notionalInTenThousandths, 2) },
104
+ ]);
105
+ }
106
+ return trades;
107
+ };
108
+ /** The SQL that makes and fills the tables, run on every connection checkout */
109
+ export const CUBE_TRADES_SETUP_SQLS = [
110
+ `drop schema if exists ${CUBE_TRADES_SCHEMA} cascade`,
111
+ `create schema ${CUBE_TRADES_SCHEMA}`,
112
+ `create table ${CUBE_TRADES_SCHEMA}.DESKS (ID INTEGER PRIMARY KEY, DESK VARCHAR(20) NOT NULL, REGION VARCHAR(10) NOT NULL)`,
113
+ sampleInsert(`${CUBE_TRADES_SCHEMA}.DESKS`, DESKS.map(([desk, region], index) => [index + 1, desk, region])),
114
+ `create table ${CUBE_TRADES_SCHEMA}.INSTRUMENTS (ID INTEGER PRIMARY KEY, SYMBOL VARCHAR(10) NOT NULL, INSTRUMENT VARCHAR(30) NOT NULL, ASSET_CLASS VARCHAR(10) NOT NULL, CURRENCY VARCHAR(3) NOT NULL)`,
115
+ sampleInsert(`${CUBE_TRADES_SCHEMA}.INSTRUMENTS`, INSTRUMENTS.map(([symbol, name, assetClass, currency], index) => [
116
+ index + 1,
117
+ symbol,
118
+ name,
119
+ assetClass,
120
+ currency,
121
+ ])),
122
+ `create table ${CUBE_TRADES_SCHEMA}.TRADES (TRADE_ID INTEGER PRIMARY KEY, TRADE_DATE DATE NOT NULL, DESK_ID INTEGER NOT NULL, INSTRUMENT_ID INTEGER NOT NULL, SIDE VARCHAR(4) NOT NULL, QUANTITY INTEGER NOT NULL, PRICE DECIMAL(14,4) NOT NULL, NOTIONAL_USD DECIMAL(18,2) NOT NULL)`,
123
+ sampleInsert(`${CUBE_TRADES_SCHEMA}.TRADES`, createTrades()),
124
+ ];
125
+ export const CUBE_TRADES_MODEL_CODE = `###Relational
126
+ Database ${CUBE_TRADES_DATABASE}
127
+ (
128
+ Schema ${CUBE_TRADES_SCHEMA}
129
+ (
130
+ Table DESKS
131
+ (
132
+ ID INTEGER PRIMARY KEY,
133
+ DESK VARCHAR(20) NOT NULL,
134
+ REGION VARCHAR(10) NOT NULL
135
+ )
136
+ Table INSTRUMENTS
137
+ (
138
+ ID INTEGER PRIMARY KEY,
139
+ SYMBOL VARCHAR(10) NOT NULL,
140
+ INSTRUMENT VARCHAR(30) NOT NULL,
141
+ ASSET_CLASS VARCHAR(10) NOT NULL,
142
+ CURRENCY VARCHAR(3) NOT NULL
143
+ )
144
+ Table TRADES
145
+ (
146
+ TRADE_ID INTEGER PRIMARY KEY,
147
+ TRADE_DATE DATE NOT NULL,
148
+ DESK_ID INTEGER NOT NULL,
149
+ INSTRUMENT_ID INTEGER NOT NULL,
150
+ SIDE VARCHAR(4) NOT NULL,
151
+ QUANTITY INTEGER NOT NULL,
152
+ PRICE DECIMAL(14,4) NOT NULL,
153
+ NOTIONAL_USD DECIMAL(18,2) NOT NULL
154
+ )
155
+ )
156
+
157
+ Join TRADE_DESK(${CUBE_TRADES_SCHEMA}.TRADES.DESK_ID = ${CUBE_TRADES_SCHEMA}.DESKS.ID)
158
+ Join TRADE_INSTRUMENT(${CUBE_TRADES_SCHEMA}.TRADES.INSTRUMENT_ID = ${CUBE_TRADES_SCHEMA}.INSTRUMENTS.ID)
159
+ )
160
+
161
+
162
+ ###Connection
163
+ RelationalDatabaseConnection ${CUBE_TRADES_CONNECTION}
164
+ {
165
+ store: ${CUBE_TRADES_DATABASE};
166
+ type: H2;
167
+ specification: LocalH2
168
+ {
169
+ testDataSetupSqls: [
170
+ ${toPureSetupSqls(CUBE_TRADES_SETUP_SQLS)}
171
+ ];
172
+ };
173
+ auth: DefaultH2;
174
+ }
175
+
176
+
177
+ ###Runtime
178
+ Runtime ${CUBE_TRADES_RUNTIME}
179
+ {
180
+ mappings:
181
+ [
182
+ ];
183
+ connections:
184
+ [
185
+ ${CUBE_TRADES_DATABASE}:
186
+ [
187
+ connection_1: ${CUBE_TRADES_CONNECTION}
188
+ ]
189
+ ];
190
+ }
191
+ `;
192
+ /** The trades sample as a cube saves it (PLAN §6.2.2) */
193
+ export const CUBE_TRADES_MODEL = Object.freeze({
194
+ _type: 'text',
195
+ code: CUBE_TRADES_MODEL_CODE,
196
+ });
197
+ //# sourceMappingURL=CubeTradesModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeTradesModel.js","sourceRoot":"","sources":["../../../src/stores/fixtures/CubeTradesModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
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
+ /** The most rows a CSV may have: the cube saves them, and every connection inserts them again */
17
+ export declare const CUBE_CSV_MAX_ROWS = 10000;
18
+ /** The most characters a CSV may have */
19
+ export declare const CUBE_CSV_MAX_LENGTH = 5000000;
20
+ /** The schema a CSV's table is created in */
21
+ export declare const CUBE_CSV_SCHEMA = "csv";
22
+ /** The DuckDB types a CSV's columns are given, from their values */
23
+ export declare enum CubeCsvColumnType {
24
+ INTEGER = "INTEGER",
25
+ BIGINT = "BIGINT",
26
+ DOUBLE = "DOUBLE",
27
+ BOOLEAN = "BOOLEAN",
28
+ DATE = "DATE",
29
+ TIMESTAMP = "TIMESTAMP",
30
+ VARCHAR = "VARCHAR"
31
+ }
32
+ export declare class CubeCsvError extends Error {
33
+ }
34
+ /** A CSV loaded as a table: its name, its columns and their types, and the setup SQL that creates it */
35
+ export interface CubeCsvTable {
36
+ readonly table: string;
37
+ readonly columns: readonly {
38
+ readonly name: string;
39
+ readonly type: CubeCsvColumnType;
40
+ }[];
41
+ readonly rowCount: number;
42
+ /** Statements in the form's setup SQL text: each ends on a line ending in ';' */
43
+ readonly sql: string;
44
+ }
45
+ /**
46
+ * The records of a CSV (RFC 4180): fields split on commas, a field in double
47
+ * quotes may hold commas, line breaks and doubled quotes; blank lines are
48
+ * skipped
49
+ */
50
+ export declare const parseCubeCsv: (text: string) => string[][];
51
+ /**
52
+ * A column's type from its values, empty ones left out: the narrowest type
53
+ * every value fits. Whole numbers with a leading zero (codes, such as
54
+ * `007`) and ones past 64 bits stay text, so no digit is lost; numbers
55
+ * with a fraction are DOUBLE. A column of empty values is text.
56
+ */
57
+ export declare const inferCubeCsvColumnType: (values: readonly string[]) => CubeCsvColumnType;
58
+ /**
59
+ * A name the database takes unquoted: letters, digits and underscores, not
60
+ * starting with a digit, and no reserved word (one gets a trailing
61
+ * underscore)
62
+ */
63
+ export declare const toCubeCsvName: (text: string, fallback: string) => string;
64
+ /**
65
+ * A CSV, with a header row, as a table of the `csv` schema: setup SQL that
66
+ * creates the schema if needed, drops and creates the table, then inserts
67
+ * the rows. Refuses an empty CSV, a record whose values don't match the
68
+ * header, and one past the limits.
69
+ */
70
+ export declare const buildCubeCsvTable: (text: string, tableName: string) => CubeCsvTable;
71
+ //# sourceMappingURL=CubeCsvSetupSql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeCsvSetupSql.d.ts","sourceRoot":"","sources":["../../../src/stores/source-picker/CubeCsvSetupSql.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,iGAAiG;AACjG,eAAO,MAAM,iBAAiB,QAAS,CAAC;AAExC,yCAAyC;AACzC,eAAO,MAAM,mBAAmB,UAAY,CAAC;AAE7C,6CAA6C;AAC7C,eAAO,MAAM,eAAe,QAAQ,CAAC;AAKrC,oEAAoE;AACpE,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,OAAO,YAAY;CACpB;AAED,qBAAa,YAAa,SAAQ,KAAK;CAAG;AAE1C,wGAAwG;AACxG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;KAClC,EAAE,CAAC;IACJ,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAAM,EAAE,EA8DnD,CAAC;AA2CF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,SAAS,MAAM,EAAE,KACxB,iBA8BF,CAAC;AAuHF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,KAAG,MAK9D,CAAC;AA2CF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EACZ,WAAW,MAAM,KAChB,YAsDF,CAAC"}
@@ -0,0 +1,392 @@
1
+ /**
2
+ * Copyright (c) 2026-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { CUBE_CSV_MESSAGE } from '../../__lib__/LegendCubeDirectConnectionLabels.js';
17
+ // A CSV loaded into an in-memory DuckDB connection: the CSV becomes setup SQL
18
+ // (a table, then its rows as inserts), which the engine runs on every
19
+ // connection and the cube saves with its connection. No file reaches the
20
+ // engine's host
21
+ /** The most rows a CSV may have: the cube saves them, and every connection inserts them again */
22
+ export const CUBE_CSV_MAX_ROWS = 10_000;
23
+ /** The most characters a CSV may have */
24
+ export const CUBE_CSV_MAX_LENGTH = 5_000_000;
25
+ /** The schema a CSV's table is created in */
26
+ export const CUBE_CSV_SCHEMA = 'csv';
27
+ /** How many rows one insert statement holds */
28
+ const ROWS_PER_INSERT = 1000;
29
+ /** The DuckDB types a CSV's columns are given, from their values */
30
+ export var CubeCsvColumnType;
31
+ (function (CubeCsvColumnType) {
32
+ CubeCsvColumnType["INTEGER"] = "INTEGER";
33
+ CubeCsvColumnType["BIGINT"] = "BIGINT";
34
+ CubeCsvColumnType["DOUBLE"] = "DOUBLE";
35
+ CubeCsvColumnType["BOOLEAN"] = "BOOLEAN";
36
+ CubeCsvColumnType["DATE"] = "DATE";
37
+ CubeCsvColumnType["TIMESTAMP"] = "TIMESTAMP";
38
+ CubeCsvColumnType["VARCHAR"] = "VARCHAR";
39
+ })(CubeCsvColumnType || (CubeCsvColumnType = {}));
40
+ export class CubeCsvError extends Error {
41
+ }
42
+ /**
43
+ * The records of a CSV (RFC 4180): fields split on commas, a field in double
44
+ * quotes may hold commas, line breaks and doubled quotes; blank lines are
45
+ * skipped
46
+ */
47
+ export const parseCubeCsv = (text) => {
48
+ const source = text.startsWith('') ? text.slice(1) : text;
49
+ const records = [];
50
+ let record = [];
51
+ let field = '';
52
+ let quoted = false;
53
+ let wasQuoted = false;
54
+ let line = 1;
55
+ let quoteLine = 1;
56
+ const endField = () => {
57
+ record.push(field);
58
+ field = '';
59
+ wasQuoted = false;
60
+ };
61
+ const endRecord = () => {
62
+ const lastWasQuoted = wasQuoted;
63
+ endField();
64
+ // a blank line is one empty field, never quoted
65
+ if (record.length > 1 || record[0] !== '' || lastWasQuoted) {
66
+ records.push(record);
67
+ }
68
+ record = [];
69
+ };
70
+ for (let index = 0; index < source.length; index++) {
71
+ const char = source.charAt(index);
72
+ if (quoted) {
73
+ if (char === '"') {
74
+ if (source.charAt(index + 1) === '"') {
75
+ field += '"';
76
+ index++;
77
+ }
78
+ else {
79
+ quoted = false;
80
+ }
81
+ }
82
+ else {
83
+ if (char === '\n') {
84
+ line++;
85
+ }
86
+ field += char;
87
+ }
88
+ }
89
+ else if (char === '"' && field === '') {
90
+ quoted = true;
91
+ wasQuoted = true;
92
+ quoteLine = line;
93
+ }
94
+ else if (char === ',') {
95
+ endField();
96
+ }
97
+ else if (char === '\r' || char === '\n') {
98
+ if (char === '\r' && source.charAt(index + 1) === '\n') {
99
+ index++;
100
+ }
101
+ line++;
102
+ endRecord();
103
+ }
104
+ else {
105
+ field += char;
106
+ }
107
+ }
108
+ if (quoted) {
109
+ throw new CubeCsvError(CUBE_CSV_MESSAGE.UNCLOSED_QUOTE(quoteLine));
110
+ }
111
+ if (field !== '' || record.length || wasQuoted) {
112
+ endRecord();
113
+ }
114
+ return records;
115
+ };
116
+ const INTEGER_TEXT = /^[+-]?(?:0|[1-9]\d*)$/u;
117
+ const NUMBER_TEXT = /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/u;
118
+ const BOOLEAN_TEXT = /^(?:true|false)$/iu;
119
+ const DATE_TEXT = /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/u;
120
+ const TIMESTAMP_TEXT = /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})[ T](?<hour>\d{2}):(?<minute>\d{2})(?::(?<second>\d{2})(?:\.\d{1,9})?)?$/u;
121
+ const INT32 = { min: -(2n ** 31n), max: 2n ** 31n - 1n };
122
+ const INT64 = { min: -(2n ** 63n), max: 2n ** 63n - 1n };
123
+ const fits = (text, range) => {
124
+ const value = BigInt(text);
125
+ return value >= range.min && value <= range.max;
126
+ };
127
+ /** Whether year, month and day name a real day */
128
+ const isDay = (year, month, day) => {
129
+ const date = new Date(Date.UTC(Number(year), Number(month) - 1, Number(day)));
130
+ return (date.getUTCFullYear() === Number(year) &&
131
+ date.getUTCMonth() === Number(month) - 1 &&
132
+ date.getUTCDate() === Number(day));
133
+ };
134
+ const isDate = (text) => {
135
+ const day = DATE_TEXT.exec(text)?.groups;
136
+ return Boolean(day && isDay(day.year ?? '', day.month ?? '', day.day ?? ''));
137
+ };
138
+ const isTimestamp = (text) => {
139
+ const at = TIMESTAMP_TEXT.exec(text)?.groups;
140
+ return Boolean(at &&
141
+ isDay(at.year ?? '', at.month ?? '', at.day ?? '') &&
142
+ Number(at.hour) < 24 &&
143
+ Number(at.minute) < 60 &&
144
+ Number(at.second ?? '0') < 60);
145
+ };
146
+ /**
147
+ * A column's type from its values, empty ones left out: the narrowest type
148
+ * every value fits. Whole numbers with a leading zero (codes, such as
149
+ * `007`) and ones past 64 bits stay text, so no digit is lost; numbers
150
+ * with a fraction are DOUBLE. A column of empty values is text.
151
+ */
152
+ export const inferCubeCsvColumnType = (values) => {
153
+ const present = values.filter((value) => value !== '');
154
+ if (!present.length) {
155
+ return CubeCsvColumnType.VARCHAR;
156
+ }
157
+ if (present.every((value) => INTEGER_TEXT.test(value))) {
158
+ if (present.every((value) => fits(value, INT32))) {
159
+ return CubeCsvColumnType.INTEGER;
160
+ }
161
+ return present.every((value) => fits(value, INT64))
162
+ ? CubeCsvColumnType.BIGINT
163
+ : CubeCsvColumnType.VARCHAR;
164
+ }
165
+ if (present.every((value) => NUMBER_TEXT.test(value)) &&
166
+ // a whole number with a leading zero is a code, not a number
167
+ !present.some((value) => /^[+-]?0\d/u.test(value))) {
168
+ return CubeCsvColumnType.DOUBLE;
169
+ }
170
+ if (present.every((value) => BOOLEAN_TEXT.test(value))) {
171
+ return CubeCsvColumnType.BOOLEAN;
172
+ }
173
+ if (present.every(isDate)) {
174
+ return CubeCsvColumnType.DATE;
175
+ }
176
+ if (present.every((value) => isDate(value) || isTimestamp(value))) {
177
+ return CubeCsvColumnType.TIMESTAMP;
178
+ }
179
+ return CubeCsvColumnType.VARCHAR;
180
+ };
181
+ /**
182
+ * The keywords that can't name a column or table unquoted: DuckDB's
183
+ * `reserved` and `type_function` ones, as `duckdb_keywords()` lists them on
184
+ * the engine's DuckDB (1.3)
185
+ */
186
+ const RESERVED_WORDS = new Set([
187
+ 'all',
188
+ 'analyse',
189
+ 'analyze',
190
+ 'and',
191
+ 'anti',
192
+ 'any',
193
+ 'array',
194
+ 'as',
195
+ 'asc',
196
+ 'asof',
197
+ 'asymmetric',
198
+ 'at',
199
+ 'authorization',
200
+ 'binary',
201
+ 'both',
202
+ 'case',
203
+ 'cast',
204
+ 'check',
205
+ 'collate',
206
+ 'collation',
207
+ 'column',
208
+ 'columns',
209
+ 'concurrently',
210
+ 'constraint',
211
+ 'create',
212
+ 'cross',
213
+ 'default',
214
+ 'deferrable',
215
+ 'desc',
216
+ 'describe',
217
+ 'distinct',
218
+ 'do',
219
+ 'else',
220
+ 'end',
221
+ 'except',
222
+ 'false',
223
+ 'fetch',
224
+ 'for',
225
+ 'foreign',
226
+ 'freeze',
227
+ 'from',
228
+ 'full',
229
+ 'generated',
230
+ 'glob',
231
+ 'group',
232
+ 'having',
233
+ 'ilike',
234
+ 'in',
235
+ 'initially',
236
+ 'inner',
237
+ 'intersect',
238
+ 'into',
239
+ 'is',
240
+ 'isnull',
241
+ 'join',
242
+ 'lambda',
243
+ 'lateral',
244
+ 'leading',
245
+ 'left',
246
+ 'like',
247
+ 'limit',
248
+ 'map',
249
+ 'natural',
250
+ 'not',
251
+ 'notnull',
252
+ 'null',
253
+ 'offset',
254
+ 'on',
255
+ 'only',
256
+ 'or',
257
+ 'order',
258
+ 'outer',
259
+ 'overlaps',
260
+ 'pivot',
261
+ 'pivot_longer',
262
+ 'pivot_wider',
263
+ 'placing',
264
+ 'positional',
265
+ 'primary',
266
+ 'qualify',
267
+ 'references',
268
+ 'returning',
269
+ 'right',
270
+ 'select',
271
+ 'semi',
272
+ 'show',
273
+ 'similar',
274
+ 'some',
275
+ 'struct',
276
+ 'summarize',
277
+ 'symmetric',
278
+ 'table',
279
+ 'tablesample',
280
+ 'then',
281
+ 'to',
282
+ 'trailing',
283
+ 'true',
284
+ 'try_cast',
285
+ 'union',
286
+ 'unique',
287
+ 'unpack',
288
+ 'unpivot',
289
+ 'using',
290
+ 'variadic',
291
+ 'verbose',
292
+ 'when',
293
+ 'where',
294
+ 'window',
295
+ 'with',
296
+ ]);
297
+ /**
298
+ * A name the database takes unquoted: letters, digits and underscores, not
299
+ * starting with a digit, and no reserved word (one gets a trailing
300
+ * underscore)
301
+ */
302
+ export const toCubeCsvName = (text, fallback) => {
303
+ const name = text.trim().replace(/[^A-Za-z0-9_]+/gu, '_');
304
+ const safe = !name || /^_*$/u.test(name) ? fallback : name;
305
+ const start = /^[0-9]/u.test(safe) ? `_${safe}` : safe;
306
+ return RESERVED_WORDS.has(start.toLowerCase()) ? `${start}_` : start;
307
+ };
308
+ /** The header's names made safe, and distinct whatever their case */
309
+ const toColumnNames = (header) => {
310
+ const used = new Set();
311
+ return header.map((text, index) => {
312
+ const base = toCubeCsvName(text, `column_${index + 1}`);
313
+ let name = base;
314
+ for (let suffix = 2; used.has(name.toLowerCase()); suffix++) {
315
+ name = `${base}_${suffix}`;
316
+ }
317
+ used.add(name.toLowerCase());
318
+ return name;
319
+ });
320
+ };
321
+ /** A string literal: quotes doubled, line breaks as chr(10), so no line of the setup SQL ends inside it */
322
+ const quote = (value) => `'${value
323
+ .replace(/'/gu, "''")
324
+ .split(/\r\n|\r|\n/u)
325
+ .join("' || chr(10) || '")}'`;
326
+ const toLiteral = (value, type) => {
327
+ if (value === '') {
328
+ return 'NULL';
329
+ }
330
+ switch (type) {
331
+ case CubeCsvColumnType.INTEGER:
332
+ case CubeCsvColumnType.BIGINT:
333
+ case CubeCsvColumnType.DOUBLE:
334
+ return value;
335
+ case CubeCsvColumnType.BOOLEAN:
336
+ return value.toLowerCase();
337
+ case CubeCsvColumnType.DATE:
338
+ return `DATE '${value}'`;
339
+ case CubeCsvColumnType.TIMESTAMP:
340
+ return `TIMESTAMP '${value.replace('T', ' ')}'`;
341
+ default:
342
+ return quote(value);
343
+ }
344
+ };
345
+ /**
346
+ * A CSV, with a header row, as a table of the `csv` schema: setup SQL that
347
+ * creates the schema if needed, drops and creates the table, then inserts
348
+ * the rows. Refuses an empty CSV, a record whose values don't match the
349
+ * header, and one past the limits.
350
+ */
351
+ export const buildCubeCsvTable = (text, tableName) => {
352
+ if (text.length > CUBE_CSV_MAX_LENGTH) {
353
+ throw new CubeCsvError(CUBE_CSV_MESSAGE.TOO_LONG(CUBE_CSV_MAX_LENGTH));
354
+ }
355
+ const [header, ...rows] = parseCubeCsv(text);
356
+ if (!header) {
357
+ throw new CubeCsvError(CUBE_CSV_MESSAGE.EMPTY);
358
+ }
359
+ if (rows.length > CUBE_CSV_MAX_ROWS) {
360
+ throw new CubeCsvError(CUBE_CSV_MESSAGE.TOO_MANY_ROWS(rows.length, CUBE_CSV_MAX_ROWS));
361
+ }
362
+ rows.forEach((row, index) => {
363
+ if (row.length !== header.length) {
364
+ throw new CubeCsvError(CUBE_CSV_MESSAGE.RAGGED_ROW(index + 1, row.length, header.length));
365
+ }
366
+ });
367
+ const table = toCubeCsvName(tableName, 'csv_data');
368
+ const names = toColumnNames(header);
369
+ const columns = names.map((name, index) => ({
370
+ name,
371
+ type: inferCubeCsvColumnType(rows.map((row) => row[index] ?? '')),
372
+ }));
373
+ const qualified = `${CUBE_CSV_SCHEMA}.${table}`;
374
+ const statements = [
375
+ `create schema if not exists ${CUBE_CSV_SCHEMA};`,
376
+ `drop table if exists ${qualified};`,
377
+ `create table ${qualified} (${columns
378
+ .map((column) => `${column.name} ${column.type}`)
379
+ .join(', ')});`,
380
+ ];
381
+ for (let start = 0; start < rows.length; start += ROWS_PER_INSERT) {
382
+ const chunk = rows.slice(start, start + ROWS_PER_INSERT);
383
+ statements.push([
384
+ `insert into ${qualified} values`,
385
+ ...chunk.map((row, index) => `(${row
386
+ .map((value, column) => toLiteral(value, columns[column]?.type ?? CubeCsvColumnType.VARCHAR))
387
+ .join(', ')})${index === chunk.length - 1 ? ';' : ','}`),
388
+ ].join('\n'));
389
+ }
390
+ return { table, columns, rowCount: rows.length, sql: statements.join('\n') };
391
+ };
392
+ //# sourceMappingURL=CubeCsvSetupSql.js.map